Prodi S1-Sistem Komputer, F Teknik Elektro KUG1A3 Algoritma & Pemrograman Burhanuddin D Prodi S1-Sistem Komputer, F Teknik Elektro Universitas Telkom Array Bagian 1 ( Konsep Array )
Topik Bahasan Definisi Array/ Tabel / Larik / Vektor Deklarasi & Inisialisasi Array Pengaksesan & Pengisian Array Penelusuran Array Mencari Nilai Ekstrim
Variabel Array Variabel yang terdiri dari sekumpulan elemen Masing-masing elemen memiliki index Index akan membedakan masing-masing elemen Elemen array dapat diakses langsung jika indeks terdefinisi Nama array merupakan nama kumpulan elemen tersebut
[ ] X 1 X 1 Variabel Array –lanj. Sekelompok variabel X Dalam Pascal : X1, X2, X3, X4, X5 . . . . Dalam Pascal : [ ] X 1 X 1 Nama Index Index Nama
Variabel Array – lanj. Jumlah elemen didaftarkan saat deklarasi array Tipe dari sekumpulan informasi tersebut harus sama, dan ada keterurutan index X1, X2, X3, X4, X5, semua integer array [1..5] of integer
Lagu Variabel Array Segrup variabel yang bertipe sama Dengan nama sama hanya beda indeksnya Apa namanya : array namanya Nilai indeksnya tentukan variabelnya Variabel indeks tak penting artinya Yang ’kan menentukan hanya nilai indeksnya Indeks K dan I bernilai sama Maka keduanya menunjuk array yang sama
Indeks pada Array Digunakan untuk membedakan elemen Harus memiliki keterurutan Paling sering digunakan : integer suksesor adalah plus satu, predesesor adalah minus satu Bisa juga : tipe enumerasi keterurutan indeks ditentukan sesuai dengan urutan enumerasi.
X1 X2 X1 X10 Index –lanj. X1, X2, X3, X4, X5 . . . . Variabel dengan nama sama, tapi index berbeda merupakan dua objek yang berbeda !
Xi , Xk , XL Index –lanj. Index boleh berupa sebuah variabel Variabel index harus bertipe enumerasi ( umumnya integer, boleh juga karakter ) Variabel index harus diketahui nilainya ! ( Tidak boleh kurang dari nol )
Xi = X10 Xk=X10 XL = X2 Xi Xk Xi XL = Xi , Xk , XL Index –lanj. Jika diketahui : i = 10, k=10, L=2 Xi = X10 Xk=X10 XL = X2 Xi Xk Xi XL =
Xi-1 = X9 Xk+1 = X11 XL+k = X12 Index –lanj. Index boleh ekspresi numerik. Jika diketahui : i = 10, k=10, L=2 Xi-1 = X9 Xk+1 = X11 XL+k = X12
Xi+1 = 17 XL-2 = 10 Nilai variabel Array Jika index diketahui, elemen array bisa dioperasikan seperti variabel biasa Jika diketahui : i = 1, k=2, L=3, dan X1=10,X2=17, X3=25 Xi+1 = 17 XL-2 = 10
Nilai variabel Array – lanj. Operasi elemen variabel array seperti operasi variabel biasa input(X1, X2 ) X3 X1 +X2 output( X3) Jika input 3 dan 5, X1=3, X2 =5 X3 =3+5=8 Output ( X3=8)
Contoh (1) Sekumpulan mahasiswa yang terdiri dari lima orang. Masing-masing bernama : Siti, Ali, Minah, Budi dan Bambang. Untuk kelompok tersebut, dibuat sekumpulan variabel yang berisi nama-nama mahasiswa. Tiap mahasiswa dapat dipanggil dengan menyebut Mahasiswa ke-1, Mahasiswa ke-2, Mahasiswa ke-3 dan seterusnya.
Contoh (1) – lanj. Kumpulan tersebut dapat dideklarasikan sebagai berikut : Nama kelompok variabel : Mahasiswa Tipe kelompok : string ( karena untuk menyimpan nama → string ) Index : 1 sampai 5 Cara menulis pada KAMUS Mahasiswa : array [1..5] of string
Contoh (2) Sejumlah keranjang dibuat sebagai tempat meletakkan buah durian. Tiap keranjang akan berisi buah durian. Ada 10 keranjang, sehingga tiap keranjang diberi angka 1-10. Nama kelompok variabel : Keranjang Tipe kelompok : integer Index : 1 sampai 10 Keranjang : array [1..10] of integer
Contoh (3) Sebuah tabel yang berisi data koordinat titik-titik pada peta. Tipa koordinat terdiri dari absis dan ordinat. Disediakan 100 buah koordinat. KAMUS type Point : <x:integer, y:integer > type Indeks : integer [1..100] TitikSurvey : array [Indeks] of Point
Contoh (4) Array dengan jumlah elemen 10 yang berisi angka : 5,3,2,4,9,8,10,3,6,15. Indeks dari 0 sampai 9. 1 2 3 4 5 6 7 8 9 5 3 2 4 9 8 10 6 16
Domain Array Domain : Domain array sesuai dengan pendefinisian indeks Domain isi array sesuai dengan tipe array Contoh : Keranjang : array [1..10] of integer; Domain array : 1 sampai 10 Index hanya dari 1 sampai 10, tidak ada index 0 atau 11. Domain isi array : harus integer
Nilai Array Nilai untuk seluruh array tidak terdefinisi Nilai hanya terdefinisi jika indeks dari array terdefinisi Contoh : Jika I=10, maka Keranjang[I] = Keranjang[10] Mahasiswa[I-5]=Mahasiswa[5]
Pengaksesan Array Array biasanya diakses dalam bentuk pengulangan Pengaksesan elemen array dilakukan dengan menggunakan index Contoh: i traversal [1..5] input(Xi) Membaca Xi sebanyak 5 kali Membaca X1, X2, X3, X4, dan X5
Pengaksesan Array – lanj. Misal : i traversal [5..8] Xi i * 10 I traversal [4..1] Xi Xi*2 i Xi 5 50 X5 6 60 X6 7 70 X7 8 80 X8 i Xi 4 X8=80 X4 3 X6=60 X3 2 X4=80 X2 1 X2=80 X1
Contoh Kasus-1 : Nama Hari Program akan menuliskan nama hari yang sesuai dengan input. Input adalah sebuah bilangan integer, antara 1 sampai 7, dan mengeluarkan elemen array dengan index yang sesuai. Array berisi ’Senin’ ..’Minggu’. Contoh : Input : 6, Output 'Sabtu‘ Input : 1, Output ‘Senin'
Contoh Kasus-1 : Nama Hari-lanj. Program TabelHari; Kamus I : integer; Hari : array[1..7] of string Algoritma Hari1 ‘Senin’; Hari2 ‘Selasa’ Hari3 ‘Rabu’; Hari4 ‘Kamis’ Hari5 ‘Jumat’; Hari6 ‘Sabtu’ Hari7 ‘Minggu’ input(i) output(‘Nama hari adalah :’, Harii)
Pencarian Nilai Ekstrim Mencari nilai maksimum/minimum dari array Contoh dalam kehidupan sehari-hari : mencari juara kelas, mencari data percobaan yang merupakan harga ekstrim, dll.
Persoalan Diketahui sebuah array TabInt yang memiliki N elemen dengan tipe integer dan telah diisi. Tuliskanlah sebuah prosedur NilaiMax, yang menghasilkan harga maksimum dari TabInt. Contoh N = 7, TabInt berisi : { 1,-3,5,8,-12,90,3} Output : Maximum adalah 90 N = 6, TabInt berisi : {-11,3,45,8,3,45} Output : Maksimum adalah 45
Solusi 1 Misal : Diketahui nilai elemen TabInt selalu lebih besar dari nilai tertentu, contoh -9999 Cara mencari nilai maksimum : Nilai -9999 diinisialisasikan ke variabel Max Bandingkan nilai elemen TabInt dengan Max Jika lebih besar dari Max, maka nilai Max diisi dengan nilai elemen tersebut Ulangi agar semua elemen array TabInt sudah dibandingkan dengan Max
Procedure NilaiMax1 ( Input N : integer, Output Max : integer ) { Mencari nilai maksimum dari suatu array, yang sudah diisi. Array di program utama } Kamus i : integer Algoritma Max -9999 i traversal [1..N] if TabInti > Max then Max TabInti Ouput(Max) { optional}
Catatan Solusi I Algortima HANYA berlaku jika nilai minimal dari elemen array diketahui Tidak berlaku secara umum Menggunakan suatu nilai yang berada di luar domain nilai array Dapat diperbaiki dengan tidak menggunakan nilai di luar domain nilai array
Solusi 2 Diketahui bahwa jika hanya terdapat 1 nilai elemen saja, maka nilai maksimum pasti berada pada nilai elemen tersebut. Elemen pertama dijadikan nilai Max pertama kali Cara mencari nilai maksimum : Nilai elemen pertama diisikan ke variabel Max Bandingkan nilai elemen TabInt dengan Max Jika lebih besar dari Max, maka nilai Max diisi dengan nilai elemen tersebut Ulangi agar semua elemen array TabInt sudah dibandingkan dengan Max
Procedure NilaiMax2 ( Input N : integer, Output Max : integer ) { Mencari nilai maksimum dari suatu array, yang sudah diisi. Array di program utama } Kamus i : integer Algoritma Max TabInt1 i traversal [2..N] if TabInti > Max then Max TabInti Output(Max) { optional}
Algoritma Solusi2 Elemen pertama tabel diproses secara khusus, bukan di dalam pengulangan Nilai elemen pertama menjadi nilai Max yang pertama Menghasilkan nilai maksimum, namun tidak diketahui posisi (indeks) di mana nilai maksimum tersebut berada. Bagaimana untuk mencari posisi / indeksnya ? Dg indeks, nilai maksimum dapat diketahui
Solusi 3 Cara mencari nilai maksimum : Pembandingan menekankan pada indeks, bukan nilai elemennya Indeks elemen pertama dijadikan nilai indeks Max pertama kali Cara mencari nilai maksimum : Indeks elemen pertama dimasukkan ke IMax Bandingkan nilai TabInti dengan TabIntIMax Jika lebih besar dari TabIntIMax, maka nilai IMax diisi dengan i. Ulangi untuk semua elemen array TabInt
Procedure NilaiMax3 ( Input N : integer, Output IMax : integer ) { Mencari nilai maksimum dari suatu array, yang sudah diisi. Array di program utama } Kamus i : integer Algoritma IMax 1 { Index TabInt dr 1 } i traversal [2..N] if TabInti > TabIntIMax then IMax i Ouput(IMax) { optional}
Algoritma Solusi3 Indeks dari elemen pertama array dimasukkan ke indeks nilai maksimum (Imax). Hasil dari algoritma adalah indeks elemen array yang memiliki nilai maksimum Nilai maksimum bisa dicari dari : TabIntImax