Laporan Praktikum Resmi Algo1 Bab5

48
LAPORAN PRAKTIKUM RESMI ALGORITMA & STRUKTUR DATA 1 Disusun oleh : Nama : Joshua Steven Adrian NIM : 201301015 Dosen pengampu : Yosef Murya Kusuma Ardhana.S.T., M.Kom JURUSAN SISTEM INFORMASI SEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO PURWOKERTO 2014

Transcript of Laporan Praktikum Resmi Algo1 Bab5

Page 1: Laporan Praktikum Resmi Algo1 Bab5

LAPORAN PRAKTIKUM RESMI

ALGORITMA & STRUKTUR DATA 1

Disusun oleh :

Nama : Joshua Steven Adrian

NIM : 201301015

Dosen pengampu :

Yosef Murya Kusuma Ardhana.S.T., M.Kom

JURUSAN SISTEM INFORMASI SEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO

PURWOKERTO 2014

Page 2: Laporan Praktikum Resmi Algo1 Bab5

2

BAB I

TEORI DASAR

Pencarian (searching) merupakan tindakan untuk mendapatkan suatu data dalam kumpulan data. Terdapat beragam algoritma pencarian (searching algorithm).

Menurut Tenenbaum dan Augenstein, algoritma pencarian merupakan algoritma yang menerima sebuah argument X dan mencoba untuk menemukan sebuah rekaman yang memiliki kunci X (Contoh : pencarian data Mahasiswa dengan NIM 201301015, maka hasilnyaadalah record yang berisi data mahasiswa tersebut didalamnya kemungkinan berisi nama, alamat, tempat tanggal lahir dan program studi).

Metode Pencarian Data : a. Pencarian sekuensial (sequential search) b. Pencarian biner (binary search) c. Pencarian pada string

A. Pencarian Sekuensial (sequential search)/ pencarian lurus (liniear search)

Merupakan model pencarian yang paling sederhana yang dilakukan terhadap suatu kumpulan data. 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] Index Misalkan elemen data yang dicari adalah 4 (untuk posisi pertama). Dalam hal ini k=4 dan k ditemukan diposisi di index ke 3. Subrutin (perintah) tersebut merupakan implementasi algoritma secara sekuensial, dalam hal ini menghasilkan nilai balik berupa: 1. -1 jika data yang dicari tidak ditemukan 2. Bilangan antara 0 sampai -1 (dengan n adalah jumlah elemen larik) jika data yang dicari

telah ditemukan.

0 1 2 3 4 5 6 7

Page 3: Laporan Praktikum Resmi Algo1 Bab5

3

B. Pencarian biner (binary search)

Merupakan algoritma yang dipakai untuk kebutuhan pencarian data dengan waktu cepat (contoh: melakukan pencarian arti kata tertentu dalam kamus bahasa inggris). Prinsip pencarian dibagi menjadi 2 bagian mengilhami algoritma pencarian bagi dua. Data yang tersimpan dalam larik harus sudah dalam keadaan terurut.

C. Pencarian pada String Merupakan pencarian suatu huruf pada suatu kalimat.

Page 4: Laporan Praktikum Resmi Algo1 Bab5

4

BAB II

PENJELASAN PROGRAM

Pada penjelasan program bab ini akan dijelaskan mengenai bagaimana melakukan typedef & struct/ tipe data abstrak pada Program 5.1,Program 5.2 ,Program 5.3.

Listing Program 5.1

/* * 5.1.cpp * * Created on: Apr 1, 2014 * Author: ACER */ #include<iostream> usingnamespace std; intcari(int data[], int n , int k) { int posisi,i,ketemu; if (n <=0) posisi=-1; else { ketemu=0; i=1; while((i<n-1) && !ketemu) if (data[i] == k) { posisi=i; ketemu=i; } else i++; if(!ketemu) posisi=-1; } return posisi; } intmain() { int data[8]={10,9,6,4,7,5,4,1}; int dicari=4; cout<<"posisi "<<dicari<<" adadalamlarik data ke:"<<cari(data,8,dicari)<<"\n"; return 0; }

Page 5: Laporan Praktikum Resmi Algo1 Bab5

5

Output Program 5.1

Hasil output dari Program 5.1 adalah sebagai berikut :

Penjelasan Program 5.1

Berikut penjelasan dari Listing Program 5.1 :

Tanda yang diawali /* dan diakhiri tanda */ merupakan script untuk membuat sebuah komentar pada pemrograman C++ yang didalamnya mengandung sebuah perintah atau teks, maka saat program dirunning atau dijalankan tidak akan dibaca oleh compiler.

#include atau disebut sebagai pengarah preprocessor #include berfungsi untuk menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum kompilasi dimulai.

<iostream> merupakan pengarah praprosesor yang input/masukkannya menggunakan cout ,dan penampung data ke programnya/outpunya menggunakan cin.

Yang dimaksud using namespace std;adalah standar device sebuah program.

Yang dimaksud intcari(int data[], int n , int k)merupakan statement fungsi dengan nama fungsi cari.

Yang dimaksud int posisi,i,ketemu; adalah tipe data posisi ,I, dan ketemu berbentuk int/integer (bilangan bulat).

if (n <=0) posisi=-1; else { ketemu=0; i=1; while((i<n-1) && !ketemu) if (data[i] == k) { posisi=i; ketemu=i;

Page 6: Laporan Praktikum Resmi Algo1 Bab5

6

} else i++; if(!ketemu) posisi=-1; } return posisi; }

Merupakan statement if –else yang berfungsi untuk menyeleksi /pemilihan.

Int main digunakan untuk memulai /memainkan program.

Yang dimaksud dengan int data[8]={10,9,6,4,7,5,4,1}; adalah tipe data data berbentuk int/integer (bilangan bulat) yang isinya 8 karakter/digit, dan berisi 10, 9, 6, 4, 7, 5, 4, dan 1.

Yang dimaksud dengan int dicari=4; adalah tipe data dicariberbentuk int/integer (bilangan bulat) dan mencari pada index ke 4.

cout<<"posisi "<<dicari<<" adadalamlarik data ke :"<<cari(data,8,dicari)<<"\n";

merupakan statement pemanggilan fungsi yang sebelumnya telah diinputkan.

Return 0 digunakan untuk menampilkan hasil running di IMD.

Tanda “{“ dan “}” berfungsi untuk membuka dan menutup badan prosedur.

Listing Program 5.2

/* * 5.2.cpp * * Created on: Apr 1, 2014 * Author: ACER */ #include<iostream> usingnamespace std; intcaribiner(int data[],int n,int k) { int ada, atas, bawah, tengah, posisi;

Page 7: Laporan Praktikum Resmi Algo1 Bab5

7

ada=0; bawah=0; atas=n-1; while (atas>=bawah) { tengah=(atas+bawah)/2; if(k>data[tengah]) bawah=tengah+1; else if(k<data[tengah]) atas=tengah-1; else { ada=1; posisi=tengah; bawah=atas+1; } } if (!ada) posisi=-1; return posisi; } intmain() { int data[]={10, 9, 7, 6, 5, 4, 3, 1}; int dicari=6; cout<<"Posisi "<<dicari<<" dalamlarik data : "<<caribiner(data, 8, dicari)<<"\n"; return 0; }

Output Program 5.2

Hasil output dari Program 5.2 adalah sebagai berikut :

Penjelasan Program 5.2

Page 8: Laporan Praktikum Resmi Algo1 Bab5

8

Berikut penjelasan dari Listing Program 5.2 :

