Program Sequential Search dan Binary Search pada Pascal
Program ini menggunakan aplikasi Free Pascal IDE 2.6.4 . Program diawali pada tampilan menu utama yang menampilkan pilihan pencarian metode sequential search, binary search dan keluar. Pilihan sequintial search mencari data dengan metode sequintial yaitu membandingkan data satu persatu dari awal sampai akhir dengan data yang dicari tanpa harus mengurutkan, jika ketemu maka menampilkan terdapat pada larik keberapa, jika tidak ditemukan maka akan menampilkan tulisan data tidak ditemukan. Pilihan binary search sama dengan sequintial bedanya data harus diurutkan terlebih dahulu baru data dicari. Pilihan keluar untuk keluar dari program yang dijalankan. Untuk lebih jelasnya bisa dilihat pada tampilan berikut:
Tampilan Awal Menu Utama
Tampilan Hasil Pilihan 1
Tampilan Hasil Pilihan 2
Berikut adalah source codenya
uses crt;
var
cari : integer;
data : array[1..100] of integer;
n,i,j,indeks : integer;
pilih : char;
function sequen(cari: integer): integer;
begin
i:=1;
while ((i<n) and (data[i]<>cari)) do
i:= i+1;
if data[i]= cari then
sequen:=i
else
sequen:=0;
end;
function binary(cari: integer):integer;
var
awal,akhir,tengah: integer;
ketemu:boolean;
indeksxx: integer;
begin
awal:= 1;
akhir:= n;
ketemu :=false;
indeksxx := 0;
while ((awal <= akhir) and (not ketemu)) do
begin
tengah:= (awal+akhir) div 2;
if cari = data[tengah] then
begin
ketemu := true;
indeksxx := tengah;
end
else
begin
if cari < data[tengah] then
akhir := tengah-1
else
awal := tengah+1;
end;
end;
binary:=indeksxx;
end;
procedure insert;
var min,urut,k : integer;
l,m:string;
begin
urut:= 1;
for i:= 1 to n-1 do
begin
min:=i;
for j:= urut to n do
begin
if data[j] < data[min] then
min:=j;
if data[i] <> data[min] then
begin
k:= data[i];
end;
if data[i] > data[min] then
begin
data[i] := data[min];
data[min]:= k;
end;
end;
urut:=urut+1;
end;
end;
procedure menu1;
begin writeln('--------------------------------------');
writeln(' Pencarian Sequential ');
writeln('--------------------------------------');
write('Jumlah data : '); readln(n);
writeln;
for i:= 1 to n do
begin
write('Indeks [',i,'] : '); readln(data[i]);
end;
writeln;
write('Cari : '); readln(cari);
indeks:=sequen(cari);
writeln;
if indeks <> 0 then
begin
writeln('Data yang dicari : ',cari);
writeln('Ditemukan pada indeks ke-',indeks);
end
else
write(cari,' Tidak ditemukan');
end;
procedure menu2;
begin writeln('--------------------------------------');
writeln(' Pencarian Binary ');
writeln('--------------------------------------');
write('Jumlah data : '); readln(n);
writeln;
for i:= 1 to n do
begin
write('Indeks [',i,'] : '); readln(data[i]);
end;
writeln;
insert;
write('Data setelah diurutkan : ');
for i:= 1 to n do
write(data[i]:2);
writeln;
writeln;
write('Cari : '); readln(cari);
indeks:=binary(cari);
writeln;
if indeks <> 0 then
begin
writeln('Data yang dicari : ',cari);
writeln('Ditemukan pada indeks ke-',indeks);
end
else
write(cari,' Tidak ditemukan');
end;
begin
repeat
clrscr;
writeln('+----------------------------------------------+');
writeln('| Program Pencarian |');
writeln('+----------------------------------------------+');
writeln('| [1] Pencarian Sequential |');
writeln('| [2] Pencarian Binary |');
writeln('| [0] Keluar |');
writeln('+----------------------------------------------+');
writeln('| Pilih : |');
writeln('+----------------------------------------------+');
gotoxy(17,8);readln(pilih);
case pilih of
'1' : begin
clrscr;
menu1;
readkey;
end;
'2' : begin
clrscr;
menu2;
readkey;
end;
'0': exit;
end;
until pilih='0';
end.
SILAKAN DI COBA
FROM
NAMA : AGUNG WIJAYA
NIM : 161420152
JURUSAN : TEKNIK INFORMATIKA
UNIVERSITAS BINA DARMA PALEMBANG
SEMOGA BERMANFAAT......
Komentar
Posting Komentar