Antrian Dengan Array Ika Menarianti Mengenal Struktus Data

  • Slides: 37
Download presentation
Antrian Dengan Array Ika Menarianti

Antrian Dengan Array Ika Menarianti

Mengenal Struktus Data Antrian � Antrian (queue) adalah struktur data yang mempunyai sifat bahwa

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 D Belakang E

Operasi dalam antrian � Insert menyatakan operasi untuk memasukkan data kedalam antrian. Dinyatakan dengan

Operasi dalam antrian � Insert menyatakan operasi untuk memasukkan data kedalam antrian. Dinyatakan dengan Insert(A, d) atau Insert(d). A menyatakan antrian 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);

Implementasi Antrian dengan array � Pilih menu File dan Save project As. . �

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 : Form. Antrian Caption: Antrian

Menambahkan kode untuk mendeklarasikan tipe dan variabel � Ketikkan kode berikut diatas kata type

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;

const Makselemen = 10; Untuk membuat konstanta bernama Makselemen yang bernilai 10. TQueue =

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.

Berikut variabel antrian terkandung didalamnya dan Antrian 1 field yang 2 3 4 Data

Berikut variabel antrian terkandung didalamnya dan Antrian 1 field yang 2 3 4 Data 5 6 7 8 9 10 Depan Belakang Menyatakan data paling depan Menyatakan data paling belakang

� Nilai Depan dan Belakang yang sama menyatakan bahwa antrian dalam keadaan kosong, tidak

� Nilai Depan dan Belakang yang sama menyatakan bahwa antrian dalam keadaan kosong, tidak peduli sedang menunjuk posisi apapun. Depan 1 1 2 Belakang 1 3 4 5 Nilai yang sama pada Depan dan Belakang menyatakan antrian kosong 6 7 8 9 10

� Contoh berikut menunjukkan keadaan setelah dua data dimasukkan ke dalam antrian: Data paling

� Contoh berikut menunjukkan keadaan setelah dua data dimasukkan ke dalam antrian: Data paling depan Depan Belakang 1 1 3 Nara 2 Fadhilah 3 Data paling 4 belakang 5 6 Dua data setelah ditambahkan 7 8 9 10

Menambahkan komponen string grid, edit dan button

Menambahkan komponen string grid, edit dan button

