Modul 11 - Searching
Modul 11 - Searching
MODUL 11
PENCARIAN DATA (SEARCHING)
A. TUJUAN PERKULIAHAN
Setelah mempelajari modul ini, diharapkan mahasiswa mampu:
1) Mengenal dan memahami konsep dasar pencarian data di dalam C++.
2) Mengenal dan memahami berbagai contoh program pencarian data dalam C++.
3) Membuat program sederhana pencarian data.
B. PETUNJUK
1) Awali setiap aktivitas kalian dengan doa, agar lancar dalam belajar.
2) Pahami tujuan, dasar teori, dan latihan-latihan praktikum dengan baik.
3) Kerjakan tugas-tugas praktikum dengan baik, jujur, dan sabar.
4) Tanyakan kepada instruktur jika ada hal-hal yang kurang dimengerti.
D. DASAR TEORI
1. Pengantar Pencarian Data (Searching)
Pencarian data (searching) merupakan suatu cara untuk mendapatkan sebuah data yang
dikehendaki dari sekumpulan data. Di dalam kehidupan sehari-hari, sering sekali kita
dihadapkan dengan kegiatan pencarian data. Misalnya, mencari istilah dalam kamus, buku di
perpustakaan, alamat seseorang, dan sebagainya. Pada aplikasi computer, pencarian sering
dilakukan misalnya untuk pencarian ketersediaan buku di perpustakaan atau took buku,
mencari data mehasiswa atau karyawan, dan lain sebagainya.
Bahasa pemrograman menyediakan berbagai algoritma yang dapat diterapkan dalam
pencarian data. Algoritma pencarian adalah sebuah algoritma yang menerima sebuah
argumen A dan mencoba untuk menemukan seluruh rekaman data yang memiliki kunci A.
Misalnya, seorang user menghendaki sebuah aplikasi untuk mencari judul buku dengan kata
kunci Pemrograman, maka data yang akan ditampilkan adalah seluruh rekaman data dalam
sistem yang mengandung kata kunci tersebut. Contoh lain, user yang ingin mencari data
mahasiswa yang bernomor induk 12345, maka hasilnya adalah rekaman data mahasiswa
tersebut yang biasanya berisi nama, alamat, tanggal lahir, jurusan, program studi, dan
sebagainya. Pada penerapannya, algoritma bisa jadi memberikan nilai balik berupa rekaman
data yang diperoleh, atau bisa juga hanya memberikan pointer yang menunjuk ke sebuah
rekaman data.
Terdapat 2 jenis pencarian data di dalam ilmu computer, yaitu:
a) Pencarian data internal
Pencarian data internal adalah pencarian yang dilakukan terhadap data yang secara
keseluruhan berada di dalam memori komputer.
b) Pencarian data eksternal
Pencarian data eksternal adalah pencarian yang dilakukan terhadap data yang berada di
dalam media penyimpanan eksternal, seperti hardisk, flashdisk, dan sebagainya.
Sedangkan, yang dimaksudkan pencarian data di dalam modul ini berhubungan dengan
pencarian data internal. Pencarian data dapat dilakukan terhadap data yang urut maupun
yang tidak urut, yang selanjutnya akan dibahas dalam modul ini.
2. Pencarian Sekuensial (Sequential Search)
Pencarian sekuensial disebut juga dengan pencarian berurutan atau pencarian linear.
Pencarian ini dilakukan terhadap data acak maupun data yang sudah urut. Pencarian
sekuensial merupakan metode pencarian yang paling sederhana. Prinsip pencariannya yaitu
data yang ada akan dibandingkan satu persatu secara berurutan dengan data yang dicari
sampai data tersebut ditemukan atau tidak ditemukan. Pencarian sekuensial hanya
melakukan pengulangan dari 1 sampai dengan N jumlah data. Pada setiap pengulangan,
akan dibandingkan data ke-i dengan yang dicari. Jika sama, maka data ditemukan dan jika
sampai akhir pengulangan tidak ada data yang sama, maka data tidak ada atau tidak
ditemukan.
Berikut adalah algoritma pencarian sekuensial:
1) i 0.
2) Data ditemukan false.
3) Selama (data tidak ditemukan) dan (i <= N), jalankan baris ke-4.
4) Jika (data [i] = key) maka
data ditemukan true
Jika tidak,
ii+1
5) Jika (data ditemukan) maka,
i adalah indeks dari data yang dicari
Jika tidak,
Data tidak ditemukan
Contoh: Array A dengan 5 buah elemen data (75, 73, 78, 81, 80). Jika data yang dicari
adalah 78, maka yang dilakukan adalah membandingkan nilai 78 dengan nilai pada seluruh
elemen array dari A[1] sampai A[5] hingga nilai 78 ditemukan. Pencarian berhenti setelah data
ditemukan.
Contoh lain, misalnya terdapat sebuah array A dengan nilai sebagai berikut:
9
A[0]
10
A[1]
5
A[2]
3
A[3]
5
A[4]
6
A[5]
Data yang dicari adalah 5, maka nilai 5 ditemukan pada posisi dengan indeks 2, bukan pada
indeks 4, karena pencarian sekuensial akan melakukan pencarian secara berurutan, baik
terhadap data yang sudah terurut atau data yang masih acak. Dan data yang ditemukan
pertamalah yang dijadikan hasil pencarian datanya.
LATIHAN 1
1. Program pencarian sekuensial.
Coba ubah isi elemen array dengan dua/lebih angka 5 di dalamnya, lalu jalankan kembali
programnya. Apa yang terjadi?
2. Program pencarian sekuensial dengan dua angka sama di dalam elemen array.
5. Coba modifikasi program pada soal nomor 2, sehingga ketika program dijalankan angka 5
pertama berada pada indeks ke-4 dan angka 5 kedua berada pada indeks ke-1 (kebalikan
dari program nomor 2)!
6. Coba modifikasi program pada soal nomor 3, sehingga ketika program dijalankan angka 5
pertama berada pada indeks ke-4, angka 5 kedua berada pada indeks ke-1, angka 1 pertama
berada pada indeks ke-7, dan angka 1 kedua berada pada indeks ke-2 (kebalikan dari
program nomor 3)!
8. Merujuk pada program soal nomor 3, modifikasilah sehingga program dapat menampilkan
jumlah angka 5 dan 1 dalam suatu larik.
Diketahui:
Data yang dicari = 17;
N = 10;
Data awal = 0;
Data akhir = 9
Data ke-0 = 3
Data ke-9 = 35
Penyelesaian:
Langkah 1: Cari data tengah dengan rumus (data awal + data akhir) / 2 = (0 + 9)/2 = 4 (ambil
nilai bulat terdekat). Jadi data tengah adalah data ke-4 = 15.
Langkah 2: Bandingkan Data yang dicari (17) dengan Data tengah (15). Hasilnya, Data yang
dicari > Data tengah (17 > 15).
Langkah 3: Karena Data yang dicari > Data tengah, maka proses dilanjutkan dengan data
awal = data tengah + 1 = 4 + 1 = 5. Jadi, data awal yang baru adalah data ke-5 =
17.
Langkah 4: Cari lagi data tengah dengan rumus (data awal + data akhir) / 2 = (5 + 9)/2 = 7
(ambil nilai bulat terdekat). Jadi data tengah baru adalah data ke-7 = 23.
Langkah 5: Bandingkan lagi Data yang dicari (17) dengan Data tengah yang baru (23).
Hasilnya, Data yang dicari < Data tengah (17 < 23).
Langkah 6: Karena Data yang dicari < Data tengah, maka proses dilanjutkan dengan data
akhir = data tengah 1 = 7 - 1 = 6. Jadi, data akhir yang baru adalah data ke-6 =
20.
Langkah 7: Cari lagi data tengah dengan rumus (data awal + data akhir) / 2 = (5 + 6)/2 = 5
(ambil nilai bulat terdekat). Jadi data tengah baru adalah data ke-5 = 17.
Langkah 8: Dari sini, posisi data awal dan data tengah adalah sama yaitu 17.
Langkah 9: Karena Data yang dicari (17) = Data tengah (17), maka proses pencarian
berhenti.
LATIHAN 2
1. Program pencarian biner untuk menampilkan semua nama orang yang mengandung
penggalan nama tertentu.
10
TUGAS MODUL 11
1. Buatlah sebuah program untuk pencarian elemen sebuah array, dengan terlebih dahulu
memasukkan elemen array-nya.
2. Tampilan program akan seperti berikut:
11