Anda di halaman 1dari 24

BAB IV Delphi Bagian II

4.1 Tujuan 1. Praktikan mengerti konsep dari array dan record serta cara pengaplikasiannya. 2. Praktikan paham dengan penggunaan pemilihan dan perulangan dalam memanipulasi array. 3. Praktikan mengerti konsep Queue dan Stack dalam array. 4.2 Dasar Teori 4.2.1 Array Array adalah sebuah variable yang dapat menyimpan lebih dari satu nilai sejenis ( memiliki tipe sama ). Setiap nilai yang tersimpan dalam array disebut elemen array, sedangkan nilai urut yang digunakan untuk mengakses array disebut indeks array. A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] 1 2 3 4 5 6 7 8 9 P A S C A L 0 K E Nilai elemen array Indeks Array Elemen Array Deklarasi Array Var A : array [1..10] of integer; B : array [A..B] of integer;

4.2.2 Record Record merupakan tipe data yang tersusun atas beberapa variable yang berbeda ( atau sama ) tipe datanya. Variabel variable yang terdapat di dalam suatu record biasa dikenal dengan istilah field atau member ( anggota dari record ). Contoh penggunaan tipe record Type TSiswa = record NIM: string[9]; Nama: string[25];

Umur: integer; End. Setelah didefinisikan, record bisa digunakan. Berikut cara penggunaannya S : TSiswa; S.NIM := L2N009020; S.Nama := Praktikum Pascal; S.Umur := 18;

4.2.3 Perulangan dalam Array 4.2.3.1 Mencari Data dalam Array Metode pencarian yang digunakan dalam

pencarian ini adalah metode pencarian bantuan dimana program akan mencari data yang dimaksud dalam array secara berurutan dari indeks 0 sampai data yang dimaksud ditemukan. 4.2.3.2 Mengurutkan dalam Array Menggunakan Metode Maksimum Dalam metode ini, elemen array dengan nilai makasimum akan disimpan ke bagian ujung array (elemen terakhir). Selanjutnya nilai tersebut akan disimpan dan tidak diikutkan lagi dalam proses selanjutnya.

Ini adalah contoh dari flowchart sorting.

4.2.4 Queue Queue atau antrian sebenarnya juga merupakan suatu list. Penambahan elemen dilakukan pada salah satu ujung 9ujung depan ) dan pengambilan gilakukan pada ujung yang lain (ujung belakang). Dengan demikian queue menggunakan prinsip FIFO (First In First Out), yaitu elemen yang pertama masuk akan pertama kali pula dikeluarkan.

Mulai

Repeat

Push

Pop

Keluar

Prosedur Push

Prosedur Pop

Masukan X kekolom terakhir

Keluaran X kolom pertama

output

end

4.2.5 Stack Stack ( tumpukan ) sebenarnya secara mudah dapat diartikan sebagai list ( urutan ) dimana penambahan dan pengambilan elemen hanya dilakukan pada satu sisi yang disebut top ( puncak ) dari stack. Dengan melihat definisi tersebut maka jelas bahwa pada stack berlaku aturan LIFO ( Last In First Out ), yaitu elemen yang terakhir masuk akan pertama kali diambil atau dilayani. Salah satu analogi yang dapat dikemukakan di sini adalah tumpukan. Pada saat kita hendak menumpuk piring piring tersebut tentulah yang kita lakukan adalah meletkakkan piring pertama pada tempatnya, selanjutnya

meletakkan piring kedua di atas piring pertama dan demikian seterusnya. Pada saat kita hendak mengambil satu piring dari tumpukan tersebut, tentu yang diambil adalah piring teratas ( yang terakhir kali ditaruh ), bukan yang terbawah ( yang pertama kali diletakkan ).

4.3 Analisa Dan Pembahasan 4.3.1 Penjelasan Program


program Program1_kelompok20; {$APPTYPE CONSOLE} uses SysUtils;{System Utilities, pemanggilan pustaka} const MAX = 26; var {pendeklarasian variabel} A: array[1..MAX] of char;{A dengan max dengan tipe karakter}

itu

array

dari

sampai

