Anda di halaman 1dari 37

Kata Pengantar

Puji dan Syukur kita ucapakan kepada Tuhan karena kita dapat
menyelesaikan tugas makalah ini. Makalah ini berisi tentang struktur data
Parkir yang di tugaskan oleh Dosen kita yang bernama Ibu Tati Haryati.
Tujuan kami menyusun makalah ini adalah tidak lain untuk
menambah ilmu pengetahuan kami dalam bidang Teknik Informatika.
Dan untuk memenuhi tugas struktur data.
Serta memberi kita pengetahuan tentang struktur data tersebut.
Dengan terselesaikannya makalah ini kami mengucapkan terima
kasih kepada pihak pihak yang berperan dalam membantu penyesusunan
makalah ini hingga selesai.
Akhir kata kami mengucapkan mohon maaf apabila ada kekurangan
dan kesalahan kami dalam penyusunan makalah ini.
Kami juga mengharapkan adanya kritik dan saran dalam makalah
ini, serta kami juga mengharapkan makalah ini dapat bermanfaat untuk
mahasiswa dan mahasiswi unikom yang lainnya.

Pendahuluan
Latar Belakang
Pada suatu data seringkali dibutuhkan pembacaan kembali
informasi dengan cara searching. Searching adalah pencarian data
dengan cara menelusuri data-data tersebut. Searching sering juga
disebut storage and retrieval information adalah suatu proses untuk
mengumpulkan sejumlah informasi didalam pengingat komputer
dan kemudian mencari kembali informai yang diperlukan secepat
mungkin.
Dalam kehidupan sehari-hari sebenarnya kita sering melakukan
pencarian data. Sebagai contoh, jika kita menggunakan Kamus
untuk mencari kata-kata dalam Bahasa Inggris yang belum
diketahui terjemahannya dalam Bahasa Indonesia. Contoh lain saat
kita menggunakan buku telepon untuk mencari nomor telepon
teman atau kenalan dan masih banyak lagi contoh lainnya.

Tujuan:
Untuk mengetahui penggunan dan penerapan runtunan
dalam bahasa pemrograman pascal
Untuk mengetahui penggunaan dan penerapan pemilihan
dalam bahasa pemrograman pascal
Untuk mengetahui penggunan dan penerapan perulangan
dalam bahasa pemrograman pascal
Untuk mengetahui program pascal secara lebih dalam dan
detail

Pembahasan
Disini kami akan membahas mengenai program parkir kendaraan
Program parkir kendaraan terdiri dari :
Kendaraan masuk
Kendaraan keluar
Sequential Search Dengan Sentinel (Quick Sort Asc)
Kendaraan masuk yaitu suatu procedure mengenai kendaraan yang
masuk seperti nomor parker/antrian yang akan masuk, plat nomor
kendaraan, jam masuk, menit masuk, dan detik masuk.
Kendaraan keluar yaitu suatu procedure mengenai kendaraan yang
akan keluar seperti nomor parker/antrian yang akan keluar, plat
nomor kendaraan, jam keluar, menit keluar, detik keluar, dan biaya
parkir.

Teori Metode Quick Sort Asc


Metode Quicksort sering disebut juga metode partisi (partition exchange
sort). Metode ini diperkenalkan pertama kali oleh C.A.R. Hoare pada
tahun 1962. Untuk mempertinggi efektifitas dari metode ini, digunakan
teknik menukarkan dua elemen dengan jarak yang cukup besar.
Mula-mula dipilih data tertentu dengan angka 3, 5, 4, 1, 2, misalnya kita
pilih angka 5 sebagai pivot. pivot di pilih untuk mengurutkan data di
sebelah kiri agar lebih kecil daripada pivot dan data di sebelah kanan
agar lebih besar daripada pivot. Pivot ini diletakan pada angka 5 urutan
ke 2, sehingga apabila angka atau nilai pada urutan lebih kecil nilainya
dari Pivot (angka 5), maka akan diletakkan di sebelah kiri Pivot dan jika
angka atau nilai pada urutan lebih besar dari Pivot akan diletakan di
sebelah kanan Pivot sampai akhirnya benar-benar terurut nilainya,
berikut adalah tahapan pengurutan nilai pada setiap angka :

Hijau tua

: Pivot Baru

