Jumat, 05 Juni 2009

Pengenalan Kepada Struktur Data Dan Algoritma

- Objektif

1. Menakrif maksud algoritma, struktur data dan penggunaannya.
2. Mengenal pasti fasa-fasa yang terdapat dalam
kitar hayat pembangunan aturcara.
3. Mengenalpasti isu-isu penting yang perlu
diambilkira untuk menghasilkan sebuah aturcara
yang baik.

- Pengenalan
1. Kajian Sains Komputer melibatkan 3 bidang asas:

* Matematik
* Sains
* Kejuruteraan


2. Seorang ahli Sains Komputer perlu :

- Mempunyai kepakaran utk membuat rumusan matematik dan melaksanakan
alasan secara matematik ketika menganalisa sesuatu masalah berkomputer.


- Memperolehi kefahaman mengenai metod ujikaji secara saintifik dan tahu cara-cara
sistematik utk memahami permasalahan berkomputer yg ingin diselesaikan,
mengumpul data dan menguji data aturcara.

Menginstal Linu’x Debian 4

Langkah Pertama:Masuklah ke synaptic package manager

Klik search, ketik wine lalu enter

Pilih libwine dan libwine gl lalu klik kanan dan klik mark for instalation dan klik apply

Masukkan cd debian 4 dan klik OK

Pilih wine,wine utils dan xwine lalu klik kanan dan klik mark for instalation,klik mark dan Klik apply

Masukkan cd debian binary 2 klik OK

Masukkan cd debian binary 4 klik OK

Masukkan cd debian binary 1 klik OK

Masukkan cd debian binary 5 klik OK

Langkah Kedua:

Pastikan komputer telah terinstall aplikasi wine

Masukkan cd Install Adobe Photoshop 7.0

Masuklah ke terminal dan login ke root

Masuk ke direktori media lalu masuk ke cdrom

Buka direktori Adobe Photshop 7.0

Ketikkan wine Setup.exe

Akan muncul kotak dialog untuk menginstall Adobe Photoshop 7.0

Masukkan product key

Setelah itu ikuti langkah-langkah dalam menginstall.

Klik Finish jika proses instalasi selesai.

Anda sudah berhasil menginstall program Adobe Photoshop pada linux.

Instalasi Linux Debian Menggunakan Expertgui

Debian Linux Installation With Expertgui

Langkah-langkahnya :

The steps are :

~ Ketikkan expertgui pada awal tampilan prompt, lalu tekan enter.

Write down expertgui on the first screen of prompt, press enter.

~ Tekan enter pada debian installer main menu.

Press enter in the debian installer main menu.

~ Pilih bahasa yang diinginkan, lalu tekan enter.

Choose language what you want, press enter.

~ Pilih area yang diinginkan, lalu tekan enter.

Choose area what you want, press enter.

~ Pada choose a locale, pilih “aa_DJ UTF-8”, tekan enter.

In the choose a locale, choose “aa_DJ UTF-8”, and press enter.

~ Pada choose other locales to be supported, pilih “aa_DJ UTF-8”, tekan enter.

In the choose other locales to be support, choose “aa_DJ UTF-8”, and press enter.

~ Pada select to keyboard layout, pilih Type of keyboard : PC-style (AT or PS2 connector) keyboard, tekan enter.

In the select to keyboard layout, choose type of keyboard : PC-style (AT or PS2 connector) keyboard, press enter.

~ Pada keymap to use pilih American English, tekan enter.

In the keymap to use choose American English, press enter.

~ Pada choose the next step in the install process, tekan enter.

In the choose the next step in the install process, press enter.

~ Pada detect and mount CD-ROM, tekan enter.

In the detect and mount CD-ROM, press enter.

~ Pilih semua modul pada menu, tekan enter.

Choose all modules in the menu, press enter.

~ Pada start PC card service, pilih yes, lalu enter.

In the start PC card service, choose yes, and press enter.

~ Pada PCMCIA resource range option, ketik debian, tekan enter.

