Array (Tabel) Tim Pengajar KU1071 Sem /11/3 TW/KU1071 1

dokumen-dokumen yang mirip
Array. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

Algoritma dan Pemrograman Array/Tabel[2] Oleh: Eddy Prasetyo N

Algoritma dan Pemrograman Array/Tabel[1] Oleh: Eddy Prasetyo N

LATIHAN UTS Tim Pengajar KU1071 Sem

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

Pencarian pada Array. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

Array (Tabel) bagian 2

List Linier (Bag. I) IF2121/Algoritma dan Struktur Data Sem. I 2016/ /25/2017 IF2121/Sem I 2017/2018 1

PENGULANGAN Bagian 1 : Notasi. Tim Pengajar KU1071 Sem

LIST LINIER 1. DEFINISI

PENGULANGAN SKEMA PEMROSESAN SEKUENSIAL. Tim Pengajar KU1071 Sem

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

Array dan Matriks. IF2121 / Algoritma dan Struktur Data Sem / /7/2017 IF2121/sem /2018 1

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

List Linier. IF2030/Algoritma dan Struktur Data. 11/6/2009 FNA+WDS/IF2030/Sem

MATRIKS. Dapat disimpan secara linier dan kontigu dengan dua alternatif sebagai berikut : a. Per baris

Array (Tabel) [DalamBahasaC++]

BAB VI SEARCHING (PENCARIAN)

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Stack (Tumpukan)

1 Array dan Tipe Data Bentukan

Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus (efisien). Algoritma yang bagus adalah algoritma yang mangkus.

{ Kamus Umum } constant IdxMax : integer = 100 constant IdxMin : integer = 1 constant IdxUndef : integer = -999 { indeks tak terdefinisi}

CCH1A4 / Dasar Algoritma & Pemrogramanan

PENGANTAR KOMPUTER & SOFTWARE II. Array (Part II) Tim Pengajar KU Institut Teknologi Sumatera

Pembahasan Kuis. KU1071/Pengantar Teknologi Informasi A Sem /2011

SEQUENTIAL SEARCH 11/11/2010. Sequential Search (Tanpa Variabel Logika) untuk kondisi data tidak terurut

Searching [pencarian] Algoritma Pemrograman

PENGANTAR KOMPUTER & SOFTWARE II

ARRAY / LARIK. Oleh : Agus Priyanto, M.Kom SEKOLAH TINGGI TEKNOLOGI TELEMATIKA TELKOM. Smart, Trustworthy, And Teamwork

Soal hari Jumat (16/10) Latihan 10 MS

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 2 x 3 x 50 Menit Pertemuan : 14 & 15

2 ATURAN PENULISAN TEKS ALGORITMA

Representasi Logic List Linier

TYPE. Inggriani Liem : Catatan Kuliah Algoritma & Pemrograman, Jurusan teknik Informatika - ITB TYPE.doc/TYPE- 21/08/03 16:04

c. Hasil pencarian berupa nilai Boolean yang menyatakan status hasil pencarian. Versi 1 (Pembandingan elemen dilakukan sebagai kondisi pengulangan)

ALGORITMA & PEMROGRAMAN

IKG2A3/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Mesin Abstrak

Aturan Penulisan Algoritma Setiap Algoritma akan selalu terdiri dari tiga bagian yaitu : Judul (Header) Kamus Algoritma

IKG2A3/ Pemrograman Terstruktur 2

Identitas dosen POKOK BAHASAN. Suherman,, ST Address. : Cilegon Mobile : Ym Blog

Pengurutan pada Array. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

Mesin Karakter dan Mesin Kata

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

MODUL PRAKTIKUM PERCABANGAN DAN PENGULANGAN

STRATEGI DIVIDE AND CONQUER

SEARCHING. Pusat Pengembangan Pendidikan Universitas Gadjah Mada 1

1 Pencarian. 1.1 Tinjauan Singkat Larik

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