Hijau muda : Pivot lama

Dipilih angka 5 sebagai Pivot.

Pengurutan tahap awal. Angka 1, 3, 2, dan 4 berpindah ke sebelah kiri


Pivot karena nilainya lebih kecil daripada Pivot, lalu berikutnya angka 3
dipilih menjadi Pivot yang baru.

Pengurutan tahap kedua. Angka 5 sebagai Pivot awal sudah berada di


ujung kanan, ini berarti 5 sebagai Pivot awal adalah angka dengan nilai
terbesar dalam urutan, selanjutnya angka 2 dipilih menjadi Pivot yang
baru.

Semua angka telah terurut.

Agoritma
Program Parkir_KENDARAAN;
{I.S : record array x,jb,i, sudah terdefinisi}
{F.S : Menampilkan program parkir kendaraan }
Kamus:
type
Data = record
Status : boolean
Jam,Menit,Detik,Noplat : integer
endrecord
Parkir = array [1..100] of Data
var
x:parkir
jb,i,pil,jum,j,m,d,jamparkir,biayaparkir,search:integer
Keluar,Masuk,Lama:longint
label ulang
Procedure Cover
Algoritma
Output ('|====================================|')
Output ('|
Output ('|

TUGAS MATAKULIAH ALGORITMA


WRITEN BY : KELOMPOK 6

|')
|')

Output ('|****************************************|')
Output ('|Tekan sembarang tombol untuk ke menu|')

Output('|====================================|')
end
Procedure Inisialisasi(input jum:integer)integer
{I.S : Record array jum(Sudah terdefinisi)}
{F.S : Menampilkan inisialisasi }
Algoritma
for i1 to 100 do
x(i).Status:=FALSE
endfor
jumjum+0
jbjb+0
Output('Status KENDARAAN yang terparkir: ',jum,' KENDARAAN')
endprocedure

Procedure KENDARAAN_In(input i,jb:integer,var x : parkir) integer


{I.S : i,jb (Sudah terdefinis)}
{F.S : Menampilkan kendaraan masuk}
Algoritma
i1
jumjum+1
jbjb+1
while (i<=99) and (x(i).Status=TRUE) do
ii+1

endwhile
if (i=100) and (x(i).Status=TRUE) then
Output('MAAF PARKIRAN PENUH')
else
x(i).Status:=TRUE
Output (' ========================================== ')
Output ('

DATA KENDARAAN MASUK

')

Output (' ========================================== ')


Output (' No Parkir : ',i);
Output (' Nomor Plat : ')input(x(i).Noplat)
Output (' Jam masuk : ') input (x(i).Jam)
Output (' Menit masuk : ') input (x(i).menit)
Output (' Detik masuk : ') input (x(i).Detik)
Output (' ========================================== ')
Output (' Jumlah KENDARAAN masuk parkiran ',jum,' KENDARAAN')
endprocedure

Procedure KENDARAAN_Out(input jum,i:integer,var x : parkir)integer


{I.S : Reecord array jum,i(sudah terdefinis)}
{F.S : Menampilkan data kendaraan keluar}
Algoritma :
jumjum-1
Output('=========================================== ')

Output ('

DATA KENDARAAN KELUAR

')

Output (' ========================================== ')


Output (' No Parkir

: ',i)

Output (' Nomor plat

: ',x(i).Noplat)

Output (' Jam keluar

: ')input(j)

Output (' Menit keluar

: ')input (m)

Output (' Detik keluar

: ') input (d)

Output (' ========================================== ')


masuk (x(i).Jam*3600)+(x(i).menit*60)+(x(i).Detik)
keluar (j*3600)+(m*60)+(d)
lamakeluar-masuk
jamparkirlama div 3600
if (lama mod 3600 > 0) then
jamparkirjamparkir+1
biayaparkir1000*jamparkir
else (lama mod 3600 = 0 )then
biayaparkir1000*jamparkir
endif
Output (' ========================================== ')
Output ('

BIAYA PARKIR ANDA

')

Output (' ========================================== ')


Output (' No Parkir
Output (' Nomor plat

: ',i)
: ',x(i).Noplat)

Output (' Waktu masuk

: ',x(i).Jam,':',x(i).menit,':',x(i).Detik)

Output (' Waktu keluar : ',j,':',m,':',d)


Output (' TOTAL BIAYA : Rp. ',biayaparkir);
Output (' ==========================================')
Output ('Jumlah KENDARAAN yang terparkir sebanyak ',jum,' KENDARAAN')
x(i).Statusfalse
end
Procedure Pilih_Search(input search : integer)integer
{I.S.: record array search(sudah terdefinisi)}
{F.S.: menampilkan nomor antrian dan plat nomor}
Algoritma
Output ('=============================================')
Output ('|*|

|*|')

Output ('=============================================')
Output ('

1. Search menggunakan nomor antrian

Output ('

2. Search menggunakan plat nomor

')
')

Output ('=============================================')
Output ('Pilih Menu : ')input(search)

{validasi menu pilhan}


while(search < 1) or (search > 2) do
Output ('Salah Memilih Menu, tekan enter untuk Ulangi..!')
input(search)

endwhile
endprocedure

Procedure Searching(search,jum,i : integer, x : parkir)integer


{I.S.: record array search jum,i(sudah terdefinisi)}
{F.S.: menampilkan tampilan searching}
Kamus :
data_cari :integer
Algoritma :
case search of
1 : i0
Output('Masukan nomor antrian yang ingin anda cari : ');input(data_cari)
while (data_cari i) and (i jum) do
ii+1
endwhile
if (data_cari=i) then
Output('|
================================================|')
Output ('| Nomor Plat | ',x(i).Noplat,

|)

Output('|================================================|')
Output ('| Waktu masuk | ',x(i).Jam,':',x(i).menit,':',x(i).Detik,

|)

Output('================================================|')
else

Output(' Data tidak ditemukan ')


endif
2 : Output ('Masukan nomor plat yang ingin anda cari : ')input(data_cari)
while (data_cari x(i).Noplat) and (i jum) do
ii+1;
endwhile
if (data_cari = x(i).Noplat) then
Output ('|===============================================|')
Output ('| Nomor Plat

| ',x(i).Noplat,

|)

Output('|===============================================|')
Output ('| Waktu masuk | ',x[i].Jam,':',x[i].menit,':',x[i].Detik,

|)

Output('|===============================================|')
else
Output (' Data tidak ditemukan ')
endif
endcase
endprocedure

Procedure Sorting(jum : integer,input x : parkir)integer


{I.S : record array jum(sudah terdefinisi)}
{F.S : menampilkan tampilan dari sorting}
Kamus :
j : integer

min : integer
temp : parkir
Algoritma :
for i 1 to (jum-1)do
min i
for j (i+1) to (jum) do
if (x(min).noplat) > (x(j).noplat) then
min j
endif
temp(i) x(min)
x(min) x(i)
x(i) temp(i)
endfor
endfor
endprocedure

Procedure Tampil(jum : integer;x : parkir)integer


{I.S : record array jum(sudah terdefinisi)}
{F.S : menampilkan procedure tampil}
Algoritma :
for i 1 to jum do
gotoxy(15,3);writeln('======================================');
gotoxy(15,4);writeln('| Nomor Plat

| Waktu Masuk

|');

gotoxy(15,5);writeln('======================================');
gotoxy(15,5+i);writeln('|

|');

gotoxy(17,5+i);writeln(x[i].Noplat);
gotoxy(35,5+i);writeln(x[i].Jam,':',x[i].menit,':',x[i].Detik);
gotoxy(15,6+i);writeln('--------------------------------------');
endfor
endprocedure

{algoritma utama}
Algoritma
procedure Cover
procedure ulang
Output (' ============================================')
Output (' |*|

MENU PARKIRAN KENDARAAN

|*|')

Output (' ============================================')


Output (' |

|')

Output (' |

1. Inisialisasi

|')

Output (' |

2. Kendaraan MASUK

|')

Output (' |

3. Kendaraan KELUAR

|')

Output ( ' |

4. Search

|')

Output (' |

5. Sorting

|')

Output (' |

0. Keluar dari Program

|')

Output (' |

|')

Output (' ============================================')


Output ('Pilih Menu: ');input(pil)

{validasi menu pilhan}


while(pil < 0) or (pil > 5) do
Output ('Salah Memilih Menu, tekan enter untuk Ulangi..!')
Input(pil)
endwhile
case pil of
1: inisialisasi(jum)
2 KENDARAAN_In(jb, i,x)
3 Output ('No Antrian Parkir:')
input(i)
if x(i).Status = false then
Output ('KOSONG')
else
KENDARAAN_Out(jum,i,x)
endif
4

Pilih_Search(search)
Searching(search,jum,i,x)

5 Sorting(jum,x)
Tampil(jum,x)
0 exit

Endcase

Program
Program Parkir_KENDARAAN;
{I.S : record array x,jb,i sudah terdefinisi}
{F.S : Menampilkan program parkir kendaraan }
Uses crt;
type
Data = record
Status : boolean;
Jam,Menit,Detik,Noplat : integer;
end;
Parkir = array [1..100] of Data;
var
x:parkir;
jb,i,pil,jum,j,m,d,jamparkir,biayaparkir,search:integer;
Keluar,Masuk,Lama:longint;
label ulang;

Procedure Cover;
begin

gotoxy(22,9) ;writeln('|
====================================|');
gotoxy(22,10); writeln('|

TUGAS MATAKULIAH ALGORITMA

gotoxy(22,11); writeln('|

WRITEN BY : KELOMPOK 6

|');
|');
gotoxy(22,12); writeln('|
************************************|');
gotoxy(22,13);write
menu|');ReadKey;

('|Tekan sembarang tombol untuk ke

gotoxy(22,14) ;writeln('|
====================================|');

end;

Procedure Inisialisasi(var jum:integer);


{I.S : Record array jum(Sudah terdefinisi)}
{F.S : Menampilkan inisialisasi }
begin
for i:=1 to 100 do
begin
x[i].Status:=FALSE
end;
jum:=jum+0;
jb:=jb+0;
gotoxy(23,23);writeln('Status KENDARAAN yang terparkir:
',jum,' KENDARAAN');
end;

Procedure KENDARAAN_In(var i,jb:integer;var x : parkir);


{I.S : i,jb (Sudah terdefinis)}
{F.S : Menampilkan kendaraan masuk}
begin
i:=1;
jum:=jum+1;
jb:=jb+1;
while (i<=99) and (x[i].Status=TRUE) do
begin
i:=i+1;
end;
if (i=100) and (x[i].Status=TRUE) then
writeln('MAAF PARKIRAN PENUH')
else
begin
x[i].Status:=TRUE;
gotoxy(22,6);writeln('
========================================== ');
gotoxy(22,7);writeln('

DATA KENDARAAN MASUK

');
gotoxy(22,8);writeln('
========================================== ');
gotoxy(22,9);writeln('
gotoxy(22,10);write ('
');readln(x[i].Noplat);
gotoxy(22,11);write ('
gotoxy(22,12);write ('
');readln(x[i].menit);

No Parkir

: ',i);

Nomor Plat

Jam masuk

: ');readln(x[i].Jam);

Menit masuk :

gotoxy(22,13);write ('
');readln(x[i].Detik);

Detik masuk :

gotoxy(22,14);writeln('
========================================== ') ;
writeln;
gotoxy(22,18);writeln(' Jumlah KENDARAAN masuk parkiran
',jum,' KENDARAAN');
end;
end;

Procedure KENDARAAN_Out(var jum,i:integer;var x : parkir);


{I.S : Reecord array jum,i(sudah terdefinis)}
{F.S : Menampilkan data kendaraan keluar}
begin
clrscr;
jum:=jum-1;
writeln;

gotoxy(24,2);writeln('===========================================
');
gotoxy(24,3);writeln('

DATA KENDARAAN KELUAR

');
gotoxy(24,4);writeln('
========================================== ');
gotoxy(24,5);writeln('

No Parkir

: ',i);

gotoxy(24,6);writeln('

Nomor plat

: ',x[i].Noplat);

gotoxy(24,7);write

('

Jam keluar

: ');readln(j);

gotoxy(24,8);write

('

Menit keluar

: ');readln(m);

gotoxy(24,9);write

('

Detik keluar

: ');readln(d);

gotoxy(24,10);writeln('
========================================== ');
writeln;
masuk:=(x[i].Jam*3600)+(x[i].menit*60)+(x[i].Detik);
keluar:=(j*3600)+(m*60)+(d);
lama:=keluar-masuk;
jamparkir:= lama div 3600;
if lama mod 3600 > 0 then
jamparkir:=jamparkir+1;
biayaparkir:=1000*jamparkir;
if lama mod 3600 = 0 then
biayaparkir:=1000*jamparkir;
clrscr;
gotoxy(22,4) ;writeln('
========================================== ');
gotoxy(22,5) ;writeln('

BIAYA PARKIR ANDA

');
gotoxy(22,6) ;writeln('
========================================== ');
gotoxy(22,7) ;writeln('

No Parkir

: ',i);

gotoxy(22,8) ;writeln('

Nomor plat

: ',x[i].Noplat);

gotoxy(22,9) ;writeln('
Waktu masuk
',x[i].Jam,':',x[i].menit,':',x[i].Detik);

gotoxy(22,10);writeln('

Waktu keluar

: ',j,':',m,':',d);

gotoxy(22,11);writeln('

TOTAL BIAYA

: Rp. ',biayaparkir);

gotoxy(22,12);writeln('
==========================================') ;
gotoxy(22,16);writeln('Jumlah KENDARAAN yang terparkir sebanyak
',jum,' KENDARAAN');

x[i].Status:=false;
end;

Procedure Pilih_Search(var search : integer);


{I.S.: record array search(sudah terdefinisi)}
{F.S.: menampilkan nomor antrian dan plat nomor}
begin
clrscr;
writeln('=============================================');
writeln('|*|

|*|');

writeln('=============================================');
writeln('

1. Search menggunakan nomor antrian

');

writeln('

2. Search menggunakan plat nomor

');

writeln('=============================================');
write('Pilih Menu : ');readln(search);

{validasi menu pilhan}


while(search < 1) or (search > 2) do
begin
textcolor(red);
gotoxy(10,9);write('Salah Memilih Menu, tekan enter untuk
Ulangi..!');
readln;
gotoxy(1,9);clreol;
gotoxy(14,7);clreol;
textcolor(15);readln(search);

end;

end;

Procedure Searching(search,jum,i : integer; x : parkir);


{I.S.: record array search jum,i(sudah terdefinisi)}
{F.S.: menampilkan tampilan searching}
var
data_cari : integer;
begin
case search of
1 : begin
clrscr;
i:=0;
writeln('Masukan nomor antrian yang ingin anda cari :
');readln(data_cari);
while (data_cari <> i) and (i <> jum) do
begin
i:=i+1;
end;
if (data_cari=i) then
begin
gotoxy(2,3);write('|
=========================================================|');
gotoxy(2,4);write('| Nomor Plat
gotoxy(60,4);write('|');

| ',x[i].Noplat);

gotoxy(2,5);write('|
=========================================================|');
gotoxy(2,6);write('| Waktu masuk
',x[i].Jam,':',x[i].menit,':',x[i].Detik);

gotoxy(60,6);write('|');
gotoxy(2,7);write('|
=========================================================|');
end
else
writeln(' Data tidak ditemukan ');
end;
2 : begin
clrscr;
writeln('Masukan nomor plat yang ingin anda cari :
');readln(data_cari);
while (data_cari <> x[i].Noplat) and (i <> jum) do
begin
i:=i+1;
end;
if (data_cari = x[i].Noplat) then
begin
gotoxy(2,3);write('|
=========================================================|');
gotoxy(2,4);write('| Nomor Plat

| ',x[i].Noplat);

gotoxy(60,4);write('|');
gotoxy(2,5);write('|
=========================================================|');
gotoxy(2,6);write('| Waktu masuk
',x[i].Jam,':',x[i].menit,':',x[i].Detik);

gotoxy(60,6);write('|');
gotoxy(2,7);write('|
=========================================================|');
end
else
writeln(' Data tidak ditemukan ');
end;
end;
end;

Procedure Sorting(jum : integer;var x : parkir);


{I.S : record array jum(sudah terdefinisi)}
{F.S : menampilkan tampilan dari sorting}
var
j : integer;
min : integer;
temp : parkir;
begin
for i := 1 to (jum-1) do
begin
min := i;
for j:=(i+1) to (jum) do
begin
if (x[min].noplat) > (x[j].noplat) then
min := j;
end;

temp[i] := x[min];
x[min] := x[i];
x[i] := temp[i];
end;
end;

Procedure Tampil(jum : integer;x : parkir);


{I.S : record array jum(sudah terdefinisi)}
{F.S : menampilkan procedure tampil}
begin
clrscr;
for i:= 1 to jum do
begin
writeln(' Nomor Plat
: ',x[i].Noplat,'
: ',x[i].Jam,':',x[i].menit,':',x[i].Detik);
end;
end;

//algoritma utama
begin
Cover;
clrscr;
ulang :
clrscr;
gotoxy(22,7) ;writeln('
============================================');

Waktu masuk

gotoxy(22,8) ;writeln(' |*|


|*|');

MENU PARKIRAN KENDARAAN

gotoxy(22,9) ;writeln('
============================================');
gotoxy(22,10);writeln(' |
|');
gotoxy(22,11);writeln(' |

1. Inisialisasi

gotoxy(22,12);writeln(' |

2. Kendaraan MASUK

gotoxy(22,13);writeln(' |

3. Kendaraan KELUAR

gotoxy(22,14);writeln(' |

4. Search

gotoxy(22,15);writeln(' |

5. Sorting

gotoxy(22,16);writeln(' |

0. Keluar dari Program

|');
|');
|');
|');
|');
|');
gotoxy(22,17);writeln(' |
|');
gotoxy(22,18);writeln('
============================================');
gotoxy(23,21);write('Pilih Menu: ');readln(pil);

{validasi menu pilhan}


while(pil < 0) or (pil > 5) do
begin
textcolor(red);
gotoxy(23,23);write('Salah Memilih Menu, tekan enter untuk
Ulangi..!');
readln;

gotoxy(1,23);clreol;
gotoxy(35,21);clreol;
textcolor(15);readln(pil);
end;

case pil of
1: begin
inisialisasi(jum);
readln; goto ulang;
end;
2:begin
clrscr;
KENDARAAN_In(jb, i,x);
readln; goto ulang;
end;
3 : begin
clrscr;
gotoxy(24,5);writeln('No Antrian Parkir:');readln(i);
if x[i].Status = false then
begin
clrscr;
gotoxy(24,5);writeln('KOSONG');
readln;goto ulang;
end else
begin

KENDARAAN_Out(jum,i,x);
readln; goto ulang;
end;
end;
4 : begin
Pilih_Search(search);
Searching(search,jum,i,x);
readln; goto ulang;
end;
5 : begin
Sorting(jum,x);
Tampil(jum,x);
readln; goto ulang;
end;
0 : begin
clrscr;
end;
end;
end.

Tampilan Layar

Kontribusi Kelompok

Rai Munazat Y : Membuat procedure quick sort dan searching, Membuat layar
tampilan, Membuat daftar pustaka
Krisna Fahrizal D : Membuat teori metode sorting, Membuat procedure create dan
quick sort, Membuat algoritma
Abdul Muchosid : Membuat program quick sort dan create, Membuat algoritma,
Membuat teori metode sorting
Khairul Amin : Membuat Procedure Searching, Membuat teori metode sorting,
Membuat Pembahasan
Dyvaldy Raka Arditian : Membuat Procedure Searching, Membuat Cover, Membuat
algoritna, Membuat teori metode sorting

Daftar Pustaka
-

http://cerdaskan.com/program-pascal-tentang-parkir-mobil.html (Judul :
Program Pascal Tentang Parkir Mobil, Tanggal Posting : 28 Juni 2013, Nama
Penulis : Andri Muchsin, Tanggal Akses : 3 Maret 2016, Jam Akses : 17:22)

Materi Perkuliahan bu Tati tentang searching dan sorting

http://hack.spyrozone.net/0221_Struktur_Data_Sorting_Method_by_y3ppy_
WWW.SPYROZONE.NET_07_Oktober_2007.html (Judul :
[221].STRUKTUR DATA: Sorting Method, Tanggal Posting : 07/10/2007
21.29.46, Nama Penulis : y3ppy, Tanggal Akses : 5 Maret 2016, Jam Akses :
14:03)

http://www.daniweb.com/software-development/pascal-anddelphi/threads/175094/quick-sort-implementation (Judul : Quick sort


implementation, Tanggal Posting : November 2007, Tanggal Akses : 4 Maret
2016

Anda mungkin juga menyukai