In the PCMCIA resource range option, write down debian, press enter.

~ Tekan enter pada load installer components from CD.

Press enter in the load installer components from CD.

~ Pilih semua komponen dari CD, tekan enter.

Choose all components from CD, press enter.

~ Load installer components from CD.

~ Pada detect network hardware, tekan enter.

In the detect network hardware, press enter.

~ Pada PCMCIA resource range option, ketik debian.

In the PCMCIA resource range option, write down debian.

~ Tekan enter pada configure and start a PPPOE connection.

Press enter in the configure and start a PPPOE connection.

~ Tekan enter pada configure the network.

Press enter in the configure the network.

~ Pada auto configure network with DHCP, pilih yes, tekan enter.

In the auto configure network with DHCP, choose yes, press enter.

~ Ketik debian pada hostname, tekan enter.

Write down in the hostname, press enter.

~ Tekan enter pada continue installation remotely using SSH.

Press enter in the continue installation remotely using SSH.

~ Masukkan password yang diinginkan, contoh : ketik 123456, tekan enter.

Enter the password what you want, example : write down 123456, press enter.

~ Tekan enter pada choose a mirror of the debian archive.

Press enter in the choose a mirror of the debian archive.

~ Pada protocol for file downloads, pilih FTP, tekan enter.

In the protocol for file downloads, choose FTP, and press enter.

~ Kemudian pilih Ftp. Debian.org, tekan enter.

And then choose Ftp. Debian.org, press enter.

~ Pada detect disk, tekan enter.

In the detect disk, press enter.

~ Pada partition disk, tekan enter.

In the partition disk, press enter.

~ Pada partitioning method, pilih Guided-use entire, tekan enter.

In the partitioning method, choose Guided-use entire, press enter.

~ Pada select disk to partition, pilih IDE1 master (hda) – 8,5 Gb ST38421A, tekan enter.

In the select disk to partition, choose IDE1 master (had) – 8,5 Gb ST38421A, press enter.

~ Tekan enter pada partitioning scheme, pilih separate /home partition.

Press enter in the partition scheme, choose separate /home partition.

~ Sekarang kita membuat partisi baru dengan menghapus semua partisi.

Now we’ll makes new partition with remove all partitions.

~ Langkah-langkah partisi harddisk :

Hapus semua partisi

Buat partisi dengan skema

/root = 4 Gb, type : primary, locate : beginning, fs : ext3.

/home = 2 Gb, type : logical, locate : beginning, fs : ext3.

Swap area = 2 Gb, file system : swap area.

Pilih finish partitioning and write change to disk, tekan enter.

The steps for harddisk partition :

Remove all partitions

Create new partition with scheme

/root = 4 Gb, type : primary, locate : beginning, fs : ext3

/home = 2 Gb, type : logical, locate : beginning, fs : ext3

Swap area = 2 Gb, file system : swap area.

Choose finish partitioning and write change to disk, press enter.

~ Pada configure time zone, pilih eastern.

In the configure time zone, choose eastern.

~ Tekan enter pada configure the clock.

Press enter in the configure the clock.

~ Setup users and passwords :

Masukkan users root password

Masukkan nama untuk user

Masukkan nama untuk user account

Masukkan password untuk user

Setup users and passwords :

Enter password root user

Enter name for user

Enter name for user account

Enter password for user

~ Tekan enter pada install the base system.

Press enter in the install the base system.

~ Tekan enter pada configure the package manager.

Press enter in the configure the package manager.

~ Tekan enter pada select and install software.

Press enter in the select and install software.

~ Pada participate in the package usage survey, pilih yes, tekan enter.

In the participate in the package usage survey, choose yes, press enter.

~ Pada software to install, pilih desktop environment standard system, tekan enter.

In the software to install, choose desktop environment standard system, press enter.

~ Tekan enter pada install GRUB boot loader on a harddisk.

Press enter in the install GRUB boot loader on a harddisk.

~ Pada install the GRUB boot loader to the master boot record, pilih yes, tekan enter.