BAB 1 PENGANTAR KE STRUKTUR DATA

Modul I. Modul Praktikum Bahasa Pemrograman Pascal

ARRAY STATIS. Type namatype_array = array [1..maks_array] of tipedata. nama_var_array : namatype_array {indeks array dari 1 sampai maksimum array}

PERULANGAN P E N G A N TA R P R O G R A M S T U D I. Institut Teknologi Sumatera

DASAR PEMROGRAMAN. Institut Teknologi Sumatera

PENGANTAR KOMPUTER & SOFTWARE II

Algoritma dan Pemrograman Searching/Pencarian

Kompleksitas Algoritma

ANALISIS KOMPLEKSITAS ALGORITMA UNTUK BERBAGAI MACAM METODE PENCARIAN NILAI (SEARCHING) DAN PENGURUTAN NILAI (SORTING) PADA TABEL

Pemrograman Prosedural PENDAHULUAN. Tim Pengajar KU1071 Sem

Mesin Abstrak. Tim Pengajar KU1071 Sem

DIKTAT KULIAH STRUKTUR DATA. Disusun oleh: Sri Primaini A.

Struktur Program. Rinta Kridalukmana

Bagian I. Studi Kasus [82] Tanda tangan:

BAB I PENGENALAN STRUKTUR DATA DAN ALGORITMA

VARIABEL, TIPE DATA, KONSTANTA, OPERATOR DAN EKSPRESI. Pemrograman Dasar Kelas X Semester 2

Outline. Ekuivalensi Notasi Algoritmik Dengan ETNA. Struktur Umum

Kata Pengantar... Daftar Isi... Daftar Padan Kata Inggris - Indonesia Pengantar ke Algoritma... 1

Pert 3: Algoritma Pemrograman 1 (Alpro1) 4 sks. By. Rita Wiryasaputra, ST., M. Cs.

PENGANTAR KOMPUTER & SOFTWARE II. Pengulangan (For) Tim Pengajar KU Institut Teknologi Sumatera

LOOPING. Brigida Arie Minartiningtyas, M.Kom

BAB VII ALGORITMA DIVIDE AND CONQUER

REVIEW ARRAY. Institut Teknologi Sumatera

Universitas gunadarma. pascal. Bab 4- bab 10. Hana Pertiwi S.T

Array. Teknik Informatika Politeknik Negeri Batam

Pencarian. 1. Memahami konsep pencarian 2. Mengenal beberapa algoritma pencarian 3. Menerapkan algoritma pencarian dalam program

RENCANA PEMBELAJARAN SEMESTER (RPS)

ARRAY (LARIK) Altien Jonathan Rindengan, S.Si., M.Kom.

CCH1A4 / Dasar Algoritma & Pemrogramanan

AnalisisFramework. Mengukur ukuran atau jumlah input Mengukur waktu eksekusi Tingkat pertumbuhan Efiesiensi worst-case, best-case dan average-case

Algoritma dan Struktur Data I Mia Fitriawati, S.Kom, M.Kom

Modul Ke-1 Pertemuan ke-1 Deskripsi: Pemrosesan Sekuensial Larik Nama File: P01-XXX (XXX adalah 3 digit terakhir NPM)

Bambang Heru S Departemen Teknik Kimia Universitas Indonesia

Variabel dan Tipe Data Kusrini 1, Heri Sismoro 2

MODUL IV PENCARIAN DAN PENGURUTAN

SATUAN ACARA PERKULIAHAN MATA KULIAH PEMROGRAMAN PASCAL * (TK) KODE / SKS: KK /2 SKS

Linked List. Bandung 2013

MATRIKS P E N G E N A L A N P R O G R A M S T U D I. Institut Teknologi Sumatera

JENIS DATA SEDERHANA & INPUT/OUTPUT DATA

PROGRAM STUDI S1 SISTEM KOMPUTER UNIVERSITAS DIPONEGORO. Oky Dwi Nurhayati, ST, MT