Komponen Properti Nilai String Grid Name String. Grid. Antrian Col. Count 1 (lebarkan sesuai

Komponen Properti Nilai String Grid Name String. Grid. Antrian Col. Count 1 (lebarkan sesuai grid) Scroll. Bars ss. Vertical (hanya scrollbar vertikal yang ditampilkan) Name Edit. Antrian Text Kosongkan Name Button. Insert Caption &Insert Name Button. Remove Caption &Remove Name Button. Keluar Caption &Keluar Edit Button 1 Button 2 Button 3

Menambahkan prosedur untuk menampilkan data � Tambahkan baris berikut di atas kata private procedure

Menambahkan prosedur untuk menampilkan data � Tambahkan baris berikut di atas kata private procedure Tampilkan. Data; � Tuliskan kode berikut di atas end. yang paling bawah. procedure TForm. Antrian. Tampilkan. Data; var i : integer; Ket: String; begin String. Grid. Antrian. Row. Count: = Makselemen + 1; String. Grid. Antrian. Cells[0, 0] : = 'Isi Antrian'; for i: =1 to Makselemen do

begin //keterangan tambahan if Antrian. Belakang = Antrian. Depan then if Antrian. Belakang =

begin //keterangan tambahan if Antrian. Belakang = Antrian. Depan then if Antrian. Belakang = i then Ket : = '{Depan dan Belakang}' else Pastikan tidak ada kesalahan Ket : = '' dengan tekan F 9 dan simpan else if Antrian. Depan = i then Ket : = '{Depan}' else if Antrian. Belakang = i then Ket : = '{Belakang}' else Ket : = ''; end; String. Grid. Antrian. Cells[0, i] : = Antrian. Data[i] + Ket; end;

� Pernyataan if bertingkat digunakan untuk mengatur variabel Ket. Untuk setiap elemen dalam antrian

� 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: String. Grid. Antrian. Cells[0, i] : = Antrian. Data[i] + Ket;

Menambahkan kode pada On. Create � Klik Event pada Object Inspector, pilih On. Create

Menambahkan kode pada On. Create � Klik Event pada Object Inspector, pilih On. Create dan klik ganda, kemudian ketikkan kode dibawah ini: procedure TForm. Antrian. Form. Create(Sender: TObject); var i : Integer; begin Antrian. Depan : = Makselemen; Tambahkan kode yang berwarna merah pada baris Antrian. Belakang : = Makselemen; program On. Create //kosongkan data for i : = 1 to Makselemen do Antrian. Data[i] : = ''; Tampilkan. Data; end;

Tampilan setelah program di compile

Tampilan setelah program di compile

Menambahkan prosedur Insert � Diatas kata private ketikkan kode berikut procedure Insert(x : String);

Menambahkan prosedur Insert � Diatas kata private ketikkan kode berikut procedure Insert(x : String); � Di atas baris end. Paling bawah ketikkan kode berikut: procedure TForm. Antrian. Insert(x: string); var Posisi. Belakang : 1. . Makselemen; begin //geser belakang ke posisi berikutnya

if Antrian. Belakang = Makselemen then Posisi. Belakang : = 1 else Posisi. Belakang

if Antrian. Belakang = Makselemen then Posisi. Belakang : = 1 else Posisi. Belakang : = Antrian. Belakang + 1; //cek belakang apa sama dengan depan if Posisi. Belakang = Antrian. Depan then Show. Message('Antrian Penuh') else begin Antrian. Belakang : = Posisi. Belakang; //Masukkan data Antrian. Data[Antrian. Belakang] : = x; end; Pastikan tidak ada kesalahan dengan tekan F 9 dan simpan

Tambahkan kode untuk menambahkan data ke dalam antrian � Klik ganda pada tombol Insert

Tambahkan kode untuk menambahkan data ke dalam antrian � Klik ganda pada tombol Insert dan secara otomatis kejadian On. Click akan diaktifkan jika tombol di klik. � Tuliskan kode berikut: procedure. TForm. Antrian. Button. Insert. Click(Sender: TObject); begin //periksa kalau data kososng if Trim(Edit. Antrian. Text) = '' then begin Show. Message('Data harap diisi'); Exit; end; Insert(Edit. Antrian. Text); Tampilkan. Data; end;

Keterangan. . Isi Edit. Antrian akan di cek dulu, apakah dalam keadaan kosong atau

Keterangan. . Isi Edit. Antrian 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(Edit. Antrian. Text); Tampilkan. Data; Akan dijalankan. Pernyataan pertama memanggil prosedur Insert untuk memasukkan data pada antrian. Prosedur Tampilkan. Data akan membuat data yang dimasukkan terlihat di String Grid.

Tampilan jika edit tidak di isi

Tampilan jika edit tidak di isi

Tampilan jika edit di isi Isikan data sebanyak 9 kali, dan lihat apa yang

Tampilan jika edit di isi Isikan data sebanyak 9 kali, dan lihat apa yang terjadi.

Menambahkan fungsi Empty � Tambahkan kode berikut di atas private function Empty(): Boolean; �

Menambahkan fungsi Empty � Tambahkan kode berikut di atas private function Empty(): Boolean; � Ketikkan program berikut di tas end. Simpan program. function TForm. Antrian. Empty(): Boolean; begin if Antrian. Depan = Antrian. Belakang then Empty : = True else Empty : = False; end;

Menambahkan fungsi remove Tambahkan kode berikut diatas private function Remove(): String; � Tulis kode

Menambahkan fungsi remove Tambahkan kode berikut diatas private function Remove(): String; � Tulis kode berikut di atas end. function TForm. Antrian. Remove(): String; begin if Empty() then begin Show. Message('Antrian Ksong'); Remove: = ''; Exit; end; if Antrian. Depan = Makselemen then Antrian. Depan : = 1 else Antrian. Depan : = Antrian. Depan + 1; Remove : = Antrian. Data[Antrian. Depan]; end; �

Keterangan. . � Pada awalnya dilakukan pemeriksaan terhadap isi antrian. Jika antrian kosong maka

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.

Tambahkan kode pada tombol Remove � Klik ganda pada tombol remove � Ketikkan kode

Tambahkan kode pada tombol Remove � Klik ganda pada tombol remove � Ketikkan kode berikut: procedure TForm. Antrian. Button. Remove. Click(Sender: TObject); var Data : String; begin Data : = Remove; Tampilkan. Data; if Data <> '' then Show. Message('Data yang diambil: ' + Data); end;

Uji program dengan menambahkan data ke dalam antrian dan kemudian ambil data dari antrian.

Uji program dengan menambahkan data ke dalam antrian dan kemudian ambil data dari antrian.

Tekan tombol remove Lakukan remove untuk semua data dan lihat apa yang terjadi.

Tekan tombol remove Lakukan remove untuk semua data dan lihat apa yang terjadi.

Menampilkan data antrian dari depan ke belakang � Ubah program pada prosedur Tampilkan. Data

Menampilkan data antrian dari depan ke belakang � Ubah program pada prosedur Tampilkan. Data dengan kode dibawah ini: procedure TForm. Antrian. Tampilkan. Data; var i, Jum. Data, Nomor : integer; begin //Hitung jumlah data if Antrian. Depan = Antrian. Belakang then Jum. Data : = 0 else // kalau tidak nol if (Antrian. Depan < Antrian. Belakang) then Jum. Data : = Antrian. Belakang - Antrian. Depan else Jum. Data : = Makselemen - Antrian. Depan + Antrian. Belakang;

//tentukan jumlah baris dalam string grid dan judul String. Grid. Antrian. Row. Count: =

//tentukan jumlah baris dalam string grid dan judul String. Grid. Antrian. Row. Count: = Jum. Data + 1; String. Grid. Antrian. 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 String. Grid. Antrian. 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 begin String. Grid. Antrian. Cells[0, Nomor] : = Antrian. Data[i]; Nomor: = Nomor +1; end

else begin Nomor: =1; for i: =Antrian. Depan + 1 to Makselemen do begin

else begin Nomor: =1; for i: =Antrian. Depan + 1 to Makselemen do begin String. Grid. Antrian. Cells[0, Nomor] : = Antrian. Data[i]; Nomor: = Nomor+1; end; for i : = 1 to Antrian. Belakang do begin String. Grid. Antrian. Cells[0, Nomor]: =Antrian. Data[i]; Nomor: =Nomor+1; end end;

Evaluasi

Evaluasi

Soal 1 a) b) Apa yag dimaksud dengan antrian? Mengapa antrian dikatakan mempunyai sifat

