Pertemuan VI ANTRIAN (Queue)

dokumen-dokumen yang mirip
BAB III QUEUE (ANTRIAN)

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 1 x 3 x 50 Menit Pertemuan : 9

ANTRIAN ( QUEUE ) NAMA KELOMPOK : 1.EKA PRIHANTORO 2.FATKHUL ELEKTRIK PSH 3.RIZKY GUMILANG CR

Lab. Teknik Informatika Struktur Data 1

STACK (TUMPUKAN) Secara sederhana, sebuah tumpukan bisa kita ilustrasikan seperti gambar berikut.

STACK/TUMPUKAN. R. Denny Ari Wibowo, S.Kom STMIK BINA NUSANTARA JAYA LUBUKLINGGAU

RESUME A B C D. Gambar 1 Double Linked list dengan Empat Simpul

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 2 x 3 x 50 Menit Pertemuan : 4 & 5

DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II. : Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Queue.

5. QUEUE (ANTRIAN) TUJUAN PRAKTIKUM

Queue. Implementasi Queue dengan Array

4. STACK / TUMPUKAN TEORI PENUNJANG

STACK (TUMPUKAN) & QUEUE (ANTRIAN) Altien Jonathan Rindengan, S.Si., M.Kom.

A B C D E F. Gambar 1. Senarai berantai dengan 6 simpul

3. DOUBLE LINK LIST. Lab. Teknik Informatika Struktur Data 1

Universitas gunadarma. pascal. Bab 4- bab 10. Hana Pertiwi S.T

*Sekumpulan elemen yang diatur secara terurut. *Linear List tidak sama dengan Connected-List

Pertemuan III ARRAY dan RECORD

QUEUE (ANTRIAN) Struktur Data - Queue

STACK (Tumpukan) Tumpukan Koin. Tumpukan Kotak

Menghapus Pointer Statement yang digunakan untuk menghapus pointer adalah Dispose, yang mempunyai bentuk umum : Dispose(peubah) ;

LOGO STRUKTUR DATA QUEUE

Struktur Data. Tumpukan : Definisi & Operasi. Pertemuan 4 PROBLEM ALGORITHM DATA IMPLEMENTATION. Pert. 4b Struktur Data - FMIPA USD

Dasar Komputer & Pemrograman 2A

Double Linked List. Brigida Arie Minartiningtyas, M.Kom

Integer (Bilangan Bulat) Yang dimaksud bilangan bulat adalah, -1, -2, -3, 0, 1, 2, 3, 4 dan lain lain yang bukan merupakan bilangan pecahan.

Struktur Data. Belajar Struktur Data Menggunakan Pascal Pertemuan-1

DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II. Tujuan Pembelajaran : Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Stack.

Teori Algoritma. Struktur Algoritma

Struktur Data. Pertemuan 2

QUEUE ( ANTREAN ) 4.1. PENGERTIAN QUEUE (ANTREAN)

Struktur Data Array. Rijal Fadilah S.Si

BAB 3 STACK (TUMPUKAN)

S T A C K ( T U M P U K A N )

QUEUE / ANTREAN. Pertemuan 7 Yani sugiyani, M.Kom

Algoritma Dan Struktur Data II

M Queue Berprioritas. Amin Arifiyani. Struktur Data M

Program Simulasi Kasir dan Password

MODUL PRAKTIKUM STRUKTUR DATA Modul ke-1, Pertemuan ke-1 Nama file : P01-XXX (XXX adalah 3 digit terakhir NIM) Deskripsi: Senarai, Traversal

STACK ATAU TUMPUKAN 3.1 DAFTAR LINEAR

BAB IV Antrian(Queue)

Algoritma BAB V LOOP ( PERULANGAN )

: Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Linked List. Single Linked List

BAB II STACK Atau TUMPUKAN

2 SENARAI/LIST BERANTAI GANDA

SATUAN ACARA PERKULIAHAN MATA KULIAH PEMROGRAMAN PASCAL * (TK) KODE / SKS: KK /2 SKS

STRUKTUR DATA Pertemuan 6

Pertemuan 6 Array Objektif: 1. Memahami cara mendeklarasi tipe indeks dalam array 2. Dapat membuat program sederhana menggunakan array Pertemuan 6 53