Pertemuan - 3. Array dan Matriks (Bab 2) Oleh : Boldson Herdianto. S., Skom., MMSI.

BAB II STACK Atau TUMPUKAN

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

Struktur Data. Belajar Struktur Data Menggunakan Pascal Pertemuan-5

PENGULANGAN. Ada lima macam notasi pengulangan: 1. Berdasarkan jumlah pengulangan. repeat n times

ARRAY/LARIK. 3/25/2010 Materi Array - RIE 1

LAPORAN AKHIR PRAKTIKUM STRUKTUR DATA

Algoritma Brute Force

PERBANDINGAN KOMPLEKSITAS ALGORITMA PENCARIAN BINER DAN ALGORITMA PENCARIAN BERUNTUN

BAB 2 LANDASAN TEORI

Pertemuan III ARRAY dan RECORD

Transkripsi:

Array (Tabel) Tim Pengajar KU1071 Sem. 1 2009-2010 2009/11/3 TW/KU1071 1

Tujuan Perkuliahan Mahasiswa memahami makna dan kegunaan array (tabel) Mahasiswa dapat menggunakan notasi pendefinisian dan pengacuan array dengan benar hingga proses pencarian terhadap elemen array Mahasiswa dapat membuat program dengan menggunakan array 2009/11/3 TW/KU1071 2

Array, Tabel Kontigu Type array adalah type yang mengacu kepada sebuah atau sekumpulan elemen melalui indeks Elemen dari array dapat diakses langsung jika dan hanya jika indeks terdefinisi ditentukan harganya dan sesuai dengan domain yang didefinisikan untuk indeks tersebut Disebut juga sebagai tabel, vektor atau larik Merepresentasikan sekumpulan informasi yang bertype sama dan disimpan dengan urutan yang sesuai dengan definisi indeks secara kontigu dalam memori komputer indeks harus suatu type yang mempunyai keterurutan (ada suksesor dan predesesor), misalnya type integer, karakter 2009/11/3 TW/KU1071 3

Elemen tunggal vs Array Program nilai_mata_kuliah Kamus Mhs1,Mhs2,Mhs3,Mhs4,Mhs5: real rata2, nilaimax: real Algoritma input(mhs1,mhs2,mhs3,mhs4,mhs5) rata2 (Mhs1+Mhs2+Mhs3+Mhs4+Mhs5)/5 nilaimax max(max(max(max(mhs1,mhs2),mhs3),mhs4),mhs5) Bagaimana jika untuk 1000 Mhs? Pembuatan 1 Mhs diwakili oleh 1 variabel TIDAK EFISIEN: Mhs1, Mhs2,..., Mhs1000 Solusi: penggunaan ARRAY 2009/11/3 TW/KU1071 4

1 variabel menyimpan 1 nilai Mhs Mhs1 Mhs2 Mhs3 Mhs4 Mhs5 1 variabel menyimpan 5 nilai Mhs Type Array dengan 5 elemen Mhs 2009/11/3 TW/KU1071 5

Array contoh visualisasi NMin NMin+1 NMin+2 NMin+3 NMax-2 NMax-1 NMax Array Indeks Array, dengan tipe ordinal Elemen Array, dengan tipe homogen untuk setiap elemen 2009/11/3 TW/KU1071 6

Contoh Penggunaan KAMUS TabNamaHari : array [1..7] of string TabJumlahHari : array [1..12] of integer type Point : <x : integer, y : integer > type Indeks : integer [1..10] TabTitikSurvey : array [Indeks] of Point TabFREK : array ['A'..'Z'] of integer Domain : Domain array sesuai dengan pendefinisian indeks Domain isi array sesuai dengan jenis array Konstanta : Konstanta untuk seluruh array tidak terdefinisi Konstanta hanya terdefinisi jika indeks dari array terdefinisi Cara mengacu sebuah elemen: melalui indeks TabNamaHari i, jika i terdefinisi TabNamaHari 7 TabJumlahHari 3 2009/11/3 TW/KU1071 7