In the install the GRUB boot loader to the master boot record, choose yes, press enter.

~ Masukkan GRUB password.

Enter GRUB password.

~ Pada finish the installation, tekan enter.

In the finish the installation, press enter.

~ Instalasi sudah selesai.

The installation is finish.

.”Struktur Data:Kontruksi Dasar”

1. Runtutan
Runtutan terdiri dari satu atau lebih pernyataan, setiap pernyataan diakhiri oleh satu baris atau titik koma. Tiap pernyataan dibuat secara berurutan sesuai dengan urutannya. Setiap instruksi dilaksanakan setelah instruksi sebelumnya selesai dilaksanakan.

Misal pertukaran nilai A ke dalam nilai B dengan membutuhkan bantuan C:
Masukkan nilai A ke dalam C
Masukkan nilai B ke dalam A
Masukkan nilai C ke dalam B
2. Pemilihan
Pada beberapa hal kita terkadang dihadapkan pada suatu pilihan. Misal:
Jika saya tidur larut malam maka saya akan bangun kesiangan
Pernyataan di atas biasa diubah dalam notasi algoritmik demikian:
if kondisi then aksi
Bahasa Indonesia untuk if adalah jika, dan untuk then adalah maka. Dalam kehidupan sehari-hari dapat kita temui sebagai berikut:
if saya makan then saya kenyang
Jika pilihan aksi ada 2
if bil <= 100 then tulis bilangan lebih dari seratus else tulis kurang dari 100
Jika pilihan aksi lebih dari 2
if A < B then if A < C then tulis bilangan terbesar = A else tulis bilangan terbesar = C else if B < C then tulis bilangan terbesar = B else tulis bilangan terbesar = C
Penulisan ruang kosong (indentasi) di atas akan lebih mudah dibaca dibanding:
if A < B then if A < C then tulis bilangan terbesar = A else tulis bilangan terbesar = C else if B < C then tulis bilangan terbesar = B else tulis bilangan terbesar = C
bukan?
3. Pengulangan
Pernahkah anda dihukum oleh guru anda menulis kalimat berulang-ulang sampai satu lembar atau lebih? Capek bukan? Komputer mempunyai fungsi untuk melakukan pekerjaan berulang-ulang dan tak kenal lelah. Jika dalam pemrograman tentu penulisan secara berulang-ulang tidak akan efisien. Oleh karena itu digunakan beberapa fungsi.
repeat
ALGORITMA tulis kalimat 100 kali: repeat 100 times Tulis "Saya akan mengerjakan PR"
maka akan algoritmanya demikian:
repeat N times aksi
artinya aksi diulang sebanyak N kali.
for
for pencacah pengulangan dari 1 sampai N do aksi
artinya aksi dilakukan sebanyak hitungan cacah pengulanagn, yaitu dari 1 sampai N (sebanyak N kali). Pencacah tidak hanya dimulai dari angka 1, tapi dari sebarang nilai yang lain.
ALGORITMA: for i dari 1 sampai 100 do writeln "Saya tidak akan mengulanginya lagi
i adalah pencacah pengulangan yang mencacah pengulangan dari 1 sampai 100. Untuk mengenal notasi ini akan saya bahas selanjutnya.
repeat-until
Artinya pengulangan aksi yang dilakukan hingga persyaratan terpenuhi. Jadi penulisan kalimat 100 kali dengan notasi repeat-until adalah:
repeat aksi until kondisi
Contoh
ALGORITMA tulis kalimat 100 kali: repeat writeln "Saya berjanji tidak akan mengulangi lagi" until sudah 100 kali.
while
while artinya selagi, do artinya lakukan
while kondisi do aksi
Contoh:
while i <= do jumlah = jumlah + i i = i + 1

"Tipe data string Dalam Pemrograman"

