KUG1A3 Algoritma& Pemrograman Burhanuddin D Prodi S1-Sistem Komputer, F Teknik Elektro Universitas Telkom Presentasi Array 2 : Searching
KUG1A3 Algoritma & Pemrograman Topik Bahasan Pemrosesan Sequential Pencarian pada Array Sequential Boolean Sequential tanpa Bolean Sequensial dengan Sentinel KUG1A3 Algoritma & Pemrograman
Pemrosesan Sequential Akses dengan memanfaatkan keterurutan indeks. Elemen pertama adalah elemen tabel dengan indeks terkecil/terbesar, Elemen berikut dicapai melalui suksesor indeks / indeks berikutnya Model akses adalah model akses sekuensial tanpa mark Kondisi berhenti : jika indeks sudah mencapai harga indeks yang terbesar KUG1A3 Algoritma & Pemrograman
Skema Pemrosesan Tabel /Array Inisialisasi i NMin { Elemen pertama} While i ≤ NMax do Proses (Ti) i i + 1 Terminasi Inisialisasi i traversal [NMin..NMax] Proses (Ti) Terminasi KUG1A3 Algoritma & Pemrograman
Contoh 1 : Mengisi array dari input Program IsiTabel { Mengisi array dr input } Kamus constant NMin : integer = 1 constant NMax: integer = 100 i : integer [NMin..NMax] T : array [NMin..NMax] of integer N : integer Algoritma i NMin { Elemen pertama} While i ≤ NMax do input (Ti) i i + 1 KUG1A3 Algoritma & Pemrograman
Contoh 2 : Menulis tabel dari indeks terbesar Program TulisTabel { Menulis array dr indeks terbesar } Kamus constant NMin : integer = 1 constant NMax: integer = 100 i : integer [NMin..NMax] T : array [NMin..NMax] of integer N : integer Algoritma i traversal [NMax..NMin] output (Ti) KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Latihan I Buat penelusuran dari algoritma berikut i traversal [1..10] TabInti i*10 i traversal [5..1] if i mod 2=0 then TabInti TabInt10-i else TabInti TabInti – i output (TabInti) K 5 Output (TabIntK+5 div TabIntK ) KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Latihan I Buat penelusuran dari algoritma berikut i traversal [1..10] TabInti i*10 i traversal [5..1] if i mod 2=0 then TabInti TabInt10-i else TabInti TabInti – i output (TabInti) i TabInti i TabInti 1 10 6 60 2 20 7 70 3 30 8 80 4 40 9 90 5 50 10 100 KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Latihan I Buat penelusuran dari algoritma berikut i traversal [1..10] TabInti i*10 i traversal [5..1] if i mod 2=0 then TabInti TabInt10-i else TabInti TabInti – i output (TabInti) i TabInti i TabInti 1 10 6 60 2 20 7 70 3 30 8 80 4 40 9 90 5 50 10 100 i mod 2 =0 i YTabInti TTabInti 5 50-5=45 T5 4 TabInt6=60 T4 3 30-3=27 T3 2 TabInt8=80 T2 1 10-1=9 T1 KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Latihan I {i traversal [10..1]} output (TabInti ) K 5 Output (TabIntK+5 div TabIntK ) i TabInti 5 45 4 60 3 27 2 80 1 9 KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Latihan I i TabInti {i traversal [5..1]} output (TabInti ) K 5 Output (TabIntK+5 div TabIntK ) 5 45 4 60 3 27 2 80 1 9 TabInt10 div TabInt5 = 100 div 45 = 2 Output (2) KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Latihan II Buat prosedur dengan algoritma untuk mencacah elemen array yang lebih besar dari Datamax ( dari user ). Cacah juga elemen array yang bernilai 10. Hitung nilai rata-rata dari array tersebut. Cari juga nilai maksimal dari array tersebut. Elemen array diasumsikan sudah terisi, dengan domain array dari 1..10. datamax=25, elemen : 20,10,5,10, 100, 50, 75,10,90,10. KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Pencarian pada Array Proses mencari suatu nilai yang dilakukan terhadap sekumpulan data pada tabel. Ada beberapa variasi pencarian, dengan kecepatan pencarian yang berbeda. Teknik pencarian yang dibahas : Sequential Search ( dg/tanpa boolean ) Binary Search KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Sequential Search Metode pencarian yang dilakukan dengan menguji nilai masing-masing elemen satu per satu Pencarian segera dihentikan begitu harga pertama diketemukan, atau tergantung dari kebutuhan Pencarian dilakukan mulai indeks terendah atau tertinggi KUG1A3 Algoritma & Pemrograman
Sequential Search – lanj. Sebuah tabel integer TabInt [1..N]. Tuliskanlah algoritma untuk mencari nilai X dalam TabInt, mulai dari elemen pertama sampai ketemu atau sampai elemen terakhir. Algoritma akan menghasilkan harga indeks IX ketika ditemukan pertama kalinya. IX diberi harga 0 jika pencarian tidak ketemu. Contoh: N = 8, TabInt berisi : { 1, 3, 5, -8, 12, 90, 3, 5} X = 5 Pemeriksaan dilakukan terhadap Output : IX = 3 {1,3,5} KUG1A3 Algoritma & Pemrograman
Alg 1 a: Sequential tanpa Boolean Procedure Seq1a ( Input N,X:integer, Output IX : integer ) { Mencari nilai X pada array TabInt Kamus i : integer [1..NMax] Algoritma i 1 while i< N and TabIntiX do i i + 1 if TabInti = X then IX i else IX 0 TIDAK KETEMU ! KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Algoritma 1a Elemen tabel yang terakhir diperiksa secara khusus. Jika nilainya sama dengan X, maka IX akan diisi indeks elemen tersebut Jika tidak sama, IX akan diisi nol. Jika IX tidak sama dengan nol, berarti nilaiX ditemukan. Proses pada badan pengulangan hanya untuk “maju” /meneruskan indeks berikut. Pencarian dihentikan karena ketemu, atau karena sudah tidak dapat “maju”. KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Algoritma 1c Serupa dengan Alg 1a Jika nilainya sama dengan X, nilai variabel Found diisi true. Ini berarti nilai X ditemukan. Tidak memberikan nilai indeks elemen yang ditemukan Pencarian dihentikan karena ketemu, atau karena sudah tidak dapat “maju”. KUG1A3 Algoritma & Pemrograman
Alg 1b : Sequential dengan Boolean Procedure Seq1b ( Input N,X:integer, Output Found : boolean ) { Sama dengan Alg 1a, menghasilkan nilai true pada Found, tetapi indeks tidak diketahui } Kamus i : integer [1..NMax] Algoritma i 1 while i<N and TabIntiX do i i + 1 Found TabInti =X KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Algoritma 1c Gabungan 1a dan 1b Pengujian elemen array dengan X : Jika nilainya sama, nilai variabel Found diisi true. Ini berarti nilai X ditemukan. Jika tidak, maju /meneruskan indeks berikut. Jika ditemukan : IX akan diisi indeks elemen tersebut Jika tidak, IX akan diisi nol. Pencarian dihentikan karena ketemu, atau karena sudah tidak dapat “maju”. KUG1A3 Algoritma & Pemrograman
Alg 1c : Sequential dengan Boolean Procedure Seq1c ( Input N,X:integer, Output IX : integer, Output Found : boolean ) { Sama dengan Alg 1b, namun indeks diketahui } Kamus i : integer [1..NMax] Algoritma Found false i 1 while i≤N and not Found do if TabInti = X then Found true else i i+1 if Found then IX I IX 0 KUG1A3 Algoritma & Pemrograman
Sequential pada Tabel Terurut Mencari nilai pada array yang sudah terurut Karena terurut, maka pencarian dihentikan jika nilai elemen lebih besar dari nilai yang dicari Contoh N = 8, TabInt berisi : { 1, 3, 5, 8, 12, 90, 311, } X= 5 Pemeriksaan dilakukan terhadap {1,3,5} Output : IX = 3 N = 7, TabInt berisi : { 11, 30, 50, 83,99,123} X = 70 Pemeriksaan dilakukan terhadap {11,30,50,83} Output : IX = 0 KUG1A3 Algoritma & Pemrograman
Alg 2 : Sequential dgTabel Terurut Procedure Seq2 ( Input N,X:integer, Output IX : integer ) Kamus i : integer [1..NMax] Algoritma i 1 while I < N and TabInti<X do i i+1 if TabInti=X then IX i else IX 0 KUG1A3 Algoritma & Pemrograman
Sequential Search dengan Sentinel Sentinel : suatu nilai yang akan menghentikan pengulangan Dipasang suatu elemen fiktif pada tabel yang menjadi sentinel Diletakkan di depan jika pencarian mundur Diletakkan di akhir jika pencarian maju Elemen fiktif ini harganya adalah sama dengan elemen yang dicari. KUG1A3 Algoritma & Pemrograman
Sequential Search dengan Sentinel Jika nilai ditemukan, diperiksa lagi apakah ketemunya : di antara elemen tabel yang sebenarnya Berarti nilai yang dicari ditemukan pada elemen terakhir Berarti tidak ketemu, karena elemen fiktif/sentinel KUG1A3 Algoritma & Pemrograman
Alg 3 : Sequential dengan Sentinel Procedure Seq3 ( Input N,X:integer, Output IX : integer) { Sentinel diletakkan setelah elemen terakhir } Kamus i : integer [1..NMax] Algoritma TabInt(NMax+1) X { Memasang sentinel} i 1 while TabInti X do i i+1 if i < (N+1) then IX i else IX 0 KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Latihan III Buat program Pascal untuk mencari nilai terbesar dari array TabInt ( integer) yang memiliki indeks kelipatan 3. Cari juga nilai array terbesar yang berkelipatan 3. Array dibaca oleh program. Keluaran adalah hasil-hasil tersebut beserta indeks array terbesar kelipatan 3. KUG1A3 Algoritma & Pemrograman
KUG1A3 Algoritma & Pemrograman Latihan IV Buat program Pascal untuk membaca record Mahasiswa yang terdiri dari nama,nim, kelas. Cari nim terbesar dari array tersebut. KUG1A3 Algoritma & Pemrograman