Pencarian (Search) Pada Pascal

Pencarian (Searching) adalah proses pencarian nilai dari sebuah larik dengan membandingkan tiap-tiap elemennya berdasarkan algoritma pencarian yang digunakan. Ada 3 macam jenis search yang terdapat dalam pascal yaitu, Sequential search, Binary Search, dan Ekstrim Search. 

1. Sequential Search
1.       Algoritma pencarian ini yaitu membandingkan nilai yang dicari (didefenisikan) dengan setiap elemen array, mulai indeks terkecil sampai indeks terbesar yang terdefenisi.
Berikut contoh-contoh programnya:
 
Apabila program ini dijalankan maka hasilnya adalah :
 
Penjelasan :
Bila pada indeks “input nilai n=” diisi dengan angka 5 maka akan muncul “Tabint=” berjumlah 5. Misalkan ke-5 “Tabint” tersebut diisi dengan angka (1,3,5,7,8) secara berurutan, lalu pada indeks  “Nilai yang dicari =” diisi dengan angka 5 maka pencarian akan berhenti pada (1,3,5) karena angka 5 telah ditemukan pada tabint ke 3.
Listing program diatas :


program searching;
uses crt;
label awal;
var pil:char;
    lg :char;
const
  nmin = 1;
  nmax = 100;
type
  arrint = array [nmin..nmax] of integer;
var
  x      : integer;
  tabint : arrint;
  n,i    : integer;
  indeks : integer;
  function seqsearch1(xx : integer): integer;
  var i : integer;
  begin
    i := 1;
    while ((i<n) and (tabint[i] <> xx)) do
      i:=i+1;
      if tabint[i] = xx then
        seqsearch1:=i
        else
        seqsearch1:=0;
  end;

begin
  clrscr;
  write('input nilai n = '); readln(n);
  for i:=1 to n do
    begin
      write('Tabint[',i,'] = '); readln(tabint[i]);
    end;
  write('Nilai yang dicari = '); readln(x);
  indeks:=seqsearch1(x);
  if indeks <> 0 then
    write(x,' ditemukan pada indeks ke-',indeks)
    else
    write(x,' tidak ditemukan');
  writeln;
writeln;
writeln('andihasdialam.blogspot.com');
readln;
end.
2.   Binary Search
Algoritma ini juga disebut dengan dikotomik ide dasarnya adalah membandingkan harga x, dengan elemen tengah array, jika lebih besar dari elemen tengah array, karena elemen-elemen terurut membesar, maka pencarian dilakukan pada setengah bagian yang nilainya lebih besar dari x sampai elemen terakhir.
                Contoh program binary:
 
Listing nya adalah:


Program binary search;
Uses crt;
const
  nmin = 1;
  nmax = 100;
type
  arrint = array [nmin..nmax] of integer;
var
  x      : integer;
  tabint : arrint;
  n,i    : integer;
  indeks : integer;
  function binarysearch(xx : integer): integer;
  var
    i : integer;
    atas, bawah, tengah : integer;
    ditemukan : boolean;
    indeksxx : integer;
  begin
    atas  := 1;
    bawah := n;
    ditemukan:=false;
    indeksxx:=0;
    while ((atas <= bawah) and (not ditemukan)) do
      begin
        tengah:= (atas+bawah) div 2;
        if xx = tabint[tengah] then
          begin
            ditemukan:= true;
            indeksxx := tengah;
          end
        else
          begin
            if xx = tabint[tengah] then
              bawah:= tengah - 1
            else
              atas:= tengah + 1;
          end;
      end;
    binarysearch:=indeks;
  end;

begin
  clrscr;
  write('input nilai n = '); readln(n);
  for i:= 1 to n do
    begin
      write('Tabint[',i,'] = '); readln(tabint[i]);
    end;
  write('Nilai yang dicari = '); readln(x);
  indeks:=binarysearch(x);
  if indeks <> 0 then
    write(x,' ditemukan pada indeks ke-',indeks)
    else
    write(x,' tidak ditemukan');
    readln;
end.


Setelah di jalankan maka outputnya adalah:

 .    
3E3. Ekstrim Search (Mencari nilai terbesar dan terkecil)

Ide dasar algoritma mencari nilai ekstrim adalah dengan membandingkan nilai elemen pertama array (diasumsikan sebagai nilai ekstrim) dengan nilai elemen-elemen sesudahnya.
Berikut contoh untuk mencari nilai maksimum:



 Listing program :

program cari_maks;
uses crt;
type
  arrint = array [1..100] of integer;
var
  maks   : integer;
  tabint : arrint;
  nn, i  : integer;
  function maksimum(tabint : arrint; n : integer) : integer;
  var
    i   : integer;
    max : integer;
  begin
    for i:=2 to n do
      if max< tabint[i] then
        max:= tabint[i];
    maksimum:=max;
  end;

begin
  clrscr;
  write('jumlah elemen = '); readln(nn);
  for i:= 1 to nn do
    begin
      write('elemen ke-',i,' = '); readln(tabint[i]);
    end;
  maks:= maksimum(tabint, nn);
  writeln('nilai Maksimum = ',maks);
writeln;
writeln('andihasdialam.blogspot.com');
readln;
end.

Setelah dijalankan maka hasilnya adalah:


Sekianlah postingan saya mengenai Algoritma pencarian pada pascal. Jangan lupa comment...!!!



0 KOMENTAR