fbpx

Algoritma dan Pemrogaman : Tipe Data Record

Definisi Record

Tipe data record merupakan tipe data terstruktur. Tipe data record digunakan untuk
menyimpan sejumlah data dengan nilai dengan tipe data yang berbeda dalam satu wadah.

Perbedaan record dan array, jika array semua elemennya harus bertipe sama, kalau record semua elemennya boleh bertipe berbeda antara satu sama lainnya.


Deklarasi Penulisan

Type
    pengenal=record
      namafield-1:type
      namafield-2:type
      ...
      namafield-n:type
    end

atau dapat juga dideklarasikan sebagai berikut

var
    pengenal=record
      namafield-1:type
      namafield-2:type
      ...
      namafield-n:type
    end

Contoh :

type 
  data_mahasiswa = record 
  nim : string[10]; 
  nama : string[25]; 
  alamat : string[20]; 
  nilai : longint; 
  end; 
var 
  mahasiswa : data_mahasiswa;

atau bisa juga langsung kita deklarasikan pada bagian var

var 
  mahasiswa : record 
  nim : string[10]; 
  nama : string[25]; 
  alamat : string[20]; 
  nilai : longint; 
  end;

Untuk mengakses elemen record kita menggunakan nama identifiernya diikuti dengan tanda titik (.). perhatikan contoh berikut ini:

type 
  struktur_mahasiswa = record 
  nim : string[10]; 
  nama : string[25]; 
  alamat : string[20]; 
  nilai : longint; 
  end; 
var 
  mahasiswa : struktur_mahasiswa; 