Pengantar dalam Bahasa Pemrograman Turbo Pascal Tonny Hidayat, S.Kom

BAB VI SEARCHING (PENCARIAN)

BAB II STACK (TUMPUKAN)

KERUGIAN DAN KEUNTUNGAN LINKED LIST

ARRAY. Larik / array adalah tipe terstruktur yang terdiri dari sejumlah komponen-komponen yang mempunyai tipe yang sama.

Masukan Judul... Infotype àsebuah tipe terdefinisi yang menyimpan informasi sebuah elemen list

{ Program Pointer Pertama } { Program Pointer Single Linklist }

1. Kompetensi Mengenal dan memahami struktur data Stack (tumpukan) dan Queue (antrian).

MODUL 1. Struktur Bahasa PASCAL secara umum

procedure menu; forward; { *memperkenalkan procedure menu, yang dibuat dibawah utk dipanggil diatasnya* }

LAPORAN AKHIR PRAKTIKUM STRUKTUR DATA

QUEUE. Queue adalah suatu linear list di mana operasi DELETE terjadi pada sisi depan (FRONT) dan operasi INSERT terjadi pada sisi belakang (REAR).

Oleh : La Ode Abdul Jumar. Berkas(file) adalah kumpulan sejumlah komponen yang bertipe data sama,

BAB 1 PENGANTAR KE STRUKTUR DATA

Bubble Sort (Pengurutan Gelembung / Pemberatan)

Bab 1 Pengenalan Pascal 1 BAB I PENGENALAN PASCAL, TIPE-TIPE DATA PASCAL DAN STATEMEN DASAR PADA PASCAL TUJUAN PRAKTIKUM TEORI PENUNJANG

BAB VIII QUEUE (ANTRIAN)

B A H A N A J A R STRUKTUR DATA Disusun Oleh:

BAB VII SENARAI BERANTAI (List)

LINKED LIST. Altien Jonathan Rindengan, S.Si, M.Kom

STRUKTUR DATA Pertemuan 1 s.d 8

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

PERKEMBANGAN PASCAL. Pascal adalah bahasa tingkat tinggi ( high level language) yang orientasinya pada segala tujuan

Nama : Suseno Rudiansyah NPM : Kelas : X2T Prodi : Teknik Informatika Tugas : Kuis Algoritma 2

IMPLEMENTASI ALGORITMA GREEDY PADA PERMAINAN OTHELLO

KONSEP DASAR PEMROGRAMAN PASCAL

BAB IV QUEUE ATAU ANTREAN

Searching [pencarian] Algoritma Pemrograman

Pengenalan Pascal. Sejarah Singkat Pascal

QUEUE (ANTREAN) Operasi Antrean : FIFO (First In First Out) Elemen yang pertama masuk merupakan elemen yang pertama keluar.

ALGORITMA DAN STRUKTUR DATA ARRAY STACK DAN QUEUE

DIKTAT KULIAH STRUKTUR DATA. Disusun oleh: Sri Primaini A.

Konsep Sorting dalam Pemrograman Saniman dan Muhammad Fathoni

ARRAY. Brigida Arie Minartiningtyas, M.Kom

IMPLEMENTASI ANTRIAN DENGAN MENGGUNAKAN ARRAY

MODUL PRAKTIKUM PERCABANGAN DAN PENGULANGAN

Mochammad Rivai

Dasar Komputer & Pemrogaman 2A

MODUL PEMROGRAMAN 2. Queue (Antrian)

Algoritma HitungGajiKaryawan Deklarasi NIK,Nama,Jabatan : String Gaji, Tunj, Pajak, Gaber : Real

KONSEP DASAR BAHASA PASCAL

Memulai Pemrograman Pascal dengan Delphi Console 1. Buka aplikasi delphi 2. Pilih File New Other Console Application

PRAKTIKUM 7 TIPE DATA TERSTRUKTUR. Larik : deretan data yang punya type data sejenis. Misalnya : Daftar Nomor Telpon, Tabel Pajak dll.

ARRAY. contoh : A[1] := 10; var A : array[1..10] of integer; A[nomer_indeks]

Pengantar dalam Bahasa Pemrograman Turbo Pascal

Pertemuan 3 Penyeleksian Kondisi dan Perulangan

