LAPORAN PRAKTIKUM RESMI
BAB V SEARCHING
Disusun oleh :
Analis Hasby Azizah
201301043
Dosen pengampu :
Yosef Murya Kusuma Ardhana.S.T., M.Kom
JURUSAN SISTEM INFORMASI
SEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO
PURWOKERTO
2014
2
BAB I
TEORI DASAR
A. Pengantar
Menurut YM Kusuma Ardhana dalam bukunya Struktur Data Dalam Ilustrasi Eclipse Indigo
C++, pencarian (searching) adalah tindakan untuk mendapatkan suatu data dalam kumpulan
data. Metode pencarian data ada dua macam, pertama pencarian sekuensial (sequential
search) dan pencarian biner (binary search).
B. Pencarian Sekuensial (Sequential Search)
Pencarian sekuensial (sequential search) merupakan model pencarian paling sederhana yang
dilakukan terhadap suatu kumpulan data. Metode ini juga dikenal dengan nama pencarian
lurus (linear search).
Terdapat L yang merupakan larik (array) yang berisi n buah data
(L[0],L[1],...,L[n-1]) data k adalah data yang dicari
Rumus : L[i] = k
i adalah bilangan indeks terkecil yang memenuhi kondisi 0 k n-1
Contoh kasus :
L [10, 9, 6, 4, 7, 5, 4, 1]
0 1 2 3 4 5 6 7 indeks
Misalkan elmen yang dicari adalah 4 ( untuk posisi pertama ).
Dalam hal ini k = 4 dan k ditemukan di posisi indeks ke 3.
Perintah tersebut merupakan implementasi algoritma secara sekuensial yang menghasilkan
nilai berupa :
a. -1 jika data yang dicari tidak ada.
b. Bilangan antara 0 s/d n-1 (dengan n adalah jumlah elmen larik) jika data yang dicari telah
ditemukan.
3
C. Pencarian Biner (Binary Search)
Pencarian biner merupakan algoritma yang digunakan untuk kebutuhan pencarian data
dengan waktu yang tepat. Contohnya saat mencari arti kata dalam kamus bahasa inggiris.
Prinsip pencarian dengan metode biner atau membagi menjadi dua bagian mengilhami
algoritma pencarian bagi dua. Data yang tersimpan di dalam larik harus sudah dalam keadaan
terurut.
Misalkan indeks kiri adalah i dan indeks kanan adalah j. Awalnya inisialisasi i dengan 1 dan j
dengan n.
Misalkan diberikan larik L dengan delapan buah elmen yang sudah terurut :
L [10, 9, 7, 6, 5, 4, 3, 1]
i = 1 2 3 4 5 6 7 j=8
D. PENCARIAN PADA STRING
Pencarian pada string yaitu pencarian suatu huruf pada sebuah kalimat. Sebagai contoh
terdapat kalimat hallo stikom yos sudarso :, didalam kalimat tersebut yang dicari adalah
huruf y . Maka yang akan ditampilkan posisi dari huruf y tersebut yaitu di posisi
13.
4
BAB II
PENJELASAN PROGRAM
A. Latihan Praktikum
Pada bab ini akan membahas tentang listing program pada bagian modul yang telah digunakan
untuk latihan pada pertemuan keempat.
Listing Program 5.1
/* * 5.1.cpp * * Created on: Apr 20, 2014 * Author: Analis */ /* Pendeklarasian file header */ #include using namespace std; int cari(int data [], int n, int k) /* Parameter fungsi cari */ { int posisi, i, ketemu; /* Pendeklarasian tipe data integer untuk fungsi cari */ if (n
5
} int main() { /* Pendeklarasian variabel untuk main program */ int data[8]={10, 9, 6, 4, 7, 5, 4, 1}; int dicari; coutdicari; cout
6
cari biner */ ada=0; bawah=0; atas=n-1; while (atas>=bawah) { tengah=(atas+bawah)/2; /* nilai posisi tengah sama dengan (atas + bawah):2 */ if (k>data[tengah]) /* jika k>data[tengah] maka nilai posisi bawah sama dengan tengah + 1 */ bawah=tengah+1; else if (k
7
2. using namespace std; untuk mengakses perintah perintah yang ada pada library
standard.
3. int data berupa bilangan bulat.
4. int main() untuk mengawali suatu program.
5. cout>memasukkan data.
Listing Program 5.3
/* * 5.3.cpp * * Created on: Apr 20, 2014 * Author: Analis */ /* Pendeklarasian file header */ #include #include using namespace std; int string_kar(char st[], char k) /* parameter fungsi string_kar */ { int i, posisi, panjang; /* deklarasi variabel untuk fungsi string_kar */ i=0; posisi =-1; panjang=strlen(st); while ((i
8
Output Program 5.3
Penjelasan Program 5.3
1. #include untuk menampilkan deklarasi yang ada pada cout.
2. #include untuk menampilkan deklarasi strlen.
3. using namespace std; untuk mengakses perintah perintah yang ada pada library
standard.
4. int data berupa bilangan bulat.
5. char data berupa karakter.
6. int main() untuk mengawali suatu program.
7. cout>memasukkan data.
B. Tugas Praktikum
Listing Program 5.1 Typedef
/* * typedf5.1.cpp * * Created on: Apr 20, 2014 * Author: Analis */ /* Pendeklarasian file header */ #include using namespace std; /*pendeklarasian tipe data baru */ typedef int bil; bil cari(bil data [], bil n, bil k) /* parameter fungsi cari */
9
{ bil posisi, i, ketemu; if (n
10
5. int main() untuk mengawali suatu program.
6. cout>memasukkan data.
Listing Program 5.1 Struct
/* * search1.cpp * * Created on: Apr 14, 2014 * Author: analis */ /* Pendeklarasian file header */ #include using namespace std; /*langsung dianggap variabel tempat */ struct { int posisi; int i; int ketemu; } tempat; int cari(int data[], int n, int k) { if(n
11
int dicari; coutdicari; cout
12
}; int cari(int data[], int n, int k) { mencari tempat; /* variabel tempat bertipe data mencari */ if(n
13
6. int main() untuk mengawali suatu program.
7. cout>memasukkan data.
Listing Program 5.2 Typedef
/* * typedef5.2.cpp * * Created on: Apr 20, 2014 * Author: Analis */ /* Pendeklarasian file header */ #include using namespace std; /* pendeklarasian tipe data baru */ typedef int biner; biner caribiner(biner data[], biner n, biner k) { biner ada, atas, bawah, tengah, posisi; ada=0; bawah=0; atas=n-1; while (atas>=bawah) { tengah=(atas+bawah)/2; if (k>data[tengah]) bawah=tengah+1; else if (k
14
} int main () { biner data[]={10, 9, 7, 6, 5, 4, 3, 1}; biner dicari; coutdicari; cout
15
struct { int ada; int atas; int bawah; int tengah; int posisi; } biner; int caribiner(int data[], int n, int k) { biner.ada=0; biner.bawah=0; biner.atas=n-1; while (biner.atas>=biner.bawah) { biner.tengah=(biner.atas+biner.bawah)/2; if (k>data[biner.tengah]) biner.bawah=biner.tengah+1; else if (k
16
2. using namespace std; untuk mengakses perintah perintah yang ada pada library
standard.
3. struct digunakan untuk membuat tipe data agregate
4. int data berupa bilangan bulat.
5. int main() untuk mengawali suatu program.
6. cout>memasukkan data.
Listing Program 5.2 Typedef Struct
/* * typdefstr5.2.cpp * * Created on: Apr 21, 2014 * Author: Analis */ /* Pendeklarasian file header */ #include using namespace std; /* pendeklarasian tipe data baru struct mencari */ typedef struct mencari { int ada; int atas; int bawah; int tengah; int posisi; }; int caribiner(int data[], int n, int k) { mencari biner; /* variabel biner bertipe data mencari */ biner.ada=0; biner.bawah=0; biner.atas=n-1; while (biner.atas>=biner.bawah) { biner.tengah=(biner.atas+biner.bawah)/2; if (k>data[biner.tengah]) biner.bawah=biner.tengah+1; else if (k
17
biner.bawah=biner.atas+1; } } if (!biner.ada) biner.posisi=-1; return biner.posisi; } int main () { int data[]={10, 9, 7, 6, 5, 4, 3, 1}; int dicari; coutdicari; cout
18
/* Pendeklarasian file header */ #include #include using namespace std; /* Pendeklarasian tipe data baru */ typedef int banyak; typedef char huruf; banyak string_kar(huruf st[], huruf k) { banyak i, posisi, panjang; i=0; posisi =-1; panjang=strlen(st); while ((i
19
7. int main() untuk mengawali suatu program.
8. cout>memasukkan data.
Listing Program 5.3 Struct
/* * Citra5.3TypedefStruct.cpp * * Created on: Apr 22, 2014 * Author: Analis */ /* Pendeklarasian file header */ #include #include using namespace std; /* langsung dianggap variabel esa */ struct { int i, posisi, panjang; char kalimat[30], dicari; } esa; int string_kar(char st[], char k) { esa.i=0; esa.posisi=-1; esa.panjang=strlen(st); while((esa.i
20
}
Output Program 5.3 Struct
Penjelasan Program 5.3 Struct
1. #include untuk menampilkan deklarasi yang ada pada cout.
2 using namespace std; untuk mengakses perintah perintah yang ada pada library
standard.
3. struct digunakan untuk membuat tipe data agregate
4. int data berupa bilangan bulat.
5. char data berupa karakter.
6. int main() untuk mengawali suatu program.
7. cout>memasukkan data.
Listing Program 5.3 Typedef Struct
/* * typedefstruct5.3.cpp * * Created on: Apr 20, 2014 * Author: Analis */ /* Pendeklarasian file header */ #include #include using namespace std; /*pendeklarasian tipe data baru struct sp */ typedef struct sp { int i; int posisi; int panjang; }; int string_kar(char st[], char k)
21
{ sp esa; /* variabel esa bertipe data sp */ esa.i=0; esa.posisi=-1; esa.panjang=strlen(st); while((esa.i
22
BAB III
KESIMPULAN
Pencarian atau searching digunakan untuk mendapatkan suatu data dari kumpulan data.
Ada dua metode yang digunakan dalam searching yaitu metode pencarian sekuensial (sequential
search) atau yang bisa disebut juga pencarian lurus (linear seacrh) dan pencarian biner (binary
search). Pencarian data ini bisa digunakan untuk mencari data berupa angka atau huruf. Selain itu
dalam pencarian data juga dapat memanipulasi suatu data dengan menggunakan tipe data abstrak
berupa typedef, struct atau typedef struct.