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:
- dalam 1 kolom, tipe data yang diisikan pasti sama (misal NIM dideklarasikan sebagai data numeric (integer misalnya) maka semua NIM harus berupa data angka)
- 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 :
- dengan menggunakan operator/notasi titik
Syntax secara umum :
nama_variabel_record . nama_field
Contoh berikut adalah sah:
- readln(satu.nim); readln(satu.nama);
- satu.nama := ‘AMIKOM’;
- banyak[1]. nim := 5558;
- banyak[6].nama := ‘YOGYAKARTA’;
- dengan menggunakan statemen pembatas with … do
Syntax secara umum :
with nama_variabel do
begin
lakukan operasi terhadap field-field
-----
-----
end;
Contoh berikut adalah valid :
- with satu do readln(nama)
- 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;
- 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:
- 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.
- 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.
- Siapkan pertanyaan barangkali materi tentang record sebagaimana dijelaskan di atas masih belum jelas.
Kembali ke atas
|