SELECTION. Algoritma. by:teguh Cahyono,ST.M.Kom. 1

PENJUMLAHAN DAN PENGURANGAN MATRIKS

Array & Program Modular

Algoritma Dan Struktur Data II. Queue

P A S C A L D A S A R

Modul Ke-1 Pertemuan ke-1 Deskripsi: Pemrosesan Sekuensial Larik Nama File: P01-XXX (XXX adalah 3 digit terakhir NPM)

Transkripsi:

Pertemuan VI ANTRIAN (Queue) STMIK Balikpapan Jurusan Manajemen Informatika Pada pembahasan selanjutnya kita akan mempelajari satu jenis struktur data yang disebut dengan antrian (queue) yang sering digunakan untuk mensimulasikan keadaan dunia nyata. Akan dibahas bagaimana implementasi antrian menggunakan larik. Juga akan kita lihat suatu senarai berantai yang bisa kita perlakukan sebagai suatu antrian. Akan disajikan juga beberapa contoh program terapan. Pengertian adalah suatu kumpulan data yang mana penambahan elemen hanya bisa dilakukan pada suatu ujung (disebut dengan sisi belakang atau rear), dan penghapusan (pengambilan elemen) dilakukan lewat ujung lain (disebut dengan sisi depan atau front)/ Seperti kita ketahui, tumpukan menggunakan prinsip masuk terakhir keluar pertama atau LIFO (Last In First Out), maka pada antrian prinsip yang digunakan adalah masuk pertama keluar pertama atau First In First Out. Dengan kata lain, urutan keluar elemen akan sama dengan urutan masuknya. Contoh yang bisa kita pergunakan dan relevan dalam bidang komputer adalah pemakaian sistem komputer berbagi waktu (time sharing computer system) dimana ada sejumlah pemakai yang akan menggunakan sistem tersebut secara serempak. Karena sistem ini biasanya menggunakan sebuah processor dan sebuah pengingat utama, maka jika processor sedang dipakai oleh seorang pemakai, pemakai-pemakai lain harus antri sampai gilirannya tiba. ini mungkin tidak akan dilayani secara FIFO murni, tetapi didasarkan pada prioritas tertentu. yang mengandung unsur prioritas dinamakan dengan antrian berprioritas (priority queue) yang juga akan dibahas kemudian. Implementasi Dengan Larik depan keluar A B C D E F masuk belakang Gambar 1. Contoh antrian dengan 6 elemen Rijal Fadilah S.Si www.rijalfadilah.wordpress.com 1

Gambar 1 di atas menunjukkan contoh penyajian antrian menggunakan larik. di atas berisi 6 elemen, yaitu A,B,C,D,E dan F. Elemen A terletak di bagian depan antrian dan elemen F terletak dibagian belakang antrian. Dengan demikian, jika ada elemen yang baru masuk, maka ia akan diletakkan disebelah kanan F (pada gambar diatas). Jika ada elemen yang akan dihapus, maka A akan dihapus lebih dahulu. Gambar 2a. menunjukkan antrian di atas setelah berturut-turut dimasukkan G dan H. Gambar 2b. menunjukkan antrian Gambar 2a. setelah elemen A dan B dihapus. depan keluar A B C D E F G H masuk Gambar 2a. belakang depan keluar A B C D E F G H masuk Gambar 2b. belakang Gambar 2. Contoh penambahan dan penghapusan elemen pada suatu antrian Seperti halnya pada tumpukan, maka dalam antrian kita juga mengenal ada dua operasi dasar, yaitu menambah elemen baru yang akan kita tempatkan di bagian belakang antrian dan Rijal Fadilah S.Si www.rijalfadilah.wordpress.com 2

