BAB II
PEMBAHASAN
R E C O R D
A.
Pendahuluan
Deskripsi
Singkat
Bab ini akan mengemukakan bahasan tentang definisi record,
deklarasi record, mengakses field, penugasan antar record, record dalam record,
pernyataan with, array record.
Relevansi
Pembahasan pada bab ini sangat penting dipahami, karena
materi record ini memberikan manfaat bagi pemrogram untuk membuat program yang
menggunakan data yang terdiri dari beberapa data den berlainan tipe. Materi record
sangat berkaitan dengan materi lainnya dalam sebuah pemrograman terstruktur,
terutama dengan materi array.
Tujuan
Instruksional Khusus
Mahasiswa mampu
membuat program aplikasi dengan menggunakan record.
B. Penyajian
1)
Definisi Record
Record adalah jenis tipe data terstruktur yang berisi beberapa data, yang
masing-masing dapat berlainan tipe.
2)
Mendeklarasikan Record
Suatu tipe
record dideklarasikan dengan bentuk sebagai berikut :
RECORD Gambar 2.1 Pendeklarasian Record
Daftar_field_1
: tipe_1; (sumber:Kadir)
Daftar_field_2
: tipe_2;
. . .
daftar_field_n
: tipe_n;
END
Masing-masing daftar_field dapat berupa satu atau
beberapa nama pengenal dan masing-masing dinamakan field. Bila daftar_field
berisi lebih dari satu field , antar field perlu dipisahkan dengan koma.
Masing-masing tipe dapat berupa tipe data apa saja termasuk array.
Berikut
contoh pendeklarasian record :
Type
RecBarang =
Record
Nama : String;
Kualitas : Char;
Harga : LongInt
End;
Var
Barang :
RecBarang;
Dengan
mendeklarasikan seperti di atas, Barang akan mengandung tiga buah field,
yaitu :
-
Nama,
-
Kualitas,
-
Harga.
3)
Cara Mengakses Field
Field dari
suatu record diakses dengan bentuk :
Variabel.field
Gambar 2.2 Mengakses Field(sumber:Kadir)
Sebagai
contoh :
Barang.Nama
Berarti
“field Nama dari variabel record bernama Barang“.
Contoh
penugasan nilai ke field tersebut :
Barang.Nama := ’Ubin TISKA 20x20’;
Dengan
cara seperti di atas, field Nama dari record Barang berisi string ’Ubin TISKA
20x20’.
Isi
dari suatu field ditampilkan dengan menggunakan Write atau Writeln.
Contoh
:
Writeln
(Barang.Nama);
Merupakan
perintah untuk menampilkan isi field Nama dari record Barang.
Contoh
program yang memberikan gambaran pendeklarasian record, pengisian terhadap
field-field serta menampilkan isi masing-masing field dapat dilihat di bawah
ini.
Program Rec1;
Uses crt;
Type
RecBarang
= Record
Nama : String[25];
Kualitas : Char;
Harga : LongInt
End;
Var
Barang :
RecBarang; {variabel
bertipe record}
Begin
Clrscr;
{Penugasan nilai terhadap field-field}
Barang.Nama := ’Ubin TISKA 20x20’;
Barang.Kualitas := ’A’;
Barang.Harga := 14000;
{menampilkan isi field}
writeln (’Nama Barang :
’, Barang.Nama);
writeln (’Kualitas :
’, Barang.Kualitas);
writeln (’Harga :
’, Barang.Harga);
Readln
End.
Hasil program :
Nama Barang : Ubin
TISKA 20x20
Kualitas :
A
Harga :
14000
4)
Penugasan Antar Record
Jika
record R1 dan R2 bertipe sama dan masing-masing memiliki F1, F2, dan F3, maka
penugasan :
R1 := R2;
diperkenankan.
Pernyataan di atas merupakan penyederhanaan dari sederetan pernyataan berikut :
R1.F1 := R2.F1;
R1.F2 := R2.F2;
R1.F3 := R2.F3;
Untuk
lebih jelasnya, tulislah program berikut dan cobalah menjalankannya.
Program Rec2;
Uses crt;
Type
RecBarang
= Record
Nama : string[25];
Kualitas : car;
Harga : longInt
End;
Var
Barang1,
Barang2 : RecBarang; {variabel bertipe record}
Begin
Clrscr;
{penugasan nilai terhadap field-field}
Barang1.Nama := ’Ubin TISKA 20x20’;
Barang1.Kualitas := ’A’;
Barang1.Harga := 14000;
{menyalin record}
Barang2 := Barang1;
Menampilkan isi field}
Writeln (’Nama Barang :
’, Barang2.Nama);
Writeln (’Kualitas :
’, Barang.Kualitas);
Writeln (’Harga :
’, Barang.Harga);
Readln
End.
Dengan adanya penugasan
Barang2 := Barang1;
maka semua field pada record Barang2 akan
berisi recrod Barang1. Hasil dari program di atas :
Nama Barang : Ubin
TISKA 20x20
Kualitas :
A
Harga :
14000
5)
Record Di Dalam Record
Mungkin saja sebuah record berisi record. Sebagai
gambaran hal ini, perhatikan deklarasi berikut :
RecTanggal = Record
Tanggal,
Bulan,
Tahun :Integer
End;
RecPegawai = Record
Nomor : LongInt;
Nama : String [35];
TglLahir : RecTanggal;
Gaji : LongInt
End;
Tampak bahwa tipe record bernama RecPegawai berisi
record yang lain (RecTanggal).
Hal yang menarik yang perlu diperhatikan adalah cara
mengakses field seperti Tanggal, Bulan dan Tahun. Notasi yang diperlukan adalah
sebagai berikut.
Nama_variabel.TglLahir.Tanggal
Nama_variabel.TglLahir.Bulan
Nama_variabel.TglLahir.Tahun
Praktekkan program berikut, untuk mencoba pembuatan record dengan bentuk
sepert di atas.
Program Rec3;
Uses crt;
Type
RecTanggal
= Record
Tanggal,
Bulan,
Tahun : Integer
End;
RecPegawai = Record
Nomor : LongInt;
Nama : string [35];
TglLahir : RecTanggal;
Gaji : longInt
End;
Var
DataPeg : RecPegawai; {variabel betipe record}
Begin
Clrscr;
Penugasan nilai terhadap field-fiedl}
DataPeg.Nomor := 56789;
DataPeg.Nama
:= ’Badu’;
DataPeg.TglLahir.Tanggal := 24;
DataPeg.TglLahir.Bulan := 12;
DataPeg.TglLahir.Tahun := 1972;
DataPeg.Gaji := 750000;
{menampilkan isi field}
Writeln (’Nama Pegawai : ’, DataPeg.Nama);
Writeln (’Tanggal Lahir : ’, DataPeg.TglLahir.Tanggal,
’/’,
DataPeg.TglLahir.Bulan,
’/’,
DataPeg.TglLahir.Tahun);
Readln
End.
Hasil dari program di atas adalah sebagai berikut :
Nama Pegawai : Badu
Tanggal Lahir : 24 / 12 / 1972
6)
Pernyataan With
Untuk menyederhanakan notasi seperti :
DataPeg.TglLahir.Tanggal
Turbo Pascal menyediakan pernyataan WITH. Bentuk
pernyataan ini adalah sebagai berikut :
With nama_record do
pernyataan
Gambar 2.3 Bentuk Umum Pernyataan
With(sumber:Kadir)
Pada bentuk ini, field-field
yang terletak pada bagian pernyataan dapat disebutkan tanpa perlu menyertakan
lagi nama record dan tanda titik. Untuk lebih jelasnya, perhatikan program
berikut yang merupakan alternatif lain dari program di atas.
Program Rec4;
Uses crt;
Type
RecBarang = Record
Nama : String [25];
Kualitas : Char;
Harga : LongInt
End;
Var
Barang : RecBarang; {variabel bertipe record}
Begin
Clrscr;
{penugasan nilai terhadap field-field}
With Barang do
Begin
Nama := ’Ubin TISKA 20x20’;
Writeln (’Nama Barang :
’, Nama);
Writeln (’Kualitas :’,
Kualitas);
Writeln (’Harga :’,
Harga);
End;
Readln
End.
Bila suatu record memiliki record lain, pernyataan
With dapat diikuti dengan with yang lain. Sebagai contoh, program di atas
ditulis menjadi :
Program Rec5;
Uses crt;
Type
RecTanggal = Record
Tanggal,
Bulan,
Tahun : Integer
End;
RecPegawai = Record
Nomor : LongInt;
Nama : string [35];
TglLahir : RecTanggal;
Gaji : LongInt
End;
Var
DataPeg : RecPegawai; {variabel
bertipe record}
Begin
Clrscr;
{Penugasan nilai terhadap field-field}
With DataPeg do
With TglLahir do
Begin
Nomor :=
56789;
Nama :=
’Badu’;
Tanggal := 24;
Bulan :=
12;
Tahun :=
1972;
Gaji :=
750000;
End;
{menampilkan isi field}
With DataPeg do
With TglLahir do
Begin
Writeln (’Nama Pegawai :’, DataPeg.Nama);
Writeln (’Tanggal lahir :’, DataPeg.TglLahir.Tanggal,
’/’, DataPeg.TglLahir.Bulan
’/’, DataPeg.TglLahir.Tahun)
End;
Readln
End.
Pernyataan seperti :
With DataPeg do
With TglLahir do
Dapat ditulis menjadi :
With
DataPeg, TglLahir do
dengan antar nama record dipisahkan oleh tanda koma.
Contoh program :
Program Rec6;
Uses crt;
Type
RecTanggal = Record
Tanggal,
Bulan,
Tahun : Integer
End;
RecPegawai = Record
Nomor : LongInt;
Nama : string [35];
TglLahir : RecTanggal;
Gaji : LongInt
End;
Var
DataPeg : RecPegawai; {variabel
bertipe record}
Begin
Clrscr;
{Penugasan nilai terhadap field-field}
With DataPeg, TglLahir do
Begin
Nomor :=
56789;
Nama :=
’Badu’;
Tanggal := 24;
Bulan :=
12;
Tahun :=
1972;
Gaji :=
750000;
End;
{menampilkan isi field}
With DataPeg, TglLahir do
Begin
Writeln (’Nama Pegawai :’, DataPeg.Nama);
Writeln (’Tanggal lahir :’, DataPeg.TglLahir.Tanggal,
’/’, DataPeg.TglLahir.Bulan
’/’, DataPeg.TglLahir.Tahun)
End;
Readln
End.
7)
Array Record
Elemen
suatu array juga bisa berupa record. Sebagai contoh dapat dilihat di bawah ini.
Const
Jum_Maks = 20;
Type
RecBarang = Record
Nama : String [25];
Kualitas : Char;
Harga : LongInt
End;
TabelBarang
= Array [ 1 . . Jum_Maks] of RecBarang;
Var
DafBarang :
TabelBarang; {array record}
Pada
contoh di atas, DafBarang adalah array yang maksimum berisi 20 buah elemen
bertipe record.
Untuk
mengakses suatu field, kita perlu menggunakan notasi :
DafBarang [indeks].NamaField
Berikut contoh
program Array Record.
Program Rec7;
Uses Crt;
Const
Jum_Maks = 20; {jumlah maksimal jenis baramg}
Type
RecBarang = Record
Nama : string [25];
Kualitas : char;
Harga : longInt
End;
TabelBarang
= Array [ 1 . . Jum_Maks] of RecBarang;
Var
DafBarang :
TabelBarang; {array record}
JumBarang :
Integer;
{memasukkan
data barang je array DafBarang}
Procedure EntriBarang (Var DafBarang : TabelBarang;
Var
JumBarang : Integer);
Var
Indeks : Integer;
Begin
Clrscr;
Write (’Jumlah Barang (Maksimum
= 20) :’); Readln (JumBarang);
For Indeks := 1 to JumBarang do
With Dafbarang [indeks] do
Begin
Clrscr;
Writeln (’Data Barang ’,
Indeks, ’ :’);
Write (’Nama :’);
Readln (Nama);
Write (’Kualitas :’);
Readln (Kualitas);
Write (’Harga :’);
Readln (Harga);
Writeln;
End;
End; {akhir
EntriBarang}
{menampilkan isi array
DafBarang}
Procedure InfoBarang (Var DafBarang : Tabelbarang;
JumBarang
: Integer);
Var
Indeks :
Integer;
Begin
Clrscr;
Writeln
(’NAMA BARANG’:25, ’KUALITAS’:10, ’HARGA’:10);
For Indeks :=
1 to JumBarang do
With
Dafbarang [Indeks] do
Writeln (Nama
: 25, Kualitas : 10, Harga : 8);
End; {Akhir InfoBarang}
Begin
Entribarang
(DafBarang, JumBarang);
InfoBarang
(DafBarang, JumBarang);
Readln
End.
C. Penutup
Record adalah
salah satu tipe data terstuktur bentukan yang digunakan untuk mempresntasikan
sebuah objek yang tidak dapat dipresentasikan menggunakan tipe data dasar,
seperti integer, real, boolean, character. Setiap record terdiri dari beberapa elemen yang disebut field. Setiap field menggambarkan informasi tertentu, dan tipe setiap field sudah dikenal, baik itu tipe dasar
atau tipe bentukan lainnya.
Operasi atau manipulasi terhadap record hanya dapat dilakukan terhadap field-field pembentuknya. Pengacuan pada setiap field dilakukan dengan record selector. Operasi yang dapat
dilakukan terhadap field-field
tersebut sama dengan operasi yang dapat dikenakan terhadap tipe pembentuknya.
0 komentar:
Speak up your mind
Tell us what you're thinking... !