ARRAY (LARIK) DAN RECORD (REKAMAN) DALAM PASCAL


  • Record
Sebuah record merupakan koleksi satuan data yang heterogen, yakni terdiri dari berbagai type. Satuan data tersebut sering disebut sebagai field dari record. Field dipanggil dengan  menggunakan namanya masing-masing. Suatu field dapat terdiri atas beberapa subfield. Sebuah record rekaman disusun oleh
beberapa field. Tiap field berisi data dari tipe dasar / bentukan tertentu. Record mempunyai kelebihan untuk menyimpan suatu sekumpulan elemen data yang berbeda-beda tipenya (di banding array). Contoh , sebuah record dengan empat buah field.
Deklarasi record
Type

Variable = record
…field = type data
…field = type data
…field = type data
End.
STATEMENT  “WITH”
Selain cara yang telah disebutkan diatas, untuk memproses suatu record dapat
digunakan statement WITH. Dengan statement ini penulisannya akan lebih sederhana. Bentuk Umum penulisan  statement WITH ini adalah : 
WITH  nama_record  DO  statement
Perhatikan deklarasi dibawah ini :  
TYPE  x = RECORD
   No : integer;
   Kode : char;
   Juml : integer;
   Harga : real;
   END;
 VAR  p,q : x;
Untuk membaca variabel p dan q di atas dengan memanfaatkan statement WITH bentuknya menjadi :  
WITH  p,q  DO read (no, kode, juml, harga);
Bandingkan jika digunakan cara sebelumnya :
Read(p.no, p.kode, p.juml,p.harga,q.no,q.kode,q.juml,q.harga);
Pernyataan seperti : 
Data.npm :=‘22297566’
Data.Nama:=‘Abdul Kadir’
Data.Fakultas:=‘Teknik’ 
Dapat diganti dengan :
WITH Data Do
Begin
npm :=‘22297566’
Nama:=‘Abdul Kadir’
Fakultas:=‘Teknik’
end;

Contoh program record sederhana:
Type
Hasil = record
Jari-jari = real;
Keliling = real;
Luas = real;
End.
Var
Lingkarang = hasil;
Begin
Write (jari-jari lingkaran?); real readln (lingkaran.jari-jari);
Lingkaran.keliling :=2 * Pi * lingkaran.jari-jari;
Lingkaran.luas := Pi * sqr (lingkaran jari-jari);
Writeln;
Writeln (‘keliling lingkaran =’, lingkaran.keliling:7:2);
Writeln (‘luas lingkaran =’, lingkaran luas :7:2);
End.

program record;
uses crt;
type

TSiswa = record
nim : string[8];
nama : string[25];
agama : string[10];
ktp : string[25];
end;
var

s : TSiswa;
umur,ts,tl : integer;
begin
clrscr;
write (’Masukkan tahun sekarang: ‘); readln (ts);
writeln (’Isikan data anda dalam Form ini’);
write (’NIM : ‘); readln (s.nim);
write (’NAMA : ‘); readln (s.nama);
write (’TAHUN LAHIR : ‘); readln (tl);
umur := (ts-tl);
write (’AGAMA : ‘);readln (s.agama);
write (’NO.KTP : ‘); readln (s.ktp);
writeln;
writeln (’Berikut ini informasi yang anda berikan: ‘);
writeln (’NIM : ‘, s.nim);
writeln (’NAMA : ‘, s.nama);
writeln (’Umur : ‘,umur);
writeln (’AGAMA : ‘, s.agama);
writeln (’NO.KTP : ‘, s.ktp);
READLN;
end.

  • Array (Larik)

Array adalah tipe data terstruktur yang terdiri dari sejumlah komponen-komponen yang mempunyai tipe sama. Komponen-komponen tersebut disebut sebagai komponen type, larik mempunyai jumlah komponen yang jumlahnya tetap. Banyaknya komponen dalam larik ditunjukkan oleh suatu index, dimana tiap komponen di array dapat diakses dengan menunjukkan nilai indexnya atau subskript. Array dapat bertipe data sederhana seperti byte, word, integer, real, bolean, char, string dan tipe data scalar atau subrange. Tipe larik mengartikan isi dari larik atau komponen- komponenya mempunyai nilai dengan tipe data tersebut.
Array didefinisikan sebagai suatu kumpulan dimana elemen-elemennya berjenis data sama. (homogeny) Suatu array dapat dibedakan atas 2 (dua) bagian, yaitu :
a.      Array Berdimensi Satu
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 Program :

Program Contoh_Array_Input; 
Uses Crt; 

Var 
Bilangan : array[1..50] of Integer; 
Begin 
ClrScr; 
Bilangan[1]:=3; 
Bilangan[2]:=29; 
Bilangan[3]:=30; 
Bilangan[4]:=31; 
Bilangan[5]:=23; 
Writeln('nilai varibel bilangan ke 3 =',Bilangan[3]); 
Readln; 
End.