Tanda yang diawali /* dan diakhiri tanda */ merupakan script untuk membuat sebuah komentar pada pemrograman C++ yang didalamnya mengandung sebuah perintah atau teks, maka saat program dirunning atau dijalankan tidak akan dibaca oleh compiler.

#include atau disebut sebagai pengarah preprocessor #include berfungsi untuk menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum kompilasi dimulai.

<iostream> merupakan pengarah praprosesor yang input/masukkannya menggunakan cout ,dan penampung data ke programnya/outpunya menggunakan cin.

Yang dimaksud using namespace std;adalah standar device sebuah program.

Yang dimaksud intcaribiner(int data[],int n,int k)merupakan statement fungsi dengan nama fungsi caribiner.

Yang dimaksud int ada, atas, bawah, tengah, posisi; adalah tipe data ada, atas, bawah, tengah dan posisi berbentuk int/integer (bilangan bulat).

ada=0; bawah=0; atas=n-1;

Yang dimaksud “ada” bernilai sama dengan 0, “bawah” bernilai sama dengan 0, “atas” bernilai n-1.

while (atas>=bawah) { tengah=(atas+bawah)/2;

merupakan statement perulangan yang berfungsi untuk melakukan perulangan suatu program.

if(k>data[tengah]) bawah=tengah+1; else if(k<data[tengah]) atas=tengah-1; else { ada=1; posisi=tengah; bawah=atas+1; } } if (!ada)

Page 9: Laporan Praktikum Resmi Algo1 Bab5

9

posisi=-1; return posisi; }

Merupakan statement if- else yang berfungsi untuk memilih /menyeleksi.

Int main digunakan untuk memulai /memainkan program.

Yang dimaksud dengan int data[]={10, 9, 7, 6, 5, 4, 3, 1}; adalah tipe data data berbentuk int/integer (bilangan bulat) yang berisi 10, 9, 7, 6, 5, 4, 3, dan 1.

Yang dimaksud dengan int dicari=6; adalah tipe data dicari berbentuk int/integer (bilangan bulat) dan mencari pada index ke 6.

cout<<"Posisi "<<dicari<<" dalamlarik data : "<<caribiner(data, 8, dicari)<<"\n";

merupakan statement pemanggilan fungsi yang sebelumnya telah diinputkan.

Return 0 digunakan untuk menampilkan hasil running di IMD.

Tanda “{“ dan “}” berfungsi untuk membuka dan menutup badan prosedur.

Listing Program 5.3

/* * 5.3.cpp * * Created on: Apr 1, 2014 * Author: ACER */ #include<iostream> #include"cstring" usingnamespace std; intstring_kar(char st[], char k) { int i, posisi, panjang; i=0; posisi=-1; panjang=strlen(st); while ((i<panjang-1) &&posisi == -1) { if(st[i] == k) posisi=i; i++;

Page 10: Laporan Praktikum Resmi Algo1 Bab5

10

} returnposisi; } intmain (){ char kalimat[]="Hallostikomyossudarso"; char dicari ='y'; cout<<"Posisi "<<dicari<<" dalamlarik data : "<<kalimat<<" : "<<string_kar(kalimat, dicari)<<"\n"; return 0; }

Output Program 5.3

Hasil output dari Program 5.3 adalah sebagai berikut :

Penjelasan Program 5.3

Berikut penjelasan dari Listing Program 5.3 :

Tanda yang diawali /* dan diakhiri tanda */ merupakan script untuk membuat sebuah komentar pada pemrograman C++ yang didalamnya mengandung sebuah perintah atau teks, maka saat program dirunning atau dijalankan tidak akan dibaca oleh compiler.

#include atau disebut sebagai pengarah preprocessor #include berfungsi untuk menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum kompilasi dimulai.

<iostream> merupakan pengarah praprosesor yang input/masukkannya menggunakan cout ,dan penampung data ke programnya/outpunya menggunakan cin.

<cstring> merupakan pengarah praprosesor yang berisi kumpulan dari karakter.

Yang dimaksud using namespace std;adalah standar device sebuah program.

Yang dimaksud intstring_kar(char st[], char k)merupakan statement fungsi dengan nama fungsi string_kar.

Page 11: Laporan Praktikum Resmi Algo1 Bab5

11

Yang dimaksud int i, posisi, panjang; adalah tipe data i, posisi, dan panjang berbentuk int/integer (bilangan bulat).

i=0; posisi=-1; panjang=strlen(st);

yang dimaksud adalah i bernilai sama dengan 0, posisi bernilai sama dengan -1, dan panjang bernilai strlen(st). Strlen merupakan fungsi manipulasi string untuk menghitung panjang string.

while ((i<panjang-1) &&posisi == -1) {

merupakan statement perulangan yang berfungsi untuk melakukan perulangan suatu program.

if(st[i] == k) posisi=i; i++; } returnposisi; }

Merupakan statement if- else yang berfungsi untuk memilih /menyeleksi.

Int main digunakan untuk memulai /memainkan program.

Yang dimaksud dengan char kalimat[]="Hallostikomyossudarso"; adalah tipe data kalimat berbentuk char (karakter) yang berisi "Hallostikomyossudarso".

Yang dimaksud dengan char dicari ='y'; adalah tipe data dicari berbentuk char (karakter) dan mencari pada index ke y.

cout<<"Posisi "<<dicari<<" dalamlarik data : "<<kalimat<<" : "<<string_kar(kalimat, dicari)<<"\n"; merupakan statement pemanggilan fungsi yang sebelumnya telah diinputkan.

Return 0 digunakan untuk menampilkan hasil running di IMD.

Tanda “{“ dan “}” berfungsi untuk membuka dan menutup badan prosedur.

Tugas Praktikum

Page 12: Laporan Praktikum Resmi Algo1 Bab5

12

Pada bagian ini kita akan membahas tugas praktikum ,berikut pertanyaan praktikumnya :

a. Membuat program 5.1 dengan menambahkan cout & cin agar user dapat

menginputkan angka sendiri.

b. Membuat program 5.2 dengan menambahkan cout & cin agar user dapat

menginputkan angka sendiri.

c. Membuat program 5.3 dengan menambahkan cout & cin agar user dapat

menginputkan angka sendiri.

d. Modifikasi program 5.1, 5.2, 5.3 dengan menggunakan tipe data abstrak (struct,

typedef, dan typedef & struct).

Jawaban :

1. Listing Program 5.1 dengan cout & cin

/* * co.cpp * * Created on: Apr 15, 2014 * Author: ACER */ #include<iostream> usingnamespace std; intcari(int data[], int n , int k) { int posisi,i,ketemu; if (n <=0) posisi=-1; else { ketemu=0; i=1; while((i<n-1) && !ketemu) if (data[i] == k) { posisi=i; ketemu=i; } else i++; if(!ketemu) posisi=-1; } return posisi;

Page 13: Laporan Praktikum Resmi Algo1 Bab5

13

} intmain() { int data[8]={10,9,6,4,7,5,4,1}; int dicari; cout<<"Masukkanangkayangdicari:"; cin>>dicari; cout<<"posisi "<<dicari<<" adadalamlarik data ke :"<<cari(data,8,dicari)<<"\n"; return 0; }

Output Program 5.1 dengan cout & cin

Hasil output dari Program 5.1 dengan cout & cin adalah sebagai berikut :

Penjelasan Program 5.1 dengan cout & cin

Berikut penjelasan dari Listing Program 5.1 dengan cout & cin:

