MODUL 14
RECORD
I. PENDAHULUAN
Jika pada array komponen data harus memiliki tipe data yang sama, maka pada
record beberapa item data yang dikumpulkan dapat memiliki tipe data yang berbeda.
Masing masing item data disebut dengan FIELD. Jadi record terdiri dari kumpulan field
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.
II. DEKLARASI RECORD
Deklarasi tipe record diawali dengan kata cadangan RECORD dan diikuti oleh suatu
daftar field dan diakhiri dengan kata cadangan END.
Contoh 1 :
type
Lgn = record
Kode : integer;
Nama : string[35];
Alamat : string[45];
Piutang ; real;
End;
Var
Langganan : Lgn;
Deklarasi variable tipe data record dapat langsung dilakukan di bagian
deklarasi variable :
Var
Langganan : record
Kode : integer;
Nama : string[35];
Alamat : string[45];
Piutang ; real;
End;
III. MENGGUNAKAN TIPE DATA RECORD
Tiap tiap komponen field dari record dapat dipergunakan dengan cara menuliskan :
Pengenal-record.pengenal-field[.pengenal.field]
Dari contoh 1 bila field nama akan dipanggil, misalnya akan diisi dengan suatu nilai
nama maka dapat ditulis :
Langganan.Nama := ‘Yahya Ayyash’;
Pengenal field
Pengenal record
Contoh 2 :
Type
Hasil = record
JariJari : real;
Keliling : real;
Luas : real;
End;
Var
Lingkaran : Hasil;
Begin
Write(‘Jari-jari lingkaran ? ‘); readln(Lingkaran.JariJari);
Lingkaran.Keliling := 2*PI*Lingkaran.JariJari;
Lingkaran.Luas := PI*sqr(Lingkaran.JariJari);
Writeln;
Writeln('Keliling Lingkaran = ‘,Lingkaran.Keliling:7:2);
Writeln('Luas Lingkaran = ‘,Lingkaran.Luas:7:2);
End.
IV. STATEMEN WITH
Penggunaan field di dalam record seperti contoh 2 meneyebabkan statemen
menjdai panjang akan lebih mudah dan lebih pendek bila pengenal record tidak selalu
harus ditulis dengan menggunakan statemen With.
Contoh 3 ;
Type
Hasil = record
JariJari : real;
Keliling : real;
Luas : real;
End;
Var
Lingkaran : Hasil;
Begin
With Lingkaran Do
Begin
Write(‘Jari-jari lingkaran ? ‘); readln(JariJari);
Keliling := 2*PI*JariJari;
Luas := PI*sqr(JariJari);
Writeln;
Writeln(“Keliling Lingkaran = ‘,Keliling:7:2);
Writeln(“Luas Lingkaran = ‘,Luas:7:2);
End;
End.
V. 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
Contoh 4 :
Type
Tgl = Record
Hari : 1..31;
Bulan : 1..12;
Tahun : word;
End;
alm =record
Jalan : string[35];
Kota : string[25];
End;
GajiPeg = Record
GajiPokok, Tunjangan, Lembur : real;
End;
Pegawai = Record
Nama : string[40];
TglMasuk : Tgl;
Alamat : Almt;
Gaji : GajiPeg;
End;
Var
DataPegawai : Pegawai;
TotalGaji : Real;
Begin
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 := 1000000;
DataPegawai.Gaji.Tunjangan := 1000000;
DataPegawai.Gaji.Lembur := 500000;
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.
VI. RECORD BERVARIASI
Pada contoh 4 kita lihat field field pada record sudah tertentu dan pasti disebut
fixed record structure, kita juga dapat membuat sutu record yang mempunyai field
yang tidak pasti atau bervariasi disebut variant record.
Contoh 5 :
Uses crt;
Type
StatusMenikah = (Single, menikah, Cerai);
DataPribadi = record
Nama : string[20];
Gaji : real;
Case Status : StatusMenikah of
Single();
Menikah : (AnakM : 0..20);
Cerai : (AnakC : 0..20);
menikahLagi : Char)
end;
var
Karyawan : Array[1..20] of DataPribadi;
Jawab : Char;
JumlahData, I : Byte;
Procedure MasukkanData;
Begin
Clrscr;
Write(‘Jumlah Data ? ‘);readln(JumlahData);
For I := 1 to JumlahData Do
Begin
With Karyawan[I] Do
Begin
Writeln;
Write(‘ Nama Karyawan ? ‘);readln(Nama);
Write(‘ Gaji tiap Bulan ? ‘);readln(Gaji);
Write(“ status menikah (S/M/C) ? ‘);readln(Jawab);
If Upcase(Jawab)=’S’ then
Begin
Status := Single;
End;
If Upcase(Jawab)=’M’ then
Begin
Status := Menikah;
Write(“ Jmlah anak ? ‘);readln(AnakM);
End;
If Upcase(Jawab)=’C’ then
Begin
Status := Cerai;
Write(“ Jmlah anak ? ‘);readln(AnakC);
Write(“ Menikah lagi (Y/T) ? ‘);readln(MenikahLagi);
End;
End; {with karyawan[I]}
End; {for I }
End; {Masukkan data}
Procedure TampilkanHasil;
Begin
Clrscr;
Writeln(‘ D A F T A R K A R Y A W A N’);
Writeln(‘--------------------------------------------------------------------------------------------‘);
Writeln(‘ Gaji Status Jumlah Menikah’);
writeln(‘ Nama Karyawan Sebulan S/M/C Anak Lagi’);
writeln(‘----------------------------------------------------------------------------------------‘);
For I := 1 to JumlaData Do
Begin
With Karyawan[I] Do
Begin
Write(Nama:20, Gaji:10:2);
Case Status Of
Single : Writeln(‘ S’);
Menikah : writeln(“ M’,AnakM:11);
Cerai : writeln(‘ C’,AnakC:11,MenikahLagi:7);
End; {Case Status}
End; {With Karyawan[I]}
End; {For I }
Writeln(‘--------------------------------------------------------------------------------------‘);
End; {TampilkanHasil}
Begin {Modul utama}
MasukkanData;
TampilkanHasil;
End.
Tugas Mandiri:
Tulislah program untuk menampilkan sejumlah data pegawai yang terdiri dari Nomor pegawai,
nama pegawai, alamat, jabatan, gaji dan jenis kelamin. Banyaknya jumlah pegawai ditentukan
oleh pengguna.
==============
Referensi:
Jogiyanto, Konsep Dasar Pemrograman Bahasa Pascal, Andi Offset, Yogyakarta, 1993
  

Dasar Pemrograman materi kuliah

  • 1.
    MODUL 14 RECORD I. PENDAHULUAN Jikapada array komponen data harus memiliki tipe data yang sama, maka pada record beberapa item data yang dikumpulkan dapat memiliki tipe data yang berbeda. Masing masing item data disebut dengan FIELD. Jadi record terdiri dari kumpulan field 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. II. DEKLARASI RECORD Deklarasi tipe record diawali dengan kata cadangan RECORD dan diikuti oleh suatu daftar field dan diakhiri dengan kata cadangan END. Contoh 1 : type Lgn = record Kode : integer; Nama : string[35]; Alamat : string[45]; Piutang ; real; End; Var Langganan : Lgn; Deklarasi variable tipe data record dapat langsung dilakukan di bagian deklarasi variable : Var Langganan : record Kode : integer; Nama : string[35]; Alamat : string[45]; Piutang ; real;
  • 2.
    End; III. MENGGUNAKAN TIPEDATA RECORD Tiap tiap komponen field dari record dapat dipergunakan dengan cara menuliskan : Pengenal-record.pengenal-field[.pengenal.field] Dari contoh 1 bila field nama akan dipanggil, misalnya akan diisi dengan suatu nilai nama maka dapat ditulis : Langganan.Nama := ‘Yahya Ayyash’; Pengenal field Pengenal record Contoh 2 : Type Hasil = record JariJari : real; Keliling : real; Luas : real; End; Var Lingkaran : Hasil; Begin Write(‘Jari-jari lingkaran ? ‘); readln(Lingkaran.JariJari); Lingkaran.Keliling := 2*PI*Lingkaran.JariJari; Lingkaran.Luas := PI*sqr(Lingkaran.JariJari); Writeln; Writeln('Keliling Lingkaran = ‘,Lingkaran.Keliling:7:2); Writeln('Luas Lingkaran = ‘,Lingkaran.Luas:7:2); End.
  • 3.
    IV. STATEMEN WITH Penggunaanfield di dalam record seperti contoh 2 meneyebabkan statemen menjdai panjang akan lebih mudah dan lebih pendek bila pengenal record tidak selalu harus ditulis dengan menggunakan statemen With. Contoh 3 ; Type Hasil = record JariJari : real; Keliling : real; Luas : real; End; Var Lingkaran : Hasil; Begin With Lingkaran Do Begin Write(‘Jari-jari lingkaran ? ‘); readln(JariJari); Keliling := 2*PI*JariJari; Luas := PI*sqr(JariJari); Writeln; Writeln(“Keliling Lingkaran = ‘,Keliling:7:2); Writeln(“Luas Lingkaran = ‘,Luas:7:2); End; End. V. 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
  • 4.
    c. tahun 3. Alamatpegawai a. jalan b. kota 4. Gaji a. gaji pokok b. tunjangan c. lembur Contoh 4 : Type Tgl = Record Hari : 1..31; Bulan : 1..12; Tahun : word; End; alm =record Jalan : string[35]; Kota : string[25]; End; GajiPeg = Record GajiPokok, Tunjangan, Lembur : real; End; Pegawai = Record Nama : string[40]; TglMasuk : Tgl; Alamat : Almt; Gaji : GajiPeg; End; Var DataPegawai : Pegawai; TotalGaji : Real; Begin DataPegawai.Nama := ‘Badu’; DataPegawai.TglMasuk.Hari := 15;
  • 5.
    DataPegawai.TglMasuk.Bulan := 3; DataPegawai.TglMasuk.Tahun:= 1980’ DataPegawai.Alamat.Jalan := ‘gang Buntu 22’; DataPegawai.Alamat.Kota := ‘ Yogyakarta’; DataPegawai.Gaji.GajiPokok := 1000000; DataPegawai.Gaji.Tunjangan := 1000000; DataPegawai.Gaji.Lembur := 500000; 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.
  • 6.
    VI. RECORD BERVARIASI Padacontoh 4 kita lihat field field pada record sudah tertentu dan pasti disebut fixed record structure, kita juga dapat membuat sutu record yang mempunyai field yang tidak pasti atau bervariasi disebut variant record. Contoh 5 : Uses crt; Type StatusMenikah = (Single, menikah, Cerai); DataPribadi = record Nama : string[20]; Gaji : real; Case Status : StatusMenikah of Single(); Menikah : (AnakM : 0..20); Cerai : (AnakC : 0..20); menikahLagi : Char) end; var Karyawan : Array[1..20] of DataPribadi; Jawab : Char; JumlahData, I : Byte; Procedure MasukkanData; Begin Clrscr; Write(‘Jumlah Data ? ‘);readln(JumlahData); For I := 1 to JumlahData Do Begin With Karyawan[I] Do Begin Writeln; Write(‘ Nama Karyawan ? ‘);readln(Nama); Write(‘ Gaji tiap Bulan ? ‘);readln(Gaji); Write(“ status menikah (S/M/C) ? ‘);readln(Jawab);
  • 7.
    If Upcase(Jawab)=’S’ then Begin Status:= Single; End; If Upcase(Jawab)=’M’ then Begin Status := Menikah; Write(“ Jmlah anak ? ‘);readln(AnakM); End; If Upcase(Jawab)=’C’ then Begin Status := Cerai; Write(“ Jmlah anak ? ‘);readln(AnakC); Write(“ Menikah lagi (Y/T) ? ‘);readln(MenikahLagi); End; End; {with karyawan[I]} End; {for I } End; {Masukkan data} Procedure TampilkanHasil; Begin Clrscr; Writeln(‘ D A F T A R K A R Y A W A N’); Writeln(‘--------------------------------------------------------------------------------------------‘); Writeln(‘ Gaji Status Jumlah Menikah’); writeln(‘ Nama Karyawan Sebulan S/M/C Anak Lagi’); writeln(‘----------------------------------------------------------------------------------------‘); For I := 1 to JumlaData Do Begin With Karyawan[I] Do Begin
  • 8.
    Write(Nama:20, Gaji:10:2); Case StatusOf Single : Writeln(‘ S’); Menikah : writeln(“ M’,AnakM:11); Cerai : writeln(‘ C’,AnakC:11,MenikahLagi:7); End; {Case Status} End; {With Karyawan[I]} End; {For I } Writeln(‘--------------------------------------------------------------------------------------‘); End; {TampilkanHasil} Begin {Modul utama} MasukkanData; TampilkanHasil; End. Tugas Mandiri: Tulislah program untuk menampilkan sejumlah data pegawai yang terdiri dari Nomor pegawai, nama pegawai, alamat, jabatan, gaji dan jenis kelamin. Banyaknya jumlah pegawai ditentukan oleh pengguna. ============== Referensi: Jogiyanto, Konsep Dasar Pemrograman Bahasa Pascal, Andi Offset, Yogyakarta, 1993   