Minggu, 22 Juli 2012

ARRAY DAN RECORD PASCAL

ARRAY DAN RECORD PASCAL
Pernahkah kamu membayangkan bila kita mau membuat program toko buah-buahan. Jika ada 3 jenis buah-buahan (melon, duku dan mangga) berarti kita harus mempunyai tiga variabel untuk masing-masing jenis buah. Tetapi betapa sulitnya jika toko itu punya 10 atau 20 jenis yang berbeda. Solusinya adalah gunakan array. Array itu adalah tipe data terstuktur yang berguna untuk menyimpan sejumlah data yang bertipe sama. Bagaimana cara kerjanya? yaitu dengan menggunakan index (semacam penanda). Perhatikan contoh:

1: Program Tutorial5_Array;
2: var buah: array [1..3] of string;
3: i: integer;
4: Begin
5: For i:=1 to 3 do
6: begin
7: write('Masukkan buah-buahan ke ',i , ' : ');readln(buah[i]);
8: end;
9: writeln;writeln('Isi buah-buahan yang dimasukkan tadi adalah : ');
10: For i:= 1 to 3 do
11: writeln('buah ke', i ,' : ', buah[i]);
12: End.

Lihat pada baris ke 7. Dengan hanya menggunakan satu nama variabel yaitu buah, kita bisa menyimpan 3 nilai yang berbeda. Misalkan yang kita masukkan adalah melon, duku dan mangga. maka buah[1] bernilai melon, buah[2] bernilai duku dan buah[3] bernilai mangga. Untuk mencetak isi variabel yang sudah disimpan di array tadi caranya bisa dilihat di baris ke 11. Bagaimana, gampangkan? setelah mengetahui cara menggunakan array, sekarang kita belajar menggunakan record. Tidak seperti array, record adalah jenis tipe data terstruktur yang berisi beberapa data, yang masing-masing dapat berlainan tipe. Perhatikan contoh:

1: Program Tutorial5_Record;
2: type buah = record
3: nama: string;
4: harga: longint;
5: end;
6: var data:buah;
7: Begin
8: write('nama buah: ');readln(data.nama);
9: write('harga buah: ');readln(data.harga);
10: write('ditampilkan');
11: write('nama');readln(data.nama);
12: writeln('harga');readln(data.harga);
13: End.

Apa yang bisa kamu ambil kesimpulan dari program di atas? Bingung? Jadi gini, dengan menggunakan record (di sini bernama buah) kita bisa membuat tipe data yang berisi beberapa data yang berlainan tipe (nama dengan jenis string, dan harga dengan jenis long integer) yang ini disebut field. Perhatikan baris ke 6, di situ dideklarasikan bahwa variabel data bertipe buah. Otomatis yang dimiliki buah (nama dan harga) dimiliki juga oleh data. Setelah itu lihat baris ke 8 dan 9. Nama buah disimpan dalam field nama dan harga buah disimpan di dalam field harga. Untuk bisa menyimpan data di field, urutannya harus variabel.field (contohnya di sini data.nama atau data.harga). Begitu juga bila kita ingin menampilkan isi field tersebut. Tipe data seperti ini sangat berguna kedepannya loohh... Apalagi jika digabungkan dengan array.


toko (record dengan array) PASCAL
Pada tutorial 5 telah dijelaskan cara penggunaan array dan record. Sekarang kita akan menggabungkan array dan record tersebut. Perhatikan program di bawah ini:

1: Program Array_dan_Record;
2: type dmhs=record
3: nrp:string[10];
4: nama:string[25];
5: alamat:string[50];
6: end;
7: var data:array[1..3] of dmhs;
8: i:integer;
9: begin
10: for i:=1 to 3 do
11: begin
12: write('nrp : ');readln(data[i].nrp);
13: write('nama : ');readln(data[i].nama);
14: write('alamat : ');readln(data[i].alamat);
15: end; 16: writeln;
17: writeln('Data ditampilkan');
18: for i:=1 to 3 do
19: begin
20: writeln('nrp : ', data[i].nrp);
21: writeln('nama : ', data[i].nama);
22: writeln('alamat : ', data[i].alamat);
23: end;
24: readln;
25: end.

Di dalam program tersebut dideklarasikan bahwa dmhs (data mahasiswa) itu adalah record yang mempunyai field nrp, nama dan alamat (lihat baris 2 sampai 6). Selanjutnya variabel data dideklarasikan bertipe dmhs yang berbentuk array (baris ke 7). Kemudian seperti biasa untuk memasukkan data ke field digunakan "readln(data[i].nrp)", dst (baris 10 sampai 15). Untuk menampilkannya bisa dilihat dibaris ke 18 sampai 23.