Contoh Pemakaian Array Kasus-1: Nama Hari Nama hari dalam minggu direpresentasi sebagai array. Tuliskan sebuah algoritma yang membaca hari ke berapa [1..7], kemudian menuliskan nama harinya. Contoh : Input : 1 Output Senin Input : 6 Output Sabtu Program NamaHari { Mengisi TabelNamaHari yang akan memungkinkan untuk menuliskan nama hari : tabulasi eksplisit nama hari berdasarkan indeks HariKe... } KAMUS TabNamaHari : array [1..7] of string procedure IsiTabHari { mengisi tabel nama hari } HariKe : integer [1..7] {nomor dari hari} ALGORITMA IsiTabHari { Contoh pemanfaatan setelah Tabel TabNamaHari terdefinisi isinya } Input (HariKe) Output (TabNamaHari HariKe ) 2009/11/3 TW/KU1071 8

Contoh Pemakaian Array Kasus-1: Nama Hari (lanjutan) procedure IsiTabHari { mengisi tabel nama hari } { I.S. : TabNamaHari tak terdefinisi } { F.S. : TabNamaHari siap dipakai, semua elemennya [1..7] sudah diisi } Kamus Lokal : ALGORITMA TabNamaHari 1 Senin TabNamaHari 2 Selasa TabNamaHari 3 Rabu TabNamaHari 4 Kamis TabNamaHari 5 Jumat TabNamaHari 6 Sabtu TabNamaHari 7 Minggu 2009/11/3 TW/KU1071 9

Pemrosesan Sekuensial Pada Tabel Merupakan pemrosesan sekuensial tanpa mark Dimungkinkan adanya akses langsung jika indeks terdefinisi First-Elmt adalah elemen tabel dengan indeks terkecil Next-Elmt dicapai melalui suksesor indeks Model akses sekuensial tanpa mark kondisi berhenti adalah jika indeks sudah mencapai harga indeks yang terbesar yang telah terdefinisi Tabel tidak mungkin kosong jika kita mendefinisikan tabel, maka minimal mengandung sebuah elemen 2009/11/3 TW/KU1071 10

Skema Pemrosesan Sekuensial KAMUS UMUM PEMROSESAN TABEL constant NMin: integer =1 {batas bawah} constant NMax: integer =100 {batas atas} type ElType :... {suatu type terdefinisi, misalnya integer} i : integer [NMin..NMax] T : array [NMin..NMax] of ElType {tabel dengan elemen bertype ElType} procedure Inisialisasi {persiapan yang harus dilakukan sebelum pemrosesan} procedure Proses (input X : ElType) {proses thd Current-Elmt tabel T} procedure Terminasi { "penutupan" setelah pemrosesan selesai} SKEMA PEMROSESAN TABEL T untuk indeks [NMin..NMax] {Traversal Tabel T untuk Indeks bernilai NMin..NMax} Skema : Inisialisasi i traversal [NMin..NMax] Terminasi Proses(T i ) 2009/11/3 TW/KU1071 11

Pemrosesan Sekuensial pada Tabel Contoh 1: mengisi tabel, jumlah elemen diketahui Program ISITABEL1 { Traversal untuk mengisi, dengan membaca nilai setiap elemen tabel dari keyboard jika banyaknya elemen tabel yaitu N diketahui. Nilai yang dibaca akan disimpan di T NMin s/d T N. Nilai N harus dalam daerah nilai indeks yang valid } KAMUS constant NMin : integer = 1 { NMin : batas bawah indeks} constant NMax : integer = 100 { NMax : batas atas indeks} i : integer [NMin..NMax] T : array [NMin..NMax] of integer N : integer ALGORITMA {Inisialisasi } repeat input (N) until (NMin N NMax) i traversal [NMin..N] input (T i ) Catatan: N sebenarnya adalah indeks maksimum efektif. Tetapi, karena NMin=1, maka N juga berisi jumlah elemen tabel 2009/11/3 TW/KU1071 12

