0% menganggap dokumen ini bermanfaat (0 suara)
288 tayangan

Modul 11 - Searching

Modul ini membahas tentang pencarian data (searching) di dalam bahasa pemrograman C++. Terdapat dua jenis pencarian data, yaitu pencarian data internal dan eksternal. Pencarian data dapat dilakukan dengan dua algoritma utama, yaitu pencarian sekuensial dan pencarian biner. Pencarian sekuensial melakukan pencocokan secara berurut, sedangkan pencarian biner membagi data menjadi dua bagian secara rekursif."

Diunggah oleh

محمد يسري
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
288 tayangan

Modul 11 - Searching

Modul ini membahas tentang pencarian data (searching) di dalam bahasa pemrograman C++. Terdapat dua jenis pencarian data, yaitu pencarian data internal dan eksternal. Pencarian data dapat dilakukan dengan dua algoritma utama, yaitu pencarian sekuensial dan pencarian biner. Pencarian sekuensial melakukan pencocokan secara berurut, sedangkan pencarian biner membagi data menjadi dua bagian secara rekursif."

Diunggah oleh

محمد يسري
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 11

SI PENDIDIKAN TEKNIK INFORMATIKA TE UM

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.

C. ALAT DAN BAHAN


1) PC/laptop yang memenuhi kapasitas untuk pemrograman bahasa C++.
2) Software C++.
3) Modul/handout materi yang akan dipraktikkan.

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

MODUL PEMROGRAMAN KOMPUTER DENGAN C++

SI PENDIDIKAN TEKNIK INFORMATIKA TE UM

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

MODUL PEMROGRAMAN KOMPUTER DENGAN C++

SI PENDIDIKAN TEKNIK INFORMATIKA TE UM

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.

MODUL PEMROGRAMAN KOMPUTER DENGAN C++

SI PENDIDIKAN TEKNIK INFORMATIKA TE UM

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.

MODUL PEMROGRAMAN KOMPUTER DENGAN C++

SI PENDIDIKAN TEKNIK INFORMATIKA TE UM

3. Coba ubah elemen array-nya menjadi seperti berikut:


Lalu, modifikasi program di atas sehingga dapat menampilkan angka 5 dan 1!
4. Program pencarian sekuensial untuk mencari larik data terkanan.

MODUL PEMROGRAMAN KOMPUTER DENGAN C++

SI PENDIDIKAN TEKNIK INFORMATIKA TE UM

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)!

7. Program untuk menghitung jumlah suatu angka di dalam sebuah larik.

8. Merujuk pada program soal nomor 3, modifikasilah sehingga program dapat menampilkan
jumlah angka 5 dan 1 dalam suatu larik.

MODUL PEMROGRAMAN KOMPUTER DENGAN C++

SI PENDIDIKAN TEKNIK INFORMATIKA TE UM

3. Pencarian Biner (Binary Search)


Pencarian biner disebut juga dengan pencarian bagi dua, karena pada metode pencarian ini
akan menbagi kumpulan data menjadi 2 bagian dengan mencari nilai tengahnya. Metode
pencarian ini ditujukan untuk kumpulan data yang sudah terurut. Jika sebuah kumpulan data
yang telah terurut harus dicari dengan pencarian sekuensial, maka dipastikan akan
membutuhkan waktu yang sangat lama jika jumlah datanya sangat banyak. Sehingga, perlu
algoritma lain yang dirancang agar proses pencarian lebih efisien.
Pencarian biner dilakukan dengan membagi kumpulan data menjadi 2 bagian dengan jumlah
sama (jika jumlah datanya genap) atau berbeda 1, jika jumlah datanya ganjil. Data yang dicari
kemudian dibandingkan dengan data terakhir pada bagian utama. Dalam hal ini, ada 3
kemungkinan yang terjadi, yaitu:
a) Data yang dicari = elemen terakhir pada bagian pertama di dalam larik data. Jika kondisi
ini terpenuhi, maka data yang dicari ditemukan.
b) Data yang dicari < nilai elemen terakhir pada bagian pertama dalam larik. Pada kondisi
ini, pencarian diteruskan pada bagian pertama.
c) Data yang dicari > nilai elemen terakhir pada bagian pertama dalam larik. Pada kondisi
ini, pencarian diteruskan pada bagian kedua.
Untuk lebih jelasnya, perhatikan prinsip pencarian biner berikut:
a) Mula-mula ambil data awal 0 dan data akhir = N-1.
b) Cari data tengah dengan rumus:
(data awal + data akhir) / 2
c) Data yang dicari dibandingkan dengan data tengah.
d) Jika data yang dicari < data tengah, maka proses dilanjutkan dengan data akhir = data
tengah 1.
e) Jika data yang dicari > data tengah, maka proses dilanjutkan dengan data awal = data
tengah + 1.
f) Demikian seterusnya, proses pencarian berhenti sampai data yang dicari ditemukan.
Berikut adalah algoritma pencarian biner:
1) Data awal 0.
2) Data akhir N - 1.
3) Data ditemukan false.
4) Selama (Data awal <= Data akhir) dan (Data tidak ditemukan), jalankan baris ke-5
sampai ke-8.

MODUL PEMROGRAMAN KOMPUTER DENGAN C++

SI PENDIDIKAN TEKNIK INFORMATIKA TE UM

5) Data tengah (Data awal + Data akhir) / 2.


6) Jika (data [Data awal] = key) maka,
Data ditemukan true
7) Jika (key < Data[Data tengah]) maka,
Data akhir Data tengah - 1
8) Jika (key > Data[Data tengah]) maka,
Data awal Data tengah + 1
9) Jika (Data ditemukan) maka,
Data tengah = indeks dari data yang dicari
Jika tidak,
Data tidak ditemukan
Contoh:
Array A dengan 10 buah elemen data. Cari nilai 17!

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

MODUL PEMROGRAMAN KOMPUTER DENGAN C++

SI PENDIDIKAN TEKNIK INFORMATIKA TE UM

(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.

MODUL PEMROGRAMAN KOMPUTER DENGAN C++

SI PENDIDIKAN TEKNIK INFORMATIKA TE UM

2. Program untuk menentukan keberadaan suatu huruf di dalam sebuah string.

MODUL PEMROGRAMAN KOMPUTER DENGAN C++

10

SI PENDIDIKAN TEKNIK INFORMATIKA TE UM

Jalankan programnya dan jelaskan apa maksud posisi L = -1 ?

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:

3. Sertakan kode dan tampilan program di dalam laporan!


4. Susun laporannya!
5. Kirim ke alamat [email protected], paling lambat satu hari sebelum pertemuan
berikutnya berlangsung.
*** SELAMAT BELAJAR ***

MODUL PEMROGRAMAN KOMPUTER DENGAN C++

11

Anda mungkin juga menyukai