Anda di halaman 1dari 10

MODUL V

RECORD DAN ARRAY

5.1. Tujuan Praktikum


Praktikum diharapkan dapat :
1. Mengerti dan menggunakan tipe data record dan array
2. Membuat dan dapat menganalogikan pembuatan struktur data array
dengan baik
5.2. Dasar Teori
5.2.1. Record
Record adalah suatu tipe data terstruktur yang berguna untuk
mengelompokan sejumlah elemen dengan tipe data berlainan. Elemen data ini
biasa disebut field. Struktur umum pendeklarasian record pada pascal sebagai berikut :
Type Nama_record = record
Namafield1 : tipe_data1;
Namafield2 : tipe_data2;
................ : .........;
NamafieldN : tipe_dataN;
End;

Contoh :
Type titik = record
x : integer;
y : integer;
End;
Type l_tanggal = record
tanggal : integer;
bulan : integer;
tahun : integer;
End;
Type mahasiswa = record
nim : longint;
nama : string[40];
tanggal_lahir : l_tanggal;
End;

Pada contoh diatas kita mendefinisikan tiga buah record. Pertama record
titik yang mempunyai anggota x dan y bertipe data integer. Kedua record
l_tanggal yang mempunyai tiga anggota dan semuanya bertipe integer. Ketiga
record mahasiswa yang mempunyai 3 anggota, nim bertipe data integer, nama
bertipe data string, dan tanggal_lahir bertipe data l_tanggal.

V-1
Pada dasarnya record merupakan sebuah tipe data baru, oleh karena itu untuk
bisa menggunakan record kita harus membuat sebuah variabel baru dan variabel itu
sendiri bertipe record tadi.
Var
Nama_variabel : nama_record;
Contoh
Var
Z : titik ;
lahir : l_tanggal;
m_siswa : mahasiswa;

Ketika sebuah variabel sudah di definisikan, maka untuk bisa mengakses


field dari record tadi harus menggunakan dot (.). Contoh : variabel m_siswa
merupakan sebuah variabel yang bertipe data record mahasiswa, untuk bisa
mengakses filed nim, maka digunakan systax m_siswa.nim, untuk mengakses
field nama digunakan syntax m_siswa.nama. Sedangkan untuk bisa mengakses
field tanggal_lahir dan field tanggal_lahir sendiri merupakan sebuah record, maka
field tanggal_lahir tidak bisa diakses (m_siswa.tanggal_lahir akan error).
Walau field tanggal_lahir tidak bisa diakses, tapi field dari record tanggal_lahir
bisa diakses (syntaxnya m_siswa.tanggal_lahir.tanggal,

m_siswa.tanggal_lahit.bulan, m_siswa.tanggal_lahir.tahun).
Contoh Program 5.1 Data Mahasiswa
Program Data_Mahasiswa;
Uses Crt;
Type l_tanggal = record
Tanggal, bulan, tahun : integer;
End;
Type mahasiswa = record
nim : longint;
nama : string[40];
tanggal_lahir : l_tanggal;
End;
Var
M_siswa : mahasiswa;
Begin
Clrscr;
M_siswa.nim := 137006107;
M_siswa.nama := Dede Gunawan;
M_siswa.tanggal_lahir.tanggal := 12;
M_siswa.tanggal_lahir.bulan := 09;
M_siswa.tanggal_lahir.tahun := 1994;
Writeln;
Writeln(NIM : ,M_siswa.nim);
Writeln(Nama : ,M_siswa.nama);
Writeln(TTL : ,M_siswa.tanggal_lahir.tanggal,

V-2
,M_siswa.tanggal_lahir.bulan, ,M_siswa.tanggal_lahir.tahun);
Readln;
End.

Pada contoh diatas dapat terlihat bahwa kita mendefinisikan dua buah
record. Record pertama bernama l_tanggal dan mempunyai field tanggal, bulan
dan tahun. Record kedua bernama record mahasiswa dan mempunyai anggota
nim, nama, dan tanggal_lahir. Semua field dapat diakses kecuali record yang
bertipe record. Filed yang bertipe record hanya bisa mengakses field-field dari
record tersebut (dalam kasus diatas field tanggal_lahir tidak dapat diakses, hanya
anggota dari field tanggal_lahir yang dapat diakses (field tanggal, bulan dan
tahun)).

