Tipe data
ini adalah tipe data yang tidak pasti atau berpariasi atau yang disebut record
berpariasi (variant record) dalam varian record dapat menggandung suatu field
yang berpariasi tergantung dari suatu kondisi
Dalam turbo pascal hanya terdiri dari sebuah field yang berpariasi saja bila didalam suatu variant record terdapat field yang tetap maka field yang berpariasi letaknya harus setelah field yang tetap diagram sintak untuk deklarasi varian record tampak sebagai berikut
Dalam turbo pascal hanya terdiri dari sebuah field yang berpariasi saja bila didalam suatu variant record terdapat field yang tetap maka field yang berpariasi letaknya harus setelah field yang tetap diagram sintak untuk deklarasi varian record tampak sebagai berikut
contoh
type
tipeBacaan
= (bukuTeks, majalah);
Bacaan
= Record
Kodeperpus : string[7]
TglBeli : string[8]
Penerbit : string[25]
Case
tipe : Tipebacaan Of
Majalah : (nomormajalah : string[10]);
BukuTeks:(pengarang
: string[25]; Edisi : byte)
End;
Var
algoritmanya
Pada contoh field yang berpariasi
dalam record tergantung dari suatu kondisi case, tipe field tag yang
dipergunakan adalah suatu tipe data skalar tipeBacaan yang mempunyai 2
konstanta yaitu BukuTeks dan majalah, Bila pengenal tipe bernilai majalah maka
field varian yang akan digunakan adalah nomorMajalah. Bila pengenal tipe
bernilai Bukuteks, maka field varian yang akan digunakan adalah pengarang dan
edisi, jadi field yang digunakan akan bervariasi tergantung dari suau kondisi.
(*PROGRAM VARIAN RECORD PADA
KARYAWAN*)
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('jumlah anak ? ');readln(anakM);
end;
if Upcase(jawab)='C' then
begin
status :=cerai;
write('jumlah anak ? '); readln(anakC);
write('menikah lagi (Y/T) ? '); readln(MenikahLagi);
end;
end; {with karyawan[I]}
end; {for I}
end; {masukanData}
procedure Tampilkanhasil ;
begin
clrscr;
writeln(' DAFTAR
KARYAWAN');
writeln;
writeln('...........................................................................................................');
writeln(' gaji status jumlah menikah');
writeln(' nama karyawan sebulan
S/M/C Anak
lagi');
writeln('...........................................................................................................');
for I:=1 to JumlahData 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; {end with karyawan[I]}
end; {for{I}
writeln('.........................................................');
end; {tampilkanHasil}
begin {modul Utama}
masukkandata;
tampilkanHasil;
readln
Comments : Ada 0 komentar untuk record berpariasi
Posting Komentar