Record (Rekaman)

advertisement
RECORD (REKAMAN)
Pascal menyediakan suatu tipe data terstruktur yang disebut
dengan Record.
Dengan tipe data Record, dapat dikumpulkan beberapa item data
yang masing-masing dapat mempunyai tipe data yang berbedabeda.
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
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
Tiap-tiap komponen Field dari Record dapat dipergunakan
dengan cara menuliskan :
Pengenal- Record.Pengenal- Field[.Pengenal-Field]
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’;
Pengenal Field
Pengenal Record
Contoh :
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 :
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 :
Type
Tgl = Record
Hari : 1..31;
Bulan : 1..12;
Tahun
: Word;
End;
Almt = Record
Jalan : String;
Kota : String;
End;
GajiPeg = Record
Gaji Pokok,Tunjangan,Lembur : Real;
End;
Pegawai = Record
Nama : String;
TglMasuk : Tgl;
Alamat : Almt;
Gaji : GajiPeg;
End;
Var
DataPegawai : Pegawai
Total Gaji
: 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
:=75.000;
DataPegawai.Gaji.Tunjangan
:=25.000;
DataPegawai.Gaji.Lembur
:=10.000;
{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
Total Gaji := 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’,Totsl:6:0);
End;
End;
End.
Output :
Nama Pegawai
: Badu
Tanggal Masuk
: 15-3-1980
Alamat
: Gang Buntu 22
Yogyakarta
Gaji Pokok
: 75.000
Tunjangan
: 25.000
Lembur
: 10.000
*** Total
: 110.000
Pada program diatas terlihat bahwa data dimasukkan ke FieldField
di variabel tipe Record DataPegawai menggunakan cara
Pengenal-Record.Pengenal-Field.
Sedangkan nilai-nilai data dari Record ditampilkan dengan
menggunakan Statement With.

Record Bervariasi
Tipe data Record yang telah dibahas merupakan struktur
Record yang pasti, yaitu Field-Field didalam Record sudah
tertentu dan pasti. Dapat juga dibuat suatu Record yang
mempunyai Field tidak pasti atau bervariasi disebut juga
dengan Record bervariasi (Variant Record). Dalam Variant
Record
dapat
mengandung
suatu
Field
yang
bervariasi
tergantung dari suatu kondisi. Didalam suatu variant Record
terdapat Field yang tetap, maka Field yang bervariasi letaknya
harus setelah Field yang tetap.
Contoh :
Type
TipeBacaan= (BukuTeks, Majalah);
Bacaan = Record;
KodePerpus : String;
TglBeli
Penerbit
: String;
: Sring;
Case Tipe : TipeBacaan of
Majalah : (NomorMajalah : String;
BukuTeks : (Pengarang : String;
Edisi
: Byte;
End;
Var
DataBacaan : Bacaan;
Pada contoh, Field yang bervariasi dalam record tergantung
dari suatu kondisi Case. Tipe Field Tag (Tag Field Type) yang
dipergunakan adalah suatu tipe data skalar TipeBacaan yang
mempunyai dua nilai konstanta, yaitu BukuTeks dan Majalah.
Bila pengenal tipe bernilai Majalah, maka Field variant yang
akan digunakan adalah NomorMajalah. Bila pengenal tipe
bernilai BukuTeks, maka Field Variant yang akan digunakan
adalah Pengarang dan Edisi. Jadi Field yang digunakan akan
bervariasi tergantung dari suatu kondisi.
Download