5.2.2. Array
Array (larik) merupakan tipe data terstruktur yang dapat menyimpan
sejumlah data yang bertipe sama dengan menggunakan nama yang sama. Setiap
elemen array mempunyai indeks. Dengan menggunakan indeks ini, setiap elemen
array dapat diakses secara tersendiri. Elemen array juga mempunyai sebuah nilai
maksimal dan nilai maksimal itu kita definisikan pada saat mendefinisikan array.
Keadaan tersebut diilustrasikan seperti sebuah asrama mahasiswa dimana
sebuah asrama mempunyai nomor urut dan setiap kamar diisi oleh setiap
mahasiswa. Jumlah kamar yang ada di asrama itu tidak akan pernah berubah
sampai kapanpun. Asrama merupakan arraynya, kamar-kamar merupakan elemen
arraynya, nomor urut merupakan indeksnya, mahasiswa merupakan value (nilai)
dari elemen array dan jumlah kamar merupakan jumlah Maksimal elemen array.
Array secara umum dapat mempunyai beberapa dimensi, tapi pada bab ini
array yang akan dibahas hanyalah array berdimensi satu. Pada array berdimensi
satu, setiap elemen dapat diakses menggunakan sebuah indeks. Misal sebuah array
mempunyai sepuluh elemen, maka indeks yang ada dari 1 sampai 10.

V-3
Untuk mendeklarasikan sebuah array harus menggunakan syntax berikut :
Nama_array : array [tipe_ordinal_indeks] of integer
Tipe ordinal indeks merupakan jangkauan indeks [indeksMini..
IndeksMax], bisa berupa integer atau char. Tipe elemen simpelnya merupakan
tipe data elemen array, bisa merupakan tipe data dasar atau tipe data bentukan.
Telah dijelaskan pada paragraf sebelumnya bahwa array mempunyai jumlah
maksimal elemen, lalu dimana kita mendefinisikannya? Tipe ordinal indeks
adalah jawabannya. Tipe ordinal indeks mempunyai IndeksMin dan IndeksMax.
(IndeksMax IndeksMin) + 1 merupakan rumus untuk menentukan jumlah
maksimal elemen array. Misal kita ingin membuat sebuah array yang mempunyai
elemen sebanyak dua puluh buah dan mempunyai IndeksMin 12, berapa
IndeksMax yang harus kita gunakan.
(IndeksMax IndeksMin) +1 = JumlahMax,
IndeksMax 12 + 1 = 20 IndeksMax = 31.
Contoh Pendeklarasian Array :
Var
Data : array[1..5] of integer;
Huruf : array[13..22] of char;
Frek : array[a..z] of integer;

Pada contoh diatas membuat tiga buah variabel bertipe array. Variabel
pertama bernama Data mempunyai 5 buah elemen dan elemen-elemennya bertipe
integer. Variabel kedua bertipe huruf mempunyai 20 elemen (20-13+1) dan
elemennya bertipe char. Variabel ketiga frek mempunyai 26 elemen (z(26) a(1)
+1) dan bertipe integer.
Cara untuk mengakses sebuah array dengan menggunakan syntax berikut :
Nama_Variabel_Array[Indeks_Array];
Contoh : Kita mempunyai Sebuah Array Asrama, mempunyai tipe ordinal indeks
integer [1..10]. elemen dari array itu bertipe string, dan nilai dari elemen pertama akan
diisi dengan Anto. Maka untuk memberi value pada elemen array itu adalah :
Asrama[1] := Anto;
Contoh Program 5.2, untuk memasukkan 5 buah data yang bertipe string dan
disimpan pada array buku. Kemudian akan data akan ditampilkan ke layar.
program databuku;
uses crt;
var indeks : integer;
buku : array[1..5] of string;
begin

