RECORD (REKAMAN)
Pascal menyediakan suatu tipe data terstruktur yang disebut dengan Record. Record adalah tipe data terstruktur yang dapat menampung beberapa item data yang masing-masing dapat mempunyai tipe data yang berbeda-beda.
Masing-masing item data disebut dengan Field. Jadi Record terdiri dari kumpulan Filed yang dapat berbeda tipe. Biasanya suatu Record berisi beberapa Field untuk sebuah subyek tertentu. Misalnya Record Langganan dapat terdiri dari Field Kode Langganan, Nama Langganan, Alamat Langganan dan Besarnya Piutang.
Deklarasi Record
Bentuk umum deklarasi suatu variabel berjenis record adalah sbb : TYPE <nama_record> = RECORD
Nama_field_1 : jenis; Nama_field_2 : jenis; ………..
………..
nama_field_n : jenis; END;
Deklarasi tipe data Record diawali dengan kata cadangan Record diikuti oleh suatu daftar Field dan diakhiri dengan kata cadangan End.
Contoh : Type
Lgn = Record
Kode : Integer; Nama : String; Alamat : String; Piutang : Real; End;
Var
Langganan : Lgn;
Deklarasi variabel tipe data Record dapat juga dilakukan langsung dibagian deklarasi variabel sebagai berikut :
Var
Langganan : Record
Kode : Integer;
Nama : String;
Alamat : String;
Piutang : Real;
End;
Menggunakan Tipe Data Record
Pengenal_Record.Pengenal_Field := value;
Tipe data Record yang telah dideklarasikan sebelumnya, pengenal Record adalah Langganan dan Pengenal Field adalah Kode, Nama, Alamat dan Piutang. Bila Field Nama akan digunakan, Misalnya akan diisi dengan suatu nilai, maka dapat dituliskan :
Langganan.Nama := ‘Anto’; Contoh :
Memasukkan data record pelanggan uses wincrt;
Type
Lgn = Record
Kode : Integer; Nama : String; Alamat : String; Piutang : Real; End;
Var
Langganan : Lgn;
begin
langganan.kode:=123; langganan.nama:='Budi';
langganan.alamat:='Jl. Solo'; langganan.piutang:=10000;
writeln('Kode Pelanggan : ',langganan.kode); writeln('Nama Pelanggan : ',langganan.nama); writeln('ALamat : ',langganan.alamat);
writeln('Jumlah piutang : ',langganan.piutang:5:0);
end.
Memasukkan data pelanggan input dari keyboard uses wincrt;
Type
Lgn = Record
Kode : Integer; Nama : String; Alamat : String; Piutang : Real; End;
Var
Langganan : Lgn;
begin
writeln('Kode Pelanggan : ',langganan.kode); writeln('Nama Pelanggan : ',langganan.nama); writeln('ALamat : ',langganan.alamat);
writeln('Jumlah piutang : ',langganan.piutang:5:0);
end.
uses wincrt; Type
Hasil = Record
Jari_jari : Real; Keliling : Real; Luas : Real; End;
Var
Lingkaran : Hasil; Begin
Write('Jari Jari Lingkaran ?');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.
Output :
Jari Jari Lingkaran ? 10
Keliling Lingkaran = 62.83 Luas Lingkaran = 314.16
Statement With
Penggunaan Field didalam Record seperti contoh sebelumnya dapat menyebabkan statement menjadi panjang, sebagai berikut :
Lingkaran.Keliling := 2*Pi*Lingkaran.Jari-Jari
Akan lebih mudah dan lebih pendek bila pengenal Record tidak selalu harus ditulis, sehingga statement diatas dapat berbentuk :
Keliling := 2 * Pi * Jari-Jari
Hal ini dapat dilakukan dengan menggunakan statement With yang menyebutkan pengenal Recordnya sehingga penggunaan Field-field selanjutnya sudah tidak perlu menyebutkan pengenal Recordnya kembali.
Contoh :
uses wincrt; Type
Lgn = Record
Kode : Integer; Nama : String; Alamat : String; Piutang : Real; End;
Var
Langganan : Lgn;
begin
with langganan Do Begin
write('Kode Pelanggan : ');readln(kode); write('Nama Pelanggan : ');readln(nama); write('ALamat : ');readln(alamat); write('Jumlah piutang : ');readln(piutang); writeln;
writeln('Kode Pelanggan : ',kode); writeln('Nama Pelanggan : ',nama); writeln('ALamat : ',alamat);
writeln('Jumlah piutang : ',piutang:5:0); End; {akhir with}
end.
uses wincrt; Type
Hasil = Record
Jari_jari : Real; Keliling : Real; Luas : Real; End;
Var
Lingkaran : Hasil; Begin
With Lingkaran Do Begin
Write('Jari Jari Lingkaran ?');Readln(Jari_jari); Keliling := 2*Pi* Jari_jari;
Luas := Pi * SQR(Jari_jari); Writeln;
Writeln('Keliling Lingkaran =', Keliling:7:2); Writeln('Luas Lingkaran =', Luas:7:2);
End; End.
Tipe Data Record Dengan Field Tipe Record
Tipe data Record dapat juga mempunyai Field berupa tipe data Record yang lainnya. Misalnya item-item data berikut :
1. Nama Pegawai 2. Tanggal Masuk
a. Hari b. Bulan c. Tahun 3. Alamat Pegawai
a. Jalan
Item data ini dapat dideklarasikan dalam bentuk tipe data Record sebagai berikut :
uses wincrt;
GajiPeg = Record
GajiPokok,Tunjangan,Lembur : Real; End;
Pegawai = Record
Nama : String;
DataPegawai : Pegawai; TotalGaji : Real; Begin
{ Memasukkan Data}
DataPegawai.Nama :='Badu'; DataPegawai.TglMasuk.Hari :=15; DataPegawai.TglMasuk.Bulan :=3; DataPegawai.TglMasuk.Tahun :=1980;
DataPegawai.Gaji.Tunjangan :=25000; DataPegawai.Gaji.Lembur :=10000;
{Menampilkan Hasil}
With DataPegawai Do Begin
Writeln('Nama Pegawai :',Nama);
With TglMasuk Do
Writeln('Tanggal Masuk :',Hari : 2, '-',Bulan : 2,'-',Tahun : 4);
With Alamat Do Begin
Writeln('Alamat :', Jalan);
Writeln(' ',Kota); End;
With Gaji Do Begin
TotalGaji := GajiPokok+ Tunjangan + Lembur; Writeln;
Writeln('Gaji Pokok : Rp',GajiPokok:6:0); Writeln('Tunjangan : Rp',Tunjangan:6:0); Writeln('Lembur : Rp',Lembur :6:0); Writeln(' *** Total : Rp',TotalGaji:6:0); End;
End; End.
Output :
Nama Pegawai : Badu
Tanggal Masuk : 15-3-1980
Alamat : Gang Buntu 22
Yogyakarta
Gaji Pokok : 75000
Tunjangan : 25000
Lembur : 10000
*** Total : 110000
Pada program diatas terlihat bahwa data dimasukkan ke Field-Field di variabel tipe Record DataPegawai menggunakan cara Pengenal-Record.Pengenal-Field.
Sedangkan nilai-nilai data dari Record ditampilkan dengan menggunakan Statement With. uses wincrt;
Type
Tgl : 1..31; Bln : 1..12; Thn : word; End;
Lgn = Record
Kode : Integer; Nama : String; Alamat : String; TglMsk : Tgl;
Piutang : Real; End;
Var
Langganan : Lgn;
begin
with langganan Do Begin
write('Kode Pelanggan : ');readln(kode); write('Nama Pelanggan : ');readln(nama); write('ALamat : ');readln(alamat); write('Tanggal Masuk : ');readln(TglMsk.Tgl); write('Bulan Masuk : ');readln(TglMsk.Bln); write('Tahun Masuk : ');readln(TglMsk.Thn); write('Jumlah piutang : ');readln(piutang); writeln;
writeln('Kode Pelanggan : ',kode); writeln('Nama Pelanggan : ',nama); writeln('ALamat : ',alamat);
writeln('Tanggal Masuk :
',TglMsk.Tgl,'/',TglMsk.Bln,'/',TglMsk.Thn);
writeln('Jumlah piutang : ',piutang:5:0); End; {akhir with}
end.
ARRAY RECORD
Array record adalah variabel array yang elemen-elemennya berupa record. uses wincrt;
Type
Lgn = Record
Kode : Integer; Nama : String; Alamat : String; Piutang : Real; End;
Var
Langganan : array[1..10] of Lgn; i,jml:integer;
begin
for i:=1 to jml do Begin
write('Kode Pelanggan : ');readln(langganan[i].kode); write('Nama Pelanggan : ');readln(langganan[i].nama);
write('ALamat : ');readln(langganan[i].alamat); write('Jumlah piutang : ');readln(langganan[i].piutang);
writeln; end;
clrscr;
writeln('Data yang anda inputkan');writeln; for i:=1 to jml do
begin
writeln('Kode Pelanggan : ',langganan[i].kode); writeln('Nama Pelanggan : ',langganan[i].nama); writeln('ALamat : ',langganan[i].alamat);
writeln('Jumlah piutang : ',langganan[i].piutang:5:0); writeln;
end; end.
Contoh dengan menggunakan kalusa with : uses wincrt;
write('Berapa jml pelanggan : ');readln(jml);
writeln('Data yang anda inputkan');writeln; for i:=1 to jml do
begin
begin
writeln('Kode Pelanggan : ',kode); writeln('Nama Pelanggan : ',nama); writeln('ALamat : ',alamat);
writeln('Jumlah piutang : ',piutang:5:0); writeln;