Pages

Senin, 29 April 2013

RECORD



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