V-4
clrscr;
writeln('Masukkan Buku ');writeln;
for indeks := 1 to 5 do
begin
write('Buku ke ',indeks, ' = ');readln(buku[indeks]);
end;
writeln;writeln;
for indeks := 1 to 5 do writeln('Buku ke-',indeks,' =
',buku[indeks]);
writeln;readln;
end.

Pada contoh diatas terlihat bahwa array Buku mempunyai jumlah


maksimal elemen (5-1+1 = 5 elemen) dan semua elemennya bertipe string
(terlihat dari kata buku : array[1..5] of string;). Untuk mengisikan nilai pada
elemen array digunakan perintah read(buku[indeks]); . Pada contoh diatas proses
pengisian array menggunakan proses pengulangan, agar kode lebih sederhana.
Perintah write(buku[indeks]) akan membuat array buku elemen ke-indeks akan
ditampilkan ke layar, dan pada kasus diatas perintah untuk menampilkan array
menggunakan pengulangan.
program penjumalahArray;
uses crt;
const Nmaks = 20;
type LAngka = array[1..Nmaks] of real;
var
nilai : LAngka;
i, n : integer;
jum : real;
begin
clrscr;
writeln('# INPUT NILAI #');
write('Input Berapa Nilai ? ');readln(i);
for n := 1 to i do
begin
write('Nilai Ke-',n,' = ');readln(nilai[n]);end;
jum := 0;
for n := 1 to i do jum := jum + nilai[n];

V-5
writeln('Toatal Nilai = ',jum:0:2);
readln;
end.

Program diatas mencontohkan bahwa nilai dari sebuah elemen array akan
terus disimpan sampai program ditutup. Ketika user menginputkan nilai pada
sebuah elemen array readln(nilai[i]); maka sejak saat itu nilai elemen array akan
terus disimpan.

5.3. Latihan
5.3.1. Buat program yang inputannya berupa data mata kuliah dalam bentuk
record (kode_mk, nama_mk, sks), dan kemudian outputnya adalah data
mata kuliah tersebut.
Soal diatas akan dibuat sebuah record (dengan nama m_siswa) yang
mempunyai tiga field yaitu kode_mk bertipe string[12] , nama_mk bertipe
string[60] dan sks bertipe integer. Berikut syntaxnya :
type m_siswa = record
kode_mk : string[12]; nama_mk : string[60]; sks : integer;
end;
Karena merupakan sebuah tipe data baru, maka kita perlu mendefinisikan
variabel agar record itu bisa digunakan. Berikut syntaxnya :
var mahasiswa : m_siswa;

Untuk bisa mengaksesnya, gunakan dot (.). Berikut Syntaxnya :


mahasiswa.kode_mk Untuk mengakses field kode_mk
mahasiswa.nama_mk Untuk mengakses field nama_mk
mahasiswa.sks Untuk mengakses field sks

Berikut syntax lengkapnya :


program mahasiswa_data;

V-6
uses crt;
type m_siswa = record
kode_mk : string[12]; nama_mk : string[60]; sks : integer;
end;
var mahasiswa : m_siswa;
begin
clrscr;
write('Masukkan Kode MK : ');readln(mahasiswa.kode_mk);
write('Masukkan Nama MK : ');readln(mahasiswa.nama_mk);
write('Jumlah SKS : ');readln(mahasiswa.sks);
writeln;writeln;
writeln('Kode MK : ',mahasiswa.kode_mk);
writeln('Nama MK : ',mahasiswa.nama_mk);
writeln('SKS : ',mahasiswa.sks);
readln;
end.

5.3.2. Dibaca Dua buah titik pada diagram cartesian P1(x1,y1) dan P2(x2, y2).
Buat program untuk menghitung titik tengah P1 dan P2 Titik dibentuk
menggunakan record dan mempunyai dua buah filed (x,y).
Definiskan dahulu nama record beserta fieldnya :
type titik = record x,y : real; end;
Definisikan variabel P1, P2, PT. (PT merupakan variabel untuk
menampilkan titik tengah).
var p1, p2, pt : titik;
Untuk mengakses fieldnya, gunakan syntax nama_variabel.nama_field. Berikut
kode lengkapnya :
program titikDua;
uses crt;
type titik = record x,y : real; end;
var p1, p2, pt : titik;
begin
clrscr;
write('Masukkan titik P1 (x,y) : ');readln(p1.x, p1.y);
write('Masukkan titik P2 (x,y) : ');readln(p2.x, p2.y);
writeln;writeln;
pt.x := (p1.x + p2.x)/2 ;pt.y := (p1.y + p2.y)/2;
writeln('Titik Tengah antara keduanya adalah :
',pt.x:0:1,',',pt.y:0:1); readln;
end.

V-7
5.3.3. Buat program untuk menyimpan sejumlah bilangan bulat (banyak
bilangantergantung user) dalam sebuah array kemudian menampilkan isi
array tetapi hanya yang termasuk ke dalam bilangan bulat dan kelipatan
dua.
Logika : program menerima input sebuah bilangan, (satu variabel
dibutuhkan misal namanya xy bertipe integer). Kemudian user juga diminta untuk
memasukkan bilangan sebanyak xy kali, dan bilangan itu disimpan ke dalam
sebuah array (satu array dibutuhkan, misal namanya : Arr_Bil dari integer). Agar
kode lebih sederhana, dibutuhkan pengulangan, dan dalam pengulangan itu
menggunakan variabel kontrol (misal namanya ijk bertipe integer. Dibutuhkan
sebuah pemilihan agar perintah mencetak bilangan ke layar hanya untuk bilangan
positif dan kelipatan dua.
Kesimpulan : dibutuhkan tiga variabel (xy, ijk integer, Arr_Bil
array[1..N] of integer. Dibutuhkan dua buah pengulangan (menggunakan for), satu
digunakan ketika proses input, satu lagi ketika proses output. Dibutuhkan sebuah
percabangan, digunakan untuk memilih untuk mencetak bilangan, ketika bilangan
itu positif dan kelipatan dua.
Tambahan : dibuthkan sebuah constanta untuk membatasi jumlah array
yang dapat diterima (const N = 30);
Berikut kode lengkap & screen shoot :
program Array_of;
uses crt;
const N = 30;
var
xy, ijk : integer;

V-8
Arr_Bil : array[1..N] of integer;
begin
clrscr;
write('Mau berapa angka ? ');readln(xy);
for ijk := 1 to xy do
begin
write('Masukkan bilangan ke-',ijk,' : ');
readln(arr_bil[ijk]);
end;
write('Bilangan yang merupakan kelipatan dua adalah : ');
for ijk := 1 to xy do
begin
if((arr_bil[ijk] mod 2 = 0) and (arr_bil[ijk] > 0))
write(arr_bil[ijk],' ');
end;
readln;
end.

5.3.4. Buat program untuk menerima masukan sejumlah karakter dalam array
(banyaknya input karakter ditentukan user) kemudian menampilkannya
dalam urutan terbalik.
Variabel yang dibutuhkan :
1. Xy untuk menerima jumlah input
2. Ijk untuk variabel kontrol pengulangan.
3. Arr_char array untuk menyimpan karakter yang dimasukkan
(arr_char : array [1..N] of char;)
Konstanta digunakan untuk membatasi jumlah array yang dapat
dimasukkan. (const N = 30).
Pengulangan yang dibutuhkan sebanyak dua pengulangan. Pengulangan
pertama digunakan untuk menerima input masukkan karakter. Pengulangan kedua
digunakan untuk menampilkan karakter.
Pengulangan pertama menggunakan pengulangan menaik dari 1 to xy,
sedangkan untuk pengulangan kedua menggunakan pengulangan menurun dari xy
down to 1.
Berikut kode program lengkap screen shootnya :
program cetak_char;
uses crt;
const n = 30;

V-9
var
xy, ijk : integer;arr_char : array[1..N] of char;
begin
clrscr;
write('Mau berapa karakter ? ');readln(xy);
for ijk := 1 to xy do
begin
write('Karakter ke-',ijk,' : ');
readln(arr_char[ijk]);
end;
for ijk := xy downto 1 do write(arr_char[ijk],' ');
readln;
end.

V - 10

Anda mungkin juga menyukai