laporan praktikum iii

29
LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA Searching ( Pencarian ) Modul III UNTUK MEMENUHI TUGAS MATAKULIAH PRAKTIKUM ALGORITMA DAN STRUKTUR DATA yang dibina oleh Bapak Didik Dwi Prasetya Oleh: Adhe Noer Khomala Dewi ( 120533430978 ) FAKULTAS TEKNIK JURUSAN TEKNIK ELEKTRO

Upload: chomala-kioko-love-chanshine

Post on 21-Oct-2015

183 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Laporan Praktikum III

LAPORAN PRAKTIKUM

ALGORITMA DAN STRUKTUR DATA

Searching ( Pencarian )

Modul III

UNTUK MEMENUHI TUGAS MATAKULIAH

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA

yang dibina oleh Bapak Didik Dwi Prasetya

Oleh:

Adhe Noer Khomala Dewi ( 120533430978 )

FAKULTAS TEKNIK

JURUSAN TEKNIK ELEKTRO

PRODI S1 PENDIDIKAN TEKNIK INFORMATIKA

UNIVERSITAS NEGERI MALANG

FEBRUARI 2013

Page 2: Laporan Praktikum III

MODUL III

SEARCHING ( Pencarian)

A. Tujuan

Tujuan Instruksional Umum

1. Mahasiswa mampu melakukan aplikasi menggunakan Struktur Searching

(Pencarian)

2. Mahasiswa mampu melakukan analisis pada algoritma Searching yang dibuat.

3. Mahasiswa mampu mengimplementasikan algoritma Searching pada sebuah

aplikasi secara tepat dan efisien

Tujuan Instruksional Khusus

1. Mahasiswa mampu menjelaskan mengenai algoritma Searching.

2. Mahasiswa mampu membuat dan mendeklarasikan materi struktur algoritma

Searching.

3. Mahasiswa mampu menerapkan dan mengimplementasikan materi mengenai

algoritma Seacrhing.

A. Dasar Teori

Searching adalah pencarian data dengan cara menelusuri data-data tersebut.

Terdapat beberapa metode searching antara lain;

1. Sequential Search,

2. Index Sequential Search,

3. Binary Search,

4. Fibonacci Search.

1. Sequential Search ( Linear Search )

Teknik pencarian data dari array yang paling mudah adalah dengan cara

sequential search, dimana data dalam array dibaca 1 demi satu, diurutkan dari

index terkecil ke index terbesar, maupun sebaliknya.

Page 3: Laporan Praktikum III

Contoh :

Array;

int a[5] = {0,3,6,10,1}, (index array pada bahasa C++ dimulai dari index ke

0 !!!) jika kita ingin mencari bilangan 6 dalam array tersebut, maka proses yang

terjadi kita mencari;

a) Dari array index ke-0, yaitu 0, dicocokan dengan bilangan yang akan dicari,

jika tidak sama, maka mencari ke index berikutnya.

b) Pada array index ke-1, juga bukan bilangan yang dicari, maka kita mencari

lagi pada index berikutnya

c) Pada array index ke-2, ternyata bilangan yang kita cari ada ditemukan,

maka kita keluar dari looping pencarian.

Output :

2. Binary Search

Metode pencarian yang kedua adalah binary search, pada metode

pencarian ini, data harus diurutkan terlebih dahulu. Pada metode pencarian ini,

data dibagi menjadi dua bagian (secara logika), untuk setiap tahap pencarian.

Page 4: Laporan Praktikum III

Algoritma binary search :

1. Data diambil dari posisi 1 sampai posisi akhir N

2. Kemudian cari posisi data tengah dengan rumus: (posisi awal + posisi

akhir) / 2

3. Kemudian data yang dicari dibandingkan dengan data yang di tengah,

apakah sama atau lebih kecil, atau lebih besar?

4. Jika lebih besar, maka proses pencarian dicari dengan posisi awal adalah

posisi tengah + 1.

5. Jika lebih kecil, maka proses pencarian dicari dengan posisi akhir adalah

posisi tengah – 1

6. Jika data sama, berarti ketemu.

Contoh source binary search :

Output:

Page 5: Laporan Praktikum III

3. Interpolation Search