c: char; i: integer; begin {mengisikan elemen array} c:='a';{c diisi dengan karakter pertama} i:=1; while (i<=MAX) do begin{perulangan} A[i] := c; Inc(c); Inc(i); end; {menampilkan nilai yang terdapat pada setiap elemen array} for i:=1 to MAX do begin{perulangan} write((A[i]),' ');{menampilkan hasil tanpa ada perpindahan baris} end; readln;{memasukkan data lewat keyboard kedalam variabel} end.{akhir dari program}

Program tersebut akan menampilkan seluruh elemen yang terdapat dalam array . Data yang ditampilkkan oleh program tersebut adalah huruf alfabet dari a sampai dengan z. perulangan pertama menggunakan WHILE berfungsi untuk menyimpan nilai dari elemen array. inc atau incremen sama dengan pengunaan i=i+1 dalam perulangan biasa.

Perulangan kedua menggunakan FOR berfungsi untuk menampilkan keseluruhan isi array.

Gambar 4.1 Source code program 1

Ini adalah hasil dari program 1 yang dijalankan.

Gambar 4.2 Hasil Dari Program 1

program Program2_Kelompok20; {$APPTYPE CONSOLE} uses SysUtils; const A:array[1..5] of integer=(23,45,22,71,34);{A yang telah ditentukan dengan 5 buah indeks} adalah array