Tanda yang diawali /* dan diakhiri tanda */ merupakan script untuk membuat sebuah komentar pada pemrograman C++ yang didalamnya mengandung sebuah perintah atau teks, maka saat program dirunning atau dijalankan tidak akan dibaca oleh compiler.

#include atau disebut sebagai pengarah preprocessor #include berfungsi untuk menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum kompilasi dimulai.

<iostream> merupakan pengarah praprosesor yang input/masukkannya menggunakan cout ,dan penampung data ke programnya/outpunya menggunakan cin.

Yang dimaksud using namespace std;adalah standar device sebuah program.

Yang dimaksud intcari(int data[], int n , int k)merupakan statement fungsi dengan nama fungsi cari.

Yang dimaksud int posisi,i,ketemu; adalah tipe data i, posisi, dan ketemu berbentuk int/integer (bilangan bulat).

if (n <=0) posisi=-1;

Page 14: Laporan Praktikum Resmi Algo1 Bab5

14

else { ketemu=0; i=1;

Merupakan statement if- else yang berfungsi untuk memilih /menyeleksi.

while((i<n-1) && !ketemu) { merupakan statement perulangan yang berfungsi untuk melakukan perulangan suatu program.

if (data[i] == k) { posisi=i; ketemu=i; } else i++; if(!ketemu) posisi=-1; } return posisi;}

Merupakan statement if- else yang berfungsi untuk memilih /menyeleksi.

Int main digunakan untuk memulai /memainkan program.

Yang dimaksud dengan int data[8]={10,9,6,4,7,5,4,1};adalah tipe data data berbentuk int (bilangan bulat) yang berisi "10,9,6,4,7,5,4,1".

Yang dimaksud dengan char dicari; adalah tipe data dicari berbentuk char (karakter).

Cout berfungsi sebagai input/masukkan dalam program.

Cin berfungsi sebagai output/keluaran dalam program.

cout<<"posisi "<<dicari<<" adadalamlarik data ke:"<<cari(data,8,dicari)<<"\n";

merupakan statement pemanggilan fungsi yang sebelumnya telah diinputkan.

Return 0 digunakan untuk menampilkan hasil running di IMD.

Tanda “{“ dan “}” berfungsi untuk membuka dan menutup badan prosedur.

Page 15: Laporan Praktikum Resmi Algo1 Bab5

15

2. Listing Program 5.2 dengan cout & cin

/* * ci.cpp * * Created on: Apr 15, 2014 * Author: ACER */ #include<iostream> usingnamespace std; intcaribiner(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<data[tengah]) atas=tengah-1; else { ada=1; posisi=tengah; bawah=atas+1; } } if (!ada) posisi=-1; return posisi; } intmain() { int data[]={10, 9, 7, 6, 5, 4, 3, 1}; intdicari; cout<<"masukkanangkayangdicari :"; cin>>dicari; cout<<"Posisi "<<dicari<<" dalamlarik data : "<<caribiner(data, 8, dicari)<<"\n"; return 0; } Output Program 5.2 dengan cout & cin

Page 16: Laporan Praktikum Resmi Algo1 Bab5

16

Hasil output dari Program 5.2 dengan cout & cin adalah sebagai berikut :

Penjelasan Program 5.2 dengan cout & cin

Berikut penjelasan dari Listing Program 5.2 dengan cout & cin:

Tanda yang diawali /* dan diakhiri tanda */ merupakan script untuk membuat sebuah komentar pada pemrograman C++ yang didalamnya mengandung sebuah perintah atau teks, maka saat program dirunning atau dijalankan tidak akan dibaca oleh compiler.

#include atau disebut sebagai pengarah preprocessor #include berfungsi untuk menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum kompilasi dimulai.

<iostream> merupakan pengarah praprosesor yang input/masukkannya menggunakan cout ,dan penampung data ke programnya/outpunya menggunakan cin.

Yang dimaksud using namespace std;adalah standar device sebuah program.

Yang dimaksud intcaribiner(int data[],int n,int k)merupakan statement fungsi dengan nama fungsi caribiner.

Yang dimaksud int ada, atas, bawah, tengah, posisi; adalah tipe data ada, atas, bawah, tengah dan posisi berbentuk int/integer (bilangan bulat).

ada=0; bawah=0; atas=n-1;

Yang dimaksud “ada” bernilai sama dengan 0, “bawah” bernilai sama dengan 0, “atas” bernilai n-1.

while (atas>=bawah) { tengah=(atas+bawah)/2;

merupakan statement perulangan yang berfungsi untuk melakukan perulangan suatu program.

if(k>data[tengah]) bawah=tengah+1;

Page 17: Laporan Praktikum Resmi Algo1 Bab5

17

else if(k<data[tengah]) atas=tengah-1; else { ada=1; posisi=tengah; bawah=atas+1; } } if (!ada) posisi=-1; return posisi; }

Merupakan statement if- else yang berfungsi untuk memilih /menyeleksi.

Int main digunakan untuk memulai /memainkan program.

Yang dimaksud dengan int data[]={10, 9, 7, 6, 5, 4, 3, 1}; adalah tipe data data berbentuk int/integer (bilangan bulat) yang berisi 10, 9, 7, 6, 5, 4, 3, dan 1.

Yang dimaksud dengan int dicari=6; adalah tipe data dicari berbentuk int/integer (bilangan bulat) dan mencari pada index ke 6.

Cout berfungsi sebagai input/masukkan dalam program.

Cin berfungsi sebagai output/keluaran dalam program.

cout<<"Posisi "<<dicari<<" dalamlarik data : "<<caribiner(data, 8, dicari)<<"\n";

merupakan statement pemanggilan fungsi yang sebelumnya telah diinputkan.

Return 0 digunakan untuk menampilkan hasil running di IMD.

Tanda “{“ dan “}” berfungsi untuk membuka dan menutup badan prosedur.

3. Listing Program 5.3 dengan cout & cin

/* * in.cpp *

Page 18: Laporan Praktikum Resmi Algo1 Bab5

18

* Created on: Apr 15, 2014 * Author: ACER */ #include<iostream> #include"cstring" usingnamespace std; intstring_kar(char st[], char k) { int i, posisi, panjang; i=0; posisi=-1; panjang=strlen(st); while ((i<panjang-1) && posisi == -1) { if(st[i] == k) posisi=i; i++; } return posisi; } intmain (){ char kalimat[]="Hallostikomyossudarso"; char dicari ='y'; cout<<"masukkanhurufyangdicari :"; cin>>dicari; cout<<"Posisi "<<dicari<<" dalamlarik data : "<<kalimat<<" : "<<string_kar(kalimat, dicari)<<"\n"; return 0; }

Output Program 5.3 dengan cout & cin

Hasil output dari Program 5.3 dengan cout & cin adalah sebagai berikut :

Penjelasan Program 5.3 dengan cout & cin

Berikut penjelasan dari Listing Program 5.3 dengan cout & cin:

Page 19: Laporan Praktikum Resmi Algo1 Bab5

19

Tanda yang diawali /* dan diakhiri tanda */ merupakan script untuk membuat sebuah komentar pada pemrograman C++ yang didalamnya mengandung sebuah perintah atau teks, maka saat program dirunning atau dijalankan tidak akan dibaca oleh compiler.

#include atau disebut sebagai pengarah preprocessor #include berfungsi untuk menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum kompilasi dimulai.

<iostream> merupakan pengarah praprosesor yang input/masukkannya menggunakan cout ,dan penampung data ke programnya/outpunya menggunakan cin.

<cstring> merupakan pengarah praprosesor yang berisi kumpulan dari karakter.

Yang dimaksud using namespace std;adalah standar device sebuah program.

