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
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.