menghapus elemen yang terletak di bagian depan antrian. Disamping itu seringkali kita juga perlu melihat apakah antrian mempunyai isi atau dalam keadaan kosong. Operasi penambahan elemen baru selalu bisa kita lakukan karena tidak ada pembatasan banyaknya elemen dari suatu antrian. Tetapi untuk menghapus elemen, maka kita harus melihat apakah antrian dalam keadaan kosong atau tidak. Tentu saja kita tidak mungkin menghapus elemen dari suatu antrian yang sudah kosong. Untuk menyajikan antrian, menggunakan larik, maka kita membutuhkan deklarasi antrian, misalnya, sebagai berikut : Const Max_Elemen = 100 Type Antri = array [1..Max_Elemen] of integer; Var : Antri; Depan, Belakang : integer; Dalam dekalarasi di atas, elemen antrian dinyatakan dalam tipe data integer. Peubah Depan menunjukkan posisi elemen pertama dalam larik; peubah Belakang menunjukkan posisi elemen terakhir dalam larik. Dengan menggunakan larik, mak kejadian overflow sangat mungkin, yakni jika antrian telah penuh, sementara kita masih ingin menambah terus. Dengan mengabaikan kemungkinan adanya overflow, maka penambahan elemen baru, yang dinyatakan oleh perubah X, bisa kita implementasikan dengan statemen : Belakang := Belakang + 1 ; [Belakang] := X; Operasi penghapusannya bisa diimplimentasikan dengan : X:= [Depan]; Depan := Depan + 1; Pada saat permulaan, Belakang dibuat sama dengan 0 dan Depan dibuat sama dengan 1, dan antrian dikatakan kosong jika Belakang < Depan. Banyaknya elemen yang ada dalam antrian dinyatakan sebagai Belakang Depan + 1. Sekarang marilah kita tinjau implementasi menambah dan menghapus elemen seperti diperlihatkan di atas. Gambar 3 menunjukkan larik dengan 6 elemen untuk menyajikan sebuah antrian (dalam hal ini Max_Elemen = 6). Pada saat permulaan (Gambar 3a), antrian dalam keadaan kosong. Pada gambar 3b terdapat 4 buah elemen yang telah ditambahkan. Dalam hal ini nilai Depan = 1 dan Belakang = 4. Gambar 3c menunjukkan antrian setelah dua elemen dihapus. Gambar 3d menunjukkan antrian setelah dua elemen baru ditambahkan. Banyaknya elemen dalam antrian adalah 6 3 + 1 = 4 elemen. Karena larik teridiri dari 6 elemen, maka sebenarnya kita masih bisa menambah elemen lagi. Tetapi, jika kita ingin menambah elemen baru, maka nilai Belakang harus ditambah satu, menjadi 7. Padahal larik hanya terdiri dari 6 elemen, sehingga tidak mungkin ditambah lagi, meskipun sebenarnya larik tersebut masih kosong di dua tempat. Bahkan dapat terjadi suatu situasi dimana sebenarnya antriannya dalam keadaan kosong, tetapi Rijal Fadilah S.Si www.rijalfadilah.wordpress.com 3

tidak ada elemen yang bisa tambahkan kepadanya. Dengan demikian, penyajian di atas tidak dapat diterima. 6 6 5 5 4 4 D Belakang = 4 3 3 C 2 2 B 1 1 A Depan = 1 Depan = 1 Belakang = 0 a. b. 6 6 F Belakang = 6 5 5 E 4 D Belakang = 4 4 D 3 C Depan = 3 3 C Depan = 3 2 2 1 1 c. d. Gambar 3. Ilustrasi penambahan dan penghapusan elemen pada sebuah antrian Salah satu penyelesaiannya adalah dengan mengubah prosedur untuk menghapus elemen, sedemikian rupa sehingga jika ada elemen yang dihapus, maka semua elemen lain digeser sehingga antrian selalu dimulai dari Depan = 1. Dengan cara ini, maka sebenarnya perubah Depan ini tidak diperlukan lagi hanya perubah Belakang saja yang diperlukan, karena nilai Depan selalu sama dengan 1. Berikut adalah rutin penggeserannya (dengan mengabaikan kemungkinan adanya underflow). X : = [1]; for I := 1 to Belakang 1 do [I] := [I+1]; Belakang := Belakang 1; Rijal Fadilah S.Si www.rijalfadilah.wordpress.com 4

