Array yaitu yang berbaris-baris atau berderet-deret. Dalam pemrograman : deretan data yang mempunyai jenis atau tipe data yang sama. Nama Array mewakili deret data dia miliki.
Contoh: A:array[1..5] of integer
A adalah nama array
Definisi Array
Adalah sebuah peubah (variabel) yang mempunyai struktur data yang dapat menyimpan lebih dari satu nilai yang sejenis (tipe data yang sama), setiap elemen diacu melalui indeksnya. Elemen array tersusun di memori secara berurutan (sekuensial), oleh sebab itu indeks array(larik) haruslah tipe data yang menyatakan keterurutan, misalnya integer atau karakter.
Elemen Array
I n d e k s I n d e k s
1 2 3 4 5
Elemen Array kosong
Deklarasi Array
Sesuatu yang akan digunakan/dipakai dalam suatu program terlebih harus dideklarasikan Array (Larik) adalah struktur(susunan) data yg statis, artinya elemen larik harus sudah diketahui sebelum program dieksekusi. Jumlah elemen larik tidak dapat diubah (ditambah/dikurangi) selama pelaksanaan program (program running). Mendeklarasikan larik di dalam bagian deklarasi berarti :
mendefinisikan banyaknya elemen larik (memesan tempat di memori) mendefinisikan tipe elemen larik (menetapkan tipe nilai yg dapat disimpan oleh larik (array).--> tipe data dapat berupa : tipe dasar/sederhana (integer, real, char, string, Boolean), tipe bentukan (tipe terstruktur :record)
ALGORITMA :
For i:=1 to max do read(n[i]) Endfor
Pengsian Nilai per field : Mhs[i].NIM 102131002 Mhs{i].NAMA BUDI UTOMO Mhs[i].IPK 3.6
Menampilkan hasil per field : Output([Mhs[i].NIM, Mhs[i].NAMA, Mhs[i].IPK)
{indeks Array}
ALGORITMA :
For i:=1 to max do pemrosesan terhadap A[i]) Endfor
Procedure BacaLarik2(Output A: Larikint, Output n: integer) {K. Awal : sembarang} {K. Akhir : sebanyak n buah elemen larik A berisi nilai-nilai yang dibaca; n berisi jumlah elemen larik yang diisi} DEKLARASI Jawab : char ALGORITMA N0 Repeat nn+1 Read(A[n]) Write(Lagi? (y/t)) Read(jawab) Until jawab = t
Jumlah elemen efektif baru diketahui di akhir pembacaan (variasi dari versi 2)
Proses pembacaan dianggap selesai jika nilai yang dibaca adalah suatu tanda, misalnya 9999.
DEKLARASI x : integer {menyimpan sementara nilai yang di baca} ALGORITMA n0 read(x) while x 9999 do n n +1 A[n] x read(x) endwhile
{x = 9999}
ALGORITMA
I 1 {dimulai dari elemen pertama} Jumlah 0 {jumlah total nilai mula mula} For i 1 to n do jumlah jumlah + A[i] Endfor U jumlah/n
ALGORITMA read(n) {tentukan jumlah elemen larik yang akan digunakan } BacaLarik1(A, n) HitungRataRata(A, n, u) write(u)
latihan
Buatlah algoritma tanpa menggunakan prosedur (sub program) untuk menghitung nilai-nilai rata-rata dari data yang tersimpan pada elemen array(larik) yang bertipe integer. Konversikan algoritma tersebut ke dalam bahasa pascal.
ARRAY KONSTAN :
Nilai yang terkandung di dalam sebuah array dapat bernilai konstan, artinya nilai-nilai tersebut tidak dapat diubah. mendeklarasikan array bersangkutan dengan kata kunci CONST. Bentuk umumnya adalah sbb: Const NamaArray : array[IndekAwal..IndekAkhir] of tipe_data = (nilai1, nilai2, ...);
Array A di atas bersifat konstan, maka nilai yang ada tidak digantikan dengan nilai lainnya. Contoh : A[1] V { SALAH, Karena elemen A[1] selalu bernilai A} A[2] W {SALAH, Karena elemen A[2] selalu bernilai B} A[3] X { SALAH, Karena elemen A[3] selalu bernilai C} A[4] Y {SALAH, Karena elemen A[4] selalu bernilai D} A[5] Z { SALAH, Karena elemen A[5] selalu bernilai E}
Kalau elemen larik sudah terurut baik secara ascending maupun descending, maka nilai maksimum langsung bisa diperoleh : Ascending pada elemen terakhir, Descending pada elemen pertama
Permasalahan muncul bila nilai elemen array tesusun secara acak, maka untuk mencari nilai maksimumnya harus mengunjungi seluruh elemen array.
Asumsi : maks = -9999 (nilai maksimum sementara) A[1] > maks? Ya A[2] >maks? Tidak A[3] > maks? Ya A[4] > maks? Ya A[5] >maks? Ya A[6] > maks? tidak A[7] > maks? tidak A[8] >maks? Tidak maks A[1] (maks=158) maks tidak berubah maks A[3] (maks=162) maks A[4] (maks=169) maks A[5] (maks=172) maks tidak berubah maks tidak berubah maks tidak berubah
(proses pembandingan selesai) Didapat : maks = 172 (nilai maksimum array yang ditemukan)
ALGORITMA : Maks -9999 {nilai maksimum sementara} For i 1 to N do If A[i] > maks then Maks A[i] endif endfor Write(maks)
Asumsi : maks = A[1] (nilai maksimum sementara, maks=158) A[2] >maks? Tidak A[3] > maks? Ya A[4] > maks? Ya A[5] >maks? Ya A[6] > maks? tidak A[7] > maks? tidak A[8] >maks? Tidak maks tidak berubah maks A[3] (maks=162) maks A[4] (maks=169) maks A[5] (maks=172) maks tidak berubah maks tidak berubah maks tidak berubah
(proses pembandingan selesai) Didapat : maks = 172 (nilai maksimum array yang ditemukan)
ALGORITMA : Maks A[1] {nilai maksimum sementara} For i 2 to N do If A[i] > maks then Maks A[i] endif endfor Write(maks)
Latihan
Buatlah algoritma untuk mencari nilai terbesar dari data yang sudah tersimpan pada elemen array, dimana nilai yang tersimpan pada elemen array tersebut di baca dari inputan eksternal (keyboard). Konversikan algoritma di atas ke dalam Bahasa Pascal
158
157
162
169
172
155
170
163
A `
B `
160
180
Dari ilustrasi diatas, terlihat array tersebut terdiri dari 3 baris, dan 4 kolom, dan jumlah elemennya = 3 x 4 = 12 elemen, karena terdiri dari baris (row) dan kolom (column) maka arrray dua dimensi sering disebut MATRIX. Karena sudah menjadi satu buah array, maka nama array hanya satu buah, Misalnya A[3] [4] yang maksudnya adalah terdiri barisnya ada 3, dan kolomnya ada 4.
Array konstan untuk array dua dimensi (matriks) Cotoh: Array Dua Dimensi dengan matriks : 3 x 5, dengan tipe data integer dan char :
Mengisi Elemen Array Dua Dimensi (MATRIKS) Diketahui array dua dimensi : A : array[1..3, 1..4] of integer
Untuk keperluan praktis dan keragaman, indeks untuk baris dan kolom menggunakan variabel. Misal : i untuk baris dan J untuk kolom
Algoritmanya : I 2 J3 A[i, j] 17
Algoritmanya : N 1 I1 While (i<=3) J 1 While ( j<= 4) A[i, j] N N++ J++ Endwhile I++ Endwhile
Algoritmanya : X 1 NX J1 While (J <= 4) i 1 While ( i <= 3) A[i, j] N N+4 i++ Endwhile X++ NX J++ Endwhile
Mengisi Elemen Array Dua Dimensi, dengan Nilai yang diinput dari Keyboard :
Misalnya Array Dua Dimensi dengan Matrik 3 x 5. isikan nilai kedalam elemen matrik tersebut.
Algoritmanya : I1 While (i<=3) J 1 While ( j<= 5) Read(nilai) A[i, j] nilai J++ Endwhile I++ endwhile
Latihan 1:
diketahui matriks 3 x4 untuk array dua dimensi, Buatlah algoritma untuk melakukan inisialisasi nilai (nilai konstan) pada array dua dimensi tersebut dengan tipe data integer. Dan cetak/tampilkanlah nilai dari masing-masing elemen dari matriks tersebut di atas. Transformasikanlah Algoritma di atas ke dalam bahasa pemrogaram PASCAL.
Latihan 2:
diketahui matriks 3 x4 untuk array dua dimensi, Buatlah algoritma dengan menginputkan nilai dari inputan eksternal (keyboard) ke dalam masing elemen matriks di atas dengan tipe data integer. Dan cetak/tampilkanlah nilai dari masingmasing elemen dari matriks tersebut. Transformasikanlah Algoritma di atas ke dalam bahasa pemrogaram PASCAL.
Algoritmanya : For i=1 to i<= 3 do For j=1 to j <=4 do B[i,j] A[i,j] Endfor Endfor
MENGHITUNG TOTAL ISI ARRAY DUA DIMENSI Algoritmanya : TOT 0 I1 While (i<=3) do J1 While (J <= 4) do TOT TOT + A[i,j] J++ Endwhile I++ Endwhile Write (TOT )
Algoritmanya : I 1 While (i <= 3 ) do J 1 While ( J <= 4 ) do C[i,j] A[i,j] + B[i,j] J++ Endwhile I++ Endwhile
Catatan : Syarat dua buah matriks dapat dikalikan adalah : Jumlah kolom matriks ke 1 harus sama dengan jumlah baris matriks ke 2. Sedangkan hasilnya adalah matriks ke 3, yaitu jumlah baris matriks ke 3 (matriks hasil) sama dengan jumlah baris matriks ke 1, dan jumlah kolomnya (matriks 3) sama dengan jumlah kolom matriks ke 2.
Secara umum 8 persamaan di atas, dapat ditulis sebagai berikut : C[i,j] = (A[i,k] * b[k,j] ) Dimana : K dipakai untuk : COL pada array A dan ROW pada array B, dan untuk suatu nilai i dan j, nilai k bergerak 1 sd. 3
Latihan 1:
diketahui matriks 3 x4 untuk array dua dimensi, Buatlah algoritma untuk menghitung nilai total dari matriks tersebut sedang nilai didapat dengan melakukan inisialisasi nilai (nilai konstan) pada array dua dimensi tersebut dengan tipe data integer. Dan cetak/tampilkanlah nilai total dari matriks di atas. Transformasikanlah Algoritma di atas ke dalam bahasa pemrogaram PASCAL.
Latihan 2:
diketahui matriks A=2 x3 dan matrisk B=3x4, Buatlah algoritma untuk menghitung hasil perkalian dua buah matriks. Sedang nilai dari dua buah matriks tersebut didapat dengan melakukan inisialisasi nilai (nilai konstan) pada dua matriks tersebut dengan tipe data integer. Dan cetak/tampilkanlah hasil perkalian dua matriks tersebut. Transformasikanlah Algoritma di atas ke dalam bahasa pemrogaram PASCAL.
TUGAS