Rabu, 18 April 2018

Pengertian Array

Array adalah struktur data yang menyimpan sekumpulan elemen yang bertipe sama yang disimpan ke dalam variabel dengan nama yang sama, setiap elemen diakses langsung melalui indeksnya. Indeks array haruslah tipe data yang menyatakan keterurutan, misalnya integer atau karakter
Suatu array dapat dibedakan atas 2 (dua) bagian, yaitu
  • Array 1 (satu) Dimensi
  • Array Multidimensi (Array 2 dimensi)
1.1.   Array 1 (satu) Dimensi
Array berdimensi satu dapat dikatakan sebagai suatu daftar yang linier atau sebuah kolom. Bentuk deklarasi dari array jenis ini dalam bahasa Pascal adalah : VAR nama_array : ARRAY [index] OF jenis_elemen;
Contoh :
VAR x : ARRAY [1..10] OF integer;
atau    Type      Angka = Array[1..10] Of Integer ;
Var  x    : Angka;
1.2.   Deklarasi Array
Array yang akan dipergunakan harus di deklarasikan terlebih dahulu. Deklarasi dari Array diawali dengan kata cadangan Array diikuti oleh tipe indeks yang diletakkan diantara tanda “ [ ] ” diikuti lagi oleh kata cadangan of dan tipe arraynya.
Array dapat bertipe sederhana byte, word, integer, real, boolean, char, string dan tipe scalar atau subrange.
Contoh:
  1. Sebagai Peubah
Misalkan : X adalah array yang berukuran 100 buah elemen yang bertipe integer. Indeks array dimulai dari 1.
Var
X : array [ 1..100 ] of integer ;
  1. Sebagai Tipe Bentukan
Misalkan LarikInt didefinisikan sebagai nama sebuah tipe baru untuk array yang bertipe integer. Ukuran Array adalah 100 buah elemen, Kita bisa mendeklarasikan sebuah peubah yang bertipe LarikInt, misalnya peubah A
type LarikInt : array[1..100] of integer {nama tipe baru}
A : LarikInt {A adalah sebuah peubah Array integer dengan
100 elemen}
  1. Mendefinisikan ukuran array sebagai sebuah konstanta
Misalkan LarikInt dideklarasikan sebagai nama sebuah tipe bentukan untuk array yang bertipe integer. Ukuran maksimum array adalah 100 buah elemen. Ukuran maksimum array dinyatakan sebagai konstanta. Kemudian kita bisa mendeklarasikan sebuah peubah yang bertipe LarikInt, misalnya peubah A.
Const Nmaks = 100 {ukuran maksimum elemen array}
Type LarikInt : array[1..Nmaks] of integer
A : LarikInt {A adalah sebuah peubah array integer dengan 100
elemen}
  1. Deklarasi konstanta array
Array tidak hanya dapat berupa suatu variable yang dideklarasikan di bagian deklarasi variable, tetapi juga dapat berupa suatu konstanta yang dideklarasikan dibagian deklarasi konstanta.
Contoh program :
Const
X : array [1..5] of integer = (5, 23, 264, 8, 10) ;
Var
I : word ;
Begin
For I : = 1 to 5 do
Writeln (‘Nilai konstanta larik ke ‘, I, ‘=’, X[I]) ;
Output program :
Nilai Konstanta larik ke 1 = 5
Nilai Konstanta larik ke 2 = 23
Nilai Konstanta larik ke 3 = 264
Nilai Konstanta larik ke 4 = 8
Nilai Konstanta larik ke 5 = 10
1.3.   Cara Mengacu Elemen Array
Elemen array diakses melalui indeksnya. Nilai indeks harus terdefinisi. Dengan mengacu pada array yang sudah dideklarasikan sebelum ini, berikut diberikan contoh cara mengacu elemen array adalah :
  • A[5]                       {mengacu elemen kelima dari array A}
  • NamaMhs[4]           {mengacu elemen keempat dari array NamaMhs}