Interpolation search merupakan salah satu metode pencarian yang dapat

digunakan. Seperti pada binary search, data yang harus diurutkan terlebih

dahulu, sebelum dapat dilakukan pencarian dengan metode ini. Pada metode

pencarian ini, kita mencoba menebak letak data yang kita cari, dengan

perhitungan:

Jika data[posisi] > data yg dicari, high = pos – 1

Jika data[posisi] < data yg dicari, low = pos + 1

#include <stdio.h>#include <math.h>void main (){int array_a[10]=(11, 12, 21, 25, 30, 34, 45, 65, 73, 81);int low, high, pos, cari, flag=0;float posisi;low=0;high=9; //dari banyak_data-1printf ("data yang anda cari : ");scanf ("%i", &cari);do {

posisi=(float) ((cari-array_a[low])/(array_a[high] array_a[low]))*(high-low)+low;pos = floor (posisi);if (array_a[pos]==cari){

flag=1;break;

}if (array_a[pos]>cari) high-pos-1;else if (array_a[pos]<cari)

low=pos+1;}while (cari>=array_a[low] && cari<=array_a[high];if (flag==1) printf("data ditemukan");else printf ("data tidak ditemukan ");

}

Output:

Tambahan materi:

Break; Digunakan untuk keluar dari suatu blok perintah.

Page 6: Laporan Praktikum III

Continue;

Digunakan untuk mem by-pass satu iterasi pada perulangan.

Contoh kode: (dijalankan dan dipelajari cara kerjanya)

#include <stdio.h>void main (){

for (int i=0;i<10;i++) {

for (int j=10;j>0;j--) {

if (i+j==10) break;//if (i+j==10) continue; //Hilangkan tanda slash di depan if, dan beri slash 2 di depan if yang atas untuk mencoba kode continueprintf ("%i ", i +j);printf ("pass");

}printf ("\n");

}}

B. Latihan

Latihan 1

Source Code MinGW Developer Studio dalam bentuk Printscreen:

Page 7: Laporan Praktikum III
Page 8: Laporan Praktikum III
Page 9: Laporan Praktikum III

Hasil Eksekusi:

Page 10: Laporan Praktikum III

Deskripsi:

Program di atas adalah program untuk memilih menu searching dimana banyak

pilihan menu searching. Bila kita menginputkan pilhan 1 maka akan menampilkan

metode sequential search dan lainnya. Di dalam program ini banyak sekali

menggunakan perulangan for. Misalnya for (i=0;i<jum_data;i++) digunakan untuk

perulangan jumlah data yang diinputkan.

Latihan 2

Source Code MinGW Developer Studio dalam bentuk Printscreen:

Nomer 2a:

Page 11: Laporan Praktikum III
Page 12: Laporan Praktikum III

Hasil Eksekusi:

Page 13: Laporan Praktikum III

Deskripsi:

Program di atas program yang digunakan untuk mencari dan menampilkan

suatu bilangan yang dicari beserta indeksnya. Program ini menggunakan

sequential seacrh. . Dimana pada sequential search ini data dalam array dibaca 1

demi satu, diurutkan dari index terkecil ke index terbesar, maupun sebaliknya.

Program ini menginputkan data samapai maksimal yang program deklarasikan.

Bila ada data yang sama, maka program akan menuliskan di indeks e berapa data

tersebut yang sama. Perhatikan hasil keluaran program di atas. Nilai data ke 1 dan

3 mempunyai nilai yang sama, oleh sebab itu dalam program dengan syntax di

bawah ini untuk memunculkan diindeks ke berapa data yang sama.

printf (" Data tersebut terdapat dalam index ke : ");

for (i=0; i<x; i++)

{

printf ("%d",index[i]);

printf (" , ");

}

Nomer 2b.

Source Code MinGW Developer Studio dalam bentuk Printscreen:

Page 14: Laporan Praktikum III
Page 15: Laporan Praktikum III
Page 16: Laporan Praktikum III

Hasil Eksekusi:

Deskripsi :

Program di atas adalah program yang menggunakan aray dua dimensi yang

menghitung nilai misalnya [3][4]. Maksud dari [3][4] yaitu, [3] menyatakan

