Rabu, 08 April 2015

Tipe ARRAY



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.