Pemrosesan Sekuensial pada Tabel Contoh 2: mengisi tabel, jumlah elemen tidak diketahui Program ISITABEL2 { Traversal untuk mengisi, dengan membaca nilai setiap elemen tabel dari keyboard yang diakhiri dengan 9999. Nilai yang dibaca akan disimpan di T NMin s/d T N, nilai N harus berada dalam daerah nilai indeks yang valid, atau 0 jika tabel kosong} KAMUS constant NMin : integer = 1 { NMin : batas bawah indeks} constant NMax : integer = 100 { NMax : batas atas indeks} N : integer [0,NMin..NMax] { indeks efektif tabel, 0 jika tabel kosong } i : integer [NMin..NMax+1] { indeks untuk traversal tabel } T : array [NMin..NMax] of integer x : integer { nilai yang dibaca dan akan disimpan sebagai elemen tabel } ALGORITMA i NMin {Inisialisasi } input (x) {First element } while (x 9999) and (i<=nmax) do T i x { Proses } i i + 1 input (x) { Next element } {x =9999 or i >NMax } if (i>nmax) then output ( Tabel sudah penuh ) N i - 1 Jika pada saat input pertama kali sudah diisi 9999, maka N akan berisi NMin 1. Karena NMin =1, proses ini aman (N diisi 0). Hati-hati jika NMin <> 1. 2009/11/3 TW/KU1071 13

Table Lookup (Searching) Merupakan proses yang penting karena sering dilakukan terhadap sekumpulan data yang disimpan dalam tabel Ada beberapa variasi pencarian Metoda mana yang dipakai menentukan kecepatan pencarian KAMUS UMUM constant NMax : integer = 100 type TabInt : array [1..NMax] of integer { jika diperlukan sebuah tabel, maka akan dibuat deklarasi sebagai berikut } T : TabInt { tabel integer } N : integer {indeks efektif, 1 N NMax} 2009/11/3 TW/KU1071 14

Pencarian Berturutan (Sequential Search) Diketahui sebuah tabel berisi integer T[1..N], yang telah diisi Tuliskanlah algoritma yang menerima masukan sebuah X bernilai integer dan mencari apakah harga X ada dalam T secara sekuensial (berturutan) Menghasilkan harga indeks IX dimana X diketemukan pertama kalinya, IX diberi harga 0 jika pencarian tidak ketemu Pencarian segera dihentikan begitu harga pertama diketemukan Contoh-1: N = 8, T berisi : { 1, 3, 5, -8, 12, 90, 3, 5 }, X = 5 Pemeriksaan dilakukan terhadap {1,3,5} Output : IX = 3 Contoh-2: N = 4, T berisi : { 11, 3, 5, 8 }, X = 100 Pemeriksaan dilakukan terhadap {11,3,5,8} Output : IX = 0 2009/11/3 TW/KU1071 15

Algoritma Pencarian Sequential Skema Pencarian Tanpa Boolean procedure SEQSearchX1 (input T : TabInt, input N : integer, output IX : integer, input X : integer ) {Mencari harga X dalam Tabel T [1..N] secara sekuensial mulai dari T 1. Hasilnya adalah indeks IX dimana T ix = X (i terkecil), IX = 0 jika tidak ketemu} Kamus Lokal : i : integer [1..NMax] {indeks untuk pencarian } ALGORITMA i 1 while (i < N) and (T i X) do i i + 1 { i = N or T i = X} if (T i = X ) then IX i else { T i X } IX 0 2009/11/3 TW/KU1071 16