Array tidak hanya dapat berupa suatu varibel yang dideklarasikan di bagian deklarasi variabel, tetapi dapat juga berupa konstanta (const). 

Contoh Program :
Program;
Uses Crt; 

Const 
Tetap : Array[1..4] of Integer=(7,10,21,20); 
Var 
i : Integer; 
Begin 
For i:= 1 to 4 Do 
Writeln('Nilai Konstan array ke ',i:2,' =',Tetap[i]); 
Readln; 
End.

b.      Array Multi Dimensi
Array dimensi dua ini dapat dianggap sebagai sebuah matriks yang jumlah kolomnya  lebih dari satu. Bentuk deklarasi :
VAR nama_array : ARRAY  [indeks_baris,indeks_kolom] OF jenis;
Di dalam pascal Array dapat berdimensi lebih dari satu yang disebut dengan array dimensi banyak (Multidimensional array), disini akan dibahas array 2 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.
Untuk mengetahui cara mendeklarasikan dari penggunaan aray dua dimensi dapat dilihat pada listing program dibawah ini.

Program_Deklarasi_Array_Dua_Dimensi; 

Uses Crt;
Var Tabel : Array[1..3,1..2] of Integer;
i,j : Integer;
Begin 
ClrScr; 
Tabel[1,1]:=1; 
Tabel[1,2]:=2; 
Tabel[2,1]:=3; 
Tabel[2,2]:=4; 
Tabel[3,1]:=5; 
Tabel[3,2]:=6; 
For I := 1 to 3 Do Begin For J:= 1 to 2 Do Begin Writeln('Elemen ',i,',',j,'= ',tabel[i,j]); 
End; 
End; 
Readln; 
End.

Contoh program Array dalam record:
Type barang= RECORD
nmbrg:string[20];
jmlbrg:array[1..3]of byte;
hrgbrg:real;
total:real;
end;
var  jual:barang;
tbarang, i:integer;
Begin
clrscr;
write(‘Nama Barang :’);readln(jual.nmbrg);
for i:=1to 3 do
begin
write(‘Jumlah barang ’,I,’ : ’);readln(jual.jmlbrg[i]);
tbarang:=tbarang+jual.jmlbrg[i];
end;
write(‘Harga barang  :’);readln(jual.hrgbrg);
jual.total:=tbarang*jual.hrgbrg;
writeln(‘Total Harga Barang = ‘, jual.total:10:2);
end.
Coba lihat sendiri perbedaan antara array tipe record dan array dalam record dari dua contoh program di atas !
Program Penjumlahan_matrik;
uses crt;
var
matrik1, matrik2 , hasil : array[1..3,1..2] of integer; 
i , j : integer;
begin
clrscr;
{ input matrik ke satu }
writeln(' Elemen matrik satu');
for i := 1 to 3 do
     begin
     for j := 1 to 2 do
          begin
          write('Elemen baris -',i,' kolom -',j,'= ');
          readln(matrik1[i,j]);
     end;
end;
{input matrik ke dua}
writeln('input elemen matrik dua');
for i:= 1 to 3 do
     begin
     for j:= 1 to 2 do
          begin
          write('Elemen baris -',i,' kolom -',j,'= ');
          readln(matrik2[i,j]);
    end;
end;
{proses penjumlahan tiap elemen}
for i := 1 to 3 do
     begin
     for j:= 1 to 2 do
          begin
          hasil[i,j]:=matrik1[i,j]+matrik2[i,j];
     end;
end;
{proses cetak hasil}
writeln(' ');
for i:= 1 to 3 do
    begin
    for j:= 1 to 2 do
         begin
write(matrik1[i,j]:4);
         end;
         writeln;
    end;
writeln('+');
for i:= 1 to 3 do
    begin
    for j:= 1 to 2 do
         begin
         write(matrik2[i,j]:4);
         end;
         writeln;
    end;
writeln('=');
for i:= 1 to 3 do
    begin
    for j:= 1 to 2 do
         begin
         write(hasil[i,j]:4);
         end;
         writeln;
    end;
readln;
end.



 Latihan
1.      Buatlah tiga jenis algoritma  untuk menentukan hasil perkalian dari dua buah matriks. Dengan ketentuan sebagai berikut :
        Silahkan tentukan sendiri ukuran dari dua buah matriks tersebut.
        Tentukanlah nilai dari dua buah matriks tersebut dengan menggunakan inisialisasi atau inputan dari keyboard.
        Tipe data ke dua matriks tersebut adalah integer.
        Konversikanlah tiga jenis algoritma di atas ke dalam bahasa pemrograman Pascal.
Konversilah ketiga jenis algoritma tersebut ke dalam bahasa pascal sehingga mendapatkan 1 buah program perkalian matriks.

2.      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.