Pencarian (Searching)
1. Pendahuluan
Pencarian (searching) merupakan proses fundamental dalam pengolahan data. Proses pencarian adalah menemukan nilai (data) tertentu di dalam sekumpulan data yang bertipe sama (baik bertupe dasar atau bertipe bentukan. Modul ini membicarakan algoritma pencarian datadi dalam larik. Algoritma pencarian yang akan dibicarakan dimulai dengan algoritma pencarian yang paling sederhana (yaitu pencarian beruntun atau sequential search) hingga algoritma pencarian yang lebih maju yaitu pencarian bagidua (binary search).
2. Tujuan Instruksional Umum
· Mahasiswa dapat mengerti dan memahami tentang algoritma pencarian data
3. Tujuan Instruksional Khusus
· Mahasiswa dapat mengerti dan memahami larik
· Mahasiswa dapat menguasai cara-cara pembuatan algoritma pencarian beruntun (sequential search) dan konsep penerapannya dalam memecahkan masalah pemrograman
· Mahasiswa dapat menguasai cara-cara pembuatan algoritma pencarian bagidua (binary search) dan konsep penerapannya dalam memecahkan masalah pemrograman
4. Kegiatan Praktikum
.4.1. Kegiatan Praktikum 1
§ Uraian dan contoh
4.1.1 Larik
Larik adalah struktur data yang menyimpan sekumpulan elemen yang bertipe dama, setiap elemen diakses langsung melalui indeksnya (harus bertipe data yang menyatakan keterurutan, misalnya integer atau karakter). Berikut contoh-contoh mendeklarasikan larik di dalam bagian deklarasi :
a. Sebagai peubah
DEKLARASI A : array [1..100] of integer NamaMHS : array [1..12] of string NilUjian : array [0..74] of real |
b. Sebagai tipe bentukan
DEKLARASI Type LarikInt : array [1..100] of integer {nama tipe baru} A : LarikInt {A adalah sebuah peubah larik integr dengan 100 elemen} |
c. Mendefinisikan ukuran larik sebagai konstanta
DEKLARASI Const Nmaks =100 {ukuran maksimum elemen larik} Type LarikInt : array [1..Nmaks] of integer A : LarikInt { A adalah sebuah peubah larik integr dengan 100 elemen } |
Gambar larik :
a)
D
|
|
b) Kar
c)
Siswa
|
Ket : (a) larik bertipe integer,
(b) larik bertipe karakter,
(c) larik bertipe struktur.
Angka 1,2,3,.. menyatakan indeks larik
Contoh larik pada gambar, kita mendefinisikan nama dan tipenya dibagian algoritma sebagai berikut:
DEKLARASI D : array [1..11] of integer {larik pada gambar (a)} Kar : array [1..8] of character {larik pada gambar (b)} Const n = 5 {jumlah data siswa} Type Data = record <Nama : string, usia : integer > |
Contoh cara mengacu elemen larik pada gambar :
D [2] D [k] {mengacu elemen ke-k, dengan syarat k sudah terdefinisi nilainya} Kar [5] Siswa [1].Nama Siswa [1].Usia Siswa [ j ]. Nama {mengacu elemen ke-j, dengan syarat j sudah terdefinisi nilainya} |
4.1.2 Algoritma Pencarian Beruntun (sequential search)
Pencarian beruntun adalah proses membandingkan setiap elemen larik satu persatu secara beruntun, mulai dari elemen elemen pertama sampai elemen yang dicari ditemukan, atau seluruh elemen sudah diperiksa. Contoh : perhatikan larik L dibawah ini dengan n= 6 elemen :
13 | 16 | 14 | 21 | 76 | 15 |
1 | 2 | 3 | 4 | 5 | 6 |
Nilai yang dicari (x) | Elemen yang dibandingkan (berturut-turut) | Indeks larik yang dikembalikan |
21 | 13, 16, 14, 21 (ditemukan!) | 4 |
13 | 13 (ditemukan!) | 1 |
12 | 13,16,14,21,76,15 (tidak ditemukan!) | -1 |
Notasi algoritmik | Notasi bahasa pascal |
Procedure seq_search DEKLARASI L : array[1..20] of integer x,i : integer ALGORITMA: Read (x) L[1] 13 L[2] 16 L[3] 14 L[4] 21 L[5] 76 L[6] 15 i 1 while (i < 5) and (L[i] ≠ x) i i+1 if (L[i] = x) then writeln (‘ditemukan pada elemen larik ke- ’,i) else writeln (tidak ditemukan!) endif endwhile | program pencarian; procedure seq_search; var L: array[1..20] of integer; x,i: integer; begin write('Angka yang dicari= '); readln(x); L[1]:=13; L[2]:=16; L[3]:=14; L[4]:=21; L[5]:= 76; L[6]:=15; i:=1; while (i<5) and (L[i] <> x) do begin i:=i+1; end; if (L[i]=x) then writeln('Ditemukan pada elemen larik ke-',i) else writeln('Tidak ditemukan!'); end; begin seq_search; end. |
Program pencarian DEKLARASI Procedure seq_search ALGORITMA: Seq_search |
Tidak ada komentar:
Posting Komentar