Pascal menyediakan suatu tipe data terstruktur
yang disebut dangan record. Dengan tipe data record, dapat dikumpulkan beberapa
item data yang masing-masing dapat mempunyai tipe data 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.
Deklarasi record
Diawali kata cadangan Record, lalu diikuti
daftar field dan diakhiri kata cadangan
end;
Syntax :
Type
Langganan = record
Kode
: integer;
Nama
: string[35];
Alamat : string[45];
Piutang : real;
End;
Var
Langganan : lgn;
(*--- program
utama ----*)
Begin
-----
-----
End.
Tiap komponen field dari record dapat digunakan dengan cara menuliskan :
Pengenal-record .
pengenal-field
Dari contoh di
atas, pengenal record adalah Langganan dan pengenal field adalah Kode, Nama,
Alamat, dan Piutang. Bila
field Nama akan digunakan, misalnya akan diisi dengan suatu nilai nama maka
dapat dituliskan :
Langganan.Nama := ’Avril Lavigne’;
Contoh
program:
type
data_pegawai = record
kd_peg : string[5];
nama : string[15];
alamat : string[20];
gaji : longint;
end;
var
pegawai
: data_pegawai;
atau
langsung di deklarasikan di variabel :
var
pegawai
: record
kd_peg : string[5];
nama : string[15];
alamat : string[20];
gaji : longint;
end;
Cara
menggunakan tiap field dari record untuk input, cetak dan proses adalah sebagai
berikut
:
Contoh
program:
program
contoh_record_sederhana;
uses
crt;
type
data_pegawai = record
kd_peg : string[5];
nama : string[15];
alamat : string[20];
gaji : longint;
end;
var
pegawai
: data_pegawai;
begin
clrscr;
write('Kode pegawai
=');readln(pegawai.kd_peg);
write('Nama pegawai =');readln(pegawai.nama);
write('Alamat pegawai
=');readln(pegawai.alamat);
write('Gaji pegawai =');readln(pegawai.gaji);
{cetak}
writeln('Kode pegawai :',pegawai.kd_peg);
writeln('Nama pegawai :',pegawai.nama);
writeln('Alamat pegawai :',pegawai.alamat);
writeln('Gaji pegawai :',pegawai.gaji);
readln;
end.
STATEMENT WITH
Akan lebih mudah dan lebih pendek bila
pengenal-record tidak selalu harus ditulis. 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
menggunakan statement With :
Program
Luas_Lingkaran_menggunakan _statement _record;
Uses crt;
Type
Hasil = record
Jari_jari : real;
Keliling :
real;
Luas : real;
End;
Var
Lingkaran : Hasil;
Begin
With Lingkaran do
Begin
Clrscr;
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;
Readln;
End.
Dengan statement with, maka satu blok statement berikutnya setelah
statement with ini dapat mempergunakan field tanpa menyebutkan lagi
pengenal-recordnya.
Contoh 2 :
Program
contoh_record_menggunakan_statemen_with;
uses crt;
type
data_pegawai = record
kd_peg : string[5];
nama : string[15];
alamat : string[20];
gaji : longint;
end;
var
pegawai
: data_pegawai;
begin
with pegawai do
begin
clrscr;
write('Kode pegawai =');readln(kd_peg);
write('Nama pegawai =');readln(nama);
write('Alamat pegawai =');readln(alamat);
write('Gaji pegawai =');readln(gaji);
{cetak}
writeln('Kode pegawai :',kd_peg);
writeln('Nama pegawai :',nama);
writeln('Alamat pegawai :',alamat);
writeln('Gaji pegawai :',gaji);
end;
readln;
end.
Berikut ini
adalah program menggunakan Prosedur dengan parameter array bertipe record.
Program Prosedur_dengan_parameter_array_bertipe_record;
Uses crt;-
Type nilai =
Record
nim : string[10];
nmmhsw: string[15];
Pas, cob, mat, rt : real;
End;
A = array[1..20] of
nilai;
Var
Ulang : boolean;
Procedure
TampilanMenu (var pil : integer);
Begin
Gotoxy(10,5); writeln(‘-----------------------------------------------------‘);
Gotoxy(10,6); writeln(‘ Menu Utama ‘);
Gotoxy(10,7);
writeln(‘---------------------------------------------------- ‘);
Gotoxy(10,8); writeln(‘ 1. Isi Data Nilai Mahasiswa ‘);
Gotoxy(10,9); writeln(‘ 2. Laporan Nilai Mahasiswa ‘);
Gotoxy(10,10); writeln(‘ 3. Selesai
‘);
Gotoxy(10,11);
writeln(‘---------------------------------------------------‘);
Gotoxy(10,12); writeln(‘ Pilih : ‘);
Gotoxy(10,13); writeln(‘---------------------------------------------------‘);
Gotoxy(25,12); readln(pil);
End;
Procedure
TampilanIsi;
Begin
Gotoxy(10,5);
writeln(‘-----------------------------------------------------‘);
Gotoxy(10,6);
writeln(‘ Isi Data Nilai
Mahasiswa ‘);
Gotoxy(10,7); writeln(‘----------------------------------------------------
‘);
Gotoxy(10,8); writeln(‘ Nim : ‘);
Gotoxy(10,9); writeln(‘ Nama Mahasiswa :
‘);
Gotoxy(10,10); writeln(‘ Nilai Pascal : ‘);
Gotoxy(10,10); writeln(‘ Nilai Cobol :
‘);
Gotoxy(10,10); writeln(‘ Nilai Matematika :
‘);
Gotoxy(10,10); writeln(‘ Rata-rata :
‘);
Gotoxy(10,11); writeln(‘---------------------------------------------------‘);
Gotoxy(10,12); writeln(‘ Isi Data lagi (Y/T) ‘);
Gotoxy(10,13);
writeln(‘---------------------------------------------------‘);
End;
Procedure IsiNilai(var m:A; i:integer);
Begin
With m[i] do
Begin
Gotoxy(30,8);readln(nim);
Gotoxy(30,9);readln(nmmhs);
Gotoxy(30,10);readln(pas);
Gotoxy(30,11);readln(cob);
Gotoxy(30,12);readln(mat);
rt := (pas+cob+mat)/3;
Gotoxy(30,13);writeln(rt:4:2);
End;
End;
Procedure
IsiDataNilai(var m:A; var k:integer);
Var lagi : char;
Begin
lagi :=’Y’; k:=0;
while upcase(lagi) = ’Y’ do
begin
clrscr; k:=k+1;
TampilanIsi;
IsiNilai(m,k);
Gotoxy(33,15);readln(lagi);
End;
End;
Procedure HeaderLaporan;
Begin
writeln(‘-----------------------------------------------------‘);
writeln(‘ Laporan Nilai Mahasiswa ‘);
writeln(‘----------------------------------------------------
‘);
writeln(‘No Nim Nama Mahasiswa Pascal Cobol
Matematika Rata’);
writeln(‘----------------------------------------------------
‘);
end;
Prosedur
Laporan(var M:A; n:integer);
Var
lagi : char;
l
: integer;
begin
writeln(’ ’,l:2,’
’,nim,nmmhs:20,’ ’,pas:4:2,
’ ’,cob:4:2,’ ’,
mat:4:2,’ ‘,rt:4:2);
if l mod 3=0 then
begin
writeln(‘----------------------------------------------------‘);
writeln(‘tekan enter -> lanjut ‘ );readln;
clrscr;
headerLaporan;
end;
end;
writeln(‘----------------------------------------------------‘);
writeln(‘ habis ‘);
readln;
end;
{program utama}
Var
Pilih : integer;
nl : A;
j : integer;
begin
ulang := true; j:=0;
while ulang do
clrscr;
TampilanMenu(pilih);
Case pilih of
1 : IsiDataNilai(nl,j);
2 : Laporan(nl,j);
3 : exit;
End; {case}
End; {while ulang}
End.
Tidak ada komentar:
Posting Komentar