Logo Design by FlamingText.com

Jumat, 20 April 2012

Browse » Home » » record berpariasi

record berpariasi

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

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
end.

hasilnya adalah





Advertisement below...!

Comments : Ada 0 komentar untuk record berpariasi

Posting Komentar

 
© Copyright 2011 : Punya Cerita