RECORD
What is Record? Record adalah sekumpulan elemen data yang memiliki tipe dan panjang data yang berbeda-beda tapi memiliki nama yang sama. Struct/Record merupakan koleksi satuan data yang heterogen, yaitu terdiri dari berbagai type: integer, string, char etc. Data item yang merupakan elemen record biasanya disebut dengan FIELD.
Record sering digunakan dalam program terutama yang berhubungan dengan file. Misalnya, sebuah record tentang data karyawan, yang terdiri dari nama, alamat, umur dan pekerjaan.
Deklarasi Record Type Name of record = record name of field (1) : type of field (1); name of field (2) : type of field (2); name of field (3) : type of field (3); : : : name of field (n) : type of field (n); end;
Contoh Program Record begin clrscr; write (’Masukkan tahun sekarang: ‘); readln (ts); writeln (’Isikan data anda dalam Form ini’); write (’NIM : ‘); readln (s.nim); write (’NAMA : ‘); readln (s.nama); write (’TAHUN LAHIR : ‘); readln (tl); umur := (ts-tl); write (’AGAMA : ‘); readln (s.agama); write (’NO.KTP : ‘); readln (s.ktp); writeln; writeln (’Berikut ini informasi yang anda berikan: ‘); writeln (’NIM : ‘, s.nim); writeln (’NAMA : ‘, s.nama); writeln (’Umur : ‘, umur); writeln (’AGAMA : ‘, s.agama); writeln (’NO.KTP : ‘, s.ktp); READLN; end. program rekord; uses crt; type TSiswa = record nim : string[8]; nama : string[25]; agama : string[10]; ktp : string[25]; end; var s : TSiswa; umur : integer; ts : integer; tl : integer;
iTab Template
Array dalam Record uses wincrt; lagi:='y'; type pegawai=record while lagi='y' do nik,nama:string; begin gaji:real; inc(n); status:char; writeln(' mengisi data pegawai ke,n); totalgaji:real; end; write(' masukan nik ==> ');readln(peg[n].nik); larikpeg=array[1..20] of pegawai; var write(' masukan nama ==> ');readln(peg[n].nama); peg:larikpeg; write(' gaji pokok ==> ');readln(peg[n].gaji); n,i,j:byte; lagi:char; write(' status ? <menikah=k, tidak=t> ');readln(peg[n].status); xx:pegawai; begin if peg[n].status='k' then peg[n].totalgaji:= peg[n].gaji+(0.2*peg[n].gaji) {mengisi Data Pegawai} Repeat clrscr;
Array dalam Record else peg[n].totalgaji:=peg[n].gaji+(0.1*peg[n].gaji); for i:=1 to n do writeln; writeln(i:4,peg[i].nik:9,peg[i].nama:12,' Rp',peg[i].gaji:10:2,' Rp',peg[i].totalgaji:10:2); write(' apakah akan mengisi lagi y/t? ');readln(lagi); writeln(' ======================================================= '); end; clrscr; {mengurutkan} writeln(' ':10,'Daftar gaji pegawai PT. Maju Terus'); writeln; writeln(' ========================================================= '); for i:=1 to n-1 do begin for j:=i+1 to n do writeln(' | no | nik | nama | gaji pokok | gaji bersih | '); begin
Array dalam Record if (peg[i].totalgaji<peg[j].totalgaji) then begin xx:=peg[i];peg[i]:=peg[j];peg[j]:=xx; end; end; end; writeln(' ':3,'Daftar gaji pegawai PT. Maju Terus Sesudah Diurutkan'); writeln(' ========================================================= '); writeln(' | no | nik | nama | gaji pokok | gaji bersih | '); for i:=1 to n do writeln(i:4,peg[i].nik:9,peg[i].nama:12,' Rp',peg[i].gaji:10:2,' Rp',peg[i].totalgaji:10:2); writeln(' ====================================================== '); writeln; write(' Apakah Ingin Menambah Data Karyawan lagi y/t? ');readln(lagi); until(lagi='t'); end.
Record dalam Array uses wincrt; while ((pilih='y') or (pilih='Y')) do type tb_brg=record kb:string; ke:=ke+1; nb:string; writeln; hb:string; writeln(' Masukan Jenis Barang ke ',ke,' : '); end; var writeln('====================================='); brg:array[1..10] of tb_brg; write('Masukan Kode Barang : ');readln(brg[ke].kb); a,b,ke:integer; tukar:tb_brg; write('Masukan Nama Barang : ');readln(brg[ke].nb); pilih:char; posisi:array[1..10] of integer; write('Masukan Harga Barang : ');readln(brg[ke].hb); begin pilih:='y';
Record dalam Array writeln('===================================='); writeln('no | Kode | Barang | Harga |'); writeln('============================================'); write('Tambah Barang yang Lain ? y/t: ');readln(pilih); end; writeln(a:6,'|',brg[a].kb:10,'|',brg[a].nb:12,'|',brg[a].hb:12,'|'); clrscr; for a:=1 to ke do begin writeln; writeln(' Tabel Barang '); end; writeln('--------------------------------------------'); end.