6 6 5 5 4 4 D Belakang = 4 3 3 C 2 2 B 1 1 A Belakang = 0 a. b. 6 6 5 5 4 4 F Belakang = 4 3 3 E 2 D Belakang = 2 2 D 1 C 1 C c. d. Gambar 4. Ilustrasi penambahan dan penghapusan elemen pada sebuah antrian dengan penggeseran Dalam hal ini antrian kosong dinyatakan sebagai nilai Belakang = 0. Gambar 4 menunjukkan ilustrasi penambahan dan penghapusan elemen pada sebuah antrian dengan penggeseran elemen. Cara ini kelihatannya sudah memecahkan persoalan yang kita miliki. Tetapi jika kita tinjau lebih lanjut, maka ada sesuatu yang harus dibayar lebih mahal, yaitu tentang penggeseran elemen itu siri. Jika kita mempunyai antrian dengan 1000 elemen, maka waktu terbanyak yang dihabiskan sesungguhnya hanya untuk melakukan proses penggeseran. Hal ini tentu saja sangat tidak efisien. Dengan melihat gambar-gambar ilustrasi, proses penambahan dan penghapusan elemen antrian sebenarnya hanya mengoperasikan sebuah elemen, sehingga tidak perlu ditambah dengan sejumlah operasi lain yang justru menyebabkan tingkat ketidak-efisienan bertambah besar. Pemecahan lain adalah dengan memperlakukan larik yang menyimpan elemen antrian sebagai larik yang memutar (circular), bukan lurus (straight), yakni dengan membuat elemen terakhir larik. Dengan cara ini, meskipun elemen terakhir telah terpakai, elemen baru masih tetap bisa ditambahkan pada elemen pertama, sejauh elemen pertama dalam keadaan kosong. Perhatikan contoh berikut, larik digambarkan matar untuk lebih mempermudah pemahaman. Gambar 5a. Menunjukkan antrian telah terisi dengan 3 elemen pada posisi ke 4, 5 dan 6 (dalam hal ini Max_Elemen = 6) Rijal Fadilah S.Si www.rijalfadilah.wordpress.com 5

6 E Belakang = 6 6 E 5 D 5 D 4 C Depan = 4 4 C Depan = 4 3 3 2 2 1 1 F Belakang = 1 a. b. 6 E Depan = 6 6 E Depan = 6 5 5 4 4 3 3 H Belakang = 3 2 2 G 1 F Belakang = 1 1 F c. d. Gambar 5 Ilustrasi penambahan dan penghapusan elemen pada antrian yang diimplementasikan dengan larik yang memutar Gambar 5b menunjukkan antrian setelah ditambah dengan sebuah elemen baru, F. Bisa diperhatikan, bahwa karena larik hanya berisi 6 elemen, sedangkan gambar 6a posisi ke telah diisi, maka elemen baru akan menempati posisi ke 1. Gambar 6c menunjukkan ada 2 elemen yang dihapus dari antrian, dan gambar 6d menunjukkan ada 2 elemen baru yang ditambahkan ke antrian. Bagaimana jika elemen antrian tersebut akan dihapus lagi? Coba anda lakukan pelacakan ilustrasi tersebut. Dengan melihat pada ilustrasi di atas, kita bisa menyusun prosedur untuk menambah elemen baru ke dalam antrian. Prosedur di bawah ini didasarkan pada deklarasi berikut : const Max_Elemen = 100; type Antri = array[1..max_elemen] of char; var : Antri; Depan, Belakang : Integer; Untuk awalan, maka kita tentukan nilai perubah Depan dan Belakang sebagai : Depan := 0; Belakang := 0; Rijal Fadilah S.Si www.rijalfadilah.wordpress.com 6

Prosedur selengkapnya untuk menambahkan elemen baru adalah sebagai berikut : procedure TAMBAH (var Q : Antri; X : Char); if Belakang := Max_Elemen then Belakang := 1 else Belakang := Belakang + 1; if Depan = Belakang then writeln ( Sudah Penuh ) else Q[Belakang] := X Untuk menghapus elemen, terlebih dahulu kita harus melihat apakah antrian dalam keadaan kosong atau tidak. Berikut disajikan satu fungsi untuk mencek keadaan antrian. function KOSONG(Q : Antri) : boolean; KOSONG := (Depan=Belakang); Dengan memperhatikan fungsi di atas, maka kita bisa menyusun fungsi lain untuk menghapus elemen, yaitu : function HAPUS (var Q : Antri) : char; if KOSONG(Q) then writeln( ANTRIAN KOSONG... ) else HAPUS := Q[Depan]; if Depan := Max_Elemen then Depan := 1 Else Depan := Depan +1; Dengan memperhatikan program-program di atas, bisa kita lihat bahwa sebenarnya elemen yang terletak di depan antrian, menempati posisi (subskrip) ke Depan + 1 pada larik yang digunakan. Sehingga sesungguhnya, banyaknya elemen maksimum yang bisa disimpan adalah sebesar Max_Elemen 1, kecuali pada saat permulaan. Berikut disajikan satu program sederhana untuk lebih memahami implementasi antrian menggunakan larik yang memutar. Dalam program di bawah ini, aktifitas yang akan dilakukan (menambah elemen baru atau menghapus elemen) dipilih dengan menu yang sesuai. Daftar menu tersebut disajikan pada program utama. Rijal Fadilah S.Si www.rijalfadilah.wordpress.com 7

