06/04/15

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.

Terima kasih telah menyempatkan ke blog ini, apabila mau copas silahkan.