Penggurutan angka (looping) PASCAL
Pernahkah kalian dikasih nilai ulangan siswa lalu disuruh ngurutin dari yang kecil ke gede? Kalo jumlahnya dibawah 10 sih gak masalah, lah kalo ada 100 biji kan berabe... Ini solusinya:

1: Program Pengurutan;
2: var i, j: integer;
3: k : longint;
4: a: array[1..5] of longint;
5: begin
6: writeln('PROGRAM MENGGURUTKAN ANGKA');
7: writeln('--------------------------');
8: for i:=1 to 4 do
9: begin
10: write('Masukkan bilangan ke- ', i, ' : ');readln(a[i])
11: end;
12: for j:=2 to 4 do
13: begin
14: k:=a[j];
15: i:=j-1;
16: while (i>0) and (a[i]>k) do
17: begin
18: a[i+1]:=a[i];
19: i:=i-1;
20: end;
21: a[i+1]:=k
22: end;
23: for i:=1 to 4 do
24: writeln(a[i]);
25: readln;
26: end.

Hhmmm... sebenarnya gak perlu dijelasin lagi yach tu program, gua harap kalian bisa nge-trace (menelusuri) algoritma programnya. Program ini dibatasi untuk 4 angka saja, bisa diubah sesuai keinginan. Pada prinsipnya program ini memasukkan input ke dalam array, kemudian membandingkannya, bila ternyata angka sebelumnya lebih besar, maka dipindah posisinya (coba dech di trace, pasti ngerti). Program ini berguna banget buat kalian yang hobi ngitung, apa lagi buat anak smu. Untuk pengembanganya kalian bisa menghitung mean, modus dan median

Menentukan bilangan terbesar (dengan if) PASCAL
Ini adalah program terakhir untuk mematangkan penggunaan kondisi if. Pernah kah kalian membuat program dengan susah payah tetapi setelah ditunjukkan dengan orang lain, mereka bilang "Hanya gitu doank kerjanya?". He he he... sakit hati emang :-(, kalo bisa rasanya pengen nimpuk tu orang dengan hardisk SEAGATE BARACUDA 80 giga lima biji :)). Ini salah satu program yang panjang, tapi fungsinya... yaa... gitulah :D

1: Program BilanganTerbesar;
2: Var bil1, bil2, bil3 :real;
3: Begin
4: Write('Masukkan Bilangan Pertama : ');Readln(bil1);
5: Write('Masukkan Bilangan Kedua : ');Readln(bil2);
6: Write('Masukkan Bilangan Ketiga : ');Readln(bil3);
7: If (bil1=bil2) and (bil2=bil3) then
8: Writeln('Semua bilangan yang anda masukkan sama besar ',bil1:0:0)
9: Else If (bil1=bil2) or (bil1=bil3) or (bil2=bil3) then
10: Begin
11: If bil1=bil2 then
12: Begin
13: Writeln('Bilangan Pertama dan Kedua Adalah Sama');
14: If Bil1 < bil1="bil3" bil2="bil3"> bil2 then 37:
Begin 38: If bil1 > bil3 then 39:
Writeln('Bilangan terbesar adalah ',bil1:0:0) 40: Else 41:
Writeln('Bilangan terbesar adalah ',bil3:0:0); 42: End 43:
Else If bil1 <> bil3 then 46:
Writeln('Bilangan terbesar adalah ',bil2:0:0) 47:
Else 48:
Writeln('Bilangan terbesar adalah ',bil3:0:0); 49: End; 50:
readln; 51:
End.

Hue he he... keren kan? dengan bermodalkan if kita bisa menentukan bilangan mana yang terbesar dari 3 bilangan yang dimasukkan. Selain itu program ini bisa mendekteksi jika ada bilangan yang sama. Yup, hanya itu intinya. Prinsip utama program ini hanya membandingkan bilangan satu dengan yang lain. Mudah bukan? lebih baik kalian ngerjain yang ini tanpa ngeliat tu program, biar logikanya jalan...

2 komentar:

  1. buaatlah programnili mahasiswa yang terdiri dari;
    nama
    nilai UTS
    nilai TUGAS
    nilai uas
    hitunglah nilai total , dengan rumus nilai total =20%nilai tugas + 30% nilai UTS + 50% nilai UAS.
    input banyak mahasiswa diisi saat rogram dirunning,dengan metode ARRAY DARI RECORD..
    GIMANA CARANYA YA,,,BISA BANTU PAK?







    BalasHapus
  2. bikin blog yg bener bang, mataa sakit bacanyaa itu

    BalasHapus

detik.News