Yang dimaksud intstring_kar(char st[], char k)merupakan statement fungsi dengan nama fungsi string_kar.

Yang dimaksud int i, posisi, panjang; adalah tipe data i, posisi, dan panjang berbentuk int/integer (bilangan bulat).

i=0; posisi=-1; panjang=strlen(st);

yang dimaksud adalah i bernilai sama dengan 0, posisi bernilai sama dengan -1, dan panjang bernilai strlen(st). Strlen merupakan fungsi manipulasi string untuk menghitung panjang string.

while ((i<panjang-1) &&posisi == -1) {

merupakan statement perulangan yang berfungsi untuk melakukan perulangan suatu program.

if(st[i] == k) posisi=i; i++; } returnposisi; }

Merupakan statement if- else yang berfungsi untuk memilih /menyeleksi.

Int main digunakan untuk memulai /memainkan program.

Yang dimaksud dengan char kalimat[]="Hallostikomyossudarso"; adalah tipe data kalimat berbentuk char (karakter) yang berisi "Hallostikomyossudarso".

Page 20: Laporan Praktikum Resmi Algo1 Bab5

20

Yang dimaksud dengan char dicari ='y'; adalah tipe data dicari berbentuk char (karakter) dan mencari pada index ke y.

Cout berfungsi sebagai input/masukkan dalam program.

Cin berfungsi sebagai output/keluaran dalam program.

cout<<"Posisi "<<dicari<<" dalamlarik data : "<<kalimat<<" : "<<string_kar(kalimat, dicari)<<"\n"; merupakan statement pemanggilan fungsi yang sebelumnya telah diinputkan.

Return 0 digunakan untuk menampilkan hasil running di IMD.

Tanda “{“ dan “}” berfungsi untuk membuka dan menutup badan prosedur.

4. Listing Program 5.1 dengan tipe data abstrak (struct)

/* * ct.cpp * * Created on: Apr 15, 2014 * Author: ACER */ #include<iostream> usingnamespace std; struct{ intposisi; inti; intketemu; }a; intcari(int data[], int n , int k) { if (n <=0) a.posisi=-1; else { a.ketemu=0; a.i=1; while((a.i<n-1) && !a.ketemu) if (data[a.i] == k) { a.posisi=a.i; a.ketemu=a.i;

Page 21: Laporan Praktikum Resmi Algo1 Bab5

21

} else a.i++; if(!a.ketemu) a.posisi=-1; } return a.posisi; } intmain() { int data[8]={10,9,6,4,7,5,4,1}; int dicari; cout<<"Masukkanangkayangdicari:"; cin>>dicari; cout<<"posisi "<<dicari<<" adadalamlarik data ke :"<<cari(data,8,dicari)<<"\n"; return 0; } Output Program 5.1 dengan tipe data abstrak (struct)

Hasil output dari Program 5.1 dengan tipe data abstrak (struct) adalah sebagai berikut :

Penjelasan Program 5.1 dengan tipe data abstrak (struct)

Berikut penjelasan dari Listing Program 5.1 dengan tipe data abstrak (struct):

Tanda yang diawali /* dan diakhiri tanda */ merupakan script untuk membuat sebuah komentar pada pemrograman C++ yang didalamnya mengandung sebuah perintah atau teks, maka saat program dirunning atau dijalankan tidak akan dibaca oleh compiler.

#include atau disebut sebagai pengarah preprocessor #include berfungsi untuk menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum kompilasi dimulai.

<iostream> merupakan pengarah praprosesor yang input/masukkannya menggunakan cout ,dan penampung data ke programnya/outpunya menggunakan cin.

Yang dimaksud using namespace std;adalah standar device sebuah program.

Page 22: Laporan Praktikum Resmi Algo1 Bab5

22

struct{ intposisi; inti; intketemu; }a;

Merupakan statement struct (tipe data abstrak).

Yang dimaksud intcari(int data[], int n , int k)merupakan statement fungsi dengan nama fungsi cari.

if (n <=0) a.posisi=-1; else { a.ketemu=0; a.i=1;

Merupakan statement if- else yang berfungsi untuk memilih /menyeleksi.

while((a.i<n-1) && !a.ketemu) { merupakan statement perulangan yang berfungsi untuk melakukan perulangan suatu program.

if (data[a.i] == k) { a.posisi=a.i; a.ketemu=a.i; } else a.i++; if(!a.ketemu) a.posisi=-1; } return a.posisi; } Merupakan statement if- else yang berfungsi untuk memilih /menyeleksi. Int main digunakan untuk memulai /memainkan program.

Yang dimaksud dengan int data[8]={10,9,6,4,7,5,4,1};adalah tipe data data berbentuk int (bilangan bulat) yang berisi "10,9,6,4,7,5,4,1".

Yang dimaksud dengan char dicari; adalah tipe data dicari berbentuk char (karakter).

Cout berfungsi sebagai input/masukkan dalam program.

Cin berfungsi sebagai output/keluaran dalam program.

Page 23: Laporan Praktikum Resmi Algo1 Bab5

23

cout<<"posisi "<<dicari<<" adadalamlarik data ke:"<<cari(data,8,dicari)<<"\n";

merupakan statement pemanggilan fungsi yang sebelumnya telah diinputkan.

Return 0 digunakan untuk menampilkan hasil running di IMD.

Tanda “{“ dan “}” berfungsi untuk membuka dan menutup badan prosedur.

5. Listing Program 5.2 dengan tipe data abstrak (struct)

/* * uc.cpp * * Created on: Apr 15, 2014 * Author: ACER */ #include<iostream> usingnamespace std; struct{ intada; intatas; intbawah; inttengah; intposisi; }a; intcaribiner(int data[],int n,int k) { a.ada=0; a.bawah=0; a.atas=n-1; while (a.atas>=a.bawah) { a.tengah=(a.atas+a.bawah)/2; if(k>data[a.tengah]) a.bawah=a.tengah+1; else if(k<data[a.tengah]) a.atas=a.tengah-1; else { a.ada=1; a.posisi=a.tengah; a.bawah=a.atas+1; } } if (!a.ada) a.posisi=-1;

Page 24: Laporan Praktikum Resmi Algo1 Bab5

24

return a.posisi; } intmain() { int data[]={10, 9, 7, 6, 5, 4, 3, 1}; int dicari; cout<<"masukkanangkayangdicari :"; cin>>dicari; cout<<"Posisi "<<dicari<<" dalamlarik data : "<<caribiner(data, 8, dicari)<<"\n"; return 0; }

Output Program 5.2 dengan tipe data abstrak (struct)

Hasil output dari Program 5.2 dengan tipe data abstrak (struct) adalah sebagai berikut :

Penjelasan Program 5.2 dengan tipe data abstrak (struct)

Berikut penjelasan dari Listing Program 5.2 dengan tipe data abstrak (struct):

Tanda yang diawali /* dan diakhiri tanda */ merupakan script untuk membuat sebuah komentar pada pemrograman C++ yang didalamnya mengandung sebuah perintah atau teks, maka saat program dirunning atau dijalankan tidak akan dibaca oleh compiler.

#include atau disebut sebagai pengarah preprocessor #include berfungsi untuk menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum kompilasi dimulai.

<iostream> merupakan pengarah praprosesor yang input/masukkannya menggunakan cout ,dan penampung data ke programnya/outpunya menggunakan cin.

Yang dimaksud using namespace std;adalah standar device sebuah program.

struct{ intada; intatas; intbawah; inttengah; intposisi; }a;

Page 25: Laporan Praktikum Resmi Algo1 Bab5

