Anda di halaman 1dari 25

LAPORAN HASIL PRAKTIKUM

STRUKTUR DATA

NAMA

: ALI FAHRUDDIN

NIM

: DBC 113 046

KELAS

:B

MODUL

: V ( Pencarian Data )

JURUSAN TEKNIK INFORMATIKA


FAKULTAS TEKNIK
UNIVERSITAS PALANGKA RAYA

2014
BAB I
TUJUAN DAN LANDASAN TEORI
1.1 Tujuan Praktikum
1. Mengetahui beberapa metode pencarian data.
2. Mampu menggunakan metode pencarian data pada sebuah program untuk
menyelesaikan masalah.
1.2 Landasan Teori
Pencarian/ Searching adalah proses mencari suatu data di tentukan suatu
kumpulannya, misal pada suatu array , linked-list, file, atau pada kumpulan data
yang lain.
Pencarian merupakan proses fundamental dalam pengelolaan data. Proses
pencarian merupakan nilai tertentu dalam himpunan data yang bertipe sama.
Apabila data yang dicari terdapat dalam himpunan data tersebut, ditentukan pula
posisi dari data yang dicari pada himpunan.
Pada himpunan yang tidak terurut, dapat digunakan metode pencarian
sekuensial (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.
Algoritma pencarian metode pencarian data:
1.

Pencarian Sekuensial (Sequential Search)


Metode pencarian sekuensial merupakan proses membandingkan setiap

elemen dalam himpunan satu persatu secara terurut, mulai dari elemen pertama
sampai dengan elemen yang dicari ditemukan atau seluruh elemen sudah
dibandingkan. Sebagai contoh, misalkan data terurut membesar. Pencarian
dimulai dari data pertama sampai dengan data terakhir. Pencarian dihentikan
apabila data yang dicari sudah ditemukan atau data yang dibandingkan pada
proses pencarian sudah lebih besar dari data yang dicari.

Procedure SequensialSort (Var A : Tabel; N : integer; x :


tipedata;

Var iSearch : integer);

{IS : A adalah tabel dengan banyaknya data N. x adalah data


yang dicari dan bertipe sama dengan elemen tabel}
{FS : iSearch <> 0 bila A[iSearch] = x , iSearch = 0 bila x
tidak ditemukan di A}
Var
i : integer; {counter}
Begin
If (N = 0) then iSearch := 0 {tabel berisi data 0}
Else
Begin
i := 1;
While ((A[i].NIM < x) and (i < N)) do
i := i + 1;
If (A[i].NIM = x) then
iSearch

:= i;

iSearch

:= 0;

Else
End;
End;

Ide Pencarian : Elemen yang dicari dibandingkan dengan element-element yang


ada pada kumpulan data tempat pencarian satu persatu mulai dari element
pertama.
Algoritma : CARI ( A, N, x )
{Mencari data x pada array A yang elemennya sebanyak
N}
read (x)
I 1
while x <> A(I) AND <= N DO
I I + 1
end

Pengaturan Hasil (Output)


Sesuai permasalahan pada pencarian yang di kemukakan di atas maka output yang
di inginkan dari proses pencarian tersebut bisa disesuaikan dengan permasalahan
di atas, yaitu :

a. Jika yang di inginkan berupa komentar bahwa data x di temukan atau tidak :
if I <= N then
write (x,' Found')
else
write(x,' Not Found')
end

b. Jika hasil yang di inginkan berupa status bahwa data x ditemukan atau tidak :
if I <= N then
Ketemu TRUE
else
Ketemu FALSE
end

c. Jika hasil yang di inginkan berupa indeks data x pada array A :


if I <= N then
Hasil 1
else
Hasil 0 { Jika tdk di temukan di beri
variabel 0 }
end

1. Pencarian Biner (Binary Search)


Pencarian biner hanya berlaku untuk data yang sudah terurut. Bila data
terurut membesar. Pencarian dilakukan pada posisi data yang di tengah (misal :
posisi m).
Ada tiga kemungkinan yang akan terjadi, yaitu : (1) data ditengah = data
yang dicari : pencarian selesai, data ditemukan, (2) data ditengah < data yang
dicari : pencarian data di sebelah kanan, dan (3) data di tengah > data yang
dicari : pencarian di sebelah kiri. Proses dilakukan berulang-ulang sampai data
ditemukan atau himpunan data tidak bisa dibagi lagi.
Procedure BinarySort (Var A : Tabel; N : integer; x :
tipedata; Var iSearch : integer);
{IS : A adalah tabel dengan banyaknya data N. x adalah data
yang dicari dan bertipe sama dengan elemen tabel}
{FS : iSearch <> 0 bila A[iSearch] = x, iSearch = 0 bila x
t6idak ditemukan pada A}
Var

Bawah, atas, tengah : integer;

Found

: 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;

Ide Pencarian : Elemen yang dicari dibandingkan dengan elemen tengah dari
kumpulan data pencarian. Jika sama maka data yang dicari ditemukan, jika tidak
sama (belum ditemukan) maka data yang dicari itu dibandingkan lagi dengan
elemen tengah tersebut
Jika lebih kecil maka pencarian dilanjutkan kebagian array sebelah kiri (bagian
yang lebih kecil dari elemen tengah). Sebaliknya jika lebih besar maka pencarian
dilanjutkan di sebelah kanan elemen tengah. Ulangi langkah tersebut sampai di
temukan atau kumpulan data tidak bisa dibagi lagi menjadi dua bagian.
Algoritma : CARI ( A, N, x )

{Mencari data x pada array A yang elemennya sebanyak


N}

read (x)
a 1
b N
Ketemu FALSE
while ketemu and a < b do
T (a+b) mod 2
if x = A(T) then Ketemu TRUE TRUE
else if x < A(T) then T - 1
else a T + 1
end

Pengaturan Hasil (Output)


a. Jika yang di inginkan berupa komentar bahwa data x di temukan atau tidak :
if Ketemu = TRUE then
write (x,' Found')
else
write(x,' Not Found')
end

b. Jika hasil yang di inginkan berupa status bahwa data x ditemukan atau tidak :
if Ketemu = TRUE then
Ketemu TRUE
else
Ketemu FALSE
end

c. Jika hasil yang di inginkan berupa indeks data x pada array A :


if Ketemu = TRUE then
Hasil T
else
Hasil 0 { Jika tdk di temukan di beri
variabel 0 }
end

BAB II
LANGKAH KERJA

A. Tugas Praktikum
Buatlah sebuah program dengan ketentuan sebagai berikut :
1. Pencarian (searching) data dengan menggunakan kedua metode :
a. Pencarian Sekuensial
b. Pencarian Biner
2. Masukan awal adalah data bertipe record Pegawai Perusahaan yang telah
terurut membesar (ascending) dengan elemen :
Nomor_Pegawai
: integer;
Nama_Pegawai
: string[30];
Bagian
: string[20];
Gaji
: integer;
3. Pencarian data didasarkan pada Nomor_Induk pegawai yang dicari.
Perintah untuk melakukan pencarian tidak hanya sekali, bisa dilakukan
berulang-ulang sesuai keinginan pengguna/user.
4. Keluaran/hasil berupa data yang dicari untuk setiap perintah pencarian.

BAB III
PEMBAHASAN

Untuk pertama kali membuat program pada pascal adalah membuat nama
programnya misalnya dengan program pencarian dengan uses crt.

Kemudian kita membuat constanta pada program ini yang digunakan untuk
masukkan pada data maksimal adalah constanta tersebut. Misalnya kita
menggunakan constanta dengan nilai 100.

Setelah itu kita membuat type data baru untuk mendeklarasiksan variabel yang
akan kita buat. Kita membuat type data pegawai menggunakan record dengan
deklarasi nip bertipe longint, nama bertipe string[30] yaitu tipe data string
dengan nilai kata maksimal adalah 30 karakter string, bagian bertipe string[20]
yaitu tipe data string dengan nilai kata maksimal adalah 20 karakter, serta gaji
bertipe longint, dan kemudian kita mengakhiri statement dengan end.

Kemudian kita membuat tabel bertipe array [1..nmax] of pegawai yaitu tipe ini
adalah menggunakan pegawai dengan record dimana karakter yang
diperbolehkan yaitu 1 sampai nmax, dimana nmax disini adalah bernilai 100
seperti yang kita buat pada constanta diatas.

Procedure yang pertama kita buat adalah procedure sequensialsearch yang


digunakan untuk mencari data menggunakan metode sequensial search,
procedure ini mempunyai beberapa parameter yaitu var a beripe tabel, N
integer, x bertipe integer, var isearch bertipe integer.

Pada procedure ini memiliki variabel i bertipe integer yang digunakan untuk
inisialisasi pada jumlah data yang akan dimasukkkan.

Didalam procedure ini terdapat pemilihan dan pengulangan diantaranya


pemilihan if..then dengan syarat (N=0) adalah bernilai isearch bernilai 0,

apabila tidak maka i:=1 dengan pengulangan while..do dengan syarat


(a[i].nip<x) dan (i<N) melakukan i:=i+1, dan pemilihan if..then
dengan syarat (a[i].nip=x) dengan melakukan output pada Nomor
Pegawai, Nama, Bagian, dan Gaji, apabila syarat tidak terpenuhi maka
program akan menampilkan pesan DATA TIDAK DITEMUKAN

eeeedrd

Procedure selanjutnya adalah procedure binarysearch yang digunakan untuk


mencari data dengan menggunakan metode binary seacrh. Procedure ini
mempunyai parameter diantaranya adalah var a bertipe tabel, N bertipe
integer, x bertipe integer dan var isearch bertipe integer.

Procedure ini mempunyai variabel bawah, atas, tengah menggunakan tipe


integer, dan found bertipe yang menggunakan boolean yang digunakan untuk
menilai apakah statement yang digunkan bernilai benar atau salah.

Didalam procedure ini terdapat beberapa statement diantaranya variabel


bawah dengan nilai awal 1, atas dengan nilai awal N dimana N disini adalah
jumlah data, found nilai awal adalah salah. Dan didalam procedure ini terdapat
beberapa pemilihan dan pengulangan diantaranya if..then apabila (N=0)
maka yang dilakukan adalah isearch adalah 0, apabila syarat tidah dipenuhi
maka yang dilakukan adalah pengulangan while..do dengan syarat (not
found)

dan

(atas>=bawah)

dengan

melakukan

statement

tengah:=(bawah+atas) div 2 dimana tengah didapat dengan mencari

membagi data menjadi 2 dengan cara data atas dan data bawah ditambahkan
kemudian dibagi dengna dua, dan terjadi pemilihan if..then dengan syarat
(a[tengah].nip=x) yang dilakukan adalah nilai found adalah benar.
Apabila tidak terpenuhi maka terjadi pemilihan if..then dengan syarat
(a[tengah].nip>x) dengan melakukan atas:=tengah-1, apabila
tidak terpenuhi maka bawah:=tengah+1. Kemudian terdapat statement
if..then dengan found melakukan isearch:=tengah dengan mengeluarkan
Nomor Pegawai dengan bentuk a[i].nip, begitupun untuk keluaran Nama,
Bagian, dan Gaji. Dan apabila syarat tidak terpenuhi maka akan muncul pesan
DATA TIDAK DITEMUKAN.

Procedure selanjutnya adalah procedure menu_utama yang digunakan untuk


menampilkan menu yang digunakan untuk memilih pilihan yang akan
digunakan oleh user.

Procedure ini memiliki variabel didalamnya yaitu variabel ulang dengan


tipedata char yang digunakan untuk memilih program akan diulang atau tidak.
Dan variabel pilih bertipe integer yang digunakan untuk memilih menu yang
akan digunkan oleh user.

Didalam procedure ini terdapat pengulangan repeat..until yang digunakan


untuk menggulang menu yang ada dalam program ini, statement clrscr
digunakan untuk menghapus output pada keluaran selanjutnya. Dan terdapat
output menu yang dituliskan yaitu 1.Input; 2.Sequensial Search; 3.Binary
Search; 4.Exit. kemudian terdapat masukkan pada variabel pilih yang
digunakan untuk menentukan pilihan apa yang dipakai oleh user. Dan
kemudian terdapat pemilihan case..of pada variabel pilih yang telah diinputkan
user.

Pilihan 1 adalah pilihan Input yang berisi output Masukkan jumlah data
dengan menyuruh user untuk memasukkan jumlah data menggunakan variabel
n. Dan terdapat pengulangan for..do i:=1 to n dimana n disini adalah
jumlah data yang telah diinputkan tadi dengan menyuruh user untuk mengisi
data sejumlah banyaknya data tadi dengan per-satu data terdiri dari inputan
Nomor Pegawai, Nama, Bagian dan Gaji.

Pada pilihan 2 adalah pilihan Sequensial Search terdiri dari pengulangan


repeat..until dan pengulangan for..do dengan i:=1

to

n dengan

mengeluarkan semua data yang telah diinputkan oleh user saat penginputan
tadi.

Selanjutnya terdapat pengulangan for..do pada i:=1 to n-1 dimana i


disini adalah digunakan untuk inisialisasin kemudian terjadi pengulangan
for..do lagi pada j:=1 to n-i, serta terdapat pemilihan if..then dengan
syarat (a[j].nip)>(a[j+1].nip) dengan beberapa innstruksi seperti
gambar dibawah ini. Kemudian terdapat masukan input terhadap Nip yang
akan dicari dengan menggunakan variabel ni serta pemanggilan procedure
sequensialsearch dengan parameter (a, n, ni, i).

Kemudian terdapat pemilihan apakah ingin mengulang pencarian lagi ataukah


tidak menggunakan variabel ulang.

Pada pilihan 3 adalah Binary search terdiri dari pengulangan repeat..until


untuk mengulang menu pencarian dengan menggunakan metode binary
seacrh.

Kemudian

terdapat

instruksi

clrscr

yang

digunakan

untuk

membersihkan output yang tampil sebelumnya. Dan terdapat pengulangan


for..do terhadap i:=1 to n yang digunakan untuk menampilkan data yang
telah diinputkan tadi.

Kemudian terdapat beberapa statement pengulangan yang terjadi yaitu for..do


pada 1:=1 to n-1, j:=1 to n-i, yang digunakan untuk mengurutkan
data

terlebih

dahulu.

Dan

pemilihan

if..then

terhadap

syarat

(a[j].nip)>(a[j+1].nip) dengan beberapa statement di bawahnya.


Kemudian terdapat masukan terhadap data yang dicari menggunakan nip
dengan variabel yang dicari adalah ni. Selanjutnya terdapat pemanggilan
procedure binarysearch dengan menggunakan parameter (a, n, ni, i) yang
digunakan untuk pencarian data menggunakan metode Binary seacrh.

Selanjutnya terdapat pemilihan untuk menggulang apakah pencarian lagi


menggunakan nip ataukah tidak, variabel yang digunakan untuk pengulangan
ini adalah ulang dengan apabila inputan yang diberikan adalah Y maka
program akan mengulang pada pencarian lagi menggunakan metode Binary
search. Dan apabila inputan yang diberikan adalah T maka program tidak
mengulang dan akan kembali ke menu utama lagi.

Dan pada pilihan 4 yaitu Exit dengan terdiri dari instruksi halt yang
digunakan untuk menghentikan program ini yang berfungsi untuk menutup

program ini secara langsung. Kemudian terdapat masukan input apakah ingin
kembali ke menu utama ataukah tidak menggunakan variabel ulang, dan
apabila inputan yang diberikan adalah Y maka program akan mengulang ke
menu utama, sedangkan apabila input T maka program akan tertutup secara
langsung.

Pada suatu program seharusnya ada program utama maka kita membuat
program utama dengan pertama kali menggunakan instruksi begin kemudian
kita panggil procedure menu_utama kemudian terdapat statement readkey
unutk menampilkan output dan diakhiri dengan instuksi end. dengan
menggunakan (.) titik pada akhir statement end.

Untuk menjalankan program ini dengan menekan CTRL+F9 maka akan


muncul output seperti.

BAB IV

KESIMPULAN

Searching adalah proses mencari suatu data di tentukan suatu kumpulannya,


misal pada suatu array , linked-list, file, atau pada kumpulan data yang lain.

Proses pencarian merupakan nilai tertentu dalam himpunan data yang bertipe
sama. Apabila data yang dicari terdapat dalam himpunan data tersebut,
ditentukan pula posisi dari data yang dicari pada himpunan.

Terdapat 2 metode pencarian data yaitu metode pencarian sekuensial


(Sequential Search) dan biner (Binary Search).

Metode pencarian sekuensial digunakan pada data yang tidak terurut dimana
data yang dicari dicocokkan satu per-satu dengan secara urut mulai dari
elemen pertama sampai dengan elemen yang dicari ditemukan atau seluruh
elemen sudah dibandingkan. Pencarian dihentikan apabila data yang dicari
sudah ditemukan.

Metode pencarian biner (Binary Search) digunakan pada data yang sudah
terurut. Bila data terurut membesar pencarian dilakukan pada posisi data yang
ditengah. Ada tiga kemungkinan yang akan terjadi:
Data ditengah = data yang dicari : pencarian selesai, data ditemukan.
Data ditengah < data yang dicari : pencarian sebelah kanan.
Data ditengah > data yang dicari : pencarian sebelah kiri.
Proses dilakukan berulang-ulang sampai data ditemukan atau himpunan tidak
bisa dibagi lagi. Dan apabila data telah ditemukan pencarian akan dihentikan.

BAB V

DAFTAR PUSTAKA
Teknik informatika, 2014. Modul Struktur data. Universitas Palangkaraya:
Palangkaraya.
http://studyinformatics.blogspot.com/2012/07/binary-dan-sequentialsearch.html
http://id.wikibooks.org/wiki/Ayo_Membuat_Program_Pascal/Algoritma_Penc
arian
http://mykumpulanalgoritma.blogspot.com/2011/05/tugas-pascal-tentang.html
http://ariyoweb.blogspot.com/2011/04/algoritma-searching-pencarian.html
http://dhanhost.com/sort-dan-search-di-pascal/

BAB VI

LAMPIRAN
o Coding:

o Output:
Tampilan pertama kali program dijalankan

Apabila kita ingin memasukkan data maka kita menginputkan pada pilihan 1
dan akan muncul masukkan jumlah data misalnya kita ingin memasukkan
4 data. Maka kita inputkan semua data 4 tersebut seperti dibawah ini. Dan
apabila sudah selesai mengiinputkan semua data maka akan muncul pesan
kembali ke munu utama atau tidak, apabila kita penginputkan Y maka
program akan kembali pada menu utama, dan apabila kita menginputkan N
maka program akan keluar.

Apabila kita ingin menggunakan pencarian menggunakan Sequensial Sort


maka kita inputkan pilihan 2.

Maka program akan menampilkan data yang telah kita inputkan tadi dengan
urutan seperti yang kita inputkan tadi dan kemudian akan muncul pesan
Masukkan Nip yang ingin dicari misalnya 1126 maka program akan
mencari Data yang mempunyai Nip 1126 secara satu-satu mulai dari data
awal sampai akhir, dan apabila data telah ditemukan maka pencarian akan
dihentikan dan data yang cocok akan ditampilkan. Sehingga muncul data yang
cocok dengan inputan kita tadi yaitu Nip 1126. Kemudian muncul pesan
ingin memilih pencarian lagi atau tidak apabila kita inputkan pilihan Y maka
program akan mengulang pencarian lagi dengan masukkan Nip yang dicari,
apabila pada pilihan N maka program tidak mengulang lagi.

Dan apabila Data yang kita inputkan adalah data 1122 yang misalnya tidak
ada dalam program ini mencarinya maka program akan memunculkan pesan
DATA TIDAK DITEMUKAN.

Untuk menggunakan program pencarian Binary Search maka kita inputkan


pilihan 3.

Maka program akan menampilkan data yang telah kita masukkan tadi dengan
urutan Nip secara (ascending). Kemudian muncul pesan Masukkan Nip
yang akan dicari misalnya kita berikan inputan 1024. Maka program akan
mencari data dengan Nip 1024 dengan menggunkan Binary Search dengan
mencocokkan data tersebut dengan cara membagi data menjadi 2 bagian yaitu
kanan dan kiri sampai data tersebut cocok dengan yang kita inputkan tadi,
apabila sudah ditemukan data tersebut maka pencarian akan dihentikan dan
data yang cocok tadi akan ditampilkan pada output.

Dan apabila Data yang kita inputkan adalah data 1065 yang misalnya tidak
ada dalam program ini mencarinya maka program akan memunculkan pesan
DATA TIDAK DITEMUKAN.

Dan apabila kita ingin menutup program ini dengan memberikan inputan
pilihan 4 pada menu program ini maka otomatis program ini akan tertutup.