.
Bahasa Pascal
Dalam bahasa Pascal, tipe data string dituliskan sebagai string. Pada kompilator Pascal lama, string terpanjang yang dapat dibuat terdiri dari 255 karakter. Hal ini terjadi karena Pascal menggunakan 1 byte data untuk menyimpan panjang efektif string.
Contoh kode Pascal yang menggunakan tipe data string:
program str;
var s: string[100]; //jika panjang maksimum tidak dimasukkan, kompilator akan menganggapnya 255
begin
s:= 'Hello world';
writeln(s);
end.
Pada kompilator Pascal yang lebih baru dikenal pula tipe data ANSI-string yang dapat menyimpan karakter lebih banyak.
Bahasa C
Dalam bahasa C tidak ada tipe data khusus untuk menyimpan string. String biasanya disimpan sebagai larik dari karakter-karakter. Berbeda dengan bahasa Pascal, string pada bahasa C merupakan sebuah null-terminated string, sehingga kapasitasnya hanya dibatasi oleh kapasitas memori komputer. Seperti pada tipe data larik pada bahasa C, pengguna dapat memberikan batas maksimum karakter yang dapat ditampung.
Contoh kode C yang menggunakan tipe data string:
#include
int main(){
char s[100]; /* membuat string dengan panjang maksimum 99 karakter, karena karakter terakhir harus null */
s = "Hello world";
printf("%s\n", s);
}

