REKAMAN (RECORD)
Untuk merepresentasikan objek, dibuat tipe bentukan (user-defined type) yg merupakan gabungan dari beberapa tipe dasar(integer, real, boolean, character) dan tipe bentukan lainnya. Salah satu tipe bentukan terstruktur adalah record.
Sebuah rekaman disusun oleh beberapa field. Tiap field berisi data dari tipe dasar / bentukan tertentu. Record mempunyai kelebihan untuk menyimpan sekumpulan elemen data yang berbeda-beda tipenya.
Contoh , sebuah record dengan empat buah field.
|
|
|
|
Field 1 | Field 2 | Field 3 | Field 4 |
Cara pendeklarasian dari record adalah sbb:
- Mendefinisikan tipe dari record (jumlah field, jenis tipe data yang dipakai),
- Mendefinisikan variabel untuk dilakukan operasi.
BENTUK UMUM :
type nama_record = record
identifier_1 : tipe_data_1;
:
:
identifier_n : tipe_data_n;
end;
var
nama_variabel : nama_record;
Contoh :
type Data_mahasiswa = record
Nama : string;
Umur : integer;
Kota : String;
Kodepos : integer;
end;
Var
x : Data_mahasiswa; <------------ Penggunaan record menjadi variabel-variabel
Pengacuan tiap field pada record(record selector) pada contoh di atas adalah sbb :
x.Nama
x.Umur
x.Kota
x.Kodepos
Contoh Program 1:
program CONTOH_RECORD_1;
uses wincrt;
type tanggal = record
hari, bulan, tahun : integer;
end;
var
waktu : tanggal;
begin
waktu.hari := 17;
waktu.bulan := 07;
waktu.tahun := 2007;
writeln( 'Tanggal Lahir : ', waktu.hari, ':', waktu.bulan, ':', waktu.tahun )
end.
Pengunaan With … do :
Pernyataan with untuk lebih menyederhanakan pengaksesan field-field pada record.
Misalkan pernyataan :
x.Nama
x.Umur
x.Kota
x.Kodepos
Menjadi :
with x do
Begin
Nama
Umur
Kota
Kodepos
end
Contoh Program 2:
program CONTOH_RECORD_2;
uses wincrt;
type tanggal = record
hari, bulan, tahun : integer;
end;
var waktu : tanggal;
begin {program utama}
with waktu do {mulai with}
begin
hari := 17;
bulan := 07;
tahun := 2007;
writeln ('Tanggal Lahir : ',hari,':',bulan,':', tahun)
end {akhir with}
end.
Record di dalam Record
Record bisa berisi record lain sebagai field.
Seperti contoh record tanggal dan jam dikombinasikan menjadi sebuah record saat ini,
type tanggal = record
bulan, hari, tahun : integer;
end;
type waktu = record
jam, menit, detik : integer;
end;
type waktu_ini = record
tanggal_ini : tanggal;
waktu_ini : waktu
end;
Kemudian kita perlu membuat variabel kerja :
var saat_ini : waktu_ini;
Pemberian nilai akan terjadi seperti di bawah ini:
saat_ini.tanggal.bulan:= 01;
saat_ini.tanggal.hari:= 07;
saat_ini.tanggal.tahun:= 2008;
saat_ini.waktu.jam:= 14;
saat_ini.waktu.menit:= 30;
saat_ini.waktu.detik:= 33;
LATIHAN :
Buatlah Program untuk mendapatkan tampilan dari penjelasan di atas !!!
STUDI KASUS :
Diketahui : Tipe bentukan record waktu yg terdiri field jam dan menit yg bertipe integer.
Buat program u/ membaca waktu : t1, t2 dan menghitung selisih jam dan menit.
Asumsi :
- t2 selalu akhir dari t1,
- nilai terbesar t1 dan t2 = 23:59 dan nilai terkecilnya =00:00,
- nilai tidak melewati 23:59
Analisis :
- Membaca waktu pertama(t1).
- Membaca waktu kedua(t2).
- Menghitung selisih antara waktu pertama dan waktu kedua, dengan :
- Menghitung selisih menit.
- Menghitung selisih jam.
- Menghitung selisih menit.
- Menampilkan selisih waktu di layar.
Contoh Program :
Program selisih_waktu;
Uses wincrt;
type waktu = record
jam, menit : integer;
end;
var
t1,t2 : waktu;
selisih : waktu;
begin
writeln('Isikan Time pertama (t1)');
write('t1.jam = '); readln(t1.jam);
write('t1.menit = '); readln(t1.menit);
writeln('Isikan Time kedua (t2)');
write('t2.jam = '); readln(t2.jam);
write('t2.menit = '); readln(t2.menit);
if t2.menit < t1.menit then
begin
selisih.menit := (t2.menit+60)-t1.menit;
t2.jam := t2.jam – 1;
end
else
selisih.menit := t2.menit-t1.menit;
selisih.jam := t2.jam-t1.jam;
writeln ('Selisih t1 dan t2 adalah : ', selisih.jam, 'jam', selisih.menit, 'menit');
end.
TUGAS :
Buatlah program yg dapat membaca dua tanggal (tanggal, bulan, dan tahun), menghitung selisih kedua tanggal tersebut dalam hari, bulan, dan tahun serta menampilkannya di layar.
Asumsi : Satu bulan = 30 hari
************** GOOD LUCK **************
Tidak ada komentar:
Posting Komentar