begin 
  mahasiswa.nim := โ€˜235121';
  mahasiswa.nama := โ€˜Milly Mamet'; 
  mahasiswa.alamat:= โ€˜Jl. Otista no 64c'; 
  mahasiswa.nilai:=98; 
  writeln(โ€˜NIM :โ€˜,mahasiswa.nim); 
  writeln(โ€˜Nama :',mahasiswa.nama); 
  writeln(โ€˜Alamat :',mahasiswa.alamat); 
  writeln(โ€˜Nilai :',mahasiswa.nilai); 
  readln; 
end.

Statement With

Statement with digunakan untuk menyingkat penulisan dalam membaca elemen record. Sintaks umumnya adalah with namarecord do. Potongan kode program di atas dapat kita ganti menjadi:

with mahasiswa do 
begin 
  nim := โ€˜235121'; 
  nama := โ€˜Milly Mamet'; 
  alamat:= โ€˜Jl. Otista no 64c'; 
  nilai:= 98; 
end;

Sehingga dengan menggunakan with maka kita tidak perlu untuk menuliskan nama record sebelum elemen recordnya.

Dalam contoh sebelumnya penggunan tipe data record hanya dapat menyimpan satu data saja. (satu data mahasiswa saja) . Untuk dapat menyimpan sejumlah data mahasiswa maka dapat digunakan array yang bertipe record. Untuk mengakses tiap data mahasiswa pada array data mahasiswa, kita bisa memanfaatkan indeks array seperti pada pelajaran array sebelumnya. Perhatikan contoh berikut ini:

type 
  data_mahasiswa = record 
  nim : string[10]; 
  nama : string[25]; 
  alamat : string[20]; 
  nilai : longint; 
  end;
var 
  mahasiswa : array[1..10] of data_mahasiswa; 
  i : integer; 
begin 
  for i:= 1 to 10 do 
    begin 
      writeln(โ€˜Input mahasiswa ke-โ€˜, i); 
      with mahasiswa[i] do  
        begin 
          write(โ€˜kode=โ€™);readln(nim); 
          write(โ€˜nama=โ€™);readln(nama); 
          write(โ€˜alamat=โ€™);readln(alamat);
          write(โ€˜nilai=โ€™);readln(nilai);
        end; 
    end; 
  for i:=1 to 10 do 
    begin 
      writeln(โ€˜Data Mahasiswa ke-โ€˜, i); 
      write(โ€˜kode=โ€™); 
      writeln(mahasiswa[i].nim); 
      write(โ€˜nama=โ€™); 
      writeln(mahasiswa[i].nama); 
      write(โ€˜alamat=โ€™); 
      writeln(mahasiswa[i].alamat); 
      write(โ€˜nilai=โ€™); 
      writeln(mahasiswa[i].nilai); 
    end; 
end.

Jika dalam suatu record terdapat beberapa field yang sama tipenya maka dapat kita gunakan array.
Contoh ada data barang yang mempunyai struktur:

  • Nama barang -> bertipe String
  • Jumlah unit barang ke 1 -> bertipe Byte
  • Jumlah unit barang ke 2 -> bertipe Byte
  • Jumlah unit barang ke 3 -> bertipe Byte

Maka deklarasi recordnya dapat kita nyatakan sebagai berikut:

type 
  data_brg = record 
  namaBrg : string[15]; 
  unitBrg : array[1..3] of byte; 
  end; 
var 
  Barang : array[1..10] of data_brg;

Untuk mengakses array unitBrg dalam record data_brg maka dapat kita gunakan indeks array seperti contoh berikut:

Barang[1].unitBrg[1] := 5;

Berikut adalah contoh listing lengkap program:

type 
  data_brg = record 
  namaBrg : string[15]; 
  unitBrg : array[1..3] of byte; 
  end; 
var 
  Barang : array[1..10] of data_brg; 
  i : integer; 
Begin 
  Barang[1].namaBrg := โ€˜Scannerโ€™; 
  Barang[1].unitBrg[1] := 4; 
  Barang[1].unitBrg[2] := 5; 
  Barang[1].unitBrg[3] := 3; 
  
  Barang[2].namaBrg := โ€˜Printerโ€™; 
  Barang[2].unitBrg[1] := 1; 
  Barang[2].unitBrg[2] := 2;
  Barang[2].unitBrg[3] := 4; 

  For i:=3 to 10 do 
    begin With barang[i] do 
      Begin 
        Writeln(โ€˜Barang ke-โ€˜, i); 
        Write(โ€˜nama=โ€™);Readln(namaBrg); 
        Write(โ€˜jumlah 1= โ€˜);Readln(unitBrg[1]); 
        Write(โ€˜jumlah 2= โ€˜);Readln(unitBrg[2]); 
        Write(โ€˜jumlah 3= โ€˜);Readln(unitBrg[3]); 
      End; 
    End; 
End.

Tipe record dapat menjadi elemen dari record lainnya. Sebuah record dapat memiliki elemen yang juga bertipe record.
Contoh: sebuah data pegawai mempunyai struktur sebagai berikut :

  • Nama pegawai -> string
  • Mulai masuk -> – Tgl
  • Bln
  • Thn
  • Alamat pegawai -> – Jalan
  • Kota
  • Nilai -> – Nilai pokok
  • Lembur
  • Tunjangan

Maka deklarasi record data pegawai tersebut dapat kita nyatakan sebagai berikut:

type 
  masuk = record 
  tgl : 1..31; 
  bln : 1..12; 
  thn : integer;
  end; 
  alamat = record 
  jalan : string[20]; 
  kota : string[10]; 
  end; 
  nilaipeg = record 
  pokok,tunjangan,lembur : real; 
  end; 
  pegawai = record 
  nama : string[20]; 
  tglmasuk : masuk; 
  almt : alamat; 
  nilai : nilaipeg; 
  end; 
var 
  datapegawai : array [1..10] of pegawai;

atau bisa juga kita deklarasikan secara langsung sebagai berikut:

type 
  pegawai = record 
  nama: string[20]; 
  tglmasuk: record 
  tgl : 1..31; 
  bln : 1..12; 
  thn : integer; 
  end; 
  alamat : record 
  jalan : string[20]; 
  kota : string[10]; 
  end; 
  nilaipeg : record 
  pokok,tunjangan,lembur : real;
  end; 
  end; 
var 
  datapegawai : array [1..100] of pegawai;

Untuk mengakses misalnya nilai pokok dari pegawai nomor 50. Maka caranya adalah seperti ini:

Datapegawai[50].nilaipeg.pokok := 5000000;

Untuk mengakses nama kota dari pegawai nomor 50 adalah sebagai berikut:

Datapegawai[50].alamat.kota := โ€˜Bekasiโ€™;

Materi Lengkap

Silakan baca juga beberapa artikel menarik kami tentang Array dan Record, daftar lengkapnya adalah sebagai berikut.


Tonton juga video pilihan dari kami berikut ini

Bagikan ke teman-teman Anda

Contact Us

How to whitelist website on AdBlocker?

How to whitelist website on AdBlocker?

  1. 1 Click on the AdBlock Plus icon on the top right corner of your browser
  2. 2 Click on "Enabled on this site" from the AdBlock Plus option
  3. 3 Refresh the page and start browsing the site
error: Content is protected !!
Up