REKAMAN (RECORD) Print
Pertemuan ke III

Link/anchor:


RECORD (REKAMAN)

Record adalah tipe terstruktur yang terdiri atas sejumlah elemen yang tipenya tidak harus sama.

Elemen di dalam suatu record disebut dengan istilah field (medan). Sebelumnya sudah dibicarakan struktur data yang juga memiliki sejumlah elemen yaitu array. Perbedaan utama dari keduanya adalah bahwa elemen dalam suatu array semuanya memiliki tipe yang sama sedang elemen-elemen di dalam rekaman tidak harus bertipe sama. Contoh : 

 type LARIK = array [1..100] of real;
var a : larik;

Dari deklarasi di atas berarti kita mendefinisikan suatu tipe data baru bernama LARIK yang merupakan array berisi data real dengan elemen maksimum yang dapat ditampung sebanyak 100 yang ditandai sebagai elemen ke-1, ke-2, ke-3 dan seterusnya. Salah satu variabel yang memiliki tipe LARIK adalah variabel A. Dengan demikian variabel A dapat menampung data maksimum sebanyak 100 dan data yang disimpan harus bertipe real.. Untuk memahami tipe data record perhatikan contoh tabel data mahasiswa di bawah ini.

NIM NAMA USIA JML_SAUDARA
5234 K Mustofa 26 2
5233 AS Anandya S 25 1
5127 Dina A 23 3
4006 Yadi 20 5

Bila kita perhatikan tabel di atas, kita peroleh gambaran:

    1. dalam 1 kolom, tipe data yang diisikan pasti sama (misal NIM dideklarasikan sebagai data numeric (integer misalnya) maka semua NIM harus berupa data angka)
    2. suatu obyek dapat dikenali secara tunggal menggunakan gabungan nilai data kolom-kolom dalam setiap barisnya. (misal : gabungan nilai NIM ‘5234’, NAMA ‘K. Mustofa’, USIA ‘26’ dan JML_SAUDARA ‘2’ mengacu pada suatu obyek yang tertentu yaitu seseorang)
  Di dalam konsep database, kolom dalam suatu tabel seperti di atas disebut sebagai atribut atau field. Sedang gabungan field-field dalam suatu baris disebut tuple atau record. Dengan deskripsi di atas, dapat dikatakan bahwa seorang mahasiswa dapat dinyatakan sebagai suatu record yang memiliki 4 data (elemen) yaitu field NIM, field NAMA, field USIA dan field JML_SAUDARA.    
Kembali ke atas

Bagaimanakan representasi record dalam PASCAL?

Record dalam bahasa pascal dapat dideklarasikan dengan cara (bentuk umum) sebagai berikut:

TYPE nama_pengenal_record = RECORD
nama_field1: type_field1;
nama_field2: type_field2;
nama_field3: type_field3;
:
:
nama_fieldn: type_fieldn;
END;

Dengan mengambil contoh data mahasiswa di atas, kita dapat memiliki deklarasi sebagai berikut:
 TYPE mhs = RECORD
nim : integer;
nama: string[30];
usia: byte;
jml_saudara: 0..15;
END;

Kembali ke atas

Bagaimana Menggunakan Tipe Data Record dan Mengakses Field-Field di dalamnya?

Kalau kita sudah memiliki deklarasi record seperti di atas, maka untuk menggunakannya di dalam program tentunya kita tinggal memesan variabel-variabel yang kita perlukan dengan perintah VAR. Perhatikan contoh berikut:

var satu : mhs;
banyak : array[1..20] of mhs;

Deklarasi / pemesanan variabel di atas berarti program memerlukan alokasi memori yang akan dipergunakan untuk menyimpan data bertipe mhs. Variabel "satu" dapat dipergunakan untuk menyimpan data satu mahasiswa, sedang variabel "banyak" dapat dipergunakan untuk menyimpan maksimum 20 data mahasiswa. Untuk mengakses data bertipe record kita tidak dapa melakukannya dengan satu langkah seperti halnya ketika kita mengakses suatu variabel sederhana. Kalau kita memiliki variabel p bertipe sederhana (integer, byte, word, char, real) maka untuk memberikan nilai kira dapat menggunakan operator assignment (:=) atau untuk membaca masukan dari user kita dapat melakukannya dengan perintah readln(p), tetapi dengan data/variabel bertipe record kita tidak dapat melakukannya sesederhana itu. Untuk mengakses fiel-field pada suatu variabel bertipe record dapat dilakukan dengan dua cara :

  1. dengan menggunakan operator/notasi titik

    Syntax secara umum :

    nama_variabel_record . nama_field

    Contoh berikut adalah sah:

    1. readln(satu.nim); readln(satu.nama);
    2. satu.nama := ‘AMIKOM’;
    3. banyak[1]. nim := 5558;
    4. banyak[6].nama := ‘YOGYAKARTA’;
  2. dengan menggunakan statemen pembatas with … do

    Syntax secara umum :

    with nama_variabel do
    begin
    lakukan operasi terhadap field-field
    -----
    -----
    end;
    Contoh berikut adalah valid :

    1. with satu do readln(nama)
    2. with satu do begin
      readln(nama);{sama artinya dengan readln (satu.nama)}
      readln(nim);
      readln(usia);
      jml_saudara := 5; {sama artinya dengan satu.jml_saudara := 5}
      nama:= ‘AKU’
      end;
    3. with banyak[5] do begin
      readln(usia);
      readln(nama);
      end;

Kembali ke atas

Contoh program :

Program contoh_rekaman;
uses crt;

type mhs = record
nim: string[8];
nama: string[30];
usia: byte;
jml_saudara: 0..20;
end;
var siswa : array[1..20] of mhs;
i, n : integer;
begin
clrscr;
write(‘Banyak data yang akan dimasukkan : ‘); readln(n);

{langkah pemasukan data}

for i:= 1 to n do
begin
clrscr;
writeln(‘Data ke : ‘,i);
with siswa[i] do
begin write(‘ NIM : ‘);readln(nim);
write(‘NAMA : ‘);readln(nama);
write(‘USIA : ‘);readln(usia);
write(‘SAUDARA : ‘);readln(jml_saudara);
end;
end;  

{penampilan data}

clrscr;
writeln(‘DATA YANG ANDA MASUKKAN ‘);
writeln;
for i:= 1 to n do
begin
write(siswa[i].nim:11);
write(siswa[i].nama:23);
write(siswa[i].usia:5);
write(siswa[i].jml_saudara:5);
writeln;
end;
readln;
end.


Kembali ke atas

Tugas:

  1. Modifikasilah program di atas sehingga data yang diolah bukan data mahasiswa tetapi adalah data barang di suatu toko. Informasi yang dapat anda masukkan adalah kode barang, nama barang, persediaan dan harga.
  2. Pelajarilah materi tentang TUMPUKAN (STACK). Sumber buku yang dapat anda baca adalah buku STRUKTUR DATA karangan Ir. Insap Santosa atau buku PEMROGRAMAN PASCAL TINGKAT LANJUT karangan Ir. Insap Santosa atau buku lain yang memuat penjelasan tentang materi tersebut. Siapkan bekal anda sebelum pertemuan/perkuliahan sehingga dapat menjawab pertanyaan-pertanyaan yang mungkin diberikan dan membantu anda.
  3. Siapkan pertanyaan barangkali materi tentang record sebagaimana dijelaskan di atas masih belum jelas.

Kembali ke atas