25

Merupakan statement struct (tipe data abstrak).

Yang dimaksud intcaribiner(int data[],int n,int k)merupakan statement fungsi dengan nama fungsi caribiner.

a.ada=0; a.bawah=0; a.atas=n-1;

Yang dimaksud “a.ada” bernilai sama dengan 0, “a.bawah” bernilai sama dengan 0, “a.atas” bernilai n-1.

while (a.atas>=a.bawah) { a.tengah=(a.atas+a.bawah)/2;

merupakan statement perulangan yang berfungsi untuk melakukan perulangan suatu program.

if(k>data[a.tengah]) a.bawah=a.tengah+1; else if(k<data[a.tengah]) a.atas=a.tengah-1; else { a.ada=1; a.posisi=a.tengah; a.bawah=a.atas+1; } } if (!a.ada) a.posisi=-1; return a.posisi; }

Merupakan statement if- else yang berfungsi untuk memilih /menyeleksi.

Int main digunakan untuk memulai /memainkan program.

Yang dimaksud dengan int data[]={10, 9, 7, 6, 5, 4, 3, 1}; adalah tipe data data berbentuk int/integer (bilangan bulat) yang berisi 10, 9, 7, 6, 5, 4, 3, dan 1.

Yang dimaksud dengan int dicari=6; adalah tipe data dicari berbentuk int/integer (bilangan bulat) dan mencari pada index ke 6.

Cout berfungsi sebagai input/masukkan dalam program.

Cin berfungsi sebagai output/keluaran dalam program.

Page 26: Laporan Praktikum Resmi Algo1 Bab5

26

cout<<"Posisi "<<dicari<<" dalamlarik data : "<<caribiner(data, 8, dicari)<<"\n";

merupakan statement pemanggilan fungsi yang sebelumnya telah diinputkan.

Return 0 digunakan untuk menampilkan hasil running di IMD.

Tanda “{“ dan “}” berfungsi untuk membuka dan menutup badan prosedur.

6. Listing Program 5.3 dengan tipe data abstrak (struct)

/* * ty.cpp * * Created on: Apr 15, 2014 * Author: ACER */ #include<iostream> #include"cstring" usingnamespace std; struct{ inti, panjang, posisi; }a; intstring_kar(char st[], char k) { a.i=0; a.posisi=-1; a.panjang=strlen(st); while ((a.i<a.panjang-1) && a.posisi == -1) { if(st[a.i] == k) a.posisi=a.i; a.i++; } return a.posisi; } intmain (){ char kalimat[]="Hallostikomyossudarso"; char dicari ='y'; cout<<"masukkanhurufyangdicari :"; cin>>dicari; cout<<"Posisi "<<dicari<<" dalamlarik data : "<<kalimat<<" : "<<string_kar(kalimat, dicari)<<"\n"; return 0;

Page 27: Laporan Praktikum Resmi Algo1 Bab5

27

}

Output Program 5.3 dengan tipe data abstrak (struct)

Hasil output dari Program 5.3 dengan tipe data abstrak (struct) adalah sebagai berikut :

Penjelasan Program 5.3 dengan tipe data abstrak (struct)

Berikut penjelasan dari Listing Program 5.3 dengan tipe data abstrak (struct):

Tanda yang diawali /* dan diakhiri tanda */ merupakan script untuk membuat sebuah komentar pada pemrograman C++ yang didalamnya mengandung sebuah perintah atau teks, maka saat program dirunning atau dijalankan tidak akan dibaca oleh compiler.

#include atau disebut sebagai pengarah preprocessor #include berfungsi untuk menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum kompilasi dimulai.

<iostream> merupakan pengarah praprosesor yang input/masukkannya menggunakan cout ,dan penampung data ke programnya/outpunya menggunakan cin.

<cstring> merupakan pengarah praprosesor yang berisi kumpulan dari karakter.

Yang dimaksud using namespace std;adalah standar device sebuah program.

struct{ inti, panjang, posisi; }a; Merupakan statement struct (tipe data abstrak).

Yang dimaksud intstring_kar(char st[], char k)merupakan statement fungsi dengan nama fungsi string_kar.

a.i=0; a.posisi=-1; a.panjang=strlen(st);

yang dimaksud adalah a.i bernilai sama dengan 0, a.posisi bernilai sama dengan -1, dan a.panjang bernilai strlen(st). Strlen merupakan fungsi manipulasi string untuk menghitung panjang string.

Page 28: Laporan Praktikum Resmi Algo1 Bab5

28

while ((a.i<a.panjang-1) && a.posisi == -1) {

merupakan statement perulangan yang berfungsi untuk melakukan perulangan suatu program.

if(st[a.i] == k) a.posisi=a.i; a.i++; } return a.posisi; }

Merupakan statement if- else yang berfungsi untuk memilih /menyeleksi.

Int main digunakan untuk memulai /memainkan program.

Yang dimaksud dengan char kalimat[]="Hallostikomyossudarso"; adalah tipe data kalimat berbentuk char (karakter) yang berisi "Hallostikomyossudarso".

Yang dimaksud dengan char dicari ='y'; adalah tipe data dicari berbentuk char (karakter) dan mencari pada index ke y.

Cout berfungsi sebagai input/masukkan dalam program.

Cin berfungsi sebagai output/keluaran dalam program.

cout<<"Posisi "<<dicari<<" dalamlarik data : "<<kalimat<<" : "<<string_kar(kalimat, dicari)<<"\n"; merupakan statement pemanggilan fungsi yang sebelumnya telah diinputkan.

Return 0 digunakan untuk menampilkan hasil running di IMD.

Tanda “{“ dan “}” berfungsi untuk membuka dan menutup badan prosedur.

7. Listing Program 5.1 dengan tipe data abstrak (typedef)

/* * yd.cpp * * Created on: Apr 15, 2014 * Author: ACER */ #include<iostream> usingnamespace std;

Page 29: Laporan Praktikum Resmi Algo1 Bab5

29

typedefintdata; typedefintn; typedefintk; typedefintposisi; typedefinti; typedefintketemu; typedefintcari; cariq(data a[], n b, k c) { posisi d; i e; ketemu f; if (b <=0) d=-1; else { f=0; e=1; while((e<b-1) && !f) if (a[e] == c) { d=e; f=e; } else e++; if(!f) d=-1; } return d; } intmain() { data a[8]={10,9,6,4,7,5,4,1}; cari t; cout<<"masukkanangkayangdicari:"; cin>>t; cout<<"posisi "<<t<<" adadalamlarik data ke :"<<q(a,8,t)<<"\n"; return 0; }

Output Program 5.1 dengan tipe data abstrak (typedef)

Hasil output dari Program 5.1 dengan tipe data abstrak (typedef) adalah sebagai berikut :

Page 30: Laporan Praktikum Resmi Algo1 Bab5

30

Penjelasan Program 5.1 dengan tipe data abstrak (typedef)

Berikut penjelasan dari Listing Program 5.1 dengan tipe data abstrak (typedef):

Tanda yang diawali /* dan diakhiri tanda */ merupakan script untuk membuat sebuah komentar pada pemrograman C++ yang didalamnya mengandung sebuah perintah atau teks, maka saat program dirunning atau dijalankan tidak akan dibaca oleh compiler.

#include atau disebut sebagai pengarah preprocessor #include berfungsi untuk menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum kompilasi dimulai.

<iostream> merupakan pengarah praprosesor yang input/masukkannya menggunakan cout ,dan penampung data ke programnya/outpunya menggunakan cin.