jumlah baris dan [4] menyatakan jumlah kolom. Kemudian program akan

meminta user untuk menginputkan data. Misal [i]1, [j]2 = 4. Hal ini merupakan

intruksi untuk memberikan nilai 4 ke baris 1 kolom 2.

Setelah itu program akan melakukan perulangan for (a=0; a<i; a++)

apabila data yang diinputkan user memenuhi syarat dari perulangan tersebut,

program akan melakukan perulangan. Langkah selanjutnya program akan

menampilkan hasil inputan dari elemen array menjadi elemen matriks dan

program selesei.

Page 17: Laporan Praktikum III

Latihan 3

Source Code MinGW Developer Studio dalam bentuk Printscreen:

Nomer 1.

Page 18: Laporan Praktikum III

Hasil Eksekusi:

Deskripsi:

Program ini merupakan program menginputkan data yang menggunakan array

dimensi 1. Program ini juga meminta user untuk menginputkan data atau array

sebanyak yang diinginkan maksimal 25.

for(i=0;i<jum_data;i++) perulangan ini digunakan untuk mencari

nilaiyang diinginkan user untuk kemudian dicari data tersebut terletak pada indeks

ke berapa. Program ini juga menggunakan searching yaitu penerapan sequential

search. Dimana pada sequential search ini data dalam array dibaca 1 demi satu,

diurutkan dari index terkecil ke index terbesar, maupun sebaliknya.

Nomer 2

Source Code MinGW Developer Studio dalam bentuk Printscreen:

Page 19: Laporan Praktikum III
Page 20: Laporan Praktikum III

Hasil Eksekusi program:

Deskripsi:

Program di ats ini merupakan program yang digunakan untuk menampilkan

bilangan ganjil dan genapmenggunakan random (acak otomatis), sehingga kita

tidak perlu menginputkan bilangan ganjil dan genap sendiri. Karena di dalam

program random secara otomatis akan langsung keluar hasilnya, disini hanya perlu

menginputkan banyaknya jumlah data. Ini pengulangan untuk random.

for(a=1;a<=n;a++){bil[a]=rand(); cout<<"\t("<<bil[a]<<")"; }

Page 21: Laporan Praktikum III

C. Tugas Praktikum

Tugas 1.

Source Code MinGW Developer Studio dalam bentuk Printscreen:

Page 22: Laporan Praktikum III

Hasil Eksekusi Program:

Deskripsi:

Program di atas merupakan program mencari huruf konsonan, vokal dan

numerik.

Huruf vocal terdiri dari a, i, u, e, o. Dan huruf konsonan selain dari huruf vokal

tadi. Sedangkan Huruf numerik merpakan karakter misalnya spasi, “, dll.

if(kata[a]=='a'||kata[a]=='i'||kata[a]=='u'||kata[a]=='e'||

kata[a]=='o')

merupakan syntax yang digunakan untuk mencari huruf vokal.

Perhatikan untuk mengecek suatu variabel terhadap karakter, kita mengapitnya

dalam tanda petik tunggal , jadi;

Kata[a]== 'a'.

Untuk string (kumpulan karakter), yakni yang dipakai adalahtanda petik ganda.

Jadi;

x = “aku”.

Page 23: Laporan Praktikum III

Tugas 2

Source Code MinGW Developer Studio dalam bentuk Printscreen:

Page 24: Laporan Praktikum III

Hasil Eksekusi :

Deskripsi:

Program di atas menampilkan program kursiyang tersedia pada bioskop.

0=kosong sedangkan 1=terisi. Program ini menggunakan array untuk menentukan

jumlah kursi yang tersedia. Program ini juga menggunakan perulangan for.

for(i=0; i<5; i++) perulangan untuk menginputkan nomer kursi ke berapa

sebanyak 5 sesuai dengan perulangan. Namun disini dideklarasikan array_a

sebanyak 30 kursi sehinggan maksimal penginputan nomer tidaka boleh lebih dari

angka 30.

if (array_a[i]==0) pendeklarasian untuk mencari kursi yang kosong

if (array_a[i]==1 untuk mencari kursi yang terisi.

Page 25: Laporan Praktikum III

Kesimpulan:

Searching adalah pencarian data dengan cara menelusuri data-data