Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
Diterbitkan olehHarjanti Setiabudi Telah diubah "6 tahun yang lalu
1
NAMA : SITI HAJAR NIM : UNIT : B NO.HP : 0852 – 2000 – 3786
2
SOAL Berikan contoh ilustrasi dari kasus antrian berikut : Diketahui suatu antrian / queue dengan max = 6 Lakukan Enqueue 4 elemen ke dalam antrian, dimanakah posisi Head dan Tail . Kemudian lakukan Dequeue 2 elemen dari antrian, maka dimanakah posisi Head dan Tail ? Dari keadaan diatas, bagaimanakah kondisi IsFull dan IsEmptynya ?
3
ILUSTRASI KONDISI KASUS PERTAMA
Deklarasi Awal Queue Variabel yang akan digunakan adalah data (array sebagai tempat queue), head, tail. Sama seperti Stack, Nilai dari head dan tail dimulai dari -1 yang menandakan queue kosong. sebagai contohnya kita akan membuat queue dengan data maksimal sebanyak 6 data. MAX = 6 HEAD = -1 TAIL = -1
4
ILUSTRASI KONDISI KASUS KEDUA TENTANG ENQUEUE
Digunakan untuk menambahkan elemen ke dalam Antrian, penambahan elemen selalu ditambahkan di elemen paling belakang. Penambahan elemen selalu menggerakan variabel Tail dengan cara increment counter Tail terlebih dahulu. Contoh : Lakukan Enqueue 4 elemen ke dalam antrian, dimanakah posisi Head dan Tail .
5
GAMBAR ILUSTRASI ENQUEUE
MAX = 6 1 2 3 4 HEAD = 0 TAIL = 3
6
ILUSTRASI KONDISI KASUS KETIGA TENTANG DEQUEUE
Digunakan untuk menghapus elemen terdepan/pertama (head) dari Antrian. Dengan cara menggeser semua elemen antrian kedepan dan mengurangi Tail dengan 1. Contoh : Berdasarkan ilustrasi pertama, lakukan Dequeue 2 elemen dari antrian, maka dimanakah posisi Head dan Tail ?
7
GAMBAR ILUSTRASI DEQUEUE
Kondisi ilustrasi sebelum di DEQUEUE 1 2 3 4 HEAD = 0 TAIL = 3
8
GAMBAR ILUSTRASI DEQUEUE
Ilustrasi sesudah di DEQUEUE sebelum terjadi pergeseran 3 4 HEAD = 0 TAIL = 3
9
GAMBAR ILUSTRASI DEQUEUE
Kondisi ilustrasi DEQUEUE setelah terjadi pergeseran posisi yang maju 1 posisi ke depan HEAD = 0 3 4 POSISI HEAD TAIL = 1 POSISI TAIL
10
ILUSTRASI KONDISI KASUS KEEMPAT TENTANG IsEMPTY
Untuk memeriksa apakah Antrian sudah penuh atau belum. Dengan cara memeriksa nilai Tail, jika Tail = -1 maka empty. Kita tidak memeriksa Head, karena Head adalah tanda untuk kepala antrian (elemen pertama dalam antrian) yang tidak akan berubah-ubah. Pergerakan pada Antrian terjadi dengan penambahan elemen Antrian kebelakang, yaitu menggunakan nilai Tail.
11
GAMBAR ILUSTRASI IsEMPTY
3 4 Kondisi IsEmpty Masih Ada Yang Kosong karena nilai TAIL tidak bernilai -1
12
ILUSTRASI KONDISI KASUS TENTANG IsFull
Untuk mengecek apakah Antrian sudah penuh atau belum. Dengan cara mengecek nilai Tail, jika Tail >= MAX-1 (karena MAX-1 adalah batas elemen array pada C) berarti sudah penuh.
13
GAMBAR ILUSTRASI IsFull
3 4 Kondisi IsFull = Belum Penuh Masih ada tempat yang belum terisi karena setelah dilakukan pengecekan, nilai TAIL belum mencapai max >= -1
14
CONTOH APABILA DI BUAT DALAM BENTUK PROGRAM
Program antrian_array_statis; Uses wincrt; Const Max_queue = 6; Type Queue = array[1..Max_queue] of char; Var Antrian : queue; I : integer; Depan : integer; Belakang : integer; Pilih : char; Elemen : char;
15
{***************************************
* Procedure menampilkan antrian data. * ***************************************} Procedure tampilkan( x :integer); Var I : integer; Begin For i := 1 to x do Gotoxy( * i, 19); Write(antrian[i]); End; END; {*procedure TAMPILAKAN*}
16
Procedure clear; Var I : integer; Begin For i := 1 to 10 do Gotoxy( * i, 19);writeln(' '); end; END; {*procedure HUPUS*} {**************************************************************** * Fungsi untuk menge-cek keadaan antrian ( penuh atau kosong ) *****************************************************************}
17
Function kosong(belakang:integer):boolean;
Begin Kosong := false; If (belakang = 0) then Kosong := true; End; Function penuh(belakang:integer):boolean; Penuh := false; If (belakang = max_queue) then Penuh := true;
18
{*******************************************************************
* Procedure untuk menambah elemen baru selama antrian belum penuh.* * Jika antrian sudah penuh. Program akan menampilkan suatu pesan. * *******************************************************************} PROCEDURE TAMBAH_ELEMEN (VAR DEPAN, BELAKANG: INTEGER; ELEMEN: CHAR); BEGIN IF ( PENUH(BELAKANG)) THEN GOTOXY(32,16); WRITE('ANTRIAN SUDAH PENUH'); END
19
Else Begin Gotoxy(49,15);writeln(' '); gotoxy(31,15);write('isikan elemennya : '); readln(elemen); if (kosong(belakang)) then Depan := 1; Belakang := 1; Antrian[belakang] := elemen; End
20
Else Begin Belakang := belakang + 1; Antrian[belakang] := elemen; End; Tampilkan(belakang); Gotoxy(31,15);write(' '); end;
21
{*******************************************************************
* Procedure untuk menghapus elemen dari antrian yang belum kosong.* * Jika antrian kosong, program akan menampilkan suatu pesan * *******************************************************************} PROCEDURE HAPUS (VAR DEPAN, BELAKANG : INTEGER); VAR I : INTEGER; BEGIN IF (NOT KOSONG(BELAKANG)) THEN ELEMEN := ANTRIAN[DEPAN]; FOR I := DEPAN TO (BELAKANG - 1) DO
22
Begin Antrian[i] := antrian[i+1]; End; Belakang := belakang - 1; Clear; End Else Gotoxy(33,16); writeln('antrian kosong...!'); Tampilkan(belakang); END; {*procedure hapus*} {******************************************************************* * procedure pembukaan program, nama : TARKIMAN NIM : * *******************************************************************}
23
Procedure tarkiman; Var S,t : string; I,x : integer; Begin S := 'tugas struktur data - program antrian ( queue )'; for i := 1 to length(s) do For x := 1 to 5 do Gotoxy(17+i,x+1);write(copy(s,i,1)); Gotoxy(17+i,x);write(' '); end; End; T := 'tarkiman ( )'; for i := 1 to length(t) do
24
Gotoxy(30,10);write(copy(t,1,i));
End; {******************************************************************* * Procedure menu program, bingkai tampilan pilihan menu * * Dan ilustrasi kotak-kotak antrian * *******************************************************************} Procedure menuprogram; Begin Gotoxy(12,2); writeln('8*******************************************************8'); Gotoxy(16,3); writeln('menu program antrian data ( queue )BY SITI HAJAR'); gotoxy(12,4); writeln('=========================================================');
25
Gotoxy(12,3);writeln('|');gotoxy(68,3);writeln('|');
26
Gotoxy(24,12);writeln('ilustrasi tampilan antrian ( queue )');
gotoxy(12,13);writeln('|');gotoxy(68,13);writeln('|'); Gotoxy(13,13);writeln('======================================================='); Gotoxy(12,14);writeln('|');gotoxy(68,14);writeln('|'); Gotoxy(12,15);writeln('|');gotoxy(68,15);writeln('|'); Gotoxy(12,16);writeln('|');gotoxy(68,16);writeln('|'); Gotoxy(12,17);writeln('|');gotoxy(68,17);writeln('|'); Gotoxy(12,18);writeln('|');gotoxy(68,18);writeln('|'); Gotoxy(12,19);writeln('|');gotoxy(68,19);writeln('|'); Gotoxy(12,20);writeln('|');gotoxy(68,20);writeln('|'); Gotoxy(12,21);writeln('|');gotoxy(68,21);writeln('|'); Gotoxy(12,22);writeln('|');gotoxy(68,22);writeln('|');
27
Gotoxy(12,22);writeln('8*******************************************************8');
Gotoxy(20,21);writeln('f i f o ATAU f c f s'); Gotoxy(20,18);writeln('*************************'); Gotoxy(20,19);writeln('|');gotoxy(24,19);writeln('|');gotoxy(28,19);writeln('|'); Gotoxy(32,19);writeln('|');gotoxy(36,19);writeln('|');gotoxy(40,19);writeln('|'); Gotoxy(44,19);writeln('|'); Gotoxy(20,20);writeln('*************************'); Gotoxy(16,18);writeln('out');gotoxy(47,18);writeln('in'); Gotoxy(16,19);writeln('<==');gotoxy(47,19);writeln('<==');
28
Gotoxy(25,6);writeln('1. Menambah elemen baru (enqueue)');
Gotoxy(25,7);writeln('2. Menghapus elemen (dequeue)'); Gotoxy(25,9);writeln('0. Exit'); Gotoxy(7,24);writeln('silahkan tekan tombol 1 atau 2 pada keyboard anda dan 0 untuk exit'); Gotoxy(29,24);writeln('1');gotoxy(36,24);writeln('2');gotoxy(61,24);writeln('0'); End; {********************************************************************* * Procedure pilihan menu, sesuai tombol yang di tekan pada keyboard * * 1. Menambahkan elemen antrian ( proses enqueue ) *
29
* 2. Menghapus elemen antrian ( proses dequeue ) *
* 0. Exit ( mengakhiri program ) * *********************************************************************} PROCEDURE MENU( PILIH:CHAR); Begin Case pilih of '1' : begin Gotoxy(30,16);writeln(' '); gotoxy(25,6);writeln('1. Menambah elemen baru (enqueue)'); Tambah_elemen(depan,belakang,elemen); End;
30
'2' : begin Gotoxy(30,16);writeln(' '); gotoxy(25,7);writeln('2. Menghapus elemen (dequeue)'); Hapus(depan,belakang); End; '0' : begin Gotoxy(25,9);writeln('0. Exit'); Clrscr; {******************************************************************* * Program utama * *******************************************************************}
31
Begin Clrscr; Tarkiman; depan := 0; Belakang := 0; Repeat Menuprogram; Pilih:=readkey; Menu(pilih); Until pilih='0' End.
32
TAMPILAN OUTPUT PROGRAM
KONDISI KASUS PERTAMA HEAD = -1 POSISI HEAD MAX = 6 TAIL = -1 POSISI TAIL
33
TAMPILAN OUTPUT PROGRAM
KONDISI KASUS KEDUA ( ENQUEUE ) HEAD = 0 POSISI HEAD TAIL = 3 POSISI TAIL
34
TAMPILAN OUTPUT PROGRAM
KONDISI KASUS KETIGA ( DEQUEUE ) HEAD = 0 POSISI HEAD TAIL = 1 POSISI TAIL
35
TAMPILAN OUTPUT PROGRAM
KONDISI KASUS UNTUK ISFULL & ISEMPTY Kondisi IsFull belum penuh terisi Kondisi IsEmpty masih ada yang kosong belum terisi
36
THANK YOU SEE YOU NEXT TIME ….
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.