Program Ilustrasi_antrian; uses wincrt; const Max_Elemen = 10; type Antri = array[1..max_elemen] of Char; Var : Antri; Depan, Belakang, Pilih : integer; Elemen : char; { prosedur untuk menggambar kontak antrian } Procedure KOTAK; var I : integer; gotoxy(20,15); for I := 1 to Max_Elemen*4 + 1 do write ('-'); gotoxy(20,16); for I := 1 to Max_Elemen do write(' '); writeln(' '); gotoxy(20,17); for I := 1 to Max_Elemen*4 + 1 do write('-'); gotoxy(8,16); write('<-- Keluar'); gotoxy(22+max_elemen*4+1,16); writeln('<-- Masuk'); {* prosedur KOTAK *} { prosedur untuk meletakkan elemen dalam kotak } Procedure LETAKKAN(X : char; R:integer); gotoxy(18+4*r,16); write(x) {* prosedur LETAKKAN *} { prosedur untuk mencek keadaan antrian } function KOSONG (Q:Antri) : boolean; Kosong := (Depan = Belakang) { prosedur untuk menambah elemen baru } Procedure TAMBAH(var : Antri; X: char); {menambahkan elemen baru} if Belakang = Max_Elemen then Belakang := 1 else Belakang := Belakang + 1; if not(kosong()) then [Belakang] := X; Rijal Fadilah S.Si www.rijalfadilah.wordpress.com 8

LETAKKAN(X,Belakang) else {antrian penuh} gotoxy(40,9); write('antrian SUDAH PENUH'); repeat {menunggu sampai ada keyboard ditekan} until keypressed; gotoxy(40,9); write(' ':30); Belakang := Belakang-1; if Belakang = 0 then Belakang := Max_Elemen {prosedur tambah} { fungsi untuk menghapus elemen dari antrian } function HAPUS (var : Antri) : char; if Depan = Max_Elemen then Depan := 1 else Depan := Depan + 1; HAPUS := [Depan] {fungsi hapus} {* PROGRAM UTAMA *} clrscr; KOTAK; Depan := 0; Belakang := 0; repeat for pilih := 5 to 9 do gotoxy(40,pilih); write(' ':39) gotoxy(1,1); writeln('daftar MENU PILIHAN'); writeln('-------------------'); writeln; writeln(' 1. Menambah Elemen Baru'); writeln(' 2. Menghapus Elemen'); writeln(' 3. S E L E S A I'); writeln; writeln; writeln(' PILIH SALAH SATU: '); repeat Rijal Fadilah S.Si www.rijalfadilah.wordpress.com 9

gotoxy(22,9); writeln(' '); gotoxy(22,9); readln(pilih) until (Pilih >= 1) and (Pilih <= 3); case Pilih of {memilih aktifitas} 1 : {menambah elemen ke dalam antrian} gotoxy(40,5); writeln('menambah ELEMEN'); gotoxy(40,6); writeln('---------------'); gotoxy(40,8); write('isikan Elemennya: '); readln(elemen); TAMBAH(, Elemen);. 2 : {menghapus elemen dari antrian} if not (KOSONG()) then Elemen := HAPUS(); LETAKKAN(' ', Depan) else gotoxy(30,9); writeln('antrian KOSONG...'); Elemen := readkey; gotoxy(30,9); write(' ':30) until Pilih = 3 Rijal Fadilah S.Si www.rijalfadilah.wordpress.com 10