Contoh memanipulasi atau menggunakan elemen array :
  • X[3]       10                     {mengisi elemen ketiga dari array A dengan
nilai 10}
  • NamaKry[i]      ‘Ichal’       {mengisi elemen   ke-i   dari array NamaKry
dengan string ‘Ichal’
1.4.     Pemrosesan Array
Elemen array tersusun secara beruntun. Karena itu, elemennya diproses secara beruntun melalui indeksnya yang terurut. Pemrosesan beruntun pada array adalah pemrosesan yang dimulai dari elemen pertama array, berturut-turut pada elemen berikutnya, sampai elemen terkahir dicapai, yaitu elemen dengan indeks terbesar.
Contoh Algoritma Pemrosesan Array
PROGRAM PemrosesanArray
DEKLARASI
const Nmaks = 100
type LarikInt : Array [1..Nmaks] of integer
A : LarikInt
I : integer
ALGORITMA :
inisialisasi
i   1     {mulai dari elemen pertama}
while i ≤ Nmaks do
pemrosesan terhadap A[i]
i     i + 1 {tinjau elemen berikutnya}
endwhile
{i ≥ Nmaks}
1.4.1.          Proses manipulasi pada array
Data yang hendak diproses sudah disimpan di dalam array dapat kita memanipulasi data tersebut.
Contoh 1 (mencari nilai maksimun):
Misal terdapat 10 bilangan integer positif yang berbeda disimpan di dalam suatu array X. Tentukan bilangan yang terbesar dari 10 bilangan tersebut!
PROGRAM MAKSIMUN
DEKLARASI
X : ARRAY [1..10] Of integer
I,J,MAKS : integer
ALGORITMA
FOR I := 1 TO 10 DO
READ(B[I})
MAKS := B[1]
FOR J := 2 TO 10 DO
IF MAKS <= B[J] THEN MAKS := B[I};
WRITE (MAKS);
END FOR
Contoh 2 (menghitung nilai rata-rata):
Dari soal contoh 1 di atas, buat algoritma menghitung rata-rata dari 10 bilangan tersebut.
PROGRAM RATA_RATA
DEKLARASI
TYPE INDEKS = 1..10
A : Array [INDEKS] Of integer
I : Integer
Jumlah : integer
Rerata : Real
ALGORITMA
Total := 0
FOR   I := 1 TO 10 DO
READ (A[I])
Jumlah := Jumlah + A[I]
End For
Rerata := Jumlah / 10;
Write (Rerata);
  1. Array 2 (dua) Dimensi
Di dalam pascal Array dapat berdimensi lebih dari satu yang disebut dengan array dimensi banyak (Multidimensional array), disini akan dibahas array 2 (dua) dimensi saja. Array 2 dimensi dapat mewakili suatu bentuk tabel atau matrik yaitu indeks pertama menunjukkan baris dan indeks ke dua menunjukkan kolom dari tabel atau matrik.
2.1. Pengertian Array 2 (dua) dimensi/Matriks
Matriks adalah struktur penyimpanan data di dalam memori utama yang setiap individu elemennya diacu dengan menggunakan dua buah indeks (yang biasanya dikonotasikan dengan indeks baris dan indeks kolom.
(Gambar 2.1)
2.2.   Pendeklarasian Matriks
Sebelum matriks digunakan untuk menyimpan data, terlebih dahulu matriks harus dideklarasikan. Mendeklarasikan matriks artinya menentukan nama matriks, tipe data, dan ukurannya. Pendeklarasian mtriks di dalam teks algoritma ditulis di dalam bagian Deklarasi. Kata kunci yang dipakai untuk matriks tetap menggunakan kata array.
Ada beberapa cara pendeklarasian matriks :
  1. Sebagai nama peubah
DEKLARASI
MAT : Array [1..4, 1..5] of integer
  1. Sebagai tipe
DEKLARASI
Type MAT : Array[1..4, 1..5] of integer
M : MAT {M adalah nama matriks yang bertipe MAT}
  1. Mendefinisikan ukuran maksimun matriks sebagai sebuah konstanta
DEKLARASI
Const NBarMaks = 10     {jumlah elemen baris maksimun}
Const NKolMaks = 10     {jumlah elemen kolom maksimun}
M : Array [1..NBarMaks, 1..NKolMaks] of integer
Untuk mengetahui cara mendeklarasikan dari penggunaan aray dua dimensi dapat dilihat pada program dibawah ini .
Contoh Program:
Program Deklarasi_Array_Dua_Dimensi;
Uses Crt;
Var
Tabel : Array[1..4,1..5] of Integer;
i,j : Integer;
Begin
ClrScr;
Tabel[1,1]:=4;
Tabel[1,2]:=5;
Tabel[1,3]:=3;
Tabel[1,4]:=1;
Tabel[1,5]:=2;
Tabel[2,1]:=6;
Tabel[2,2]:=3;
Tabel[2,3]:=4;
Tabel[2,4]:=5;
Tabel[2,5]:=6;
Tabel[3,1]:=3;
Tabel[3,2]:=2;
Tabel[3,3]:=4;
Tabel[3,4]:=4;
Tabel[3,5]:=1;
Tabel[4,1]:=6;
Tabel[4,2]:=6;
Tabel[4,3]:=2;
Tabel[4,4]:=4;
Tabel[4,5]:=5;
For i := 1 to 10 Do
Begin
For J:= 1 to 2 Do
Begin
Writeln(‘Elemen ‘,i,’,’,j,’= ‘,tabel[i,j]);
End;
End;
Readln;
2.3.   Pemrosesan Matriks
Algoritma pemrosesan matriks pada umumnya adalah memanipulasi elemen-elemen matriks. Pemrosesan matriks adalah proses beruntun (sekuential). Setiap elemen matriks “dikunjungi” (tranversal) lalu dilakukan aksi terhadap elemen tersebut.
DEKLARASI
Const NBarisMaks = 10   {Jumlah baris maksimun}
Const NKolomMaks = 10   {jumlah kolom maksimun}
Type MatriksInt : Array [1..NBarisMaks, 1..NKolomMaks] of integer
Deklarasi matriks digunakan didalam bab ini karena secara logik elemen matriks disusun dalam susunan baris dan kolom, maka pemrosesan matriks dilakukan perbaris dan perkolom. Karena ada 2 (dua) buah indeks, maka kita harus memutuskan indeks mana yang “nilainya tetap” selama indeks yang lain “dijalankan” . Cara pemrosesan yang umum adalah menelusuri matriks baris per baris, yang pada setiap baris melakukan proses terhadap elemen pada setiap kolomnya (pemrosesan “per baris-per kolom”). Kerena ada dua indeks, maka algoritma pemrosesan matriks umumnya kalang bersarang (nested loop), satu kalang untuk tiap indeks. Kalang terluar digunakan untuk memproses baris, sedangkan kalang terdalam untuk memproses kolom – kolom pada baris yang sedang diacu.
Contoh : Mengunjungi elemen-elemen matriks
Tinjaulah matrisk M [1..4, 1..5] dibawah ini, dengan i adalah indeks baris dan i adalah indeks kolom.
Algoritma pemrosesan baris “per baris – per kolom” :
Untuk setiap baris i = 1, 2, 3, 4 lakukan :
Untuk setiap kolom j = 1,2,3,4,5 lakukan :
Proses M[i,j]
Hasil pemrosesan :
i = 1 elemen yang diproses berturut-turut : 10, 6, 4, 23, 20
i = 2 elemen yang diproses berturut-turut : 12, 14, 21, 11, 46
i = 3 elemen yang diproses berturut-turut : 8, 22, 36, 30, 13
i = 4 elemen yang diproses berturut-turut : 15, 27, 21, 27, 2
skema umum pemrosesan matriks dengan gaya per baris – per kolom dinyatakan dengan pseudo-code algoritma berikut:
PROGRAM PROSES MATRIKS
DEKLARASI
Type MatriksInt : Array [1..4, 1..5] of integer
M : MatriksInt
Nbar, Nkol, i, j : integer
ALGORITMA
Read(Nbar,Nkol)
Read(M[i,j])
For i        1 to Nbar do
For j       1 toNkol do
Proses(M[i,j])
Endfor
Endfor
Adakalanya kita memerlukan pemrosesan matriks kolom per kolom yang pada setiap kolom kita memproses barisnya (pemrosesan “per kolom – per baris”). Kalang terluar digunakan untuk memproses kolom, sedangkan kalang terdalam untuk memproses elemen-elemen pada baris yang sedang diacu.
Algoritma pemrosesan baris “per kolom – per baris”
Untuk setiap kolom j = 1,2,3,4,5 lakukan:
Untuk setiap baris i = 1, 2, 3,4 lakukan:
Proses M[I,j]
Hasil penelusuran:
j = 1, elemen yang diproses berturut-turut: 10, 12, 8, 15
j = 2, elemen yang diproses berturut-turut: 6, 14, 22, 27
j = 3, elemen yang diproses berturut-turut: 4, 21, 36, 21
j = 4, elemen yang diproses berturut-turut: 23, 11, 30, 27
j = 5, elemen yang diproses berturut-turut: 20, 46, 13, 2
skema umum pemrosesan matriks dengan gaya per kolom – per baris dinyatakan dengan pseudo-code algoritma berikut:
PROGRAM PROSES MATRIKS
DEKLARASI
Type MatriksInt : Array [1..4, 1..5] of integer
M : MatriksInt
Nbar, Nkol, i, j : integer
ALGORITMA
Read(Nbar,Nkol)
Read(M[i,j])
For j        1 to Nkol do
For i       1 toNbar do
Proses(M[i,j])
Endfor
Endfor
2.4.   Penjumlahan Dua Buah Matriks
Penjumlahan dua buah matriks A dan B akan menghasilkan matriks C, atau A + B = C, hanya dapat dilakukan bila ukuran matriks A dan ukuran matriks B sama dan kedua matriks sudah terdefinisi nilai-nilainya. Matriks C akan berukuran sama dengan matriks A dan B.
Penjumlahan matriks A dan B dapat didefinisikan sebagai berikut :
C[i,j] = A[i,j] + B[i,j] untuk semua i dan j
Matriks AMatriks BMatriks C
25196511116
3412+1117=41519
8101441520122534
Algoritma penjumlahan dua buah matriks:
PROGRAM PENJUMLAHANDUAMATRIKS
DEKLARASI
A,B,C : Array [1..10, 1..10] of integer
Nbar, Nkol,i, j : integer
ALGORITMA
READ (A[i,j], B[i,j])
For I       1 to Nbar do
For j       1 to Nkol do
C[i,j]      A[i,j] + B[i,j]
Endfor
Endfor
Contoh menjumlahkan baris dan kolom matriks:
Asumsikan ukuran matriks tidak melebihi NbarisMaks – 1 dan NkolomMaks -1. Jumlahkan elemen-elemen pada setiap baris dan setiap kolom. Hasil penjumlahan disimpan pada kolom tambahan dan baris tambahan. Jadi, hasil penjumlahan suatu baris disimpan pada kolom paling kanan (Nkol + 1), dan hasil penjumlahan suatu kolom disimpan pada baris paling bawah (Nbar + 1).
Contoh di bawah ini memperlihatkan hasil penjumlahan setiap baris dan setiap kolom pada matriks di bawah ini disimpan pada elemen yang diarsir.
12345
1109112151
28131224
312200133
4211471557
551561939
Algoritma penjumlahan seluruh elemen pada setiap baris dan kolom adalah sebagai berikut:
ALGORITMA PENJUMLAHANBARISDANKOLOM
DEKLARASI
X : Array [1..10, 1..10] of integer
i, j, Nbar, Nkol : integer
ALGORITMA
{penjumlahan baris}
For i ← 1 to Nbar do
X[i, Nkol + 1 ] ←0
For j ← 1 to Nkol do
X[i, Nkol + 1]    ← X[i, Nkol + 1] + X[i,j]
Endfor
Endfor
{penjumlahan kolom}
For j ← 1 to Nkol do
X[Nbar + 1, j] ← 0
For I ← 1 to Nbar do
X[Nbar + 1, j] ← X[Nbar + 1, j] + X[i,j]
Endfor
Endfor
2.5.   Perkalian Dua Buah Matriks
Perkalian dua buah matriks A dan B menghasilkan matriks C, yaitu C = A x B. Syarat perkalian matriks A dan matriks B adalah jumlah kolom matriks A harus sama dengan jumlah baris matriks B. Misalkan;
A[1..m, i..n] dan B[1..n, 1..p]
m adalah jumlah baris matriks A
n adalah jumlah kolom matriks A dan juga jumlah baris matriks B
p adalah jumlah kolom matriks B
Hasil perkalian A dan B menghasilkan matriks C[1..m, 1..p]
Algoritma perkalian matriks:
  1. Inisialisasi C[I,j] dengan0, untuk I = 1,2, …, m dan j = 1,2, …, p
  2. Untuk setiap baris i = 1, 2, …, m pada matriks A lakukan:
Untuk setiap kolom j = 1, 2 ,…, p pada matriks B lakukan:
Untuk setiap baris k = 1, 2, …, n pada matriks B lakukan:
C[i,j] = c[i,j] + A[i,k] * B[k,j]
Contoh perkalian matriks :
Pseudo Code Algoritma perkalian Matriks:
PROGRAM PERKALIANDUABUAHMATRIKS
DEKLARASI
A,B,C : Array [1..10, 1..10] of integer
i,j,k,m,n,p,Nbar,Nkol : integer
ALGORITMA
READ(Nbar, Nkol)
READ(A[i,j], B[i,j])
Nbar ← m
Nkol ← p
{inisialisasi seluruh elemen matriks C dengan 0}
For i ← 1 to Nbar do
For j ← 1 Nkol do
C[i,j] ← 0
Endfor
Endfor
{proses perkalian}
For i ← 1 to m do
For j ← 1 to p do
C[i,j] ← C[i,j] + A[i,k] * b[k,j]
Endfor
Endfor