Yang dimaksud using namespace std;adalah standar device sebuah program.

typedefintdata; typedefintn; typedefintk; typedefintposisi; typedefinti; typedefintketemu; typedefintcari; Merupakan statement typedef (tipe data abstrak).

Yang dimaksud cariq(data a[], n b, k c)merupakan statement fungsi dengan nama fungsi q (dengan menggunakan tipe data abstrak (typedef)).

Yang dimaksud dengan posisi d;adalah tipe data d berbentuk posisi (bilangan bulat).

Yang dimaksud dengan i e;adalah tipe data e berbentuk i (bilangan bulat).

Yang dimaksud dengan ketemu f;adalah tipe data f berbentuk ketemu (bilangan bulat).

if (b <=0) d=-1; else { f=0; e=1; while((e<b-1) && !f) if (a[e] == c) { d=e; f=e;

Page 31: Laporan Praktikum Resmi Algo1 Bab5

31

} else e++; if(!f) d=-1; } return d; }

Merupakan statement if –else yang berfungsi untuk menyeleksi /pemilihan& statement perulangan.

Int main digunakan untuk memulai /memainkan program.

Yang dimaksud dengan dataa[8]={10,9,6,4,7,5,4,1}; adalah tipe data a berbentuk data (bilangan bulat) yang isinya 8 karakter/digit, dan berisi 10, 9, 6, 4, 7, 5, 4, dan 1.

Yang dimaksud dengan carit; adalah tipe data t berbentuk cari (bilangan bulat).

Cout berfungsi sebagai input/masukkan dalam program.

Cin berfungsi sebagai output/keluaran dalam program.

cout<<"posisi "<<t<<" adadalamlarik data ke :"<<q(a,8,t)<<"\n";

merupakan statement pemanggilan fungsi yang sebelumnya telah diinputkan.

Return 0 digunakan untuk menampilkan hasil running di IMD.

Tanda “{“ dan “}” berfungsi untuk membuka dan menutup badan prosedur.

8. Listing Program 5.2 dengan tipe data abstrak (typedef)

/* * typ.cpp * * Created on: Apr 15, 2014 * Author: ACER */ #include<iostream> usingnamespace std; typedefintcari; typedefintdata;

Page 32: Laporan Praktikum Resmi Algo1 Bab5

32

typedefintn; typedefintk; typedefintposisi; typedefintada; typedefintatas; typedefintbawah; typedefinttengah; typedefintcaribiner; caribinerw(data a[], n b, k c) { ada d; atas e; bawah f; tengah g; posisi h; d=0; f=0; e=b-1; while (e>=f) { g=(e+f)/2; if(c>a[g]) f=g+1; else if(c<a[g]) e=g-1; else { d=1; h=g; f=e+1; } } if (!d) h=-1; return h; } intmain() { data a[]={10, 9, 7, 6, 5, 4, 3, 1}; cari t=6; cout<<"masukkanangkayangdicari :"; cin>>t; cout<<"Posisi "<<t<<" dalamlarik data : "<<w(a, 8, t)<<"\n"; return 0; }

Output Program 5.2 dengan tipe data abstrak (typedef)

Page 33: Laporan Praktikum Resmi Algo1 Bab5

33

Hasil output dari Program 5.2 dengan tipe data abstrak (typedef) adalah sebagai berikut :

Penjelasan Program 5.2 dengan tipe data abstrak (typedef)

Berikut penjelasan dari Listing Program 5.2 dengan tipe data abstrak (typedef):

Tanda yang diawali /* dan diakhiri tanda */ merupakan script untuk membuat sebuah komentar pada pemrograman C++ yang didalamnya mengandung sebuah perintah atau teks, maka saat program dirunning atau dijalankan tidak akan dibaca oleh compiler.

#include atau disebut sebagai pengarah preprocessor #include berfungsi untuk menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum kompilasi dimulai.

<iostream> merupakan pengarah praprosesor yang input/masukkannya menggunakan cout ,dan penampung data ke programnya/outpunya menggunakan cin.

Yang dimaksud using namespace std;adalah standar device sebuah program.

typedefintdata; typedefintn; typedefintk; typedefintposisi; typedefintada; typedefintatas; typedefintbawah; typedefinttengah; typedefintcaribiner; Merupakan statement typedef (tipe data abstrak).

Yang dimaksud caribinerw(data a[], n b, k c)merupakan statement fungsi dengan nama fungsi w.

Yang dimaksud : ada d; atas e; bawah f; tengah g; posisi h; adalah tipe data d berbentuk ada, tipe data e berbentuk atas, tipe data f berbentuk bawah, tipe data g berbentuk tengah dan tipe data h berbentuk posisi.

Page 34: Laporan Praktikum Resmi Algo1 Bab5

34

d=0; f=0; e=b-1; Yang dimaksud “d” bernilai sama dengan 0, “f” bernilai sama dengan 0, “e” bernilai n-1. while (e>=f) { g=(e+f)/2;

merupakan statement perulangan yang berfungsi untuk melakukan perulangan suatu program.

if(c>a[g]) f=g+1; else if(c<a[g]) e=g-1; else { d=1; h=g; f=e+1; } } if (!d) h=-1; return h; }

Merupakan statement if- else yang berfungsi untuk memilih /menyeleksi.

Int main digunakan untuk memulai /memainkan program.

Yang dimaksud dengan data a[]={10, 9, 7, 6, 5, 4, 3, 1}; adalah tipe data a berbentuk data (bilangan bulat) yang berisi 10, 9, 7, 6, 5, 4, 3, dan 1.

Yang dimaksud dengan cari t=6; adalah tipe data t berbentuk cari (bilangan bulat) dan mencari pada index ke 6.

Cout berfungsi sebagai input/masukkan dalam program.

Cin berfungsi sebagai output/keluaran dalam program.

cout<<"Posisi "<<t<<" dalamlarik data : "<<w(a, 8, t)<<"\n";

merupakan statement pemanggilan fungsi yang sebelumnya telah diinputkan.

Return 0 digunakan untuk menampilkan hasil running di IMD.

Page 35: Laporan Praktikum Resmi Algo1 Bab5

35

Tanda “{“ dan “}” berfungsi untuk membuka dan menutup badan prosedur.

9. Listing Program 5.3 dengan tipe data abstrak (typedef)

/* * 3.cpp * * Created on: Apr 15, 2014 * Author: ACER */ #include<iostream> #include<cstring> usingnamespace std; typedefinti; typedefintpanjang; typedefintposisi; typedefintq; typedefcharst; typedefchark; typedefcharkalimat; typedefchardicari; ql(st a[], k b) { i c; posisi d; panjang e; c=0; d=-1; e=strlen(a); while ((c<e-1) && d == -1) { if(a[c] == b) d=c; c++; } return d; } intmain (){ kalimat f[]="Hallostikomyossudarso"; dicari g; cout<<"masukkanhurufyangdicari :"; cin>>g; cout<<"Posisi "<<g<<" dalamlarik data : "<<f<<" : "<<l(f, g)<<"\n"; return 0; }

Page 36: Laporan Praktikum Resmi Algo1 Bab5

36

Output Program 5.3 dengan tipe data abstrak (typedef)

Hasil output dari Program 5.3 dengan tipe data abstrak (typedef) adalah sebagai berikut :

Penjelasan Program 5.3 dengan tipe data abstrak (typedef)

Berikut penjelasan dari Listing Program 5.3 dengan tipe data abstrak (typedef):