Soal 1 a) b) Apa yag dimaksud dengan antrian? Mengapa antrian dikatakan mempunyai sifat FIFO?

Soal 2 � Gambarkan keadaan antrian pemanggilan operasi berikut: Insert(‘A’) Insert(‘B’) Insert(‘C’) Remove Insert(‘X’)

Soal 2 � Gambarkan keadaan antrian pemanggilan operasi berikut: Insert(‘A’) Insert(‘B’) Insert(‘C’) Remove Insert(‘X’) Remove Insert(‘Y’) Insert(‘Z’) Remove untuk setiap

Soal 3 � Berdasarkan contoh program sebelumnya, jika suatu antrian terbentuk menggunakan array dengan

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!

Soal 4 � Suatu antrian diimplementasikan dengan array yang mengandung 6 elemen dengan keadaan

Soal 4 � Suatu antrian diimplementasikan dengan array yang mengandung 6 elemen dengan keadaan sebagai berikut: Depan Belakan g 7 1 10 2 12 3 5 4 3 5 10 6

� Berapa jumlah data dalam antrian tersebut? � Bagaimana urutan antriannya? � Bila terjadi

� Berapa jumlah data dalam antrian tersebut? � Bagaimana urutan antriannya? � Bila terjadi sebuah operasi Remove, gambarkan keadaan akhirnya!