var i,x,indeks:integer;{i,x,indeks berisi type integer} begin write('masukkan nilai yang akan dicari:'); readln(x); indeks:= 0; for i:=0 to 5 do begin if A[i]= x then begin indeks := i; {proses ini akan membantu dalam mencari nilai/data yang diinginkan dengan cara mengulang instruksi hingga nilai /data yang diinginkan muncul dan akan berhenti setelah data didapatkan} break; end;{akhir inner loop} end;{akhir outer loop} writeln(x,' ditemukan pada readln; end.

indeks

ke-',indeks);

Program tersebut berisi sebuah array yang mempunyai indeks 5 dengan nilai elemen array yang sudah ditentukan. Untuk mencari nilai dalam array kita dapat menggunakan perulangan FOR seperti yang ada pada program. Dalam perulangan tersebut kita mencocokkan nilai yang kita input dengan nilai yang tersimpan dalam array sebanyak n kali indeks array yaitu 5 kali. Setelah itu kita tampilkan hasil pencarian itu menggunakan perintah write. Bila nilai yang kita input ada dalam array maka akan diberitahukan bahwa nilai ditemukan pada indeks ke-x. dan

bila nilai tidak ada dalam array maka nilai ditemukan pada indeks ke-0 yang artinya nilai tidak ditemukan dalam array.

Gambar 4.3 Source code program 2

Program 2 jika dijalankan menampilkan seperti pada gambar 4.4 , yang berguna untuk mencari index nilai yang telah disimpan.

Gambar 4.4 Hasil Dari Program 2 program Program3_kelompok20; {$APPTYPE CONSOLE} uses SysUtils;{name_space}

const arraysize = 5; type range = 1..arraysize;{range berisi indeks dari 1 sampai arraysize} numbersarray = array[Range] of integer; var{pendeklarasian variabel} numbers :numbersarray; I, J , Pot :INTEGER;{I,J memiliki type integer} begin { Membaca array } { -------------- } for i := 1 to arraysize do begin write('Masukkan angka #', i,': '); readln(numbers[i]) end; { Mengurutkan array } { -------------- } for i := 1 to arraysize-1 do { outer loop } begin for j := i+1 to arraysize do { inner loop } begin if Numbers[i] > Numbers[j] then {proses penyeleksian kondisi antara Number[i] dengan Number[j]} begin { sapu konten } Pot := Numbers[j]; Numbers[j] := Numbers[i]; Numbers[i] := Pot end end { akhir inner loop } end; { akhir outer loop } { menampilkan di layar } { --------------- } writeln; writeln('Array yang diurutkan : '); for i := 1 to arraySize do{proses perulangan output} writeln(Numbers[I]); readln; end.

Program tersebut akan mengurutkan nilai nilai yang kita inputkan. Mulai dari yang nilainya terkecil sampai nilai yang terbesar. Perulangan pertama digunakan untuk proses penginputan data ke dalam array. Perulangan kedua yang dibagi menjadi outer dan inner loop digunakan untuk proses pengurutan array. Nilai nilai yang sudah diinputkan akan dibandingkan nilainya kemudian ditampilkan dalam keadaan yang sudah terurut

Gambar 4.6 Source code program 3

Ini adalah hasil dari program 3 yang sudah dijalankan .

Gambar 4.7 Hasil dari program 3 Program Program4_kelompok20; {$APPTYPE CONSOLE} uses SysUtils;{system utilities} const max = 5;{ukuran penyimpanan maksimum masukan} type Tumpukan = array[1..10] of char;{array penyimpsn type masukan} type stack=record nilai:Tumpukan; Depan:integer; Belakang:integer; Isi:0..max; end;{tumpukan adalah sebuah record yang terdiri dari beberapa field yaitu field nilai,depan ,belakang dan isi} var antrian:Stack; Procedure push(var antrian:Stack; x:char);{antrian berfungsi sebagai record untuk setiap input yang tersimpan dan x adalah variabel sementara} Begin if antrian.isi= max then write('Antrian Penuh') else Begin if antrian.Belakang= max then antrian.Belakang:=1 else {untuk kondisi yang memiliki percabangan} antrian.Belakang:= antrian.Belakang+1; antrian.nilai[antrian.Belakang]:=x; antrian.Isi:=antrian.Isi+1; end; end; {selama kedua kondisi diatas tidak terpenuhi maka statement akan menginstruksi field untuk menginisialisasi lokasi baru antrian hingga antrian terpenuhi} Procedure pop(var antrian:Stack; var x:char);{fungsi pop untuk mengoverwrite nilai dengan karakter } Begin if antrian.isi=0 then write('Antrian Kosong') else Begin if antrian.Depan= max then antrian.Depan:=1 else

if antrian.Depan<max then antrian.Depan:=antrian.Depan+1; x:=antrian.nilai[antrian.Depan]; antrian.nilai[antrian.Depan]:=' '; antrian.isi:=antrian.isi-1; end; end; var i,pilih:integer; x:char; Begin repeat writeln; writeln('1. Push'); writeln('2. Pop'); writeln('0. Selesai'); writeln('Pilihan Anda:'); readln (pilih); if pilih<>0 then case pilih of 1: begin write('Nilai yang dimasukan: '); readln(x); push(antrian,x); for i :=1 to max do write(antrian.nilai[i],' '); writeln; end; 2: begin x:=' '; pop(antrian,x); writeln; writeln('Data Keluaran= ',x);for i:=1 to max do write(antrian.nilai[i],' '); writeln; end; end; until pilih=0; end.

Program tersebut bekerja bekerja berdasarkan prinsip yang ada pada queue yaitu FIFO (First In First Out). Dalam program tersebut terdapat 2 proses yaitu: proses PUSH (memasukkan nilai) dan proses POP (mengeluarkan nilai). Pada proses PUSH kita masukkan nilai dan menempatkan nilai tersebut di belakang nilai yang sebelumnya sudah kita

masukkan. Sedangkan dalam proses POP kita mengeluarkan nilai yang pertama kita inputkan (nilai yang paling depan).

Gambar 4.7 Source code program 4

Gambar 4.9 source code program 4 #2

Gambar 4.10 scourge code progeam 4 #3

Gambar 4.11 Hasil program 4

Gambar 4.12 Source code program 5

Gambar 4.13 source code program 5 #2

Gambar 4.14 source code program 5 #3

Gambar 4.15 Hasil program 5

4.3.2 Tugas Membuat program menghitung huruf yang diketikkan sebagai input, diidentifikasi sesuai letak meja ( meja 13 : K L M N O)

program Kelompok20_Tugas1; {$APPTYPE CONSOLE} uses SysUtils;{pemanggilan pustaka} var t,i : integer;{k,i memuat type integer} kata : string;{kata bertype string/terdiri dari beberapa karakter} X : array [1..5] of char = ('k','l','m','n','o');{x memiliki indeks array sebanyak 5 buah dan telah ditentukan} Z : array [1..5] of char = ('k','l','m','n','o');{ Y : array [1..5] of integer;{array penyimpan jumlah huruf pada t} begin Y[1] := 0; write('Masukkan Kata : '); readln (kata); writeln; writeln ('Banyaknya Karakter :'); for t :=1 to length (kata) do begin for i := 1 to 5 do begin if (kata[t]=X[i]) or (kata[t]=Z[i])then Y[i] := Y[i] + 1;{total huruf yang ditemukan pada t kata akan disimpan dalam array dengan indeks yang bersesuaian dengan huruf tertentu} end; end; for i:= 1 to 5 do begin writeln ('Huruf ',X[i],' berjumlah ',Y[i]);{output program} end; readln; end.

Gambar 4.16 Source Code tugas program HitungAngka_Kelompok20; uses SysUtils; var k,i : integer; kata : string; X : array [1..5] of char = ('k','l','m','n','o'); Z : array [1..5] of char = ('k','l','m','n','o'); Y : array [1..5] of integer; begin writeln('Program Mencari Banyak Huruf'); writeln('kelompok 20'); writeln; Y[1] := 0; writeln('Masukkan Kata atau Kalimat : '); readln (kata); writeln; writeln ('Banyaknya Karakter :'); for k :=1 to length (kata) do begin for i := 1 to 5 do begin if (kata[k]=X[i]) or (kata[k]=Z[i])then Y[i] := Y[i] + 1; end; end; for i:= 1 to 5 do begin writeln (X[i],' = ',Y[i]); end; readln;

end.

Keterangan program untuk menghitung jumlah angka : 1. Program


HitungAngka_Kelompok2;

merupakan

judul

program yang akan dibuat 2. {$APPTYPECONSOLE} merupakan tipe aplikasi untuk program yaitu Console 3. 4.
Uses

yaitu deklarasi unit yang dipakai untuk menjalankan

program
sysutils;

merupakan nama unit yang digunakan dalam

program tersebut 5. var, untuk menyatakan variabel apa saja yang digunakan dalam program yang dijalankan. var digunakan sebagai judul di dalam bagian deklarasi variabel dan diikuti oleh satu atau lebih identifier yang dipisahkan koma (,) diikuti dengan titik dua (:) dan tipe dari datanya serta diakhiri dengan titik koma (;). Dalam program tersebut yang termasuk ke dalam variabel adalah variabel lainnya tipe
:

ada

k,i:integer;ini

berarti

k,i

menggunakan
kata:string; string. X

data
array

integer(bilangan kata

bulat).
char =

ini berarti

menggunakan tipe data


of x

[1..5]

('K','L','M','N','O');

ini berarti

akan melakukan
of char =

perulangan dari 1-5 dengan tipe data char yang memiliki data
k,l,m,n,o. Z : array [1..5] z ('K,L','M','N','O');

ini berarti

akan melakukan

perulangan dari 1-5 dengan tipe data char yang memiliki data
k,l,m,n,o. Y : array [1..5] of integer;

ini berarti y

akan melakukan perulangan dari 1-5 dengan tipe data integer (bilangan bulat).

6. Writeln, untuk menampilkan tampilan perbaris dan akan ganti baris untuk tampilan berikutnya. Cara penulisannya yaitu pertama diikuti dengan buka kurung kemudian tanda kutip satu () ini berfungsi untuk menampilkan ketikan berupa huruf, untuk menampilkan angka tidak dituntut jika tidak menggunakan tanda kutip satu () ditutup dengan tanda tutup kurung lalu diakhiri dengan titik koma (;).writeln('Program Mencari Banyak
Huruf'); Huruf

akan menampilkan ganti baris

Program

Mencari

Banyak

lalu

untuk

tampilan

selanjutnya.

writeln('kelompok 20'); akan menampilkan kelompok 20 dan akan ganti baris untuk tampilan selanjutnya. writeln; akan ganti baris. Writeln('Masukkan Kata atau Kalimat :
);akan

menampilkan Masukkan Banyaknya Data yang akan akan ganti baris. writeln ('Banyaknya akan menampilkan Banyaknya Karakter akan ganti baris. writeln

diisikan nilai dan


Karakter :');

yang akan diisikan nilai dan


(X[i],' = ',Y[i]);

akan menampilkan nilai x akan sama

dengan nilai y begin, sebagai tanda dimulainya suatu program dan begin merupakan salah satu dari kata cadangan (reserved words). for to do, digunakan sebagai statement perulangan (loop) dalam bahasa Pascal. Perintah ini digunakan bila nilai awal lebih kecil dari nilai akhir. for k :=1 to length (kata) do
begin

ini berarti k akan melakukan perulangan dengan batas 1


for i := 1 to 5 do begin

sampai length. if

ini berarti i

akan melakukan perulangan dengan batas 1 sampai 5.


then,

untuk pernyataan suatu kondisi dimana untuk

menentukan suatu keputusan (terdapat dua keputusan). Bila hanya ada satu statement saja setelah if, maka statement itu

langsung dituliskan saja setelah then dan diakhiri dengan titik koma (;). Bila ada lebih dari satu statement setelah if, maka statement itu harus
or

diapit

dengan

begin...end;.

if

(kata[k]=X[i])

(kata[k]=Z[i])then Y[i] := Y[i] + 1;

ini

berarti

pengkondisian fungsi.

ini berarti y[i]

akan sama dengan y[i]+1. readln; untuk memerintahkan program untuk membaca statement diiikuti dengan variabel yang telah dikenalkan sebelumnya atau menampilkan output di dalam tanda kurung (). Kemudian diakhirin dengan titik koma (;) . End, Setelah itu diakhiri dengan end., dimana end. Berfungsi sebagai tanda akhir dari suatu program.

Gambar 4.17 hasil Program Pencarian karakter

Program ini untuk mencari banyak karakter nilai yang telah dimasukkan sebelumnya.

4.4 Kesimpulan Array adalah suatu struktur yang terdiri dari sejumlah elemen yang memiliki tipe data yang sama.Array terdiri dari array satu dimensi , dua dimensi, dan multidimensi.Array satu dimensi adalah sebuah variabel

yang menyimpan sekumpulan data yang memiliki tipe sama dan elemen yang akan diakses hanya melalui 1 indeks.Array dua dimensi yaitu sebuah variabel yang menyimpan sekumpulan data yang memiliki tipe sama dan elemen yang akan diakses melalui 2 indeks yang terdiri dari baris dan kolom.Array multidimensi yaitu yaitu sebuah variabel yang menyimpan sekumpulan data yang memiliki tipe sama dan elemen yang akan diakses melalui banyak indeks. Penggunaan array bertujuan agar data yang memilik inilai-nilai yang saling berhubungan dapat lebih mudah diurutkan atau lebih proses pencarian (searching). Record adalah koleksi satuan data yang heterogen, yakni terdiri dari berbagai type. Stack adalah suatu bentuk khusus dari linear list dimana operasi penyisipan dan penghapusan atas elemen-elemen hanya dapat dilakukan pada satu sisi saja yang disebut sebagai TOP. Stack menggunakan prinsip LIFO ( Last In First Out) dimana elemen yang pertama kali masuk akan terakhir diproses dan dikeluarkan. Queue adalah kumpulam data yang seolah-olah terlihat seperti ada data yang diletakkan di sebelah data yang diinginnya. Queue menggunakan prinsip FIFO (First In First Out) dimana elemen yang pertama kali masuk akan pertama kali diproses dan dikeluarkan. Uses berfungsi untuk mendeklarasikan penggunaan unit Var berfungsi untuk mendeklarasikan suatu variabel, variabel yang dideklarasikan harus memiliki tipe data tertentu mudah dalam

Write berungsi unuk keluaran (output) yang menampilkan hasil tanpa ganti baris, sedangkan writeln berfugsi untuk keluaran yang menampilkan hasil dengan satu spasi ke bawah (ganti baris) Case of berfungsi untuk memilih bagian yang terdapat pilihan yang banyak dan ekseskusi yang panjang yang akan dijalankan If then berfungsi sebagai selection bila terdapat pilihan yang tidak terlalu banyak dan eksekusi baris program yang panjang Break berfungsi untuk ,mengakhiri pengulangan.