Delphi Bagian 2

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];

Transcript of Delphi Bagian 2

Page 1: Delphi Bagian 2

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];

Page 2: Delphi Bagian 2

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.

Page 3: Delphi Bagian 2

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.

Page 4: Delphi Bagian 2

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

Repeat

Mulai

Masukan X

kekolom

terakhir

output

Keluaran X

kolom

pertama

Push Pop Keluar

Prosedur

Push

Prosedur

Pop

end

Page 5: Delphi Bagian 2

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 ).

Page 6: Delphi Bagian 2

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 itu array dari 1 sampai

dengan max dengan tipe karakter}

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.

Page 7: Delphi Bagian 2

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

Page 8: Delphi Bagian 2

program Program2_Kelompok20;

{$APPTYPE CONSOLE}

uses

SysUtils;

const

A:array[1..5] of integer=(23,45,22,71,34);{A adalah array

yang telah ditentukan dengan 5 buah indeks}

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 indeks ke-',indeks);

readln;

end.

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

Page 9: Delphi Bagian 2

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}

Page 10: Delphi Bagian 2

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

Page 11: Delphi Bagian 2

Gambar 4.6 Source code program 3

Ini adalah hasil dari program 3 yang sudah dijalankan .

Page 12: Delphi Bagian 2

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

Page 13: Delphi Bagian 2

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

Page 14: Delphi Bagian 2

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

Page 15: Delphi Bagian 2

Gambar 4.10 scourge code progeam 4 #3

Gambar 4.11 Hasil program 4

Gambar 4.12 Source code program 5

Page 16: Delphi Bagian 2

Gambar 4.13 source code program 5 #2

Gambar 4.14 source code program 5 #3

Page 17: Delphi Bagian 2

Gambar 4.15 Hasil program 5

Page 18: Delphi Bagian 2

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.

Page 19: Delphi Bagian 2

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;

Page 20: Delphi Bagian 2

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. Uses yaitu deklarasi unit yang dipakai untuk menjalankan

program

4. 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 ada k,i:integer;ini berarti k,i

menggunakan tipe data integer(bilangan bulat).

kata:string; ini berarti kata menggunakan tipe data

string. X : array [1..5] of char =

('K','L','M','N','O'); ini berarti x akan melakukan

perulangan dari 1-5 dengan tipe data char yang memiliki data

k,l,m,n,o. Z : array [1..5] of char =

('K’,’L','M','N','O'); ini berarti z 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).

Page 21: Delphi Bagian 2

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'); akan menampilkan Program Mencari Banyak

Huruf lalu ganti baris 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

diisikan nilai dan akan ganti baris. writeln ('Banyaknya

Karakter :'); akan menampilkan Banyaknya Karakter

yang akan diisikan nilai dan akan ganti baris. writeln

(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

sampai length. for i := 1 to 5 do begin ini berarti i

akan melakukan perulangan dengan batas 1 sampai 5.

if then, untuk pernyataan suatu kondisi dimana untuk

menentukan suatu keputusan (terdapat dua keputusan). Bila

hanya ada satu statement saja setelah if, maka statement itu

Page 22: Delphi Bagian 2

langsung dituliskan saja setelah then dan diakhiri dengan titik

koma (;). Bila ada lebih dari satu statement setelah if, maka

statement itu harus diapit dengan begin...end;. if

(kata[k]=X[i]) or (kata[k]=Z[i])then ini berarti

pengkondisian fungsi. Y[i] := Y[i] + 1; 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.

Page 23: Delphi Bagian 2

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 mudah dalam

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

Page 24: Delphi Bagian 2

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.