STRUKTUR DATA
NAMA
: SUPRIYANDI
NIM
KELAS
:B
MODUL
: V (PENCARIAN DATA)
BAB I
TUJUAN DAN LANDASAN TEORI
A. Tujuan Praktikum
1. Mengetahui beberapa metode pencarian data.
2. Mampu menggunakan metode pencarian data pada sebuah program
untuk menyelesaikan masalah.
B. Landasan Teori
Pencarian data (searching) merupakan proses fundamental
dalam pengelolaan data. Proses pencarian adalah menemukan nilai
(data) tertentu di dalam sekumpulan data yang bertipe sama (baik
bertipe dasar atau bertipe bentukan).
Pada himpunan yang tidak terurut, dapat digunakan metode
pencarian sekunsial (Sequential Search) untuk mencari data.
Sedngkan pada himpunan data tidak terurut dapat digunakan metode
pencarian sekuensial (Sequential Search) dan biner (Binary Search).
Berikut ini merupakan penjelasan dari metode pencarian tersebut.
1. Pencarian Sequensial (Sequensial Search)
Sequential Searching adalah Metoda pencarian linier secara
berurutan.
Metode
pencarian
linier
cukup
mudah
untuk
di
kita tahu bahwa elemen yang kita cari nilainya sudah lebih besar dari
elemen pada array list yang ditunjuk oleh index. Kita tidak perlu
melakukan pencarian lebih lanjut karena elemen yang kita cari pasti
tidak akan kita temukan di bagian sisa array yang ada. Ini
memungkinkan pencarian berlangsung secara lebih cepat saat elemen
yang kita cari berada di bagian depan array list yang ada. Tentu saja
berlawanan yaitu jika elemen yang dicari berada di ujung bagian array
list.
:= i;
iSearch
:= 0;
Else
End;
End;
: Boolean;
Begin
If (N = 0) then iSearch := 0 {tabel berisi data
0}
Else
Begin
Bawah := 1;
Atas := N;
Found := false;
While ((not found) and (atas > bawah)) do
Begin
Tengah := (bawah + atas) div 2;
If (A[tengah].NIM = x) then
Found := true;
Else
If (A[tengah].NIM = x) then
Atas := tengah 1;
Else
Bawah := tengah + 1;
End;
If found then
iSearch := tengah;
Else
iSearch := 0;
End;
End;
BAB II
LANGKAH KERJA
: integer;
Nama_Pegawai
: string[30];
Bagian
: string[20];
Gaji
: integer;
BAB III
PEMBAHASAN
: integer;
nama : string[30];
bag
: string[20];
gaji : longint;
end;
adata = array [1..nmax] of rdata;
var
data : adata;
n : integer;
plh, ch : char;
i : integer;
begin
clrscr;
writeln('INPUTKAN DATA PEGAWAI');
writeln;
write('Banyaknya data pegawai : ');
readln(ndata);
writeln;
for i:=1 to ndata do
begin
writeln('Pegawai Ke-',i);
write('Nomor pegawai
: '); readln(A[i].nip);
write('Nama pegawai
: '); readln(A[i].nama);
write('Bagian
: '); readln(A[i].bag);
write('Gaji
: '); readln(A[i].gaji);
writeln;
end;
writeln;
write('TEKAN ENTER UNTUK MENU');
readkey;
end;
begin
writeln('Data ditemukan !!!');
writeln('Nomor pegawai
: ',A[i].nip);
writeln('Nama pegawai
: ',A[i].nama);
writeln('Bagian
: ',A[i].bag);
writeln('Gaji
: ',A[i].gaji);
end
else
writeln('Maaf! Data tidak bisa ditemukan !!!');
end;
bawah := 1;
atas := ndata;
found := false;
if found then
begin
writeln('Data ditemukan !!!');
writeln('Nomor pegawai
: ',A[tengah].nip);
writeln('Nama pegawai
: ',A[tengah].nama);
writeln('Bagian
: ',A[tengah].bag);
writeln('Gaji
: ',A[tengah].gaji);
end
else
writeln('Maaf! Data tidak bisa ditemukan !!!');
end;
{program utama}
begin
inputData(data,n);
writeln;
repeat
plh := menu;
case plh of
'1' : sekuensial(data,n);
'2' : biner(data,n);
'3' : exit;
end;
writeln;
repeat
writeln;
write('mau cari lagi..???(Y/T)');
ch := readkey;
if not (ch in ['Y','T']) then
writeln(' >> Input Salah !!!');
until(ch in ['Y','T']);
until(ch='0');
end.
Pembahasan :
program searching;
uses crt;
const
nmax = 100;
var
data : adata;
n : integer;
plh, ch : char;
Bagian diatas adalah bagian awal dari program ini. Pada bagian awal ini
dibuat sebuah konstanta yaitu nmax dengan nilai 100, ini berfungsi
untuk menetapkan variabel baru ( const Max ) dengan panjang karakter
100 (yang berarti bernilai konstan).
type
rdata = record
nip
: integer;
nama : string[30];
bag
: string[20];
gaji : longint;
end;
adata = array [1..nmax] of rdata;
nilai
(2147483648
s/d
2147483647)
sehingga
cocok
untuk
: '); readln(A[i].nip);
write('Nama pegawai
: '); readln(A[i].nama);
write('Bagian
: '); readln(A[i].bag);
write('Gaji
: '); readln(A[i].gaji);
writeln;
end;
writeln;
write('TEKAN ENTER UNTUK MENU');
readkey;
end;
until(c in ['1','2','3']);
menu := c;
end;
: ',A[i].nip);
writeln('Nama pegawai
: ',A[i].nama);
writeln('Bagian
: ',A[i].bag);
writeln('Gaji
: ',A[i].gaji);
end
else
writeln('Maaf! Data tidak bisa ditemukan !!!');
end;
nilai
awal
terlebih
dahulu
dan
besarnya
nilai
((A[i].nip
<
bawah := 1;
atas := ndata;
found := false;
if found then
begin
writeln('Data ditemukan !!!');
writeln('Nomor pegawai
: ',A[tengah].nip);
writeln('Nama pegawai
: ',A[tengah].nama);
writeln('Bagian
: ',A[tengah].bag);
writeln('Gaji
: ',A[tengah].gaji);
end
else
writeln('Maaf! Data tidak bisa ditemukan !!!');
end;
data. Kondisi yang ada adalah while ((not found) and (atas>=bawah))
do.. maka jika kondisi tersebut terpenuhi langkah yang akan
dikerjakan adalah dengan menggunakan rumus tengah:=(atas+bawah)
dan data ditemukan, berarti hasilnya akan ada/dianggap benar (true).
Namun jika tidak maka tahapan yang akan dikerjakan adalah dengan
menggunakan rumus atas:=tengah-1, dan apabila tetap tidak terpenuhi
akan menggunakan bawah:=tengah+1.
{program utama}
begin
inputData(data,n);
writeln;
repeat
plh := menu;
case plh of
'1' : sekuensial(data,n);
'2' : biner(data,n);
'3' : exit;
end;
writeln;
repeat
writeln;
write('mau cari lagi..???(Y/T)');
ch := readkey;
if not (ch in ['Y','T']) then
writeln(' >> Input Salah !!!');
until(ch in ['Y','T']);
until(ch='0');
end.
BAB IV
KESIMPULAN
BAB V
DAFTAR PUSTAKA
2014.Modul
Praktikum
Struktur
Data.
Palangkaraya:Universitas
Palangkaraya.
http://hendra-ryuka.blogspot.com/2010/05/searching.html
http://pelajarimemahami.blogspot.com/2012/04/searching-dalam-strukturdata.html
BAB VI
LAMPIRAN
Input
Output
1. Menu Inputan Data Pegawai :
2. Menu Searching :