Download - LAPORAN PRAKTIKUM resmi
-
LAPORAN PRAKTIKUM RESMI
BAB V SEARCHING
Disusun oleh :
Iqbal Dwi Rusmadi
201301056
Dosenpengampu :
Yosef Murya Kusuma Ardhana.S.T., M.Kom
JURUSAN SISTEM INFORMASI SEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO
PURWOKERTO 2014
-
2
BAB I
TEORI DASAR
1. PENGANTAR
Pencarian (Searching) adalah tindakan untuk mendapatkan sesuatu data dalam kumpulan
data.
Menurut Tenenbaum dan Augentein , algoritma pencarian yaitu algoritma yang menerima
sebuah argument X dan mencoba untuk menemukan sebuah rekaman yang memiliki kunci X.
Sebagai contoh pencarian data keuangan perusahaan di dengan hari , bulan maupun tahunan,
maka hasilnya adalah record yang berisi data keuangan perusahaan tersebut yang didalamnya
kemungkinan berisi pendapatan , sisa kas , piutang , utang dan lain lain.
2. PENCARIAN SEKUENSIAL(SEQUENTIAL SEARCH)
Pencarian sekuensia(sequential search) adalah model pencarian yang paling sederhana
yang dilakukan terhadap suatu kumpulan data.Nama lain dari metode pencarian
sekuensial adalah pencarian lurus(linear search).
Terdapat L yang merupakan larik (array) yang berisi n buah data
(L[0],L[1],.,L[n-1]) dan k adalah data yang dicari.
Rumus:L[i]=k
I adalah bilangan index 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 index
Misalkan elemen data yang dicari adalah 4(untuk posisi pertama).
Dalam hal ini k=4 dan k ditemukan diposisi index ke 3.
-
3
Subrutin (perintah) tersebut merupakan implementasi algoritma secara sekuensial , dalam
hal ini menghasilkan nilai berupa:
a. -1 jika data yang dicari tidak temukan.
b. Bilangan antara 0 s/d n-1 (dengan n adalah jumlah elemen larik) jika data yang dicari
telah ditemukan.
3. PENCARIAN BINER(BINARY SEARCH)
Pencarian biner merupakan algoritma yang digunakan untuk digunakan kebutuhan
pencarian data dengan waktu yang cepat. Contoh pencarian data dengan algoritma biner
dalam kehidupan sehari-hari yaitu ketika melakukan pencarian arti kata tertentu didalam
kamus bahasa inggris. Kita tidak akan membuka kamus dari halaman awal sampai akhir
satu persatu saat mencari arti kata tertentu, namun kita akan mencarinya dengan cara
membelah atau membagi halaman kamus tersebut. Jika kata yang dicari tidak terletak di
halaman pertengahan itu, maka kita dapat mencari dibagian belahan sebelah kiri atau
belahan sebelah kanan dengan cara membagi dua belahan yang dimaksud.Begitu
seterusnya sampai arti kata yang dicari ditemukan.
Prinsip pencarian dengan menggunakan metode biner atau membagi menjadi dua bagian
mengilhami algoritma pencarian bagi dua.Data yang tersimpan di dalam larik harus sudah
dalam keadaan terurut.
Misalkan index kiri adalah I dan index kanan adalah j.Pada mulanya diinisialisasi I
dengan 1 dan j dengan n.
Misalkan diberikan larik L dengan delapan buah elemen yang sudah terurut:
L [10 , 9 , 7 , 6 , 5 , 4 , 3 ,1]
i=1 2 3 4 5 6 7 j=8
4. PENCARIAN PADA STRING
-
4
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 diposisi 13.
BAB II
-
5
PENJELASAN PROGRAM
1. LatihanPraktikum
Pada bab ini akan membahas tentang listing program pada bagian modul yang telah digunakan
untuk latihan pada pertemuan ketiga. Latihan yang dilakukan mencakup pada Listing Program
Praktikum 5.1.cpp, Listing Program 5.2.cpp,Listing Program 5.3.cpp
Listing Program 5.1
/*
* program praktikum 5.1.cpp
*
* Created on: 4 Apr 2014
* Author: BLACK
*/
#include
using namespace std;
int cari(int data[], int n , int k)
{
int posisi,i,ketemu;
if (n
-
6
int dicari=4;
cout
-
7
Hasil output dari Program 5.1 adalah sebagai berikut :
Penjelasan listing program
#include adalah baris preprocessor yang digunakan untuk melampirkan file
header iostream ketika di compile dan merupakan salah satu file header yang salah satu
fungsinya untuk menjalankan perintah cout.
; untuk mengakhiri suatu pernyataan.
using namespace std; merupakan baris preprocessor dan salah satu file header yang
berfungsi untuk menahan tampilan layar.
int cari(int data[], int n, int k) ini merupakan tipe data integer cari yang
mencakup tipe data integer baru yaitu integer data, n dan k.
{ untuk menunjukkan fungsi dari tipe data diatas dimulai.
int posisi, i, ketemu; ini merupakan tipe data integer posisi, i dan ketemu.
if(n
-
8
{ untuk menunjukkan fungsi dari tipe data diatas dimulai.
ketemu=0; ketemu sama dengan nol.
i=1; i sama dengan 1.
while((i
-
9
/*
* program praktikum 5.2.cpp
*
* Created on: 4 Apr 2014
* Author: BLACK
*/
#include
using namespace std;
int caribiner(int data[],int n,int k)
{
int 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
-
10
Hasil output dari Program 5.2 adalah sebagai berikut :
-
11
Penjelasan listing program
#include adalah baris preprocessor yang digunakan untuk melampirkan file
header iostream ketika di compile dan merupakan salah satu file header yang salah satu
fungsinya untuk menjalankan perintah cout.
; untuk mengakhiri suatu pernyataan.
using namespace std; merupakan baris preprocessor dan salah satu file header yang
berfungsi untuk menahan tampilan layar.
int caribiner(int data[], int n, int k) ini merupakan tipe data integer cari yang
mencakup tipe data integer baru yaitu integer data, n dan k.
{ untuk menunjukkan fungsi dari tipe data diatas dimulai.
int ada, atas, bawah, tengah, posisi; ini merupakan tipe data integer ada, atas,
bawah, tengah, dan posisi.
ada=0; ada sama dengan 0.
bawah=0; bawah sama dengan 0.
atas=n-1; atas sama dengan n-1.
while (atas>=bawah) ketika atas lebih dari sama dengan bawah.
-
12
{ untuk menunjukkan fungsi dari tipe data diatas dimulai.
tengah=(atas+bawah)/2; tengah sama dengan atas+bawah dibagi 2.
if(k>data[tengah]) jika k lebih dari data tengah.
bawah=tengah+1; bawah sama dengan tengah+1.
Else merupakan perintah jika tidak.
if(k
-
13
} untuk menunjukkan fungsi main berakhir.
Listing 5.3.cpp
/*
* program praktikum 5.3.cpp
*
* Created on: 4 Apr 2014
* Author: BLACK
*/
#include
#include "cstring"
using namespace std;
int string_kar(char st[], char k)
{
int i, posisi, panjang;
i=0;
posisi=-1;
panjang=strlen(st);
while ((i
-
14
Output Program 5.3.cpp
Hasil output dari Program 5.3.cpp adalah sebagai berikut :
-
15
#include adalah baris preprocessor yang digunakan untuk melampirkan file
header iostream ketika di compile dan merupakan salah satu file header yang salah satu
fungsinya untuk menjalankan perintah cout.
; untuk mengakhiri suatu pernyataan.
using namespace std; merupakan baris preprocessor dan salah satu file header yang
berfungsi untuk menahan tampilan layar.
int string_kar(char st[], char k) ini merupakan tipe data integer string_kar yang
mencakup tipe data karakter st dan karakter k.
{ untuk menunjukkan fungsi dari tipe data diatas dimulai.
int i, posisi, panjang; ini merupakan tipe data integer i, posisi, dan panjang.
i=0; i sama dengan 0.
posisi = -1; posisi sama dengan -1.
panjang = strlen(st); maksudnya adalah panjang sama dengan strlen ( gabungan dari
karakter yang panjang ).
while((i
-
16
cout
-
17
}
ul main()
{
ul data[8]={10, 9, 6, 4, 7, 5, 4, 1};
ul dicari;
cout
-
18
{ untuk menunjukkan fungsi dari tipe data diatas dimulai.
ketemu=0; ketemu sama dengan nol.
i=1; i sama dengan 1.
while((i
-
19
kembali ke layar dan menginputkan cari(data,8,angka.dicari) lalu \n untuk mengganti
baris.
return 0; digunakan untuk menampilkan hasil ke layar dan mengembalikan kepertintah
awal.
} untuk menunjukkan fungsi main berakhir.
Menggunakan tipe data struct
//=====================================================================
=======
// Name : searching.cpp
// Author : searching
// Version :
// Copyright : 2014
// Description : Hello World in C++, Ansi-style
//=====================================================================
=======
#include
using namespace std;
int cari(int data[], int n , int k)
{
int posisi,i,ketemu;
if (n
-
20
int main()
{
int data[8]={10,9,6,4,7,5,4,1};
lol.dicari;
cout
-
21
i=1; i sama dengan 1.
while((i
-
22
Menggunakan tipe data abstrak typedef dan struct
//===========================================================================
=
// Name : searching.cpp
// Author : searching
// Version :
// Copyright : 2014
// Description : Hello World in C++, Ansi-style
//===========================================================================
=
#include
using namespace std;
int cari(int data[], int n , int k)
{
int posisi,i,ketemu;
if (n
-
23
cout
-
24
if(data[i] == k) jika data i sama dengan k.
{ untuk menunjukkan fungsi dari tipe data diatas dimulai.
posisi = i; posisi sama dengan i.
ketemu = i; ketemu sama dengan i.
} untuk menunjukkan fungsi dari tipe data diatas diakhiri.
Else merupakan perintah jika tidak.
i++; ini merupakan rumus.
if(!ketemu) jika tidak ketemu.
posisi=-1; posisi sama dengan -1.
} untuk menunjukkan fungsi dari tipe data diatas diakhiri.
return posisi; digunakan untuk menampilkan hasil ke layar dan mengembalikan
kepertintah awal.
} untuk menunjukkan fungsi dari tipe data diatas diakhiri.
typedef struct spirit ini merupakan gabungan dari tipe data typedef dan tipe data struct
dengan variable spirit.
{ untuk menunjukkan fungsi dari tipe data diatas dimulai.
int yakin; merupakan tipe data integer dengan variable yakin.
}; untuk menunjukkan fungsi dari tipe data diatas diakhiri.
int main (){ adalah fungsi atau method pokok yang akan memulai menjalankan sebuah
program. { untuk menunjukkan dimana fungsi main di mulai.
spirit selalu; spirit merupakan variable lama dan selanjutnya akan digantikan dengan
variable baru yaitu selalu.
int data[8]={10,9,6,4,7,5,4,1}; ini merupakan tipe data integer data berjumlah 8
sama dengan 10, 9, 6, 4, 7, 5, 4, 1.
selalu.yakin=5; ini merupakan sebuah typedef dan struct untuk mencari 5.
cout
-
25
return 0; digunakan untuk menampilkan hasil ke layar dan mengembalikan kepertintah
awal.
} untuk menunjukkan fungsi main berakhir.
Program Praktikum 5.1
Menggunakan tipe data abstrak struct
/*
* loo.cpp
*
* Created on: Apr 21, 2014
* Author: STIKOM19
*/
//=====================================================================
=======
// Name : searching.cpp
// Author : searching
// Version :
// Copyright : 2014
// Description : Hello World in C++, Ansi-style
//=====================================================================
=======
#include
using namespace std;
int cari(int data[],int n,int k)
{
int ada, atas, bawah, tengah, posisi;
ada=0;
bawah=0;
atas=n-1;
while(atas>=bawah)
{
tengah=(atas+bawah)/2;
-
26
if(k>data[tengah])
bawah=tengah+1;
else
if(k
-
27
#include adalah baris preprocessor yang digunakan untuk melampirkan file
header iostream ketika di compile dan merupakan salah satu file header yang salah satu
fungsinya untuk menjalankan perintah cout.
; untuk mengakhiri suatu pernyataan.
using namespace std; merupakan baris preprocessor dan salah satu file header yang
berfungsi untuk menahan tampilan layar.
int caribiner(int data[], int n, int k) ini merupakan tipe data integer cari yang
mencakup tipe data integer baru yaitu integer data, n dan k.
{ untuk menunjukkan fungsi dari tipe data diatas dimulai.
int ada, atas, bawah, tengah, posisi; ini merupakan tipe data integer ada, atas,
bawah, tengah, dan posisi.
ada=0; ada sama dengan 0.
bawah=0; bawah sama dengan 0.
atas=n-1; atas sama dengan n-1.
while (atas>=bawah) ketika atas lebih dari sama dengan bawah.
{ untuk menunjukkan fungsi dari tipe data diatas dimulai.
tengah=(atas+bawah)/2; tengah sama dengan atas+bawah dibagi 2.
if(k>data[tengah]) jika k lebih dari data tengah.
bawah=tengah+1; bawah sama dengan tengah+1.
Else merupakan perintah jika tidak.
if(k
-
28
posisi=-1; posisi sama dengan -1.
return posisi; digunakan untuk menampilkan hasil ke layar dan mengembalikan
kepertintah awal.
} untuk menunjukkan fungsi dari tipe data diatas diakhiri.
int main() { adalah fungsi atau method pokok yang akan memulai menjalankan sebuah
program. { untuk menunjukkan dimana fungsi main di mulai.
struct ayoo digunakan untuk wadah dari elemen ayoo.
{ untuk menunjukkan fungsi dari tipe data diatas dimulai.
int fokus; merupakan tipe data integer dengan variable focus.
}; untuk menunjukkan fungsi dari tipe data diatas diakhiri.
ayoo ayo; ayoo merupakan variable lama dan digantikan oleh ayo sebagai variable baru.
int data[]={10,9,7,6,5,4,3,1}; ini merupakan tipe data integer data sama dengan 10,
9, 7, 6, 5, 4, 3, 1.
ayo.fokus=6; ini merupakan sebuah struct untuk fokus sama dengan 6.
cout
-
29
// Description : Hello World in C++, Ansi-style
//=====================================================================
=======
#include
using namespace std;
typedef int lol;
lol caribiner(lol data[],lol n,lol k)
{
lol 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
-
30
Output
Penjelasan listing program
#include adalah baris preprocessor yang digunakan untuk melampirkan file
header iostream ketika di compile dan merupakan salah satu file header yang salah satu
fungsinya untuk menjalankan perintah cout.
; untuk mengakhiri suatu pernyataan.
using namespace std; merupakan baris preprocessor dan salah satu file header yang
berfungsi untuk menahan tampilan layar.
typedef int biner; sebagai nama alias bertipe data integer dan variable biner.
biner caribiner (biner data[],biner n, biner k) ini merupakan variable dari
integer tadi dan caribiner merupakan variable baru yang mencakup tipe data coba yang baru
yaitu biner data[],biner n, biner k.
{ untuk menunjukkan fungsi dari tipe data diatas dimulai.
biner ada, atas, bawah, tengah, posisi; ini merupakan variable biner bertipe data
integer ada, atas, bawah, tengah, posisi.
ada=0; ada sama dengan 0.
bawah=0; bawah sama dengan 0.
atas=n-1; atas sama dengan n-1.
while (atas>=bawah) ketika atas lebih dari sama dengan bawah.
{ untuk menunjukkan fungsi dari tipe data diatas dimulai.
tengah=(atas+bawah)/2; tengah sama dengan atas+bawah dibagi 2.
if(k>data[tengah]) jika k lebih dari data tengah.
-
31
bawah=tengah+1; bawah sama dengan tengah+1.
Else merupakan perintah jika tidak.
if(k
-
32
return 0; digunakan untuk menampilkan hasil ke layar dan mengembalikan kepertintah
awal.
} untuk menunjukkan fungsi main berakhir.
Menggunakan tipe data abstrak typedef dan struct
/*
* loo.cpp
*
* Created on: Apr 21, 2014
* Author: STIKOM19
*/
//=====================================================================
=======
// Name : searching.cpp
// Author : searching
// Version :
// Copyright : 2014
// Description : Hello World in C++, Ansi-style
//=====================================================================
=======
#include
using namespace std;
int cari(int data[],int n,int k)
{
int 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
-
33
typedef struct dicari
{
int dicari;
};
int main()
{
struct dicari aja;
int data[]={10, 9, 7, 6, 5 ,4, 3, 1};
aja.dicari;
cout
-
34
int ada, atas, bawah, tengah, posisi; ini merupakan tipe data integer ada, atas,
bawah, tengah, dan posisi.
ada=0; ada sama dengan 0.
bawah=0; bawah sama dengan 0.
atas=n-1; atas sama dengan n-1.
while (atas>=bawah) ketika atas lebih dari sama dengan bawah.
{ untuk menunjukkan fungsi dari tipe data diatas dimulai.
tengah=(atas+bawah)/2; tengah sama dengan atas+bawah dibagi 2.
if(k>data[tengah]) jika k lebih dari data tengah.
bawah=tengah+1; bawah sama dengan tengah+1.
Else merupakan perintah jika tidak.
if(k
-
35
int main()adalah fungsi atau method pokok yang akan memulai menjalankan sebuah
program.
{ untuk menunjukkan dimana fungsi main di mulai.
gabung cari; gabung merupakan variable yang lama dan selanjutnya akan digantikan oleh
variable yang baru yaitu cari.
int data[]={10,9,7,6,5,4,3,1}; ini merupakan integer data sama dengan
10,9,7,6,5,4,3,1.
cari.pasti=6; cari.pasti (yang dicari) sama dengan 6.
cout
-
36
if(st[i]==k)
posisi=i;
i++;
}
return posisi;
}
struct zoo
{
char dicari;
};
int main()
{
struct zoo aja;
char kalimat[]="Hallo stikom yos sudarso";
aja.dicari;
cout
-
37
int string_kar(char st[], char k) ini merupakan tipe data integer string_kar yang
mencakup tipe data karakter st dan karakter k.
{ untuk menunjukkan fungsi dari tipe data diatas dimulai.
int i, posisi, panjang; ini merupakan tipe data integer i, posisi, dan panjang.
i=0; i sama dengan 0.
posisi = -1; posisi sama dengan -1.
panjang = strlen(st); maksudnya adalah panjang sama dengan strlen ( gabungan dari
karakter yang panjang ).
while((i
-
38
cout
-
39
cout
-
40
while((i
-
41
*
* Created on: Apr 21, 2014
* Author: STIKOM20
*/
#include
#include
using namespace std;
int string_kar(char st[], char k)
{
int i, posisi,panjang;
i=0;
posisi=-1;
panjang=strlen(st);
while((i
-
42
struct zoo aja;
char kalimat[]="Hallo stikom yos sudarso";
aja.dicari;
cout
-
43
{ untuk menunjukkan fungsi dari tipe data diatas dimulai.
typedef struct ini ini merupakan gabungan dari tipe data typedef dan tipe data struct
dengan variable ini.
{ untuk menunjukkan fungsi dari tipe data diatas dimulai.
int i, posisi, panjang; ini merupakan tipe data integer i, posisi dan panjang.
}; untuk menunjukkan fungsi dari tipe data diatas diakhiri.
ini dia; ini merupakan variable lama dan dia merupakan variable baru.
dia.i=0; dia.i sama dengan 0.
dia.posisi = -1; dia.posisi sama dengan -1.
dia.panjang = strlen(st); maksudnya adalah dia.panjang sama dengan strlen (
gabungan dari karakter yang panjang ).
while((dia.i
-
44
kalimat dan memunculkan : kembali ke layar dan menginputkan
string_k(kalimat,dicari) lalu \n untuk mengganti baris.
return 0; digunakan untuk menampilkan hasil ke layar dan mengembalikan kepertintah
awal.
} untuk menunjukkan fungsi main berakhir.
BAB III
KESIMPULAN
Pencarian (Searching) adalah tindakan untuk mendapatkan sesuatu data dalam kumpulan
data. Untuk keperluan pencarian data,terdapat beraga, algoritma pencarian(search
algorithm).
Metode Pencarian Data:
a.Pencarian Sekuensial(sequential search)
b.Pencarian biner(binary search)
DAFTAR PUSTAKA
Ardhana.YM Kusuma.2013.Struktur Data dalam ilustrasi Eclipse Indigo C++.Yogyakarta:CAPS.