Delphi Bagian 2
-
Upload
ruli-handrio -
Category
Documents
-
view
412 -
download
0
Transcript of 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];
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.
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
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 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.
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 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
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. 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).
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
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.
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
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.