Tanda yang diawali /* dan diakhiri tanda */ merupakan script untuk membuat sebuah komentar pada pemrograman C++ yang didalamnya mengandung sebuah perintah atau teks, maka saat program dirunning atau dijalankan tidak akan dibaca oleh compiler.

#include atau disebut sebagai pengarah preprocessor #include berfungsi untuk menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum kompilasi dimulai.

<iostream> merupakan pengarah praprosesor yang input/masukkannya menggunakan cout ,dan penampung data ke programnya/outpunya menggunakan cin.

<cstring> merupakan pengarah praprosesor yang berisi kumpulan dari karakter.

Yang dimaksud using namespace std;adalah standar device sebuah program.

typedefinti; typedefintpanjang; typedefintposisi; typedefintq; typedefcharst; typedefchark; typedefcharkalimat; typedefchardicari; Merupakan statement typedef (tipe data abstrak).

Yang dimaksud ql(st a[], k b)merupakan statement fungsi dengan nama fungsi l.

Yang dimaksud : i c; posisi d; panjang e; adalah tipe data c berbentuk i,tipe data d berbentuk posisi, dan tipe data e berbentuk

panjang.

Page 37: Laporan Praktikum Resmi Algo1 Bab5

37

c=0; d=-1; e=strlen(st);

yang dimaksud adalah c bernilai sama dengan 0, d bernilai sama dengan -1, dan e bernilai strlen(st). Strlen merupakan fungsi manipulasi string untuk menghitung panjang string.

while ((c<e-1) && d == -1) {

merupakan statement perulangan yang berfungsi untuk melakukan perulangan suatu program.

if(a[c] == b) d=c; c++; } return d; }

Merupakan statement if- else yang berfungsi untuk memilih /menyeleksi.

Int main digunakan untuk memulai /memainkan program.

Yang dimaksud dengan kalimat f[]="Hallostikomyossudarso"; adalah tipe data f berbentuk kalimat (karakter) yang berisi "Hallostikomyossudarso".

Yang dimaksud dengan dicari g; adalah tipe data g berbentuk dicari (karakter).

Cout berfungsi sebagai input/masukkan dalam program.

Cin berfungsi sebagai output/keluaran dalam program.

cout<<"Posisi "<<g<<" dalamlarik data : "<<f<<" : "<<l(f, g)<<"\n";

merupakan statement pemanggilan fungsi yang sebelumnya telah diinputkan.

Return 0 digunakan untuk menampilkan hasil running di IMD.

Tanda “{“ dan “}” berfungsi untuk membuka dan menutup badan prosedur.

10. Listing Program 5.1 dengan tipe data abstrak (typedef & struct)

/* * ys.cpp * * Created on: Apr 15, 2014

Page 38: Laporan Praktikum Resmi Algo1 Bab5

38

* Author: ACER */ #include<iostream> using namespace std; typedef struct Find { int cari; }a; int Search(int data[],int n, int k) { int posisi,i, ketemu; if(n<=0) posisi=-1; else { ketemu=0; i=1; while ((i<n-1)&& !ketemu) if (data[i]==k) { posisi = i; ketemu = i; } else i++; if(!ketemu) posisi=-1; } return posisi; } int main () { Find a; int data[8]={10,9,6,4,7,5,4,1}; cout<<"masukkan angka yang dicari:"; cin>>a.cari; cout<<"posisi "<<a.cari<<" ada dalam larik data ke : "<<Search(data,8,a.cari)<<"\n"; return 0; }

Output Program 5.1 dengan tipe data abstrak (typedef & struct)

Hasil output dari Program 5.1 dengan tipe data abstrak (typedef & struct) adalah sebagai berikut :

Page 39: Laporan Praktikum Resmi Algo1 Bab5

39

Penjelasan Program 5.1 dengan tipe data abstrak (typedef & struct)

Berikut penjelasan dari Listing Program 5.1 dengan tipe data abstrak (typedef & struct):

Tanda yang diawali /* dan diakhiri tanda */ merupakan script untuk membuat sebuah komentar pada pemrograman C++ yang didalamnya mengandung sebuah perintah atau teks, maka saat program dirunning atau dijalankan tidak akan dibaca oleh compiler.

#include atau disebut sebagai pengarah preprocessor #include berfungsi untuk menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum kompilasi dimulai.

<iostream> merupakan pengarah praprosesor yang input/masukkannya menggunakan cout ,dan penampung data ke programnya/outpunya menggunakan cin.

Yang dimaksud using namespace std;adalah standar device sebuah program.

typedef struct Find { int cari; }a;

Merupakan statement typedef struct (tipe data abstrak).

Yang dimaksud int Search(int data[],int n, int k) merupakan statement fungsi dengan nama fungsi cari.

Yang dimaksud dengan int posisi,i, ketemu; adalah tipe data posisi, i, ketemu berbentuk int/integer (bilangan bulat).

if(n<=0) posisi=-1; else { ketemu=0; i=1;

Merupakan statement if- else yang berfungsi untuk memilih /menyeleksi.

Page 40: Laporan Praktikum Resmi Algo1 Bab5

40

while((i<n-1) && !ketemu)

merupakan statement perulangan yang berfungsi untuk melakukan perulangan suatu program.

if (data[i]==k) { posisi = i; ketemu = i; } else i++; if(!ketemu) posisi=-1; } return posisi; } Merupakan statement if- else yang berfungsi untuk memilih /menyeleksi. Int main digunakan untuk memulai /memainkan program.

Find a; Merupakan statement Typedef Struct.

Yang dimaksud dengan int data[8]={10,9,6,4,7,5,4,1};adalah tipe data data berbentuk int (bilangan bulat) yang berisi "10,9,6,4,7,5,4,1".

Cout berfungsi sebagai input/masukkan dalam program.

Cin berfungsi sebagai output/keluaran dalam program.

cout<<"posisi "<<a.cari<<" ada dalam larik data ke : "<<Search(data,8,a.cari)<<"\n";

merupakan statement pemanggilan fungsi yang sebelumnya telah diinputkan.

Return 0 digunakan untuk menampilkan hasil running di IMD.

Tanda “{“ dan “}” berfungsi untuk membuka dan menutup badan prosedur.

11. Listing Program 5.2 dengan tipe data abstrak (typedef & struct)

/* * ts.cpp

Page 41: Laporan Praktikum Resmi Algo1 Bab5

41

* * Created on: Apr 21, 2014 * Author: ACER */ #include<iostream> using namespace std; typedef struct biner { int data; } a; 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<data[tengah]) atas=tengah-1; else { ada=1; posisi=tengah; bawah=atas+1; } } if(!ada) posisi=-1; return posisi; } int main() { biner a; int data[]={10,9,7,6,5,4,3,1}; cout<<"masukkan angka yang dicari :"; cin>>a.data; cout<<"Posisi "<<a.data<<" dalam larik data : "<<caribiner(data,8,a.data)<<"\n"; return 0; }

Page 42: Laporan Praktikum Resmi Algo1 Bab5

42

Output Program 5.2 dengan tipe data abstrak (typedef & struct)

Hasil output dari Program 5.2 dengan tipe data abstrak (typedef & struct) adalah sebagai berikut :

Penjelasan Program 5.2 dengan tipe data abstrak (typedef & struct)

Berikut penjelasan dari Listing Program 5.2 dengan tipe data abstrak (typedef & struct):

Tanda yang diawali /* dan diakhiri tanda */ merupakan script untuk membuat sebuah komentar pada pemrograman C++ yang didalamnya mengandung sebuah perintah atau teks, maka saat program dirunning atau dijalankan tidak akan dibaca oleh compiler.