Bahasa C++
Bahasa C++ merupakan turunan dari bahasa C sehingga representasi string sebagai larik karakter masih berlaku. Namun bahasa C++ juga menyediakan tipe data string yang terdapat dalam C++ Standard Template Library (STL).
Contoh kode C++ yang menggunakan tipe string pada STL:
#include
#include
using namespace std;
int main(){
string s; //panjang maksimum tidak perlu didefinisikan
s = "Hello world";
cout<<

"Array"

Array dimensi satu
Array dimensi satu disebut juga dengan vector, adalah sebuah array yang terdiri dari sejumlah elemen data, dan poisis setiap elemen ditentukan oleh sebuah subskrib.
Setiap array harus dideklarasikan terlebih dahulu, hal ini digunakan untuk mengalokasikan ruang memori yang akan digunakan dan juga menentukan tipe data dari elemen array.
Bentuk umum deklarasi array dimensi satu adl :
DIM namavar ({cacah | awal to akhir}) [As tipe]
D."Tipe Data Perulangan Dan Percabangan"

1. Jenis-jenis tipe data:

Perbedaan secara umum:
• Character menyatakan sebuah karakter ( bisa berupa huruf seperti A atau a, digit seperti 0 atau 7, atau simbol seperti * dan &
• Integer menyatakan bilangan bulat dengan range seperti yang telah disebutkan diatas
• Floating point Singel precision menyatakan bilangan titik-titik mengambang (bilangan real) dengan ketelitian rendah
• Floating point Double precicion menyatakan bilangan titik-titik mengambang (bilangan real) dengan ketelitian tinggi
2. Kegunaan dan fungsi
• printf() adalah instruksi untuk menjalankan suatu fungsi-print yang berfungsi untuk menampilkan informasi kelayar. Fungsi printnya sendiri sudah disiapkan oleh compiler C, dalam sebuah file yang bernama stdio.h yang harus kita tuliskan #include pada bagian depan dari program.
Contoh Pengunaan:
#include
void main()
{
printf(“Jakarta”);
printf(“Surabaya”);
}
Tercetak : JakartaSurabaya
• scanf() adalah instruksi untuk mengimputkan data melalui keyboard pada program C.
Contoh Penggunaan
#include
void main()
{ char A;
printf(“Nama anda = ”);
scanf(“%c”, &A);
}
Tercetak : Nama anda = Abdullah
• puts() adalah instruksi untuk menjalankan suatu fungsi cetak yang menampilkan string. Dengan sendirinya fungsi ini menambahkan karakter newline (pindah baris).
Contoh peggunaan:
#include
void main()
{ char A;
Puts(“Nama anda = ”);
printf(“Abu”);
}
Tercetak : Nama anda = Abu


3. Penggunaan serta perbedaan dari pernyataan berkut:
• if
Kegunaan dari if adalah untuk melakukan seleksi atau pilihan dari 2 atau lebih kemungkinan yang ada dari beberapa statement. Statement if terdiri dari 2 atau lebih pernyataan. Pernyataan if bersifat terbatas, apabila pilihan dari statement tidak sesuai maka program akan mati.
Contoh Penggunaan:
int a=5, b=7;
if (a
{
printf(“bali”);
}
Tercetak : bali
• if else
kegunaan dari if else sama dengan pernyataan if hanya saja pilihan bersifat bebas, apabila pilihan yang input tidak sesuai dengan statement pilihan yang diberikan maka program akan tetap berjalan dan membaca statement setelah pernyataan else.
Contoh Penggunaan:
int a=5, b=7;
if (a
{
printf(“bali”);
}
else
{
printf(“jawa”);
}
Pernyataan diatas bernilai benar karena abali
• switch
pernyataan switch sama saja fungsinya dengan fungsi if hanya saja disini pernyataan switch berfungsi sebagai saklar yang akan melanjutkan proses jika statement bernilai benar, untuk setiap statement yang diberikan mestilah bernilai benar jika tidak maka statement tidak diproses dan akan digantikan oleh pernyataan default (sama dengan pernyataan else pada if). Pernyataan switch dapat berhenti otomatis jika diberi pernyataan break setelah pernyataan case.
Contoh Penggunaan:
#include
main()
{ int N;
printf(”N = “);
scanf(”%i”, &N);
switch(N)
{
case 1:
printf(”Baik”);
break;
case 2:
printf(”Jelek”);
break;
default:
printf(”Nilai salah”);
}
}
Jika user mengimputkan 1 maka akan tercetak Baik, jika user mengimputkan 2 maka akan tecetak Jelek, selai itu akan tercetak Nilai salah
4. Perbedaan dari pernyataan berkut:
• while dan for
Dalam bahasa java, C, C++, cara kerja dan karakteristik instruksi for() dan while() adalah sama. Yang membedakan for dan while hanyalah pada cara penulisannya saja. Fungsinya adalah untuk mebuat loop yaitu sebuah blok instruksi yang dilakukan secara berulang-ulang.
Contoh perbedaan penulisannya :
#include —>(FOR)
void main()
{ int I;
for (I=1; I {printf(“\n%i”,I);

."Tipe Data Struc/pemrograman Bahasa C"

Struct adalah tipe data yang dapat melakukan penyimpanan beberapa data yang saling terkait (seperti Nama, NRP, Alamat), sebagai suatu kesatuan, sehingga data-data tersebut seakan-akan menjadi suatu data tunggal. Pembuatan tipe data baru dalam C dilakukan dengan menggunakan kata kunci struct, yang merupakan kependekan dari structure (struktur).
Syntax :
Struct []{
[];
.
.
} [];
Contoh :
typedef struct
{
int NIP ;
char nama[30]
} pegawai_t;
Perbedaan dengan Tipe data lain :
Tipe data yang lain hanya terdiri dari 1 element, sehingga hanya dapat menyimpan sebuah nilai atau sebuah string saja, sedangkan tipe data struct dapat menyimpan beberapa elemen, dengan berbagai macam tipe seperti int, char, long, dll.
Operator titik digunakan sebagai pemisah antara variabel struktur dengan elemennya, penulisan ini sebaiknya tidak dipisahkan oleh spasi. Operator ini berfungsi untuk mengakses suatu element dari variabel struktur.
Operator panah digunakan untuk pengaksesan operasi pointer, atau menggunakan operator bintang (’*’), untuk pengaksesan element-element suatu struktur yang berupa pointer.
Contoh :
typedef struct
{
int NIP ;
char nama[30]
} pegawai_t, *peg_t;
Pengaksesan dengan operator titik dan panah:
- p Pegawai_t.NIP
- p Pegawai_t.nama
- ( (*peg_t).NIP == peg_t -> NIP

Tipe data kernel internal"

Ketika membuat program yang portabel, perlu diperhatikan benar jumlah byte dari variabel yang digunakan di dalam program. Berbagai prosesor mempunyai jumlah byte berbeda untuk tipe data int dan long. Ada juga perbedaan cara menentukan apakah variabel signed atau unsigned. Jadi kalau program yang dibuat harus menggunakan jumlah bit tertentu, dan harus tegas signed atau unsigned, maka Anda harus menggunakan tipe data yang sudah built-in. Typedefs berikut ini dapat dipakai di sembarang tempat dalam program kernel dan didefinisikan dalam berkas header linux/types.h.
u8 unsigned byte (8 bit)
u16 unsigned word (16 bit)
u32 unsigned 32-bit
u64 unsigned 64-bit

s8 signed byte (8 bit)
s16 signed word (16 bit)
s32 signed 32-bit
s64 signed 64-bit

Sebagai contoh, driver i2c mempunyai beberapa fungsi yang digunakan untuk mengirim dan menerima data melalui bus i2c:
s32 i2c_smbus_write_byte(struct i2c_client *client, u8 value);
s32 i2c_smbus_read_byte_data(struct i2c_client *client,
u8 command);
s32 i2c_smbus_write_byte_data(struct i2c_client *client,
u8 command, u8 value);
Semua fungsi di atas mempunyai output nilai 32 bit signed dan mempunyai input nilai 8 bit unsigned untuk semua parameternya. Dengan menggunakan tipe data seperti ini, program di atas portabel untuk semua prosesor.
Jika ingin agar variabel dapat diakses melalui program di wilayah user (user-space), maka harus digunakan tipe data exportabel di bawah ini. Contoh tipe data ini terdapat dalam struktur data yang di-passing saat memanggil perintah ioctl(). Tipe data ini didefinisikan di berkas header linux/types.h.
__u8 unsigned byte (8 bit)
__u16 unsigned word (16 bit)
__u32 unsigned 32-bit
__u64 unsigned 64-bit

__s8 signed byte (8 bit)
__s16 signed word (16 bit)
__s32 signed 32-bit
__s64 signed 64-bit

Sebagai contoh, berkas header usbdevice_fs.h mempunyai beberapa struktur data untuk digunakan berkomunikasi dengan piranti USB (USB device) melalui program di wilayah user (user space). Berikut adalah definisi ioctl yang digunakan mengirim pesan kontrol USB ke piranti:
struct usbdevfs_ctrltransfer {
__u8 requesttype;
__u8 request;
__u16 value;
__u16 index;
__u16 length;
__u32 timeout; /* in milliseconds */
void *data;
};
#define USBDEVFS_CONTROL_IOWR('U', 0,
# struct usbdevfs_ctrltransfer)
Pada mesin 64-bit, ada satu hal yang sering menimbulkan problem yaitu bahwa jumlah byte pointer tidak sama dengan jumlah byte unsigned integer. Jumlah byte pointer sama dengan unsigned long seperti terlihat pada get_zeroed_page():
extern unsigned long FASTCALL
(get_zeroed_page(unsigned int gfp_mask))

Fungsi get_zeroed_page() membuat halaman memori kosong (free memory) yang isinya sudah dinolkan semua. Fungsi ini mempunyai output unsigned long yang harus diubah (typecast) ke tipe data lain yang sesuai. Potongan program drivers/char/serial.c dalam fungsi rs_open() berikut ini memperlihatkan caranya (catatan: kode ini dari kernel 2.4.x).
static unsigned char *tmp_buf;
unsigned long page;

if (!tmp_buf) {
page = get_zeroed_page(GFP_KERNEL);
if (!page)
return -ENOMEM;
if (tmp_buf)
free_page(page);
else
tmp_buf = (unsigned char *)page;
}
Terdapat beberapa tipe data kernel yang dapat digunakan sebagai pengganti tipe data unsigned long, misalnya pid_t, key_t, gid_t, size_t, ssize_t, ptrdiff_t, time_t, clock_t, dan caddr_t. Gunakan tipe data ini untuk menghindari permasalahan portabilitas.