Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
1
Antrian Dengan Array Ika Menarianti
2
Mengenal Struktus Data Antrian
Antrian (queue) adalah struktur data yang mempunyai sifat bahwa data yang masuk duluan akan diproses lebih dulu. Struktur data ini mempunyai sifat FIFO (First-In-First-Out). Antrian kosong Depan A B C Depan Belakang B C Depan Belakang B C D E Belakang
3
Operasi dalam antrian Insert menyatakan operasi untuk memasukkan data kedalam antrian. Dinyatakan dengan Insert(A, d) atau Insert(d). A menyatakan antrian dan d menyatakan item data yang dimasukkan ke dalam antrian. Remove menyatakan operasi untuk mengambil data dari antrian. Dinyatakan dengan Remove(A). Penggunaan Remove dituangkan dalam bentuk pernyataan Data:= Remove(A);
4
Implementasi Antrian dengan array
Pilih menu File dan Save project As.. Simpan unit dengan nama FAntrian Simpan project dengan nama Pantrian atur properti form sebagai berikut: Name : FormAntrian Caption: Antrian
5
Menambahkan kode untuk mendeklarasikan tipe dan variabel
Ketikkan kode berikut diatas kata type const Makselemen = 10; Di bawah baris type, sisipkan kode berikut: TQueue = record Data : array [1..Makselemen] of String; Depan, Belakang : 0 ..Makselemen; end; Buat baris kosong dibawah {private declarations} dan ketikkan: Antrian : TQueue;
6
const Makselemen = 10; Untuk membuat konstanta bernama Makselemen yang bernilai 10. TQueue = record Data : array [1..Makselemen] of String; Depan, Belakang : 0 ..Makselemen; end; Digunakan untuk membuat tipe Tqueue yang menyatakan struktur data tumpukan. Tipe ini mengandung tiga buah field yait Data, Depan dan Belakang. Data berupa array yang mengandung Makselemen buah elemen. Depan menyatakan posisi depan antrian dan Belakang menyatakan posisi belakan antrian. Antrian : TQueue; Dimaksudkan untuk membuat variabel instan bernama antrian yang bertipe Tqueue.
7
Berikut variabel antrian dan field yang terkandung didalamnya
1 2 3 4 5 6 7 8 9 10 Antrian Data Menyatakan data paling depan Depan Belakang Menyatakan data paling belakang
8
Nilai Depan dan Belakang yang sama menyatakan bahwa antrian dalam keadaan kosong, tidak peduli sedang menunjuk posisi apapun. 1 2 3 4 5 6 7 8 9 10 Depan 1 Belakang 1 Nilai yang sama pada Depan dan Belakang menyatakan antrian kosong
9
Contoh berikut menunjukkan keadaan setelah dua data dimasukkan ke dalam antrian:
Data paling depan 1 2 3 4 5 6 7 8 9 10 Depan 1 Nara Fadhilah Data paling belakang Belakang 3 Dua data setelah ditambahkan
10
Menambahkan komponen string grid, edit dan button
11
Komponen Properti Nilai String Grid Name StringGridAntrian ColCount 1 (lebarkan sesuai grid) ScrollBars ssVertical (hanya scrollbar vertikal yang ditampilkan) Edit EditAntrian Text Kosongkan Button 1 ButtonInsert Caption &Insert Button 2 ButtonRemove &Remove Button 3 ButtonKeluar &Keluar
12
Menambahkan prosedur untuk menampilkan data
Tambahkan baris berikut di atas kata private procedure TampilkanData; Tuliskan kode berikut di atas end. yang paling bawah. procedure TFormAntrian.TampilkanData; var i : integer; Ket: String; begin StringGridAntrian.RowCount:= Makselemen + 1; StringGridAntrian.Cells[0,0] := 'Isi Antrian'; for i:=1 to Makselemen do
13
begin //keterangan tambahan if Antrian. Belakang = Antrian
begin //keterangan tambahan if Antrian.Belakang = Antrian.Depan then if Antrian.Belakang = i then Ket := '{Depan dan Belakang}' else Ket := '' if Antrian.Depan = i then Ket := '{Depan}' Ket := '{Belakang}' Ket := ''; end; StringGridAntrian.Cells[0,i] := Antrian.Data[i] + Ket; Pastikan tidak ada kesalahan dengan tekan F9 dan simpan
14
StringGridAntrian.Cells[0,i] := Antrian.Data[i] + Ket;
Pernyataan if bertingkat digunakan untuk mengatur variabel Ket. Untuk setiap elemen dalam antrian akan di isi dengan string kosong ‘{Depan}’, ‘{Belakang}’ atau ‘{Depan dan Belakang}’ Isi variabel Ket selanjutnya ditambahkan ke setiap elemen dalam antrian melalui pernyataan: StringGridAntrian.Cells[0,i] := Antrian.Data[i] + Ket;
15
Menambahkan kode pada OnCreate
Klik Event pada Object Inspector, pilih OnCreate dan klik ganda, kemudian ketikkan kode dibawah ini: procedure TFormAntrian.FormCreate(Sender: TObject); var i : Integer; begin Antrian.Depan := Makselemen; Antrian.Belakang := Makselemen; //kosongkan data for i := 1 to Makselemen do Antrian.Data[i] := ''; TampilkanData; end; Tambahkan kode yang berwarna merah pada baris program OnCreate
16
Tampilan setelah program di compile
17
Menambahkan prosedur Insert
Diatas kata private ketikkan kode berikut procedure Insert(x : String); Di atas baris end. Paling bawah ketikkan kode berikut: procedure TFormAntrian.Insert(x:string); var PosisiBelakang : 1..Makselemen; begin //geser belakang ke posisi berikutnya
18
if Antrian.Belakang = Makselemen then PosisiBelakang := 1 else PosisiBelakang := Antrian.Belakang + 1; //cek belakang apa sama dengan depan if PosisiBelakang = Antrian.Depan then ShowMessage('Antrian Penuh') begin Antrian.Belakang := PosisiBelakang; //Masukkan data Antrian.Data[Antrian.Belakang] := x; end end; Pastikan tidak ada kesalahan dengan tekan F9 dan simpan
19
Tambahkan kode untuk menambahkan data ke dalam antrian
Klik ganda pada tombol Insert dan secara otomatis kejadian OnClick akan diaktifkan jika tombol di klik. Tuliskan kode berikut: procedureTFormAntrian.ButtonInsertClick(Sender: TObject); begin //periksa kalau data kososng if Trim(EditAntrian.Text) = '' then ShowMessage('Data harap diisi'); Exit; end; Insert(EditAntrian.Text); TampilkanData;
20
Keterangan.. Isi EditAntrian akan di cek dulu, apakah dalam keadaan kosong atau tidak. Jika kosong maka pernyatan Exit membuat eksekusi terhadap prosedur diakhiri setelah muncul “Data Harap di isi”. Jika komponen edit tidak kosong maka perintah Insert(EditAntrian.Text); TampilkanData; Akan dijalankan. Pernyataan pertama memanggil prosedur Insert untuk memasukkan data pada antrian. Prosedur TampilkanData akan membuat data yang dimasukkan terlihat di String Grid.
21
Tampilan jika edit tidak di isi
22
Tampilan jika edit di isi
Isikan data sebanyak 9 kali, dan lihat apa yang terjadi.
23
Menambahkan fungsi Empty
Tambahkan kode berikut di atas private function Empty():Boolean; Ketikkan program berikut di tas end. Simpan program. function TFormAntrian.Empty():Boolean; begin if Antrian.Depan = Antrian.Belakang then Empty := True else Empty := False; end;
24
Menambahkan fungsi remove
Tambahkan kode berikut diatas private function Remove(): String; Tulis kode berikut di atas end. function TFormAntrian.Remove():String; begin if Empty() then ShowMessage('Antrian Ksong'); Remove:= ''; Exit; end; if Antrian.Depan = Makselemen then Antrian.Depan := 1 else Antrian.Depan := Antrian.Depan + 1; Remove := Antrian.Data[Antrian.Depan];
25
Keterangan.. Pada awalnya dilakukan pemeriksaan terhadap isi antrian. Jika antrian kosong maka pesan “antrian kosong” akan ditampilkan. Apabila antrian tidak kosong, akan diperiksa apakah Depan bernilai sama dengan Makselemen. Kalau ya maka Depan diberi nilai 1 yang menyatakan bahwa data berada pada indeks 1. Jika tidak maka data yang dimasukkan berada satu posisi sesudahnya. Kemudian Remove := Antrian.Data[Antrian.Depan]; memberikan nilai balik pada fungsi remove.
26
Tambahkan kode pada tombol Remove
Klik ganda pada tombol remove Ketikkan kode berikut: procedure TFormAntrian.ButtonRemoveClick(Sender: TObject); var Data : String; begin Data := Remove; TampilkanData; if Data <> '' then ShowMessage('Data yang diambil: ' + Data); end;
27
Uji program dengan menambahkan data ke dalam antrian dan kemudian ambil data dari antrian.
28
Tekan tombol remove Lakukan remove untuk semua data dan lihat apa yang terjadi.
29
Menampilkan data antrian dari depan ke belakang
Ubah program pada prosedur TampilkanData dengan kode dibawah ini: procedure TFormAntrian.TampilkanData; var i, JumData, Nomor : integer; begin //Hitung jumlah data if Antrian.Depan = Antrian.Belakang then JumData := 0 else // kalau tidak nol if (Antrian.Depan < Antrian.Belakang) then JumData := Antrian.Belakang - Antrian.Depan else JumData := Makselemen - Antrian.Depan + Antrian.Belakang;
30
//tentukan jumlah baris dalam string grid dan judul StringGridAntrian
//tentukan jumlah baris dalam string grid dan judul StringGridAntrian.RowCount:= JumData + 1; StringGridAntrian.Cells[0,0] := 'Isi Antrian'; //salin data ke string grid dari depan ke belakang if Antrian.Depan = Antrian.Belakang then for i:=1 to Makselemen do StringGridAntrian.Cells[0,i]:= '' else //kalau tidak nol if (Antrian.Depan < Antrian.Belakang) then begin Nomor:=1; for i:= Antrian.Depan + 1 to Antrian.Belakang do StringGridAntrian.Cells[0,Nomor] := Antrian.Data[i]; Nomor:= Nomor +1; end
31
else begin Nomor:=1; for i:=Antrian
else begin Nomor:=1; for i:=Antrian.Depan + 1 to Makselemen do StringGridAntrian.Cells[0,Nomor] := Antrian.Data[i]; Nomor:= Nomor+1; end; for i := 1 to Antrian.Belakang do StringGridAntrian.Cells[0,Nomor]:=Antrian.Data[i]; Nomor:=Nomor+1; end
32
Evaluasi
33
Soal 1 Apa yag dimaksud dengan antrian?
Mengapa antrian dikatakan mempunyai sifat FIFO?
34
Soal 2 Gambarkan keadaan antrian untuk setiap pemanggilan operasi berikut: Insert(‘A’) Insert(‘B’) Insert(‘C’) Remove Insert(‘X’) Insert(‘Y’) Insert(‘Z’)
35
Soal 3 Berdasarkan contoh program sebelumnya, jika suatu antrian terbentuk menggunakan array dengan 20 elemen maka hanya bisa digunakan 19 elemen saja. Benarkah? Mengapa begitu? Jelaskan!
36
Soal 4 Suatu antrian diimplementasikan dengan array yang mengandung 6 elemen dengan keadaan sebagai berikut: 7 1 2 3 4 5 6 10 12 Depan 5 3 Belakang 10
37
Berapa jumlah data dalam antrian tersebut?
Bagaimana urutan antriannya? Bila terjadi sebuah operasi Remove, gambarkan keadaan akhirnya!
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.