PRAKTIKUM STRUKTUR DATA Modul 4 Implementasi Queue dengan Pointer

Program SIMULASI_PARKIR; uses crt; const Terus = 'Tekan sembarang tombol untuk terus'; type Str10 = string[10]; Antri = ^Simpul; Simpul = record Info : Str10; Berikut : Antri end; var Depan, Belakang Pilih, P Keterangan No_Plat : Antri; : char; : string; : Str10; {* mobil terdepan *} {* mobil terakhir *} {* memilih aktifitas *} {* nomor plat mobil *}

{****************************************** * Prosedur untuk membentuk simpul kepala * ****************************************** } procedure INISIALISASI (var Ngarep, Mburi: Antri); begin new(Ngarep); Ngarep^.Info := chr(0); Ngarep^.Berikut := Ngarep; Mburi := Ngarep end; {* prosedur INISIALISASI *} {********************************** * Prosedur untuk mencatat mobil * * yang masuk tempat parkir * **********************************} procedure MASUK (var Ngarep, Mburi : Antri; No_Plat : Str10); var Baru : Antri; begin new(Baru); Baru^.Info := No_Plat; Baru^.Berikut := Ngarep; Mburi^.Berikut := Baru; Mburi := Baru end; {* prosedur MASUK *}

var Ada : boolean. {* fungsi ADA_MOBIL *} begin {* prosedur KELUAR *} if not (ADA_MOBIL(Mobil. begin Ada := false. Ngarep. dispose(Mobil) end else {* Mobil yang akan dikeluarkan terletak * * di tengah. Prosedur ini berisi fungsi untuk mencek * * apakah mobil yang akan dikeluarkan ada di * * tempat parkir atau tidak. gotoxy(40. X : Str10) : boolean. * ***************************************************} procedure KELUAR (var Ngarep.write(Terus). repeat if Lok^.{*************************************************** * Prosedur untuk mengeluarkan mobl dari tempat * * parkir. P : char. {********************************** * Fungsi untuk mencek keberadaan * * mobil di tempat parkir * **********************************} function ADA_MOBIL(var Lok : Antri. var Mobil.Berikut := Mobil^. P := readkey end else if Mobil = Ngarep^. Nomor : integer.Berikut. Lok := D^.9). TM : Antri. Semua mobil yang terletak * .Berikut then {* Mobil yang dikeluarkan adalah mobil * * yang terletak paling depan *} begin Ngarep^. No_Plat)) then begin gotoxy(40.11).Berikut. NO_Plat : Str10). D : Antri. Mburi : Antri. writeln('MOBIL YANG DIMAKSUD TIDAK ADA'). ADA_MOBIL := Ada end.Info = X then Ada := true else Lok := Lok^. Bantu.Berikut until Ada or (Lok = D).

inc(Nomor). Nomor : integer.Berikut := Mobil^. write('------------------------'). write('TEMPAT PARKIR KOSONG'). Nomor').Berikut. P := readkey. write('. writeln. inc(Nomor) until Bantu = Ngarep end end. * di depannya harus dikeluarkan dahulu *} begin Bantu := Ngarep. Bantu^. var Bantu : Antri.Info).'. Bantu := Bantu^. Nomor := 1.Bantu^. writeln('----------').4).Berikut.Info = No_Plat.Berikut^. repeat write('Mobil ke'. {* prosedur BACA_MOBIL *} . repeat Bantu := Bantu^. writeln(Bantu^. writeln. Nomor:3).Berikut.Info).Nomor:3. Nomor Plat: ').Berikut. write ('Mobil yang dikeluarkan '). write(Terus). dispose(Mobil) end {* prosedur KELUAR *} {************************************* * Prosedur untuk membaca data mobil * * yang ada di tempat parkir * *************************************} procedure BACA_MOBIL (Ngarep : Antri). clrscr. P : char. if Bantu = Ngarep then {* Tempat parkir kosong *} begin gotoxy(1. until Bantu^. writeln end else {* Tempat parkir terisi sejumlah mobil *} begin Nomor := 1.end. writeln('sementara:'). write('Mobil ke'. begin Bantu := Ngarep^. writeln(' Plat: '.

7). gotoxy(40. writeln(' M : Mobil Masuk').'S'. BACA_MOBIL(Depan).5). Pilih := upcase(readkey). writeln('-------------').'K'. writeln('SIMULASI TEMPAT PARKIR').10). writeln(Keterangan). {* Memilih menu *} repeat gotoxy(23. {* Simulasi *} repeat clrscr. writeln('----------------') end end. writeln. if Pilih in ['M'. until Pilih in ['M'.'K'] then begin gotoxy(40.'C']. 'C' : begin clrscr. writeln(' C : Cetak Data Mobil'). writeln(' '). . gotoxy(40. write('--------------'). writeln('SIMULASI SELESAI').6). writeln. write('---------------------------------'). write('TEMPAT PARKIR HANYA MEMUAT MOBIL '). writeln.10). write('untuk kembali ke menu'). 'S' : begin clrscr. gotoxy(23. writeln('-------------'). P := readkey. write('Data Mobil di '). {* Mengerjakan pilihan *} case Pilih of 'M' : Keterangan := 'MOBIL MASUK'. writeln('Tempat Parkir'). writeln. writeln(' PILIH SALAH SATU: '). writeln('DALAM 1 BARIS'). write('Tekan sembarang tombol ').{***************** * Program utama * *****************} begin {* Inisialisasi senarai *} INISIALISASI(Depan. writeln(' K : Mobil Keluar'). end. 'K' : Keterangan := 'MOBIL KELUAR'.Belakang). writeln(' S : Selesai'). writeln('------------').

Belakang.No_Plat) end until Pilih = 'S' end. Belakang. {* program utama *} . if Pilih = 'M' then MASUK(Depan.write('Nomor plat mobil: ').No_Plat) else KELUAR(Depan. readln(No_Plat).

Sign up to vote on this title
UsefulNot useful