ARRAY
1.
Definisi
Array adalahkoleksi data yang tipenyasama,
tersusundalambentukbarisan linier berurutan (sequence)
danjumlahelemenataudatanyatidakberubah (statis) sesuaidengandeklarasiawal.
Semuaelemen array diidentifikasidengansebuahnama (nama array) danuntuksetiapelemennyadiidentifikasi/dibedakandengansebuah
index.
2.
Deklarasi.
Bentukumumdeklarasi array adalah:
typetipe_array = array
[range_index] of ipe_data;
varvar_array : tipe_array;
(1.1)
Ataudapatlangsungdituliskansebagaiberikut:
varvar_array = array
[range_index] of tipe_data; (1.1)
var_arrayadalahnamavariabel array yang
dipakaiuntukmengidentifikasi array. Pemilihannamavariabel array
mengikutiaturanpemberiannamavariabelsecaraumum.
Range_indexadalahbatasan index yang
digunakanuntukmengidentifikasielemen array.Range_indexmenentukanjumlahelemen
array, yang jumlahnyatidakakanberubah (statis) mulaisaatawaldisediakan (program
dijalankan) hingga program selesaidijalankan. Misalnya range 0..9atau 1..10
atau –1..8 atau ‘A’..’J’ akanmenentukanjumlahelemen array sebanyak 10 buah.
Setiapelemen array
diidentifikasiolehsalahsatu index yang beradadalam range yang telahditentukan.
Penggunaan index yang beradadiluar range Index akanmengakibatkankesalah, Index
initidakharusberupabilanganpositif, tetapiharusberupabilanganbulatatau
data-data yang masukkategoritipe data ordinal (seluruhtipe data dasarselain
real dan double), sepertisemuavarian integer, char, booleanatautipe data
enumerasi yang dibuatsendirioleh user.
Tipe_dataadalahtipe data untukelemen
array.Tipe data elemen array tidakharusberupa integer, atautipe data dasar yang
lain, tetapidapatberupatipe data terstrukturseperti array.
Tentangpemilihan model deklarasi, model
deklarasidenganmembuatsebuahtipe array seperti model (1.1)
akanlebihjelasdanlebihringkas yang dapatdirasakansaatvariabel-variabelbertipe
array digunakansebagai parameter sebuahfungsiatauprosedur.
3.
OperasiPada Array
· OperasiMemasukkandanMengambilNilai
Bila array
sudahdideklarasikandansudahdiberisuatunama,
makadapatdimanfaatkansesuaifungsinyasebagaiobjek data.
Operasimemasukkannilaiadalahoperasiuntukmemasukkannilai data
kedalamelemen-elemen array.Biasanyahalinidilakukandenganoperasipenugasan
(assignment) denganobjek array terletaksebagaioperandisebelahkiritanda ‘:=’.
Sedangkanoperasimengambilnilaiadalahoperasiuntukmendapatkan/membacanilaidarisuatu
array.Hal dinidilakukanketikamenggunakan array sebagaioperan nada
suatuoperasiatausebagai parameter sebuahfungsi/prosedur.
· OperasiMengakses
Array
Operasimengaksessuatuobjek data
merupakannama yang lebihumumdaripadaoperasimemasukkannilaiataupunmembacanilai.
Jadi, operasimengakses array dapatberupamemasukkannilaiataumembacanilai
array.Operasiinidapatdilakukanpada array
secarakeseluruhanataupunpadasuatuelementertentu.
· MengaksesElemen
Array SecaraAcak/Random
Setiapelemen array dapatdiperlakukansecara
individual terlepasdarielemen-elemenlainnya.Misalnyadalamhalmemasukkan data,
nilai[7]
dapatdimasukkanlebihduludaripadaelemenlainnya.meskipunakhirnyasemuaelemen array
akandiakses, namuntidakaturan yang pastitentangurutanmengaksesnya. Kita
bisasajamengaksesnilai[5] tanpamengakseskomponen array lainnya.
· MengaksesElemen
Array SecaraSequensial (Berurutan)
Struktur array yang
elemen-elemennyatersusunsecaraberurutan,
memungkinkankitamengaksessebagianatauseluruhelemen array secaraberurutan.
Untukprosesmengunjungielemen array
(traversal of array) secaraberurutandapatdilakukandenganproses looping
(perulangan). Pada model-model diatas, elemen-elemen array
diaksessecaraberurutandenganselisihsatu index.Jadielemen ke-6 akandiaksessebelumatausesudahelemen
ke-5 ataupun ke-7. Pergeseran index dilakukandenganmenambahataumengurangi index
sebelumnyadengan 1. Kita jugadapatmembuat model yang
laindenganmengubahselisihindexnya. Misalkanmenjadi 2, 3,
atauberapasajasesuaikeperluan, asalkanselaluberadapada range index.
· Mengakses
Array SecaraKeseluruhan
Selainmengakseskomponen array,
kitajugadapatmengakses array secarakeseluruhan yang
akanmempengaruhisemuaelemennyasekaligus. Misalkan A dan B adalahduabuahvariabel
array yang tipenyasama, danjumlahelemennyajugasama, makadalam Pascal
dapatdilakukanoperasipenugasanA := B yang
berartimemasukkannilaidarisetiapelemen array B kesemuaelemen A pada Index-Index
yang bersesuaian.
4.
Array Multidimensi
Tipe data elemen array tidakharusberupatipe
data elementer, namunjugadapatberupatipe data terstruktur, misalnya
array.Sebagaicontoh, perhatikandeklarasiberikut :
VarMatrix:array[1..3,1..3]
of integer;
Bentukdeklarasimungkinsajadibuatuntukkasusdemikian,
tipenilai_ujianadalahberupa array denganduaelemenbertipe integer
untukmenyimpannilaiujian midterm danujianakhir.Sedangkanvariabelnilaiadalah
array dengansepuluhelemenbertipenilai_ujian, yang
digunakanuntukmenyimpannilaiujiandari 10 mahasiswa.Elemen-elemen array
nilaibertipe array integer.Walaupunterdapatduabuah array, tetapisetiapdeklarasi
array hanyadibatasidengnasebuah range Index saja.Jumlahelemen array nilaiadalah
10, walaupunsecarakeseluruhanbanyaknyabilangan yang dapatdisimpanadalah 20
buah.Array demikiandikenalsebagai array berdimensi 1.
5.
PenggunaanKonstantauntuk Batas Index Arrray
Deklarasikonstantaseringdigunakanuntukbatasbawahdanbatasataspada
range Index array. Setiap kali menggunakan array, kitapastiberharap agar ruang
yang kitasediakansesuaidengnabanyaknya data yang akandisimpan;
jangansampaiberlebihan, ataupunkekurangan.
Sering kali
kitaterpaksaharusmengubahbatas-batas range Index untukmenyesuaikanjumlah data.
Penggunaankonstantaakanmemudahkanbilaadakeperluanuntukmengubahbatas-batas range
Index array, yaitucukupmenggantinilaikonstantatersebut.
ContohPenggunaan Array pada Program berikut :
programdeterminan;
useswincrt;
var A : array[1..2,1..2] of integer;
j,k,D
: integer;
begin
For
j:=1 to 2 do
begin
write('Entrikanbaris',j,'matriks A : ');
readln(A[j,1] , A[j,2]);
end;
For
j:=1 to 2 do
begin
For k:=1 to 2 do write(A[j,k] : 5);
writeln;
end;
writeln;writeln;writeln;
D
:= A[1,1]*A[2,2] - A[1,2]*A[2,1];
writeln('Det(A)
= ',D);
end.
Program invers;
useswincrt;
label hitung;
var
mat,adj : array [1..5,1..5] of integer;
det,i,j : integer;
c:char;
begin
clrscr;
{ tampilanawalketeranganmatrik }
gotoxy(20,4);writeln('MatriksOrdo 2 x 2');
gotoxy(15,5);writeln('-------------------------');
gotoxy(15,7);writeln('1. Input data matrik');
gotoxy(15,8);writeln('2. Menentukan Adjoin
Matrik');
gotoxy(15,9);writeln('3.
Mencarideterminanmatriks');
gotoxy(15,10);writeln('4.
MencariInversmatriks');
readln;
if c = #13 then gotohitung;
{endtampilanawalketeranganmatrik}
{mulaiproses input}
hitung:
begin
clrscr;
writeln('Input MatrikOrdo 2x2');
writeln('-------------------------');
fori := 1 to 2 do begin
for j:= 1 to 2 do begin
write('matrikke',i,'',j,':
');readln(mat[i,j]);
end;
writeln;
end;
fori := 1 to 2 do begin
write('|');
for j := 1 to 2 do begin
write('',mat[i,j],'');
if j = 2 then write ('|');
end;
writeln;
end;
{endproses input matrik}
writeln;
writeln;
{mulai adjoin matrikdandeterminan}
writeln('Adjoin matrikOrdo 2x2');
writeln('-----------------------');
adj[1,1] := mat[2,2];
adj[1,2] := mat[1,2] * -1;
adj[2,1] := mat[2,1] * -1;
adj[2,2] := mat[1,1];
fori := 1 to 2 do begin
write('|');
for j := 1 to 2 do begin
write('',adj[i,j],'');
if j = 2 then write('|');
end;
writeln;
end;
writeln;
det := (mat[1,1] * mat [2,2]) - (mat[1,2] *
mat[2,1]);
write('Determinandarimatrikdiatasadalah');
writeln(det);
writeln;
{end of adjoin and determinan}
{mulaimenghitunginversmatrik}
writeln('InversMatrik');
writeln('----------------');
writeln;
fori := 1 to 2 do begin
write('|');
for j := 1 to 2 do begin
write('',adj[i,j]/det:3:2,'');
if j = 2 then write('|');
end;
writeln;writeln;writeln;
end;
{end of hitunginversmatrik}
end;
readln;
end.