Panduan Lengkap Array dan Record Turbo Pascal
Panduan Lengkap Array dan Record Turbo Pascal
Segala puji hanya bagi Allah, Dzat yang telah menciptakan ilmu pengetahuan sebagai
petunjuk bagi hambanya yang senantiasa berpikir. Sholawat dan salam semoga senantiasa
tercurah kepangkuan Rosulullah Muhammad saw yang telah memberi cahaya kepada
umat manusia melalui pengetahuan haqiqi yang bersumber pada-Nya.
Alhamdulillah, berkat pertolongan dan petunjuk Allah swt penyusun dapat menyelesaikan
tugas praktikum mata kuliah algoritma dan struktur data (turbo pascal: Array dan Record)
guna memenuhi tugas praktikum turbo pascal.
Penyusun menyadari bahwa dalam penulisan makalah yang sederhana ini ada beberapa
kekurangan, untuk itu kritik dan saran yang sifatnya membangun sangat penyusun
harapkan guna kesempurnaan makalah ini.
Penyusun
Page 1 of 50
Daftar Isi
Kata Pengantar 1
Daftar Isi 2
BAB 1 : ARRAY 3
1. Pengertian 3
BAB 2 : RECORD 40
1. Pengertian 40
Daftar Pustaka 50
Page 2 of 50
BAB 1
ARRAY
1. Pengertian
Array adalah tipe data terstruktur yang terdiri dari sejumlah komponen-komponen yang
mempunyai tipe sama. Komponen-komponen tersebut disebut sebagai komponen type, larik
mempunyai jumlah komponen yang jumlahnya tetap. Banyaknya komponen dalam larik
ditunjukkan oleh suatu index, dimana tiap komponen di array dapat diakses dengan
menunjukkan nilai indexnya atau subskript. Array dapat bertipe data sederhana seperti byte,
word, integer, real, bolean, char, string dan tipe data scalar atau subrange. Tipe larik
mengartikan isi dari larik atau komponen- komponenya mempunyai nilai dengan tipe data
tersebut.1
Array adalah variabel yang dapat menyimpan lebih dari satu nilai sejenis. Terdapat dua bagian
penting yaitu elemen array yang merupakan nilai dan endeks array yang merupakan nilai urut
untuk mengakses nilai pada array.
Berikut ini contoh array A dengan 10 buah elemen tiap elemen memiliki nilai antara 10 hingga
100.
A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] A[10]
1 2 3 4 5 6 7 8 9 10
10 20 30 40 50 60 70 80 90 100
Deklarasi Array.
Array dideklarasikan pada bagian deklarasi. Deklarasi umum dari array adalah
NamaArray : array[IndeksAwal..IndeksAkhir] of tipe_data;
Contoh: Jika akan mendeklarasikan viriabel A sebagai Array dengan 10 elemen bertipe
integer :
Var
A: array [1..10] of Integer;
Contoh lain:
1
[Link]
Page 3 of 50
A1: array[0..9] of Integer;
A1: array[10..20] of Integer;
A1: array[‘a’..’j’] of Integer;
Mengakses elemen Array
Untuk memberikan nilai pada variabel array dapat dengan menggunakan parameter berikut :
NamaArray [indeks]:=nilai;
Contoh
Var
A: array[1..10] of integer;
Begin
A[1]:=1; {Mengisikan elemen 1 dengan nilai 1}
A[9]:=200; {Mengisi elemen 9 dengan nilai 200};
End.
Array sebagai konstanta
Nilai pada array dapat bernilai konstan. Dapat kita lakukan dengan mendeklarasikannya pada
bagian constanta.
Bentuk umum pendeklrasiannya adalah:
Const
NamaArray : array[IndeksAwal..IndeksAkhir] of Tipe_Data = (nilai1, nilai2,………);
Banyaknya nilai konstanta harus sama dengan jumlah elemennya.
Contoh penggunaanya
Program ArrayKonstanm;
Uses Wincrt;
Const
Hari : array[1..2] oof string =
(’senin’,’selasa’,'rabu’,'kamis’,'jumat’,’sabtu’,'minggu’);
Var
noHari:integer;
begin
clrscr;
write(’Masukan nomor harinya : ‘);readln(noHAri);
write(’Hari ke’,noHari,’adalah’,Har[noHari]);
end.
Page 4 of 50
Jika dieksekusi maka hasilnya adalah:
Masukan nomor harinya : 2
Hari ke 3 adalah rabu
Array saebagai parameter
Array pada waktu tertentu dapat digunakan sebagai parameter dari suatu proesdur atyau
fungsi. Contoh
Type
Bilangan = array [1..100[ of integer;
Procedure InputArray(A:bilangan; N:integer);
var
i:integer;
begin
for i:=1 to N do
write('Masukan elemen array ke ',i); readln(A[i]);
end.
Contoh diatas adalah prenggunaan array sebagai parameter untuk memberikan nilai pada
suatu array tertentu.
Array berisi record
Caranya adalah mendefinisikan record terlebih dahulu yang kemudian akan digunakan sebagai
tipe data pada saat pendeklarasiaan array. Contoh:
Type
Tsiswa = record
NIM:=string[9[;
Nama:string[25];
End;
TkumpulanSiswa = array [1..100] of Tsiswa;
Var
A: TkumpulanSiswa;
Variabel A diatas akan menampung 100 buah record yang bertipe Tsiswa. Sementara untuk
record berisi array dengan contoh perhitungan nilai siswa berikut : Nilai = (20% * kuis) + (30%
* UTS) + (50% * UAS). Maka kita dapat mendefinisikan mahasiswa sebagai tipe record yang
memiliki 3 nilai dengan menggunakan array. Yaitu:
Page 5 of 50
Type
Tsiswa = record
NIM:=string[9[;
Nama:string[25];
Nilai = array [1..3] of real;
Kode diatas menunjukan bahwa setiap mahasiswa memiliki 3 nilai.
Metode pencarian pada Array
Ada beberapa macam teknik dalam mendapatkan nilai dari suatu elemen pada array salh
satunya dengan metode pencarian [Link]:
Program CaraiBeruntun;
Uses Wincrt;
Const
N : array[1..5] of integer= (10,20,30,40,50);
Var
a,b,index : integer;
begin
clrscr;
write(‘Masukan nilai yang akan dicari : ’);readln(a);
index:=0;
for b:=1 to 5 do begin
if N[b] = a then begin
index:=b;
break;
end;
end;
writeln(a,’ adalah nilai yang ditemukan pada index ke ’,index);
end.
Array 2 dimensi
Array 2 dimensi adalah array yang memiliki 2 buah elemen bertipe array yang berbentuk
kolom dan baris. Pendeklarasiannya adlah sebagai berikut:
NamaArray : array[1..BanyakBaris, 1..BanyakKolom] of tipe_data;
Contoh
Array2D : array[1..3, 1..4] of integer;
Page 6 of 50
Sedangkan untuk mengaskes maupun memberikan nilai dengan parameter:
Array2D [2,3]:=200; {Mengisikan nilai 200 pada baris 2 kolom 3} 2
Array (Larik) adalah tipe tersruktur yang terdiri dari sejumlah komponen yang
mempunyai tipe yang sama. Array ada 2 jenis:
1) Array berdimensi satu.
2) Array berdimensi 2 /dimensi banyak.3
2. Contoh Program
Code:
program lariksatudimensi;
uses wincrt;
var
nota:array[1..5] of string;
nama:array[1..5] of string;
harga:array[1..5] of longint;
i:integer;
total:longint;
begin
clrscr;
for i:=1 to 5 do
begin
2
[Link]
3
[Link]
Page 7 of 50
clrscr;
writeln ('_____________');
writeln ;
end;
total:=0;
for i:= 1 to 5 do
total:=total+harga[i];
clrscr;
writeln ('___________________________________');
writeln ('___________________________________');
for I:= 1 to 5 do
begin
end;
writeln ('__________________________________________');
Page 8 of 50
writeln;
end.
Preview :
Hasil :
Page 9 of 50
1.2.2 Contoh program array 2 | ujian mahasiswa
Kode :
Uses wincrt ;
Var
x , jd : byte;
BEGIN
CLRSCR ;
Page 10 of 50
Write (
‘
Masukan Jumlah data :
‘
) ; readln ( jd ) ;
For x : = 1 to jd do
begin
Writeln (
‘
*****************************
‘
) ;
Writeln (
‘
PENILAIAN UJIAN MAHASISWA BSI
‘
) ;
Writeln (
‘
*****************************
‘
) ;
Write (
‘
Input Nama :
‘
) ; readln (nama[x] ) ;
Write (
‘
Input Nilai Tugas :
Page 11 of 50
‘
) ; readln (tugas[x] ) ;
Write (
‘
Input Nilai Absen :
‘
) ; readln (absen[x] ) ;
Write (
‘
Input Nilai UTS :
‘
) ; readln (uts[x] ) ;
Write (
‘
Input Nilai UAS :
‘
) ; readln (uas[x]) ;
Rata[x]:=(0.1*tugas[x])+(0.2*absen[x])+(0.3*uts[x])+(0.4*uas[x]);
End ;
CLRSCR ;
For i : = 1 to j do
Begin
Writeln (
‘
*****************************
‘
) ;
Page 12 of 50
Writeln (
‘
PENILAIAN UJIAN MAHASISWA BSI
‘
) ;
Writeln (
‘
*****************************
‘
) ;
Writeln (
‘
Nama :
‘
, nama[i] ) ;
Writeln (
‘
Nilai Tugas :
‘
, tugas[i] ) ;
Writeln (
‘
Nilai Absen :
‘
, absen[i] ) ;
Writeln (
‘
Nilai UTS :
‘
, uts[i] ) ;
Page 13 of 50
Writeln (
‘
Nilai UAS :
‘
, uas[i]) ;
Writeln (
‘
****************************
‘
) ;
Writeln (
‘
Rata-rata :
‘
, rata : 1: 0 ) ;
Readln ;
End;
END.
Kode :
program ayam_goreng;
uses crt;
var
i,b:byte;
Page 14 of 50
jenis,kdjenis:array [1..50]of string;
totb,ppn,totjml,total:real;
begin
clrscr;
writeln(‘========================’);
writeln(‘=============================’);
writeln(‘=============================’);
for i:=1 to b do
begin
writeln;
writeln;
Page 15 of 50
end;
writeln; clrscr;
writeln(‘======================================================
================’);
writeln;
totb:=0;
for i:=1 to b do
begin
if kdjenis[i]=’D’ then
begin
jenis[i]:=’Dada’;
harga[i]:=3000;
end
begin
jenis[i]:=’Paha’;
harga[i]:=2500;
end
jenis[i]:=’Sayap’;
harga[i]:=1500;
end
else
begin
jenis[i]:=’Kepala’;
harga[i]:=1000;
end;
jmlharga[i]:=harga[i]*banyak[i];
totb:=totb+jmlharga[i];
ppn:=totb*0.1;
totjml:=totjml+banyak[i];
total:=totb+ppn
end;
for i:=1 to b do
begin
writeln(i:1,jenis[i]:9,harga[i]:14:0,banyak[i]:18:0,jmlharga[i]
:19:0);
end;
Page 17 of 50
writeln(‘======================================================
===========’);
writeln(‘ PPN 10 % :
‘,ppn:2:0);
readln;
end.
Kode :
uses wincrt;
nama : string;
begin
clrscr;
{jumlah:=0;}
Page 18 of 50
writeln(‘ Nilai Rata – Rata Praktikum Kelas
TK2A’);
Writeln(‘—————————————’);
for i := 1 to Jumdat do
begin
Write(‘Nilai Praktiklum ke
‘,i,’=');Readln(Nilai[i]);
end;
jumlah:=0;
begin
rata := Jumlah/JumDat;
end;
writeln;
clrscr;
for i := 1 to jumdat do
begin
Page 19 of 50
writeln(‘Nilai Praktekm ke-’,i,’
=’,nilai[i]:3:0);
end;
readln;
end.
Kode :
uses wincrt;
nama : string;
begin
clrscr;
{jumlah:=0;}
Writeln(‘—————————————’);
Page 20 of 50
Write(‘Berapa Jumlah data = ‘);readln(JumDat);
for i := 1 to Jumdat do
begin
Write(‘Nilai Praktiklum ke
‘,i,’=');Readln(Nilai[i]);
end;
jumlah:=0;
begin
rata := Jumlah/JumDat;
end;
writeln;
clrscr;
Writeln(‘—————————————’);
writeln(‘ÉÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍ» ‘);
writeln(‘ÌÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍÍ͹ ‘);
Page 21 of 50
for i := 1 to jumdat do
begin
end;
writeln(‘ÈÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍͼ’);
readln;
end.
Kode :
Program Harga_Tiket;
uses crt;
jb:array[1..50] of real;
jbyr:array[1..50] of real;
jml,a:byte;
tot:real;
ask:char;
label
Page 22 of 50
baru;
begin
baru:
clrscr;
textcolor(7);
writeln;
writeln;
begin
writeln(‘Data Ke -’,a);
end;
clrscr;
writeln(‘—————————————————-’);
Page 23 of 50
writeln(‘No. Nama Penumpang Jumlah Beli
Jumlah Pembayaran’);
writeln(‘—————————————————-’);
jbyr[a]:=jb[a]*25000;
writeln(a:1,np[a]:10,jb[a]:10:0,jbyr[a]:27:3);
begin
writeln(‘—————————————————-’);
tot:=0;
tot:=tot+jbyr[a];
writeln(‘Total
Pembayaran Rp.’,tot:10:3);
writeln(‘—————————————————-’);
writeln;
end;
end.
Page 24 of 50
1.2.7 Contoh program array 7 | data karyawan
Kode :
uses crt;
var
nama:array[1..10]of string[20];
alamat:array[1..20]of string[30] ;
jml_gaji:array[1..20]of real;
i,j:byte;
begin
clrscr;
for i:=1 to j do
begin
write(‘jumlah Gaji
:’);readln(jml_gaji[i]);
end;
clrscr;
Page 25 of 50
writeln(‘ DATA GAJI KARYAWAN’);
writeln(‘======================================’);
writeln(‘=======================================’);
for i:=1 to j do
begin
writeln(i:1,nama[i]:15,jml_gaji[i]:15:0);
end;
writeln(‘=======================================’);
readln
end.
Kode :
Uses crt;
Var i,j:integer;
merk:array[1..5] of string[10];
ukuran:array[1..5] of char;
jumbel,harsat:array[1..5] of integer;
Page 26 of 50
harkot,pot,harsih:array[1..5] of real;
Begin
clrscr;
Writeln;
For j:=1 to i do
Begin
Writeln(‘Data Ke-’,j);
Write(‘Ukuran [K/S/B] :
‘);Readln(ukuran[j]);
Write(‘Jumlah Beli :
‘);Readln(jumbel[j]);
If merk[j]=’Dancow’ then
Case ukuran[j] of
‘K’:harsat[j]:=6500;
‘S’:harsat[j]:=9500;
‘B’:harsat[j]:=13500;
End
Case ukuran[j] of
‘K’:harsat[j]:=8500;
Page 27 of 50
‘S’:harsat[j]:=13500;
‘B’:harsat[j]:=18500;
End
Else
Case ukuran[j] of
‘K’:harsat[j]:=9500;
‘S’:harsat[j]:=16500;
‘B’:harsat[j]:=23500;
End;
If jumbel[j]>=15 then
Begin
harkot[j]:=jumbel[j]*harsat[j];
pot[j]:=0.1*harkot[j];
harsih[j]:=jumbel[j]*harsat[j]-pot[j];
End
Begin
harkot[j]:=jumbel[j]*harsat[j];
pot[j]:=0.2*harkot[j];
harsih[j]:=jumbel[j]*harsat[j]-pot[j];
Page 28 of 50
End
Else
Begin
harkot[j]:=jumbel[j]*harsat[j];
pot[j]:=0*harkot[j];
harsih[j]:=jumbel[j]*harsat[j]-pot[j];
End;
End;
clrscr;
Gotoxy(1,1);Writeln(‘==========================================
=================================’);
Gotoxy(2,2);Writeln(‘No’);
Gotoxy(7,2);Writeln(‘Merk’);
Gotoxy(16,2);Writeln(‘Ukuran’);
Gotoxy(24,2);Writeln(‘Jumlah’);
Gotoxy(32,2);Writeln(‘Harga’);
Gotoxy(55,2);Writeln(‘Potongan’);
Gotoxy(70,2);Writeln(‘Total’);
Gotoxy(1,3);Writeln(‘Urut’);
Gotoxy(7,3);Writeln(‘Susu’);
Page 29 of 50
Gotoxy(16,3);Writeln(‘Kaleng’);
Gotoxy(25,3);Writeln(‘Beli’);
Gotoxy(32,3);Writeln(‘Satuan’);
Gotoxy(70,3);Writeln(‘Bayar’);
Gotoxy(1,4);Writeln(‘==========================================
=================================’);
For j:=1 to i do
Begin
Gotoxy(1,j+4);Writeln(j);
Gotoxy(7,j+4);Writeln(merk[j]);
Gotoxy(18,j+4);Writeln(ukuran[j]);
Gotoxy(26,j+4);Writeln(jumbel[j]);
Gotoxy(32,j+4);Writeln(‘Rp’,harsat[j]);
Gotoxy(55,j+4);Writeln(‘Rp ‘,pot[j]:0:2);
Gotoxy(67,j+4);Writeln(‘Rp ‘,harsih[j]:5:2);
End;
Writeln(‘======================================================
=====================’);
Readln;
End.
Page 30 of 50
1.2.9 Contoh program array 9 | toko serba ada
Kode :
uses crt;
var
np:string[20];
jd,i:byte;
nb:array[1..50]of string;
jb,ttl,hrg:array[1..50]of real;
tot:real;
lagi:char;
label awal,akhir;
begin
awal:
clrscr;
writeln(‘————————-’);
for i:=1 to jd do
begin
Page 31 of 50
writeln(‘data ke- ‘,i);
write(‘harga :’);readln(hrg[i]);
end;
clrscr;
writeln(‘———————————————————–’);
writeln(‘———————————————————–’);
tot:=0;
for i:=1 to jd do
begin
ttl[i]:=hrg[i]*jb[i];
tot:=tot+ttl[i];
end;
for i:=1 to jd do
Page 32 of 50
begin
writeln(i:1,np:10,nb[i]:13,jb[i]:12:0,hrg[i]:8:0,ttl[i]:10:0);
end;
writeln(‘————————————————————-’);
writeln(‘total bayar
= ‘,tot:3:0);
writeln(‘————————————————————-’);
goto awal
else
goto akhir;
akhir:
readln;
end.
Kode :
program bengkel;
uses crt;
Page 33 of 50
var
i,b:byte;
hrg,bonus,hrgsev,hrgoli,tot:array [1..50]of
real;
totb:real;
begin
clrscr;
writeln(‘========================’);
for i:=1 to b do
begin
writeln;
end;
writeln;
Page 34 of 50
writeln(‘ PROGRAM SERVIC BENGKEL
MAJU MUNDUR’);
writeln(‘======================================================
================’);
writeln;
totb:=0;
for i:=1 to b do
begin
if jnsmbl[i]=’1′ then
hrgsev[i]:=30000
else
hrgsev[i]:=20000;
if nmoli[i]=’2′ then
hrgoli[i]:= 20000
else
hrgoli[i]:=30000;
tot[i]:=hrgsev[i]+hrgoli[i];
totb:=totb+tot[i];
end;
Page 35 of 50
for i:=1 to b do
begin
writeln(i:1,nm[i]:9,hrgsev[i]:14:0,hrgoli[i]:18:0,tot[i]:19:0);
end;
writeln(‘======================================================
===========’);
writeln(‘total bayar
:’,totb:2:0);
readln;
end.
Kode :
uses crt;
var
jp,i:byte;
np,nk:array[1..50]of string;
fsl:array[1..50]of char;
jml,hrg,ttl:array[1..50]of real;
tot:real;
Page 36 of 50
lagi:char;
label awal,akhir;
begin
awal:
clrscr;
writeln(‘================================’);
for i:=1 to jp do
begin
end;
Page 37 of 50
writeln(‘————————————————————————-’);
tot:=0;
for i:=1 to jp do
begin
if fsl[i]=’1′ then
hrg[i]:=200000
else
if fsl[i]=’2′ then
hrg[i]:=180000
else
if fsl[i]=’3′ then
hrg[i]:=140000
else
hrg[i]:=80000;
ttl[i]:=hrg[i]*jml[i];
tot:=tot+ttl[i];
end;
for i:=1 to jp do
begin
Page 38 of 50
writeln(i:1,np[i]:10,nk[i]:12,fsl[i]:15,jml[i]:14:0,hrg[i]:12:0
,ttl[i]:10:0);
end;
writeln(‘————————————————————————–’);
writeln(‘total pembayaran
=’,tot:9:0);
writeln(‘————————————————————————–’);
goto awal
else
goto akhir;
akhir:
readln;
end.4
4
[Link]
Page 39 of 50
BAB 2
RECORD
1. Pengertian
Record merupakan kumpulan elemen data yang dikumpulkan menjadi satu kesatuan dengan
tipe data sama ataupun berbeda. Meskipun field tersebut berada dalam satu kesatuan,
namun masih dapat di akses secara individual.
Sebuah record rekaman disusun oleh beberapa field. Tiap field berisi data dari tipe dasar /
bentukan tertentu. Record mempunyai kelebihan untuk menyimpan suatu sekumpulan
elemen data yang berbeda-beda tipenya (di banding array).
Cara pendeklarasian dari record adalah sebagai berikut:
• Mendefinisikan tipe dari record (jumlah field, jenis tipe data yang dipakai),
• Mendefinisikan variabel untuk dilakukan operasi.
SYNTAX
type
nama_record = record
identifier_1 : tipe_data_1;
identifier_n : tipe_data_n;
end;
var variabel : nama_record;
Contoh.
type
Data_mahasiswa = record
Nama : string;
Usia : integer;
Kota : String;
Kodepos : integer;
end;
Var
x: Data_mahasiswa;
1. Pengaksesan Elemen Record
[Link] Nama variable disertai nama field.
[Link]
Page 40 of 50
[Link]
[Link]
Contoh.
program RECORD_INTRO;
type tanggal = record
bulan, hari, tahun : integer;
end;
var
waktu : tanggal;
begin
[Link] :=25;
[Link]:=09;
[Link]:= 1983;
writeln('hari ini adalah ',[Link],':',[Link],':',
[Link])
end.
2. Pengunaan With … do
Pernyataan with untuk lebih menyederhanakan pengaksesan field-field pada record.
Pemrograman dapat mengakses field cukup dengan menyebutkan nama field-nya saja.
Misalkan pernyataan :
[Link]
[Link]
[Link]
[Link]
menjadi
with x do
Begin
Nama
Usia
Kota
Kodepos
end
Contoh.
program RECORD_INTRO;
Page 41 of 50
type tanggal = record
bulan, hari, tahun : integer;
end;
var
waktu : tanggal;
begin {program utama}
with waktu do {mulai with}
begin
hari :=25;
bulan:=09;
tahun:=1983;
writeln('hari ini adalah ',hari,':',bulan,':', tahun)
end {akhir with}
end.
3. Array dari Record
Suatu array dapat juga berisi record contoh suatu deklarasi record tanggal.
type tanggal = record
bulan, hari, tahun : integer;
end;
var waktu : tanggal;
kemudian kita membentuk suatu array dari record ini, namakan birthdays.
var birthdays : array[1..10] of tanggal;
pernyataan ini akan membentuk suatu array dengan 10 elemen. Dimana tiap elemen adalah
sebuah record tanggal, yaitu, terdiri atas bulan, hari, tahun dengan tipe data Integer.
Digambarkan seperti berikut:
Contoh Pemberian nilai awal dari masing-masing elemen birthdays:
Birthdays[1].hari :=25;
Birthdays[1].bulan:=09;
Birthdays[1].tahun:=1983;
4. 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;
Page 42 of 50
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.[Link]:= 11;
saat_ini.[Link]:= 2;
saat_ini.[Link]:= 1985;
saat_ini.[Link]:= 3;
saat_ini.[Link]:= 3;
saat_ini.[Link]:= 33;
Simple Record dan Array pada Pascal
Pada ujian struktur data kemaren ada sebuah soal yang memerintahkan kita untuk membuat
sebuah program untuk sebuah perpustakaan. Program ini akan merekam informasi mengenai
200 data buku-buku yang ada meliputi judul buku, kode, pengarang, edisi, tahun terbit, dan
penerbitnya. Output yang diharapkan adalah berupa tabel yang menampilkan informasi data
buku yang telah direkam secara terurut ascending dengan metode sorting berdasarkan judul
buku. Demikianlah kira-kira gambaran tentang program tersebut..
uses wincrt; type
recBuku=record
judul:string[20];
kode:string[10];
pengarang:string[20];
ed:string[4];
tahun:integer;
penerbit:string[20];
end;
var
Page 43 of 50
a:array[1..200] of recBuku;
tempjudul,temppeng,temppnb:string[20];
tempkod:string[10];
temped:string[4];
tempth,i,j:integer;
begin
writeln(’+++++++++++++++++ Input Data Buku ++++++++++++++++’);
writeln(’—————————————————————–’);
for i:=1 to 200 do
begin
write(’Judul Buku : ‘);readln(a[i].judul);
write(’Kode Buku : ‘);readln(a[i].kode);
write(’Pengarang : ‘);readln(a[i].pengarang);
write(’Edisi : ‘);readln(a[i].ed);
write(’Tahun terbit : ‘);readln(a[i].tahun);
write(’Penerbit : ‘);readln(a[i].penerbit);
writeln;
end;
for i:=1 to 200 do
begin
for j:=1 to 200 do
begin
if a[j].judul > a[i].judul then
begin
tempjudul:=a[j].judul;
a[j].judul:=a[i].judul;
a[i].judul:=tempjudul;
tempkod:=a[j].kode;
a[j].kode:=a[i].kode;
a[i].kode:=tempkod;
temppeng:=a[j].pengarang;
a[j].pengarang:=a[i].pengarang;
a[i].pengarang:=temppeng;
temped:=a[j].ed;
a[j].ed:=a[i].ed;
Page 44 of 50
a[i].ed:=temped;
tempth:=a[j].tahun;
a[j].tahun:=a[i].tahun;
a[i].tahun:=tempth;
temppnb:=a[j].penerbit;
a[j].penerbit:=a[i].penerbit;
a[i].penerbit:=temppnb;
end;
end;
end;
clrscr;
writeln;
writeln(’+++++++++++++++++ Output Data Buku ++++++++++++++++++
+’);
writeln;
writeln(’———————————————————————–’);
writeln(’| No | Judul | Kode | Pengarang | Edisi | Tahun |
Penerbit |’);
writeln(’———————————————————————–’);
writeln;
for i:=1 to 200 do
begin
writeln(i,’ ‘,a[i].judul:3,’ ‘,a[i].kode:3,’
‘,a[i].pengarang:3,’ ‘,a[i].ed:3,’ ‘,a[i].tahun:3,’
‘,a[i].penerbit:3);
end;
readln;
end.
Pada program diatas deklarasi untuk proses sorting data ditunjukkan pada :
for i:=1 to 200 do
begin
for j:=1 to 200 do
begin
if a[j].judul > a[i].judul then
begin
Page 45 of 50
tempjudul:=a[j].judul;
a[j].judul:=a[i].judul;
a[i].judul:=tempjudul;
…
a[j].penerbit:=a[i].penerbit;
a[i].penerbit:=temppnb;
end;
end;
end;
yang akan memproses data secara ascending berdasarkan judul buku yang telah diinputkan
pengguna. Demikian semoga bisa membantu kita semua.
[Link] Tipe Rekaman
Sama halnya dengan larik, rekaman (record) adalah kumpulan data. Perbedaan antara larik
dengan rekaman adalah dalam larik semua elemennya harus bertipe sama tetapi dalam
rekaman setiap elemen bisa mempunyai tipe data yang berbeda satu sama lainnya.
Bentuk umum deklarasi rekaman adalah
type pengenal = record
medan1 :tipe1;
medan2 :tipe2;
.
.
.
medann :tipen;
end;
Keterangan:
pengenal : pengenal yang menunjukkan tipe data yang akan dideklarasikan.
medan1,…, medann : nama medan yang akan digunakan.
tipe1,…, tipen : sembarang tipe data yang telah dideklarasikan sebelumnya.
Contoh deklarasi rekaman,
type Tgl_Kalender = record
Tanggal :1..31;
Bulan : 1..12;
Page 46 of 50
Tahun : 1900..2000;
end;5
2. Contoh program
Kode:
Kode :
5
[Link]
6
[Link]
Page 47 of 50
type recMhs = record
nama : string[80];
NPM : string[8];
nilai : integer;
end;
begin
Write(’Masukkan nama mahasiswa ‘);
ReadLn([Link]);
Write(’Masukkan NPM ‘); ReadLn([Link]);
Write(’Nilainya berapa ‘); ReadLn([Link]);
WriteLn(’Nama mahasiswa yang Anda masukkan adalah
‘,[Link]);
WriteLn(’NPM mahasiswa ini adalah ‘,[Link]);
WriteLn(’Nilainya adalah ‘,[Link]);
end.
Kode :
type barang=RECORD
namabrg:string[20];
jmlbrg:byte;
hargabrg:real;
total:real;
end;
var jual:array [1..10] of barang
i,j:integer;
tot1:real;
Begin
I:=1;
write(‘Nama barang :’);readln(jual[i].nmbrg);
Repeat
write(‘Jumlah barang :’);readln(jual[i].jmlbrg);
Page 48 of 50
write(‘Harga barang :’);readln(jual[i].hrgbrg);
jual[i].total:=jual[i].jmlbrg* jual[i]. jual[i].[Link];
inc (I);
write(‘Nama barang :’);readln(jual[i].nmbrg);
until (jual[i].nmbrg=‘0’) or (I=11);
dec(i);
clrscr;
writeln
(‘--------------------------------------------------------
----’);
writeln (‘No nama barang jumlah harga total’);
writeln
(‘--------------------------------------------------------
----’);
for j:=1 to I do
begin
gotoxy(1,j+3);write (j);
gotoxy(5,j+3);write(jual[i].nmbrg);
gotoxy(26,j+3);write(jual[i].jmlbrg:10);
gotoxy(37,j+3);write(jual[i].hrgbrg:10:2);
gotoxy(48,j+3);write(jual[i].total:10:2);
tot1:=tot1 + jual[j].total ;
end;
writeln
(‘--------------------------------------------------------
----’);
writeln(‘ Total :’,tot1:10:2’);
writeln
(‘--------------------------------------------------------
----’);
end.7
7
ivan_maurits.[Link]
Page 49 of 50
DAFTAR PUSTAKA
[Link], search engine. Diakses tanggal 5 januari 2010, jam 21.00 WIB
[Link]
diakses pada tanggal 5 januari 2010, jam 21.32 WIB
Page 50 of 50