Algoritma Pencarian Sequential Skema Pencarian Dengan Boolean procedure SEQSearchX2 (input T : TabInt, input N : integer, input X : integer, output IX : integer, output Found: boolean) {Mencari harga X dalam Tabel T [1..N] secara sekuensial mulai dari T 1. Hasilnya adalah indeks IX dimana T ix = X (i terkecil), IX = 0 jika tidak ketemu, dan sebuah boolean Found (true jika ketemu) } Kamus Lokal : i : integer [1..N+1] {indeks untuk pencarian } ALGORITMA Found false { awal pencarian, belum ketemu } i 1 while (i N) and (not Found) do if (T i = X) then Found true else i i + 1 { i > N or Found } if (Found) then IX i else IX 0 2009/11/3 TW/KU1071 17

Algoritma Pencarian Sequential Skema Pencarian Dengan Boolean (salah) procedure SEQSearchX3 (input T : TabInt, input N : integer, input X : integer, output IX : integer, output Found: boolean) {Mencari harga X dalam Tabel T [1..N] secara sekuensial mulai dari T 1. Hasilnya adalah indeks IX dimana T ix = X (i terkecil), IX = 0 jika tidak ketemu, dan sebuah boolean Found (true jika ketemu) } Kamus Lokal : i : integer [1..N+1] {indeks untuk pencarian } ALGORITMA i 1 while (i N) and (T i X) do i i + 1 { i = N+1 or T i = X } if ( i N ) then Found true; IX i else { i > N } Found false; IX 0 Dimana letak kesalahan algoritma ini? 2009/11/3 TW/KU1071 18

