Senin, 09 Mei 2011

tugas algoritma serching

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) 
21
36
8
7
10
36
68
32
12
10
36
1
2
3
4
5
6
7
8
9
10
11

 
D        



k
m
t
a
f
m
*
#
1
2
3
4
5
6
7
8

 
 

b)  Kar

c) 
1
Ali
18
2
Tono
24
3
Amir
30
4
Tuti
21
5
Yani
22

 
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