Record dapat
dikatakan sebagai suatu kumpulan data item
yang masing-masing mempunyai jenis data berbeda.
Data item yang
merupakan elemen record biasanya disebut dengan FIELD.
CARA MENDEKLARASIKAN RECORD
Bentuk umum
deklarasi suatu variabel berjenis record adalah sbb :
TYPE
identifier = RECORD
Nama_field_1
: jenis;
Nama_field_2
: jenis;
……………………..
……………………..
nama_field_n :
jenis;
END;
Contoh :
1. VAR nilai
: RECORD
Nilai_1
: integer;
Nilai_2
: integer;
END;
2. TYPE date = RECORD
Tanggal
: 1..31;
Bulan : 1…12;
Tahun : 1900..2000;
END;
VAR
event1,event2 : ARRAY [1..10] OF date;
3. TYPE
account = RECORD
cust_no :
integer;
cust_type :
char;
cust_balance :
real;
END;
VAR
customer : account;
MEMPROSES VARIABEL
BERJENIS RECORD
Perhatikan
deklarasi variabel berikut :
TYPE
nilai : RECORD
Nilai1
: real;
Nilai2
: real;
END;
VAR
x,y : nilai;
Untuk memproses
variabel x dan / atau y dilakukan dengan cara menyebutkan field designatornya,
yg terdiri dari atas :
Nama_record.nama_field
Pada deklarasi
diatas yang dimaksud dengan field designator-nya adalah :
x.nilai1
x.nilai2
y.nilai1
y.nilai2
Jadi jika ingin
membaca variabel x atau y atau keduanya, maka bentuk statement-nya adalah :
READ (x.nilai1, x.nilai2, y.nilai1,
y.nilai2);
Selanjutnya, misal
ingin dibuat program sederhana untuk menjumlahkan dua bilangan kompleks a dan b
yang hasilnya disimpan di c.
Secara aljabar
penjumlahan dua bilangan kompleks adalah sebagai berikut :
a = x1 + iy1
b = x2 + iy2 +
c = (x1 + x2 ) + I(y1 + y2)
Maka bentuk garis
besar programnya adalah sebagai berikut :
Program contoh ;
Type bk =
record
Bag_nyata : integer;
Bag_imajiner : integer;
End;
Var
a,b,c : bk;
Begin
Read (a.bag_nyata, a.bag_imajiner, b.bag_nyata, b.bag_imajiner);
c.bag_nyata := a.bag_nyata + b.bag_imajiner;
c.bag_imajiner := a.bag_imajiner + b.bag_imajiner;
writeln(c.bag_nyata,’ +’,’i’,c.bag_imajiner);
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);
CONTOH :
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;
Apabila di dalam pernyataan WITH
terdapat lebih dari satu record, haruslah pada kedua record tersebut tidak ada
field dengan nama yang sama. Sebagai contoh :
Type
BarangX=RECORD
Batu:integer;
Kayu:real;
END;
BarangY=RECORD
Batu:string[10];
Kayu:char;
END;
Var
brg_X:barangX;
brg_Y:barangY;
Karena kedua variabel record brg_X dan
brg_Y memiliki nama field yang sama, Jika misalnya kemudian dikenakan
pernyataan :
WITH brg_X, brg_Y
Do
Begin
writeln(batu);
writeln(kayu);
End;
dapat menyebabkan hasil tidak seperti
yang diharapkan.
Record
yang Bervariasi
Yaitu
suatu record dengan field yang bisa berubah pada saat program berjalan. Hal
yang perlu diperhatikan adalah bahwa
beberapa field yang berada dalam record tidak pernah muncul dalam serempak,
hanya akan ada satu field yang terpakai dalam satu saat.
Record
varian akan memberikan fasilitas untuk menentukan field yang diperlukan pada
saat program berjalan (RUN-TIME), berdasarkan keperluannya.
Bentuk umum Record Varian :
TYPE
namarecord = RECORD
Nama_field_1
: jenis;
Nama_field_2
: jenis;
……………………..
nama_field_n :
jenis;
Case
Tagfield:jenis Of
nama_tagfield :
(Nama_field:jenis);
nama_tagfield :
(Nama_field_1, Nama_field_2:jenis);
……………………..
nama_tagfield :
(Nama_field_n:jenis);
END;
Contoh :
Type status=(T,P,J);
gaji=RECORD
napeg :string[25];
nopeg :string[10];
bagian :string[15];
CASE stat :status OF
T:(gaji:integer);
P:(gajiperjam,jmlmax:integer);
J:(upahperjam,lembur:integer);
end;
Array
tipe record
type barang=RECORD
namabrg:string[20];
jmlbrg:byte;
hargabrg:real;
total:real;
end;
var jual:array
[1..10] of barang
i,j:integer;
tot1:real;
Begin
I:=1;
write(‘Nama barang
:’);readln(jual[i].nmbrg);
Repeat
write(‘Jumlah
barang :’);readln(jual[i].jmlbrg);
write(‘Harga
barang :’);readln(jual[i].hrgbrg);
jual[i].total:=jual[i].jmlbrg*
jual[i]. jual[i].hrg.brg;
inc (I);
write(‘Nama barang
:’);readln(jual[i].nmbrg);
until
(jual[i].nmbrg=‘0’) or (I=11);
dec(i);
clrscr;
writeln
(‘------------------------------------------------------------’);
writeln (‘No nama barang jumlah harga total’);
writeln (‘------------------------------------------------------------’);
for j:=1 to I do
begin
gotoxy(1,j+3);write
(j);
gotoxy(5,j+3);write(jual[i].nmbrg);
gotoxy(26,j+3);write(jual[i].jmlbrg:10);
gotoxy(37,j+3);write(jual[i].hrgbrg:10:2);
gotoxy(48,j+3);write(jual[i].total:10:2);
tot1:=tot1 +
jual[j].total ;
end;
writeln
(‘------------------------------------------------------------’);
writeln(‘ Total :’,tot1:10:2’);
writeln
(‘------------------------------------------------------------’);
end.
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 !
0 komentar:
Posting Komentar
Please Leave Your Comment :)