Minggu, 05 April 2015

Searching


           Pencarian (searching) adalah salah satu hal penting dalam banyak kasus pemrograman. Pencarian (searching) dilakukan untuk menemukan nilai tertentu pada sejumlah nilai yang tersedia. Terdapat bermacam-macam algoritma pencarian yang telah dikembangkan dengan ide dasar. Dua diantaranya adalah pencarian berurutan (sequential search) dan pencarian biner (binary search, dicotomic search) . 
Berikut ini adalah contoh program pencarian sequential dan binary.



program praktikum4;
uses crt;
var data : array [1..100] of integer;
    i,j,x,y,n,t : integer;
    pilih : char;
    lanjut,ditemukan : boolean;
    atas,bawah,tengah : integer;
    tabint : integer;

procedure menu;
 begin
  clrscr;
  writeln ('    Program pencarian    ');
  writeln ('|-----------------------|');
  writeln ('| 1. Sequential Search  |');
  writeln ('| 2. Binary Search      |');
  writeln ('| 0. Exit               |');
  writeln ('|-----------------------|');
  write   (' Pilih Menu : ');
  readln  (pilih);
 end;

Procedure sequential;
 begin
  clrscr;
  writeln ('   Sequential Search ');
  writeln ('|----------------------|');
  writeln;
  write   (' Masukkan Jumlah data : ');
  readln(n);
  for i:=1 to n do
   begin
    write (' Data ke- ',i,' : ');
    readln(data[i]);
   end;
  writeln;
  writeln ('|----------------------|');
  writeln;
  write (' Data yang dicari : ');
  readln(x);

  y:=1;
  lanjut:=true;
  while ((y<=x) and  (lanjut)) do
   begin
    if data[y] = x then
      lanjut:= false else
      y:=y+1;
    end;
  writeln;
  if y<=n then
   writeln('Data ditemukan di indeks ke : ',y)
  else
   writeln('Data tidak ditemukan ');
   writeln;
   writeln('Press any key to continue !');
   readkey;
 end;

Procedure binary;
 begin
  clrscr;
  writeln ('   Binary Search ');
  writeln ('|----------------------|');
  writeln;
  write   (' Masukkan Jumlah data : ');
  readln(n);
  for i:=1 to n do
   begin
    write (' Data ke- ',i,' : ');
    readln(data[i]);
   end;
  writeln;
  writeln ('|----------------------|');
  writeln;

  for i:=n-1 downto 1  do
    for j:= 1 to i do
     if data[j] > data[j+1] then
      begin
       t:=data[j];
       data[j]:=data[j+1];
       data[j+1]:=t;
     end;
  writeln('Data yang sudah terurut kan : ');
  for i:= 1 to n do
  write(data[i]:3);
  writeln;
  write ('Data yang dicari : ');
  readln(x);

 atas :=1;
 bawah :=n;
 ditemukan:=false;
 y:=0;
 while ((atas <= bawah) and (not ditemukan)) do
  begin
   tengah:= (atas+bawah) div 2;
   if x= data[tengah] then
    begin
     ditemukan :=true;
     y:= tengah;
    end
   else
    begin
     if x = data[tengah] then
      bawah:= tengah - 1
      else
      atas:=tengah+1;
     end;
    end;

   writeln;
  if y<=n then
   writeln('Data ditemukan di indeks ke : ',y)
  else
   writeln('Data tidak ditemukan ');
   writeln;
   writeln('Press any key to continue !');
   readkey;
  end;

begin
clrscr;
repeat
menu;
case pilih of
 '1' : sequential;
 '2' : binary;
 '0' : exit;
end;
until pilih='0';
end.


 Hasil Output :

 
Gambar 1. Tampilan awal

Gambar 2. Tampilan setelah memilih menu nomor 1

Gambar 3. Tampilan setelah menginputkan jumlah data

Gambar 4. Tampilan setelah menginputkan data

Gambar 5. Hasil output data yang dicari

 
Gambar 6. Tampilan saat memilih menu nomor 2

Gambar 7. Tampilan setelah menginputkan jumlah data

Gambar 8. Tampilan setelah menginputkan data

Gambar 9. Tampilan setelah data diurutkan

Gambar 10. Hasil output data yang dicari





Tidak ada komentar:

Posting Komentar