#include atau disebut sebagai pengarah preprocessor #include berfungsi untuk menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum kompilasi dimulai.

<iostream> merupakan pengarah praprosesor yang input/masukkannya menggunakan cout ,dan penampung data ke programnya/outpunya menggunakan cin.

Yang dimaksud using namespace std;adalah standar device sebuah program.

typedef struct biner { int data; } a;

Merupakan statement typedef struct (tipe data abstrak).

Yang dimaksud int caribiner(int data[],int n,int k)merupakan statement fungsi dengan nama fungsi caribiner.

Yang dimaksud dengan int ada, atas, bawah, tengah, posisi; adalah tipe data ada, atas, bawah, tengah, posisi berbentuk int/integer (bilangan bulat).

ada=0; bawah=0; atas=n-1;

Page 43: Laporan Praktikum Resmi Algo1 Bab5

43

Yang dimaksud “ada” bernilai sama dengan 0, “bawah” bernilai sama dengan 0, “atas” bernilai n-1.

while (atas>=bawah) { tengah=(atas+bawah)/2;

merupakan statement perulangan yang berfungsi untuk melakukan perulangan suatu program.

if(k>data[tengah]) bawah=tengah+1; else if (k<data[tengah]) atas=tengah-1; else { ada=1; posisi=tengah; bawah=atas+1; } } if(!ada) posisi=-1; return posisi; }

Merupakan statement if- else yang berfungsi untuk memilih /menyeleksi.

Int main digunakan untuk memulai /memainkan program.

biner a; Merupakan statement Typedef Struct.

Yang dimaksud dengan int data[]={10,9,7,6,5,4,3,1}; adalah tipe data data berbentuk int (bilangan bulat) yang bernilai sama dengan "10,9,7,6,5,4,3,1".

Cout berfungsi sebagai input/masukkan dalam program.

Cin berfungsi sebagai output/keluaran dalam program.

cout<<"Posisi "<<a.data<<" dalam larik data : "<<caribiner(data,8,a.data)<<"\n";

merupakan statement pemanggilan fungsi yang sebelumnya telah diinputkan.

Return 0 digunakan untuk menampilkan hasil running di IMD.

Tanda “{“ dan “}” berfungsi untuk membuka dan menutup badan prosedur.

Page 44: Laporan Praktikum Resmi Algo1 Bab5

44

12. Listing Program 5.3 dengan tipe data abstrak (typedef & struct)

/* * ctyjd.cpp * * Created on: Apr 15, 2014 * Author: ACER */ #include<iostream> #include<cstring> using namespace std; typedef struct kata { char cari; }a; int string_kar(char st[], char k) { int i, posisi, panjang; i=0; posisi = -1; panjang = strlen(st); while((i<panjang-1)&& posisi==-1) { if (st[i]==k) posisi=i; i++; } return posisi; } int main() { kata a; char kalimat[]="Hallo stikom yos sudarso"; cout<<"masukkan huruf yang dicari:"; cin>>a.cari; cout<<"Posisi "<<a.cari<<" didalam string "<<kalimat<<": "<<string_kar(kalimat,a.cari)<<"\n"; return 0; }

Output Program 5.3 dengan tipe data abstrak (typedef & struct)

Hasil output dari Program 5.3 dengan tipe data abstrak (typedef & struct) adalah sebagai berikut :

Page 45: Laporan Praktikum Resmi Algo1 Bab5

45

Penjelasan Program 5.3 dengan tipe data abstrak (typedef & struct)

Berikut penjelasan dari Listing Program 5.3 dengan tipe data abstrak (typedef & struct):

Tanda yang diawali /* dan diakhiri tanda */ merupakan script untuk membuat sebuah komentar pada pemrograman C++ yang didalamnya mengandung sebuah perintah atau teks, maka saat program dirunning atau dijalankan tidak akan dibaca oleh compiler.

#include atau disebut sebagai pengarah preprocessor #include berfungsi untuk menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum kompilasi dimulai.

<iostream> merupakan pengarah praprosesor yang input/masukkannya menggunakan cout ,dan penampung data ke programnya/outpunya menggunakan cin.

Yang dimaksud using namespace std;adalah standar device sebuah program.

typedef struct kata { char cari; }a;

Merupakan statement typedef struct (tipe data abstrak).

Yang dimaksud int string_kar(char st[], char k) merupakan statement fungsi dengan nama fungsi string_kar.

Yang dimaksud dengan int i, posisi, panjang; adalah tipe data i, posisi, panjang berbentuk int/integer (bilangan bulat).

i=0; posisi = -1; panjang = strlen(st);

Yang dimaksud “i” bernilai sama dengan 0, “posisi” bernilai sama dengan -1, “panjang” bernilai strlen(st).

while((i<panjang-1)&& posisi==-1)

Page 46: Laporan Praktikum Resmi Algo1 Bab5

46

{ merupakan statement perulangan yang berfungsi untuk melakukan perulangan suatu program.

if (st[i]==k) posisi=i; i++; } return posisi; }

Merupakan statement if- else yang berfungsi untuk memilih /menyeleksi.

Int main digunakan untuk memulai /memainkan program.

kata a;

Merupakan statement Typedef Struct.

Yang dimaksud dengan char kalimat[]="Hallo stikom yos sudarso"; adalah tipe data kalimat berbentuk char (karakter) yang berisi sama dengan "Hallo stikom yos sudarso".

Cout berfungsi sebagai input/masukkan dalam program.

Cin berfungsi sebagai output/keluaran dalam program.

cout<<"Posisi "<<a.cari<<" didalam string "<<kalimat<<": "<<string_kar(kalimat,a.cari)<<"\n";

merupakan statement pemanggilan fungsi yang sebelumnya telah diinputkan.

Return 0 digunakan untuk menampilkan hasil running di IMD.

Tanda “{“ dan “}” berfungsi untuk membuka dan menutup badan prosedur.

Page 47: Laporan Praktikum Resmi Algo1 Bab5

47

BAB III

KESIMPULAN

Pencarian (searching) merupakan tindakan untuk mendapatkan suatu data dalam

kumpulan data. Terdapat beragam algoritma pencarian (searching algorithm).

Menurut Tenenbaum dan Augenstein: algoritma pencarian merupakan algoritma yang

menerima sebuah argument X dan mencoba untuk menemukan sebuah rekaman yang

memiliki kunci X.

Metode Pencarian Data :

a. Pencarian sekuensial (sequential search)

b. Pencarian biner (binary search)

c. Pencarian pada string

Pencarian Sekuensial (sequential search)/ pencarian lurus (liniear search)

Merupakan model pencarian yang paling sederhana yang dilakukan terhadap suatu

kumpulan data.

Pencarian biner (binary search)

Merupakan algoritma yang dipakai untuk kebutuhan pencarian data dengan waktu cepat

Pencarian pada String

Merupakan pencarian suatu huruf pada suatu kalimat.

Jadidengan melakukan statement searching seperti pada Program 5.1, Program 5.2,Program

5.3 maka dapat memudahkan untuk mencari suatu data yang dinginkan dalam kumpulan

data tersebut. Selain itu dengan statement ini kita dapat menghemat waktu/ efisien.

Page 48: Laporan Praktikum Resmi Algo1 Bab5

48

BAB IV

DAFTAR PUSTAKA

1. Modul praktikum algoritma & struktur data 1 (bab 5searching).

2. Ardhana. YM Kusuma. 2013. Struktur Data dalam Ilustrasi Eclips Indigo C ++.

Yogyakarta: CAPS (Center of Academic Publishing Service).