Algoritma Pencarian Sequential Pada Tabel Terurut Diketahui sebuah tabel bilangan integer T[1..N], dengan isi yang terurut membesar (untuk setiap i [1..N-1], T i T i+1 Tuliskanlah algoritma, yang jika diberikan sebuah X bernilai integer akan mencari apakah harga X ada dalam T secara sekuensial mulai dari elemen pertama Prosedur akan menghasilkan harga indeks IX dimana X diketemukan pertama kalinya, IX diberi harga 0 jika pencarian tidak ketemu Pencarian segera dihentikan begitu harga pertama diketemukan Dengan memanfaatkan keterurutan, kondisi berhenti bisa lebih efisien Contoh 1: N = 8, T berisi : { 1, 3, 5, 8, 12, 90, 311, 500}, X = 5 Pemeriksaan dilakukan terhadap {1,3,5} Output : IX = 3 Contoh 2: N = 7, T berisi : { 11, 30, 50, 83,99,123,456}, X = 100 Pemeriksaan dilakukan terhadap {11,30,50,83,99,123} Output : IX = 0 2009/11/3 TW/KU1071 19

Algoritma Pencarian Sequential Pada Tabel Terurut - Algoritma procedure SEQSearchSorted (input T : TabInt, input N : integer, input X : integer, output IX : integer) {Mencari harga X dalam Tabel T [1..N] secara sekuensial mulai dr T 1 } {Hasilnya adalah indeks IX di mana T IX =X; IX = 0 jika tidak ketemu } Kamus Lokal : i : integer [1..NMax] {indeks untuk pencarian } ALGORITMA i 1 while (i < N) and (T i < X) i i + 1 { i = N or T i X } if (T i = X ) then IX i else { T i X T i > X } IX 0 2009/11/3 TW/KU1071 20

Algoritma Pencarian Sequential Dengan Sentinel Dengan teknik sentinel, sengaja dipasang suatu elemen fiktif setelah elemen terakhir tabel, yang disebut SENTINEL. Elemen fiktif ini harganya sama dengan elemen yang dicari Pencarian akan selalu ketemu; harus diperiksa lagi apakah posisi ketemu : di antara elemen tabel yang sebenarnya, atau sesudah elemen terakhir (berarti tidak ketemu, karena elemen fiktif) Penempatan sentinel disesuaikan dengan arah pencarian Teknik sentinel sangat efisien, terutama jika pencarian dilakukan sebelum penyisipan sebuah elemen yang belum terdapat di dalam tabel Contoh 1: N = 8, T berisi : { 1, 3, 5, 8, -12, 90, 3, 5}, X = 5 T dijadikan { 1, 3, 5, 8, 12, 90, 3, 5, 5} Pemeriksaan dilakukan terhadap {1,3,5} Output : IX = 3 Contoh 2: N = 4, T berisi : { 11, 3, 5, 8}, X = 100 Akibatnya minimal ukuran array harus 5, berarti N dijadikan 5 T dijadikan { 11, 3, 5, 8, 100} Pemeriksaan dilakukan terhadap {11,3,5,8,100} Output : IX = 0 2009/11/3 TW/KU1071 21

Algoritma Pencarian Sequential Dengan Sentinel (lanjutan) Kamus umum untuk tabel dengan sentinel harus mengandung sebuah elemen tambahan KAMUS UMUM constant NMax : integer = 100 type TabInt : array [1..NMax+1] of integer { jika diperlukan sebuah tabel, maka akan dibuat deklarasi sebagai berikut } T : TabInt {tabel integer} N : integer {indeks efektif, maksimum tabel yang terdefinisi, 1 N NMax} 2009/11/3 TW/KU1071 22

Algoritma Pencarian Sequential Dengan Sentinel - Algoritma procedure SEQSearchWithSentinel (input T : TabInt, input N : integer, input X : integer, output IX : integer) { Mencari harga X dalam Tabel T[1..N] secara sekuensial mulai dari T 1 } { Hasilnya adalah indeks IX dimana T IX =X (IX terkecil) } { IX = 0 jika tidak ketemu. Sentinel diletakkan di T N+1 } Kamus Lokal : i : integer [1..N+1] {indeks untuk pencarian } ALGORITMA T N+1 X {pasang sentinel } i 1 while (T i X) do {tidak perlu test terhadap batas i, karena pasti berhenti} i i + 1 { T i = X; harus diperiksa apakah ketemunya di sentinel } if (i < N+1) then IX i {ketemu pada elemen tabel } else { i = N+1 } IX 0 {sentinel, berarti tidak ketemu } 2009/11/3 TW/KU1071 23

Translasi ke Pascal Pendefinisian Array: <nm_array> : array[<nmin>..<nmax>] of <tipe>; Contoh: TInt : array[1..100] of integer; TPoint : array[1..maxpoint] of Point; Pengacuan elemen Array: <nm_array>[<index>] Contoh: TInt[5] := 10; Hasil := Hasil + TInt[10]; Readln (TInt[i]); 2009/11/3 TW/KU1071 24

Latihan Perhatikan kembali program ISITABEL1 (halaman 123). Buatlah program ISITABEL1a (yang merupakan revisi dari program ISITABEL1) yang menggunakan array dengan indeks minimum (NMin) 101 dan indeks maksimum (NMax) 200. Buatlah sebuah fungsi HitungRataTabel yang menghitung nilai ratarata dari seluruh elemen array TabInt (array dengan elemen bertipe integer, merupakan parameter fungsi) yang elemennya berjumlah N (merupakan parameter fungsi). Buatlah sebuah prosedur KemunculanTerakhir yang mencari indeks array terakhir yang berisi suatu nilai. Parameter prosedur adalah TabInt (array dengan elemen integer), N (indeks efektif), X (nilai yang akan dicari), dan IX (indeks terakhir pada array yang bernilai X). Contoh: N=9, TabInt={4,3,7,6,3,8,4,3,6}, X=3, maka IX=8 2009/11/3 TW/KU1071 25

Latihan di Rumah Semua algoritma yang dipelajari pada perkuliahan hari ini menggunakan tipe data integer. Cobalah untuk mengembangkan algoritma-algoritma yang ada agar dapat menangani array dengan elemen bertipe bentukan. 2009/11/3 TW/KU1071 26