Document - SI - STMIK EL RAHMA Tipe Data Record

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 = 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
:
Nama
:
Alamat :
Piutang :
End;
Var
Langganan : Lgn;

Integer;
String;
String;
Real;

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
Tiap-tiap komponen Field dari Record dapat dipergunakan dengan cara menuliskan :

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
writeln('Nama Pelanggan
writeln('ALamat
writeln('Jumlah piutang

:
:

:
:

',langganan.kode);
',langganan.nama);
',langganan.alamat);
',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
write('Kode Pelanggan
write('Nama Pelanggan
write('ALamat
write('Jumlah piutang
writeln;

:
:
:
:

');readln(langganan.kode);
');readln(langganan.nama);
');readln(langganan.alamat);
');readln(langganan.piutang);

writeln('Kode Pelanggan

writeln('Nama Pelanggan
writeln('ALamat
writeln('Jumlah piutang

:
:
:
:

',langganan.kode);
',langganan.nama);
',langganan.alamat);
',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 :
Program pada contoh sebelumnya untuk menghitung keliling dan luas lingkaran bila diubah
menggunakan statement With sebagai berikut :

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
write('Nama Pelanggan
write('ALamat
write('Jumlah piutang
writeln;

:
:
:
:

writeln('Kode Pelanggan
writeln('Nama Pelanggan
writeln('ALamat

writeln('Jumlah piutang
End; {akhir with}
end.

');readln(kode);
');readln(nama);
');readln(alamat);
');readln(piutang);
:
:
:
:

',kode);
',nama);
',alamat);
',piutang:5:0);

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.
Dengan statement With, maka satu blok statement berikutnya setelah statement With ini dapat
mempergunakan Fieldnya tanpa menyebutkan lagi pengenal Recordnya.

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
b. Kota
4. Gaji
a. Gaji Pokok
b. Tunjangan
c. Lembur
Item data ini dapat dideklarasikan dalam bentuk tipe data Record sebagai berikut :
uses wincrt;
Type
Tgl = Record
Hari : 1..31;
Bulan : 1..12;
Tahun
: Word;
End;
Almt = Record
Jalan : String;
Kota : String;
End;
GajiPeg = Record
GajiPokok,Tunjangan,Lembur : Real;
End;
Pegawai = Record
Nama : String;
TglMasuk : Tgl;
Alamat : Almt;
Gaji : GajiPeg;
End;
Var
DataPegawai : Pegawai;
TotalGaji
: Real;
Begin
{ Memasukkan Data}
DataPegawai.Nama
:='Badu';
DataPegawai.TglMasuk.Hari :=15;
DataPegawai.TglMasuk.Bulan :=3;
DataPegawai.TglMasuk.Tahun :=1980;
DataPegawai.Alamat.Jalan
:='Gang Buntu 22';
DataPegawai.Alamat.Kota
:='Yogyakarta';
DataPegawai.Gaji.GajiPokok :=75000;

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
Writeln('
End;

:', Jalan);
',Kota);

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
Tanggal Masuk
Alamat
Gaji Pokok
Tunjangan
Lembur
*** Total

: Badu
: 15-3-1980
: Gang Buntu 22
Yogyakarta
: 75000
: 25000
: 10000
: 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 = Record

Tgl
Bln
Thn

: 1..31;
: 1..12;
: 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
write('Nama Pelanggan
write('ALamat
write('Tanggal Masuk
write('Bulan Masuk
write('Tahun
Masuk
write('Jumlah piutang
writeln;

:
:
:
:
:
:
:

');readln(kode);
');readln(nama);
');readln(alamat);
');readln(TglMsk.Tgl);
');readln(TglMsk.Bln);
');readln(TglMsk.Thn);
');readln(piutang);

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
write('Berapa jml pelanggan : ');readln(jml);

:

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;
Type
Lgn = Record
Kode
: Integer;
Nama
: String;
Alamat : String;
Piutang : Real;
End;
Var
Langganan : array[1..10] of Lgn;
i,jml:integer;
begin
write('Berapa jml pelanggan : ');readln(jml);
for i:=1 to jml do
Begin
with langganan[i] do
begin
write('Kode Pelanggan : ');readln(kode);
write('Nama Pelanggan : ');readln(nama);
write('ALamat
: ');readln(alamat);
write('Jumlah piutang : ');readln(piutang);
writeln;
end;
end;
clrscr;
writeln('Data yang anda inputkan');writeln;
for i:=1 to jml do
begin
with langganan[i] do

begin
writeln('Kode Pelanggan
writeln('Nama Pelanggan
writeln('ALamat
writeln('Jumlah piutang
writeln;
end;
end;
end.

:
:
:
:

',kode);
',nama);
',alamat);
',piutang:5:0);