Anda di halaman 1dari 77

MODUL

ALGORITMA DAN STRUKTUR DATA 1 & 2


Oleh : Eko Riyanto

STMIK HIMSYA SEMARANG

SEKOLAH TINGGI ILMU MANAJEMEN DAN KOMPUTER


(STMIK)
HIMSHYA SEMARANG
2011

BAHAN AJAR
MATA KULIAH PEMROGRAMAN
Tinjauan Mata Kuliah
1.1. Deskripsi Mata Kuliah
Algoritma dan struktur data merupakan matakuliah yang
mempelajari

bagaimana

Matakuliah

praktikum

membuat
dengan

program

terstruktur.

menggunakan

bahasa

pemrograman Pascal ini mempelajari materi array, record,


prosedur, fungsi, sorting, searching dan file.
1.2. Kegunaan Mata Kuliah
Algoritma dan struktur data memberikan manfaat kepada
mahasiswa

untuk

pemrograman

dapat

terstruktur.

memahami
Dengan

lebih

lanjut

tentang

menggunakan

bahasa

pemrograman Pasal ini, mahasiswa bisa membuat program untuk


memecahkan berbagai macam persoalan dalam kehidupan
sehari-hari.
1.3. Tujuan Instruksional Umum
Setelah
diharapkan

menyelesaikan
mampu

mata

membuat

kompleks.
1.4. Susunan Bahan Ajar
Bab I

Array

Bab II

Record

Bab III

Prosedur

Bab IV

Fungsi

Bab V

Sorting

Bab VI

Searching

Bab VII File


1.5. Petunjuk Bagi Mahasiswa

kuliah

program

ini,

mahasiswa

terstruktur

yang

a. Sebelum mengikuti perkuliahan hendaknya mahasiswa


telah membaca bahan ajar ini dan dapat diperkaya dengan
sumber

acuan

lainnya

yang

relevan

pada

setiap

pertemuan.
b. Untuk memperkaya wawasan dan pengetahuan sangat
dianjurkan

penelusuran

literatur

khususnya

materi

algoritma dan struktur data melalui sumber bacaan dan


internet.
c. Mintalah petunjuk dari dosen jika ada hal yang belum
terselesaikan, baik dalam diskusi kelompok

maupun

dalam diskusi kelas


d. Kerjakan setiap tugas terstruktur yang diberikan pada
setiap akhir kegiatan/pertemuan dengan baik.
e. Perbanyaklah latihan mengerjakan soal, baik secara teori
maupun langsung dipraktekan dalam komputer dengan
menggunakan bahasa pemrograman Pascal.

BAB I
ARRAY
A. Pendahuluan
Deskripsi Singkat
Bab ini akan mengemukakan bahasan tentang definisi array,
deklarasi array, mengakses elemen array, array sebagai tipe
data bentukan, array konstan, array sebagai parameter, array
multidimensi.
Relevansi
Pembahasan pada bab ini sangat penting dipahami, karena
materi array ini memberikan manfaat yaitu efisiensi program.
Materi array sangat berkaitan dengan materi lainnya dalam
sebuah pemrograman terstruktur, karena array dapat digunakan
dan

dikombinasikan

dengan

bahasan

lain

dalam

sebuah

program.
Tujuan Instruksional Khusus
Mahasiswa mampu membuat program dengan menggunakan
array.
B. Penyajian
Bagi para pemrogram, efisiensi program merupakan hal
utama yang harus diperhatikan, baik itu dalam hal kecepatan
jalannya program, memori yang digunakan, banyak baris kode
yang dituliskan dan juga ketepatan algoritma yang digunakan.
Salah satu komponen yang harus dikuasai untuk memperoleh
program yang baik adalah pengetahuan tentang array.
1)

Definisi Array

Array (larik) adalah sebuah variabel yang dapat menyimpan


lebih dari satu nilai sejenis (memilikii tipe data sama). Hal ini
berbeda dengan variabel biasa yang hanya mampu menampung
satu buah nilai. Setiap nilai yang disimpan di dalam array disebut
dengan elemen array, sedangkan nilai urut yang digunakan
untuk mengakses elemennya disebut dengan indeks array.
Sebagai contoh, misalkan terdapat array A yang memiliki 10
buah

elemen

nilai

yang

bertipe

integer,

maka

dapat

dipresentasikan sebagai berikut :


A[1]
1
10

A[2]
2
20

A[3]
3
30

A[4]
4
40

A[5]
5
50

A[6]
6
60

A[7]
7
70

A[8]
8
80

A[9]
9
90

A[10]
10
100

Nilai elemen array


Indeks array
Elemen array
Gambar 1.1 Komponen Array (sumber :Rahardjo)

Setiap elemen array di atas menyimpan nilai bertipe integer


dan akan menempati alamat memori yang berbeda, hal ini akan
menyebabkan array tersebut memiliki ukuran 40 byte, yang
berasal dari 10 x 4. Nilai 10 menunjukkan banyaknya elemen
array sedangkan nilai 4 merupakan ukuran dari tipe data integer
(dalam 32 bit).
2)

Deklarasi Array
Sama seperti variabel lain, array juga dideklarasikan di dalam

bagian deklarasi variabel. Bila akan didefinisikan sebagai tipe


bentukan, maka array juga akan dideklarasikan di bagian definisi
tipe

(di

bawah

kata

kunci

type).

Dalam

bahasa

Pascal,

pendeklarasian array dilakukan dengan menggunakan kata kunci


array dan tipe data yang akan disimpan di dalamnya, selai itu
juga harus disertai dengan batas-batas indeksnya yang diapit

oleh tanda bracket ([ ]). Berikut ini bentuk umum pendeklarasian


array.
NamaArray : array [Indeks Awal . . IndeksAkhir] of tipe data;
Gambar 1.2 Bentuk Umum Pendeklarasian array(sumber:Rahardjo)

Sebagai contoh, apabila kita ingin mendeklarasikan array


dengan nama A yang berisi 10 buah elemen bertipe integer,
maka kita harus mendeklarasikannya dengan cara berikut.
Var
A : array [1 . . 10] of integer;

Pada kode tersebut, indeks array diulai dari satu. Perlu


diperhatikan bahwa bahasa Pascal berbeda dengan bahasa C
yang indeks array-nya selalu dimulai dari nol. Pada bahasa
Pascal, indeks array dapat dimulai dari bilangan berapapun.
Selain itu, indeks array juga dapat bertipe karakter maupun tipe
enumerasi. Berikut ini contoh-contoh kode yang dapat digunakan
untuk mendeklarasikan 10 buah elemen array bertipe integer
sebagai pengganti kode di atas.
Var
A1 :
A2 :
A3 :
A4 :

array [0 . . 9] of integer;
array [5 . . 15] of integer;
array [a . . j] of integer;
arrat [A . . J] of integer;

Dalam bahasa Pascal, tersedia dua buah fungsi yang dapat


digunakan untuk mengambil indeks terendah dan tertinggi dari
sebuah array, yaitu fungsi Low dan High. Adapun parameter dari
kedua fungsi tersebut adalah nama array yang akan dicari
indeksnya. Perhatikan contoh kode berikut.
Var
A: array [1 . . 100] of integer;
terendah, tertinggi : integer;
Begin
terendah := Low (A); {akan menghasilkan nilai 1}
tertinggi := High (A) {akan menghasilkan nilai 100}
..
end.

3)

Mengakses Elemen Array

Setelah mengetahui cara pendeklarasian array, selanjutnya


kita harus mengetahui bagaimana cara untuk memanipulasi
array tersebut. Langkah pertama yang harus dilakukan adalah
mengisikan nilai ke dalam elemen-elemen array bersangkutan.
Bentuk umum untuk pengisian elemen array adalah sebagai
berikut.
NamaArray [indeks] := nilai;
Gambar 1.3 Bentuk Umum Pengisian Elemen Array(sumber:Rahardjo)

Untuk lebih memahaminya, coba perhatikan contoh kode di


bawah ini.
Var
A: array [1..100] of integer;
Begin
A[1] :=1;
{mengisi elemen
A[2] :=2;
{mengisi elemen
A[3] :=3;
{mengisi elemen
....
A[100] :=100; {mengisi elemen
end.

pertama dengan nilai 1}


kedua dengan niali 2}
ketiga dengan niali 3}
keseratus dengan nilai 100}

Kode tersebut akan melakukan pengisian 100 elemen array


dengan nilai 1 sampai 100 sehingga kode tersebut akan lebih
sederhana apabila dituliskan dengan menggunakan struktur
pengulangan seperti yang terlihat pada kode berikut.
Var
A: array [1..100] of integer;
i : integer;
Begin
For i:= 1 to 100 do
Begin
A[1] := i;
end;
End.

4)

Mengapa Harus Menggunakan Array


Bagi seorang pemula, mungkin akan mucul pertanyaan

mengapa kita perlu mendeklarasikan array? Untuk menjawab


pertanyaan tersebut, coba perhatikan contoh kasus berikut.

Apabila kita akan membuat program untuk menyimpan


sekumpulan data, misalnya data-data hasil penelitian yang
berupa bilangan, dimana jumlah dari data tersebut puluhan,
ratusan atau bahkan ribuan, apakah akan menggunakan variabel
sebanyak data yang ada? Jawabannya tentu tidak, karena hal
tersebut merupakan hal yang sangat tidak efisien. Sebagai
contoh, asumsikan bahwa banyak data tersebut.
Var
N1, n2, n3, n4, n5, n6, n7, n8, n9, n10 : real;
Begin
Writeln(masukkan data ke-1 : ); readln(n1);
Writeln(masukkan data ke-2 : ); readln(n2);
Writeln(masukkan data ke-3 : ); readln(n3);
Writeln(masukkan data ke-4 : ); readln(n4);
Writeln(masukkan data ke-5 : ); readln(n5);
Writeln(masukkan data ke-6 : ); readln(n6);
Writeln(masukkan data ke-7 : ); readln(n7);
Writeln(masukkan data ke-8 : ); readln(n8);
Writeln(masukkan data ke-9 : ); readln(n9);
Writeln(masukkan data ke-10 : ); readln(n10);
End.

Hal ini tentu akan merepotkan diri kita. Apabila dilihat,


program di atas memang masih pendek karena datanya hanya
10, bagaimana bila ratusan ata bahkan ribuan?
Untuk mengatasi masalah ini, seharusnya kita menggunakan
array untuk menyimpan data-data tersebut sehingga program
akan jauh lebih sederhana dan mudah dalam pengerjaannya.
Berikut ini perbaikan program di atas apabila kita menampung
data-datanya ke dalam sebuah array.
Const max = 10;
Var
n : array [1 . . max] of real;
i : integer;
begin
for i:= 1 to max do
writeln(Masukkan data ke-, i, : ); readln(n[i]);
end.

Apabila ternyata data berjumlah 100 atau 1000, maka kita


hanya perlu mengganti nilai dari konstanta max di atas dengan

nilai yang sesuai. Alasan seperti inilah yang menyebabkan kita


perlu untuk menggunakan array.

5)

Array Sebagai Tipe Data Bentukan


Array juga dapat digunakan sebagai tipe data bentukan, yaitu

dengan cara mendeklarasikannya di bagian definisi tipe data,


yaitu bagian yang diawali dengan kata kunci type.
Type
Bilangan = array [1 . . 100] of integer;
Vokal = array [1 . . 5] of char;

Setelah selesai mendefinisikan array tersebut, maka kita


dapat menggunakannya untuk mendeklarasikan variabel lain di
dalam program. Berikut ini contoh pendeklarasian variabel yang
menggunakan tipe bentukan berupa array.
Var
X : bilangan;
Vowel : vokal;

Pada ontoh di atas kita mendeklarasikan variabel dengan


nama x yang bertipe Bilangan, sedangkan variabel vowel bertipe
vokal. Hal ini menyebabkan variabel tersebut juga dapat
diperlukan

sebagai

array.

Berikut

ini

contoh

kode

yang

menunjukkan penggunaan variabel-variabel tersebut.


Begin
X[1[ := 1;
X[2] := 2;
...
Vowel [1] := a;
Vowel [2] := i;
...
End.

6)

Array Konstan
Nilai yang terkandung di dalam sebuah array dapat bernilai

konstan, artinya nilai-nilai tersebut tidak dapat diubah. Untuk


melakukan hal tersebut, kita harus mendeklarasikan array

bersangkutan dengan kata kunci const. Berikut ini bentuk umum


pendeklarasiannya.

Const
NamaArray : array [indexAwal . . indeksAkhir] of tipe_data =
Nila1, nilai2, ...);
Gambar 1.4 Bentuk Umum Pendeklarasian Array Konstan
(sumber:Rahardjo)

Perlu diperhatikan bahwa banyaknya nilai konstan yang


dituliskan diatas harus sesuai dengan banyaknya elemen array
yang

didefinisikan.

Sebagai

contoh,

apabila

kita

ingin

mendeklarasikan array dengan jumlah elemen 5, maka nilai


konstan yang diisikan juga haruslah berjumlah 5. Perhatikan
contoh kode berikut.
Const
A : array [1 . . 5] of char = (A , B , C , D , E);

Oleh karena array A di atas bersifat konstan, maka kita tidak


dapat menggantikan nilainya dengan nilai lain, seperti yang
ditunjukkan oleh kode di bawah ini.
A
A
A
A
A

[1]
[2]
[1]
[1]
[1]

:=
:=
:=
:=
:=

V ; {SALAH, karena elemen A [1] selalu bernilai A}


W ; {SALAH, karena elemen A [2] selalu bernilai B}
X ; {SALAH, karena elemen A [3] selalu bernilai C}
Y ; {SALAH, karena elemen A [4] selalu bernilai D}
Z ; {SALAH, karena elemen A [5] selalu bernilai E}

Hal ini menunjukkan bahwa array konstan nilainya hanya


dapat dibaca, namun tidak untuk diubah. Agar lebih memahami
konsepnya, perhatikan contoh implementasi dari array konstan
berikut ini.
Function HariSekarang : string;
Const
Hari : array[0 . .6] of string[6] =
(Minggu, Senin, Selasa, Rabu, Kamis, Jumat, Sabtu);
var
thn, bln, hr, indeksHari : word;
begin
getDate(thn, bln, hr, indeksHari);

10

HariSekarang := Hari [indeksHari];


End;

Pada contoh di atas kita membuat sebuah fungsi untuk


mendapatkan nama hari sesuai dengan tanggal sekarang (hari
ini). Berikut ini contoh program lain yang akan menunjukkan
penggunaan array konstan.
Program ArrayKonstan;
Uses crt;
Const
Bulan : array [1 . . 12] of string =
(Januari, Februari, Maret, April, Mei, Juni, Juli, Agustus,
September, Oktober, Nopember, Desember);
var
noBulan : integer;
begin
clrscr;
write(Masukkan nomor bulan :); readln(noBulan);
write(Nama bulan ke-, noBulan, adalah , Bulan[noBulan]);
readln;
end.

Contoh hasil yang akan diberikan oleh program di atas adalah


sebagai berikut.
Masukkan nomor bulan : 3
Nama bulan ke-3 adalah Maret

7)

Array Sebagai Parameter


Pada kasus-kasus pemrograman tertentu kita juga dituntut

untuk menggunakan array sebagai parameter sebuah prosedur


ataupun fungsi. Hal ini sering kita jumpai pada saat kita akan
melakukan pencarian maupun pengurutan dari sekumpulan data.
Berikut ini contoh penggunaan array di dalam sebuah prosedur.
Type
Bilangan = array[1..100] of integer;
Procedure inputArray[a:bilangan; N:integer);
Var
i : integer;
Begin
For i := 1 to N do
Write (masukkan elemen array ke-, i); readln(A[i]);
End;

Pada contoh di atas kita te;ah membuat prosedur yang


memiliki

parameter

bertipe

array.

11

Prosedur

tersebut

akan

digunakan untuk melakukan pengisian elemen array sebanyak N,


dimana 1 N 100.
Perlu diperhatikan bahwa array yang dilewatkan sebagai
parameter ini harus dideklarasikan terlebih dahulu. Berikut ini
contoh

penggunaan

array

yang

tidak

diperbolehkan

oleh

kompiler.
Procedure InputArray [A:array[1..100] of integer; N);

Berikut

ini

kode

yang

merupakan

{salah}

perbaikan

dari

kode

sebelumnya.
Procedure InputArray [A:array of integer; N);

{benar}

Untuk lebih memahaminya, perhatikan contoh program di


bawah ini dimana kita akan menggunakan array sebagai
parameter.
Program ParamArray;
Uses crt;
Const max = 100;]type
Bilangan = array [1 . . max] of integer;
Procedure InputArray[A:bilangan; N:integer);
Var
i:integer;
Begin
Writeln (Memasukkan data :);
For i : 1 to N do
Write(Masukkan nilai A[, i, ] : ); readln(A[i]);
End;
Procedure OutputArray (A:bilangan; N:integer);
Var
i:integer;
begin
writeln(Menampilkan data :);
for i : 1 to N do
write (A[, i, ] = , A[i]);
end;
var
Arr:bilangan;
count:integer;
Begin
Clrscr;
Write (Masukkan banyaknya elemen array :); readln(count);
Writeln;
OutputArray (Arr, count);
Readln;
End.

12

Contoh hasil yang akan diberikan dari program di atas adalah


sebagai berikut.
Masukkan banyaknya elemen array : 3
Memasukkan data :
Masukkan nilai A[1] : 10
Masukkan nilai A[2] : 20
Masukkan nilai A[3] : 30
Menampilkan data :
A[1] = 10
A[2] = 20
A[3] = 30

8)

Array Multidimensi
Sejauh ini kita baru membahas mengenai array berdimensi

satu. Pada bagian ini kita akan mempelajari bagaimana cara


mendeklarasikan dan memanipulasi data yang terdapat pada
array multidimensi. Agar lebih mempermudah pembahasan,
materi ini akan dibagi menjadi dua kelompok, yaitu array dua
dimensi dan array tiga dimensi.
9)

Array Dua Dimensi


Array dua dimensi adalah array yang memiliki dua buah

elemen bertipe array. Dengan kata lain, array dua dimensi


memiliki dua buah subskrip, yang biasanya dipresentasikan
dengan baris dan kolom. Untuk lebih memahami konsepnya,
perhatikan terlebih dahulu gambar di bawah ini.

baris

Kolom
Gambar 1.5. Array dua dimensi (sumber:Rahardjo)

Pada gambar di atas, array memiliki 3 buah baris dan 4 buah


kolom, sehingga jumlah elemennya adalah 3x4 = 12. Perlu
diketahui bahwa keadaan tersebut sebenarnya hanya merupakan
keadaan logik yang bertujuan untuk mempermudah pemahaman
array dua dimensi. Pada kenyataannya, pengalamatan memori di

13

komputer dari array dua dimensi tetap akan dipresentasikan


dengan sebuah deretan larik yang memanjang (tidak berbentuk
baris dan kolom). Pendeklarasian array dua dimensi di dalam
bahasa Pascal dilakukan melalui bentuk umum di bawah ini.
NamaArray : array [1 . . banyakbaris, 1 . . banyakkolom] of tipe_data;

Sebagai contoh, apabila kita akan mendeklarasikan array dua


dimensi dengan 3 buah baris dan 4 buah kolom dimana setiap
elemennya bertipe integer, maka kita dapat menuliskan kode
seperti berikut.
Array2D : array [1 . . 3, 1 . . 4] of integer;

Untuk melakukan pengaksesan terhadap elemen-elemennya,


kita harus menuliskan indeks baris dan kolomnya. Sebagai
contoh, apabila kita ingin mengisikan nilai 100 ke dalam elemen
yang terdapat pada baris ke-2 kolom ke-3, maka kita harus
menuliskannya sebagai berikut.
Array2D [2, 3] : = 100;

Berikut ini contoh program yang menunjukkan penggunaan


array dua dimensi. Di sini kita akan membuat program yang
dapat menjumlahkan dua buah matriks A dan B yang masingmasing berordo 2 x 3 (memiliki 2 baris dan 3 kolom).
Program JumlahMatriks;
Uses crt;
Const
Jbaris = 2;
Jkolom = 3;
Type
Matriks23 = array [1 . . Jbaris, 1 . . Jkolom] of integer;
Var
A,B,C : Matriks23;
j, k : integer;
begin
clrscr;
{mengisikan matriks A}
writeln (Matriks A);
for j: = 1 to Jbaris do begin
for k: = 1 to Jkolom do begin
write(A[, j, , , k, ] = ); readln(A[j, k]);
end;
writeln;
end;

14

writeln;
{mengisikan matriks B}
writeln(Matriks B);
for j: = 1 to Jbaris do begin
for k: = 1 to Jkolom do begin
write(B[, j, , , k, ] = ); readln(B[j, k]);
end;
writeln;
end;
writeln;
{melakukan penjumlahan matriks A dan B sekaligus menampilkan hasilnya ke
layar}
writeln(Hail Penjumlahan);
for j: = 1 to Jbaris do begin
for k: = 1 to Jkolom do begin
C[j, k] : = A[j, k] + B[j, k];
write(C[, j, , , k, ] = ); readln(C[j, k]);
end;
writeln;
end;
readln;
end.

Contoh hasil yang akan diberikan oleh program di atas adalah


sebagai berikut.
Matriks A
A[1, 1] = 1
A[1, 2] = 2
A[1, 3] = 3
A[2, 1] = 4
A[2, 2] = 5
A[2, 3] = 6
Matriks B
B[1, 1] = 3
B[1, 2] = 2
B[1, 3] = 1
B[2, 1] = 6
B[2, 2] = 5
B[2, 3] = 4
Hasil Penjumlahan
C[1, 1] = 4
C[1, 2] = 4
C[1, 3] = 4
C[2, 1] = 10
C[2, 2] = 10
C[2, 3] = 10

15

10)

Array Tiga Dimensi


Array tiga dimensi merupakan array yang memiliki tiga buah

subskrip dan lebih kompleks apabila dibandingkan dengan array


dua dimensi. Di sini, subskrip yang ada akan dipresentasikan
dengan sumbu x, y dan z atau panjang, lebar dan tinggi seperti
yang ditunjukkan oelh gambar berikut.
y

Gambar 1.6. Array tiga dimensi


(sumber : Rahardjo)

x
z
Berikut

ini

bentuk

umum

yang

digunakan

untuk

mendeklarasikan array tiga dimensi di dalam bahasa Pascal.


NamaArray : array [1 . . xMaks, 1 . . yMaks, 1 . . zMaks] of
tipe_data;
Gambar 1.7 Bentuk Umum Pendeklarasian Array Tiga
Dimensi(sumber:Rahardjo)

Sebagai contoh apabila kita ingin mendeklarasikan array


yang memiliki panjang 2, lebar 3 dan tinggi 4 elemen bertipe
integer, maka kita akan menuliskannya seperti di bawah ini.
Array3D : array [1 . . 2, 1 . . 3, 1 . . 4] of integer;

Jumlah elemen yang terdapat di dalam array tersebut adalah


2 x 3 x 4 = 24. Sekarang apabila kita ingin mengisikan nilai 100
ke dalam elemen yang berada pada posisi panjang ke-2, lebar
ke-3 dan tinggi ke-1, maka kita akan melakukannya melalui kode
berikut.
Array3D : [2, 3, 1] : = 100;

Berikut ini adalah contoh yang akan menunjukkan cara


pengaksesan elemen di dalam array 3 dimensi.

16

Program AksesArray3D;
Uses crt;
Const
xMaks = 2;
yMaks = 2;
zMaks = 2;
Type
Array3D = array [1 . . xMaks, 1 . . yMaks,1 . . zMaks] of integer;
Var
A: Array3D;
i, j, k : integer;
begin
clrscr;
{mengisikan nilai ke dalam array A}
x := 1;
for i := 1 to xMaks do begin
for j := 1 to jMaks do begin
for k := 1 to zMaks do begin
A[i, j, k] := x;
inc(x);
end;
end;
end;
{menampilkan isi yang terdapat dalam array A}
for i := 1 to xMaks do begin
for j := 1 to jMaks do begin
for k := 1 to zMaks do begin
write(A[ , i, , , j, , , z, ] = , A[ i, j, k] , );
end;
end;
writeln;
end;
readln;
end.

Hasil yang akan diberikan oleh program diatas adalah sebagai


berikut:
A[1, 1, 1] = 1
A[2, 1, 1] = 5

A[1, 1, 2] = 2
A[2, 1, 2] = 6

A[1, 2, 1] = 3
A[2, 2, 1] = 7

A[1, 2, 2] = 4
A[2, 2, 2] = 8

C. Penutup
Array merupakan sebuah variabel yang dapat menyimpan
lebih dari satu nilai yang memiliki tipe data sama.

Hal ini

berbeda dengan variabel biasa yang hanya mampu menampung


satu buah nilai. Setiap nilai yang disimpan di dalam array disebut

17

dengan elemen array, sedangkan nilai urut yang digunakan


untuk mengakses elemennya disebut dengan indeks array.
Apabila kita akan membuat program untuk menyimpan
sekumpulan data, misalnya data-data hasil penelitian yang
berupa bilangan, dimana jumlah dari data tersebut puluhan,
ratusan atau bahkan ribuan, apakah akan menggunakan variabel
sebanyak data yang ada? Jawabannya tentu tidak, karena hal
tersebut merupakan hal yang sangat tidak efisien. Penggunaan
array dalam program akan membuat program lebih efisien dan
mudah dipahami.
1)
(a)

Pertanyaan
Buat

program

dengan

menggunakan

array

untuk

menginput 10 nilai, bandingkan dan tampilkan nilai terbesar.


(b)

Buat program dengan menggunakan array konstan untuk


memasukkan nomor bulan dan menampilkan nama bulan.

2)

Umpan Balik dan Tindak Lanjut


Untuk menguasai materi ini, sebaiknya anda membuat

ringkasan materi tentang array dan membuat beberapa program


dengan menggunakan array.
Jawab

pertanyaan

di

atas

dengan

langsung

membuat

program di komputer. Jalankan program tersebut sampai benar.


Hapus kembali listing program yang sudah benar dan buat
kembali program tersebut, dan jalankan. Kalau tingkat kesalahan
pada pembuatan program sudah kecil, anda dapat melanjutkan
materi berikutnya. Kalau program belum jalan, perbaiki terus
sampai program tersebut benar dan jalan.

18

3)

Kunci Jawaban

Jawaban a
program nilai_terbesar;
const besar=10;
var
n:array [1.. besar] of real;
i:integer;
max:real;
begin
for i:= 1 to besar do
begin
write('masukkan data ke-',i,':');readln(n[i]);
if (n[i])>max then max:=(n[i]);
end;
write('nilai tebesar :',max:2:0);
readln
end.

Jawaban b
program nama_bulan;
const
bulan:array[1..12] of string=('Januari','Februari','Maret','April','Mei','Juni',
'Juli','Agustus','September','Oktober','Nopember','Desember');
var
nobulan:integer;
begin
write('Masukkan nomor bulan :');readln(nobulan);
write('Nama bulan ke-', nobulan,' adalah ', bulan[nobulan]);
readln;
end.

Daftar Pustaka
Jurusan Informatika. 2006. Bahan Ajar Pemrograman 2. Hibah
Pengajaran PHK A1 Universitas Negeri Gorontalo
Kadir, Abdul. 2002. Pemrograman Pascal Buku 1. Yogyakarta:
Andi Offset.
Munir, Rinaldi. 2005. Algoritma dan Pemrograman dalam
bahasa Pascal dan C Edisi 3. Bandung: Informatika.
Rahardjo, Budi. 2005. Teknik
Pemrograman
Pascal.
Bandung:Informatika

19

BAB II
RECORD
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;
Daftar_field_2 : tipe_2;

20

(sumber:Kadir)

...
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.

21

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
Kualitas
Harga

4)

: Ubin TISKA 20x20


:A
: 14000

Penugasan Antar Record

Jika record R1 dan R2 bertipe sama dan masing-masing memiliki


F1, F2, dan F3, maka penugasan :
R1 := R2;

22

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
Kualitas
Harga

5)

: Ubin TISKA 20x20


:A
: 14000

Record Di Dalam Record

23

Mungkin saja sebuah record berisi record. Sebagai gambaran hal


ini, perhatikan deklarasi berikut :
RecTanggal = Record

Tanggal,
Bulan,
Tahun
End;
RecPegawai = Record
Nomor
Nama
TglLahir
Gaji
End;

:Integer
:
:
:
:

LongInt;
String [35];
RecTanggal;
LongInt

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;

24

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
Kualitas
Harga
End;
Var

: String [25];
: Char;
: LongInt

25

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

26

End;
Readln
End.

/, DataPeg.TglLahir.Tahun)

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.

27

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
Kualitas
Harga
End;
TabelBarang = Array [ 1 . .
Var
DafBarang : TabelBarang;

: String [25];
: Char;
: LongInt
Jum_Maks] of RecBarang;
{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;

28

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.
1)

Pertanyaan

29

(a)

Buat program untuk menginput dan menampilkan data


nilai mahasiswa dengan menggunakan array record

(b)

Buat program mengakses record di dalam record

2)

Umpan Balik dan Tindak Lanjut


Untuk menguasai materi ini, sebaiknya anda membuat

ringkasan materi tentang record dan membuat sendiri beberapa


program dengan menggunakan record.
Jawab

pertanyaan

di

atas

dengan

langsung

membuat

program di komputer. Jalankan program tersebut sampai benar.


Hapus kembali listing program yang sudah benar dan buat
kembali program tersebut, dan jalankan. Kalau tingkat kesalahan
pada pembuatan program sudah kecil, anda dapat melanjutkan
materi berikutnya. Kalau program belum jalan, perbaiki terus
sampai program tersebut benar dan jalan.
3)

Kunci Jawaban

Jawaban b
program arrayrecord;
const max=100;
type
tsiswa=record
NIM :STRING[9];
Nama : string[25];
Nilai : real;
end;
tkumpulansiswa = array[1..max] of tsiswa;
var
a:tkumpulansiswa;
i,n:integer;
begin
write('masukkan jumlah siswa yang akan diisikan :');readln(n);
writeln;
writeln('memasukkan data');
writeln('-------------------------------');
for i:= 1 to n do
begin
writeln('Data siswa ke-',i);
write('NIM : ');readln(a[i].NIM);
write('Nama : ');readln(a[i].Nama);
write(Nilai : );readln(a[i].Nilai);
writeln;
end;

30

writeln;
writeln('DAFTAR SISWA');
writeln('---------------------------------------------');
writeln('NIM ',' '
, 'NAMA'),NILAI;
writeln('---------------------------------------------');
for i:=1 to n do
begin
with a[i] do
begin
writeln(NIM:9,' ' ,Nama, Nilai);
end;
end;
readln
end.

Jawaban b
Program Record_dalam_record;
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.

31

Daftar Pustaka
Jurusan Informatika. 2006. Bahan Ajar Pemrograman 2. Hibah
Pengajaran PHK A1 Universitas Negeri Gorontalo
Kadir, Abdul. 2002. Pemrograman Pascal Buku 1. Yogyakarta:
Andi Offset.
Munir, Rinaldi. 2002. Algoritma dan Pemrograman dalam
bahasa Pascal dan C Edisi 2. Bandung: Informatika.
Rahardjo, Budi. 2005. Teknik Pemrograman Pascal.
Bandung:Informatika

BAB III
PROSEDUR
A.

Pendahuluan

Deskripsi Singkat
Bab ini akan mengemukakan bahasan tentang pemrograman
moduler, definisi prosedur, pendefinisian prosedur, pemanggilan
prosedur.
Relevansi
Pembahasan pada bab ini sangat penting dipahami, karena
materi prosedur ini memberikan manfaat bagi pemrogram untuk
membuat program yang menggunakan prosedur. Materi prosedur

32

sangat

berkaitan

dengan

materi

lainnya

dalam

sebuah

pemrograman terstruktur, terutama pemrograman moduler.


Tujuan Instruksional Khusus
Mahasiswa mampu membuat program aplikasi dengan
menggunakan prosedur
B. Penyajian
1)

Konsep Pemrograman Moduler


Dalam membuat program besar dan kompleks, si pemrogram

perlu memecah program menjadi beberapa sub program yang


lebih kecil. Tiap sub program kadangkala cukup independen dari
program utama sehingga programnya dapat dirancang tanpa
mempertimbangkan konteks tempat di mana sub program
tersebut digunakan. Tiap sub program, yang disebut modul dapat
dirancang

oleh

pemrogram

selain

dari

orang

yang

mengembangkan program utama. Modul yang sudah ditulis


dapat dipasang ke program lain yang membutuhkannya. Teknik
pemrograman
modular.

seperti

Beberapa

ini

dinamakan

bahasa

teknik

pemrograman

pemrograman

termasuk

Pascal

menamakan modul dengan sebutan rutin, prosedur atau


fungsi.
Modularisasi program memberikan 2 (dua) keuntungan.
Pertama, untuk aktivitas yang harus dilakukan lebih dari satu
kali, modularisasi menghindari penulisan teks program yang
sama secara berulangkali.Di sini, modul program cukup ditulis
sekali saja, lalu modul tersebut dapat diakses dari bagian lain di
dalam program.Di sini, penggunaan modul program dapat
mengurangi panjang program.
Keuntungan kedua dari modularisasi adalah kemudahan
menulis

dan

menulis

akan

menemukan
sangat

kesalahan

berguna

33

pada

program.
masalah

Kemudahan
besar

yang

dikerjakan

oleh

satu tim

pemrogram

yang

beranggotakan

beberapa orang. Masalah yang akan diprogram dipecah menjadi


beberapa masalah yang lebih keil. Setiap masalah yang lebih
kecl tersebut ditulis ke dalam modul individual yang spesifik dan
dikerjakan

oleh

diintegrasikan
Program

menjadi

modular

dimengerti.

orang

yang
satu

menjai

Program

buah

lebih

yang

berbeda.
program

mudah

tidak

Seluruh
yang

untuk

modular

modul
lengkap.

dibaca

sulit

dan

dipahami,

khususnya kalau program tersebut panjang atau terdiri dari


puluhan, ratusan atau ribuan baris intruksi.
Karena setiap modul melakukan aktivitas specsifik, maka
apabila

terdapat

kesalahan

di

dalam

program,

kesalahan

tersebut dapat dilokalisisr pada modul yang bersangkutan.


Kebanyakan program komputer dapat ditulis modular, meskipun
program tersebut tidak melibatkan eksekusi yang berulang dari
aktivitas yang sama. Pemecahan program menjadi modul-modul
individul umumnya dianggap sebagai praktek pemrograman
yang baik.
Terdapat dua jenis modul program, pertama prosedur
(procedure) dan kedua fungsi (function). Struktur setiap modul
tersebut pada hakikatnya sama dengan struktur algoritma biasa,
yaitu ada bagian judul (header) yang berisi nama modul, bagian
deklarasi, dan bagian badan (body) program yang berisi instruksi
yang akan dilaksanakan.
2)

Definisi Prosedur
Prosedur

adalah

modul

program

yang

mengerjakan

tugas/aktivitas yang spesifik dan menghasilkan suatu efek netto .


Suatu efek netto diketahui dengan membandingkan keadaan
awal dan keadaan akhir pada pelaksanaan prosedur. Oleh karena
itu, pada prosedur kita harus mendefinisikan keadaan awal
sebelum rangkaian instruksi di dalam prosedur dilaksanakan dan

34

keadaan akhir yang diharapkan setelah rangkaian instruksi


dilaksanakan.
3)

Pendefinisian Prosedur
Pada dasarnya, struktur prosedur sama dengan struktur

algoritma yang sudah dikenal, yaitu : bagian judul yang terdiri


atas nama prosedur dan komentar yang menjelaskan yang
menjelaskan spesifikasi prosedur tersebut, bagian deklarasi dan
badan prosedur. Setiap prosedur memiliki nama yang unik.
Nama prosedur sebaiknya diawali dengan kata kerja karena
prosedur berisi suatu aktivitas, misalnya HitungLuas, Tukar,
CariMaks, Inisialisasi, AktifkanMenu dan lain sebagainya.
Notasi

Algoritma

yang

digunakan

untuk

mendefinisikan

struktur prosedur adalah :


Procedure NamaProsedur
{Spesifikasi prosedur, berisi penjelasan tentang apa yang
dilakukan prosedur ini}
{K. Awal : keadaan sebelum prosedur dilaksanakan}
{K. Akhir : keadaan setelah prosedur dilaksanakan}
Deklarasi
{semua nama yang dipakai dalam prosedur dan hanya
berlaku lokal di dalam prosedur yang didefinisikan di sini}
Deskripsi
{badan prosedur, berisi kumpulan instruksi}
Gambar 3.1 Bentuk Umum Pendefinisian Prosedur(sumber:Rahardjo)

Contoh 3.1
Tuliskan prosedur mencetak string Hello World!.
Penyelesaian
Procedure CetakHalo
{mencetak string Hello World! ke piranti keluaran}
{K. Awal : sembarang}
{K. Akhir : string Hello World! tercetak}
Deklarasi
{tidak ada}
Deskripsi

35

Write ([Hello World!)

Contoh 3.2
Tuliskan prosedur untuk menghitung luas segitiga dengan rumus
L=(alas x tinggi)/2. Panjang alas dan tinggi segitiga dibaca dari
dalam prosedur. Luas segitiga dicetak ke piranti keluaran.
Penyelesaian
Procedure HitungLuasSegitiga
{menghitung luas segitiga dengan rumus L=(alas x tinggi)/2
{K. Awal : sembarang}
{K. Akhir : L berisi luas segitiga. Nilai L dicetak ke piranti keluaran}
Deklarasi
Alas, tinggi, luas : real
Deskripsi
Read (alas, tinggi)
Luas (alas*tinggi)/2
Write (L)

4)

Pemanggilan Prosedur
Prosedur bukan program yang berdiri sendiri, jadi tidak

dapat dieksekusi secara langsung. Ini berarti, instruksiinstruksi di dalam prosedur baru dapat dilaksanakan hanya
bila prosedur tersebut diakses/dipanggil. Prosedur diakses
dengan cara m,emanggil namanya dan program pemanggil
(program utama atau modul program lain) :
NamaProsedur
Gambar 2.2 Pemanggilan Prosedur(sumber:Rahardjo)

Ketika

NamaProsedur

dipanggil,

kendali

program

berpindah secara otomatis ke prosedur tersebut. Instruksi di


dalam badan prosedur dilaksanakan. Setelah semua instruksi
selesai dilaksanakan, kendali program berpindah secara
otomatis ke instruksi sesudah pemanggilan prosedur.
Di dalam program pemanggil, kita harus mendeklarasikan
prototype prosedur di dalam bagian deklarasi. Prototype

36

prosedur

hanya

berisi

bagian

judul

prosedur.

Tujuan

pendeklarasian prototype program adalah supaya program


pemanggil mengenal nama prosedur tersebut serta cara
mengaksesnya.
Contoh 3.3
Tuliskan contoh program utama untuk memanggil prosedur
CetakHalo
Penyelesaian
Algoritma Halo
{program utama untuk mencetak string Halo!}
Deklarasi
Procedure CetakHalo
{mencetak string Halo! ke piranti keluaran}
Deskripsi
CetakHalo {panggil prosedur CetakHalo}

Contoh 3.4
Tuliskan contoh program utama untuk memanggil prosedur
HitungLuasSegitiga.

Penyelesaian
Algoritma Luas_Segitiga
{program uatama untuk menghitung luas segitiga}
Deklarasi
Prcedure HitungLuasSegitiga
{menghitung luas segitiga dengan rumus L=(alas x tinggi)/2}
Deskripsi
Write(Menghitung Luas Segitiga)
HitungLuasSegitiga
Write (Selesai)

C. Penutup
Kata prosedur sering kita dengar dalam kehidupan seharihari. Seorang mahasiswa pada setiap awal semester selalu

37

melakukan

penaftaran

ulang

(registrasi).

Langkah-langkah

pendaftaran ulang lazim dinyatakan dalam sebuah prosedur yang


dinamakan prosedur daftar ulang. Ketika sebuah prosedur
dilakukan, maka instruksi-instruksi di dalamnya dikerjakan satu
per satu.
Dalam dunia pemrograman, prosedur adalah modul program
yang

mengerjakan

tugas/aktivitas

yang

spesifik

dan

menghasilkan suatu efek netto. Suatu efek netto diketahui


dengan membandingkan keadaan awal dan keadaan akhir pada
pelaksanaan sebuah prosedur. Oleh sebab itu, pada setiap
prosedur kita perlu mendefinisikan keadaan awal sebelum
rangkaian instruksi di dalam prosedur dilaksanakan dan keadaan
akhir yang diharapkan setelah rangkaian instruksi di dalam
prosedur dilaksanakan.
1)

Pertanyaan
Buat

program

perhitungan

luas

segitiga

menggunakan

prosedur.
2) Umpan Balik dan Tindak Lanjut
Untuk menguasai materi ini, sebaiknya anda membuat
ringkasan

materi

tentang

prosedur

dan

membuat

sendiri

beberapa program dengan menggunakan prosedur.


Jawab

pertanyaan

di

atas

dengan

langsung

membuat

program di komputer. Jalankan program tersebut sampai benar.


Hapus kembali listing program yang sudah benar dan buat
kembali program tersebut, dan jalankan. Kalau tingkat kesalahan
pada pembuatan program sudah kecil, anda dapat melanjutkan
materi berikutnya. Kalau program belum jalan, perbaiki terus
sampai benar.
3)

Kunci Jawaban

program luas_segitiga;
procedure hitungluas;
var

38

alas,tinggi,luas : real;
begin
write('alas :');readln(alas);
write('tinggi:');readln(tinggi);
luas:=(alas*tinggi)/2;
write('luas segitiga :',luas:2:0);
end;
begin
writeln('menghitung luas segitiga');
hitungluas;
readln
end.

Daftar Pustaka
Jogiyanto, 1989. Turbo Pascal. Yogyakarta : Andi Ofset.
Jurusan Informatika. 2006. Bahan Ajar Pemrograman 2. Hibah
Pengajaran PHK A1 Universitas Negeri Gorontalo
Kadir, Abdul. 2002. Pemrograman Pascal Buku 1. Yogyakarta:
Andi Offset.
Munir, Rinaldi. 2005. Algoritma dan Pemrograman dalam
bahasa Pascal dan C Edisi 3. Bandung: Informatika.
Rahardjo, Budi. 2005. Teknik Pemrograman Pascal.
Bandung:Informatika

BAB IV
FUNGSI
A. Pendahuluan
Deskripsi Singkat
Bab ini akan mengemukakan bahasan tentang definisi fungsi,
cara

mendefinisikan

fungsi,

cara

parameter.
Relevansi

39

pemanggilan

fungsi

dan

Pembahasan pada bab ini sangat penting dipahami, karena


materi fungsi ini memberikan manfaat bagi pemrogram untuk
membuat program yang menggunakan fungsi. Materi fungsi
sangat

berkaitan

dengan

materi

lainnya

dalam

sebuah

pemrograman terstruktur, terutama pemrograman moduler.


Tujuan Instruksional Khusus
Mahasiswa mampu membuat program dengan menggunakan
fungsi.
B.

Penyajian

1)

Definisi Fungsi
Definisi fungsi sebenarnya sama dengan sebuah prosedur.

Perbedaannya,
sehingga

pada

pada

saat

fungsi

terdapat

pemanggilan,

pengembalian

fungsi

dapat

nilai,

langsung

digunakan untuk mengisikan sebuah ekspresi.


2)

Pendefinisian Fungsi
Berbeda dengan prosedur yang didefinisikan dengan kata

kunci function. Berikut ini bentuk umum dari pendefinisian


sebuah fungsi.

Function NamaFungsi (parameter1 : tipe_data,


paraneter2: tipe_data, . . .) : tipe_data;
const
{daftar konstanta lokal}
Var
{daftar pendeklarasian variabel lokal}
Begin
{kode program yang akan ditulis}
...
NamaFungsi := nilai_kembalian;
{ingat baris ini}
End;

40

Gambar 4.1 Bentuk Umum Pendefinisian Fungsi

Berikut ini contoh pendefinisian fungsi sederhana yang akan


mengalikan dua buah bilangan bulat.
Function Kali (x, y : integer) : longint;
Begin
Kali := x * y;
End;

Kita

juga

dapat

mendeklarasikan

variabel

lokal

untuk

menyimpan nilai sebelum akhirnya dikembalikan lagi ke fungsi,


misalnya seperti kode di bawah ini.
Function Kali (x, y : integer) : longint;
Var
Hasil : longint;
Begin
Hasil := x * y;
Kali := Hasil;
End;

3)

Pemanggilan fungsi
Fungsi

diakses

dengan

cara

memanggil

namanya

dari

program pemanggil, diikuti dengan daftar parameter aktual (bila


ada). Oleh karena fungsi menghasilkan sebuah nilai maka pada
saat pemanggilannya juga dapat ditampung ke dalam suatu
variabel. Berikut ini contoh pemanggilan fungsi di atas.
Var
A : longint;
Begin
{memanggil fungsi Kali dan menyimpan nilainya ke dalam variabel A)
A := Kali (10, 5);
...
End.

4)

Parameter
Parameter

merupakan

suatu

nilai

atau

referensi

yang

dilewatkan ke dalam rutin tertentu dan kehadirannya akan


mempengaruhi proses maupun nilai yang terdapat di dalam rutin
itu sendiri. Parameter ditempatkan di dalam tanda kurung
setelah nama rutin bersangkutan.

41

Suatu fungsi umumnya mempunyai parameter. Namun bisa saja


suatu fungsi tidak memiliki paramater.
Setiap parameter yang dilewatkan harus memiliki tipe data
tersendiri yang dapat berupa dari tipe dasar maupun bentukan
seperti array, record atau pointer. Untuk mengetahui arti
parameter, perhatikan fungsi matematika di bawah ini.
f (x) = 2x2 + 5x 3

Bila x=1, maka f akan mengembalikan nilai 4, yang berasal dari


f (1) = 2(1)2 + 5(1) 3 = 2 + 5 3 = 4

Bila x=2, maka f akan mengembalikan nilai 15, yang berasal dari
f (2) = 2(2)2 + 5(2) 3 = 8 + 10 3 = 15

Dari ilustrasi tersebut terlihat jelas bahwa hasil nilai dari


fungsi f ditentukan oleh besarnya nilai x, sehingga x disebut
sebagai parameter dari fungsi f.
C. Penutup
Seperti halnya prosedur, fungsi juga merupakan sub program
yang mempunyai tujuan spesifik. Pertanyaan sering muncul
dalam pemrograman moduler adalah : apakah sebuah modul
program akan dibuat sebagai prosedur atau fungsi ? Fungsi
digunakan apabila modul program mengembalikan sebuah nilai,
sementara prosedur digunakan apabila modul menghasilkan efek
netto dari satu atau sekumpulan aksi. Pemilihan apakah sebuah
modul direalisasikan sebagai fungsi atau prosedur bergantung
pada kebutuhan dan seni memprogram.
1)

Pertanyaan
Buat program perhitungan nilai faktorial menggunakan fungsi.

2) Umpan Balik dan Tindak Lanjut

42

Untuk menguasai materi ini, sebaiknya anda membuat


ringkasan materi tentang fungsi dan membuat sendiri beberapa
program dengan menggunakan fungsi.
Jawab

pertanyaan

di

atas

dengan

langsung

membuat

program di komputer. Jalankan program tersebut sampai benar.


Hapus kembali listing program yang sudah benar dan buat
kembali program tersebut, dan jalankan. Kalau tingkat kesalahan
pada pembuatan program sudah kecil, anda dapat melanjutkan
materi berikutnya. Kalau program belum jalan, perbaiki terus
sampai benar.
3)

Kunci Jawaban

Program faktorial;
Var
n : integer;
function f(n:integer);integer;
var
i, f : integer;
begin
f:=1;
for i:=1 to n do
f:=f +1;
end;
begin
write (jumlah faktorial :);readln(n);
writeln(f);
end.

Daftar Pustaka
Jurusan Informatika. 2006. Bahan Ajar Pemrograman 2. Hibah
Pengajaran PHK A1 Universitas Negeri Gorontalo
Kadir, Abdul. 2002. Pemrograman Pascal Buku 1. Yogyakarta:
Andi Offset.
Munir, Rinaldi. 2005. Algoritma dan Pemrograman dalam
bahasa Pascal dan C Edisi 3. Bandung: Informatika.
Rahardjo, Budi. 2005. Teknik
Pemrograman
Pascal.
Bandung:Informatika

43

BAB V
SORTING
A. Pendahuluan
Deskripsi Singkat
Bab ini akan membahas definisi pengurutan, pengurutan
gelembung,

pengurutan

maksimum/minimum,

seleksi.
Relevansi

44

pengurutan

Pengurutan akan memudahkan kita dalam mencari data


dalam sebuah program. Pengurutan sangat erat kaitannya
dengan pencarian.
Tujuan Instruksional Khusus
Mahasiswa mampu membuat program dengan menggunakan
perintah sorting.
B. Penyajian
1)

Definisi Pengurutan (Sorting)


Selain pencarian, pengurutan data merupakan salah satu

permasalahan

umum

yang

juga

sering

dijumpai

dalam

pemrograman. Sebagai bukti nyata, tinjaulah metode pencarian


bagi

dua

di

atas

yang

menuntut

kita

untuk

melakukan

pengurutan terlebih dahulu sebelum kita melakukan pencarian.


Dalam pemrograman, terdapat beberapa metode untuk
melakukan pengurutan data. Namun terdapat 8 (delapan)
metode yang umumnya banyak digunakan, yaitu :
1. Bubble Sort
2. Maximum/Minimum Sort
3. Selection Sort
4. Insertion Sort
5. Heap Sort
6. Quick Sort
7. Merge Sort
8. Shell Sort
Pada pembahasan ini, hanya 3 (tiga) metode yang akan
dibahas yaitu metode pengurutan gelembung (bubble sort),
pengurutan maksimum/minimum (maximum/minium sort) dan
pengurutan seleksi (selestion sort).
2)

Pengurutan Gelembung (Bubble sort)

45

Menurut sumber yang ada, metode ini diinspirasi oleh adanya


gelembung sabun yang mengapung di atas permukaan air. Hal
ini tentunya disebabkan karena berat jenis gelembung sabun
lebih kecil dari berat jenis air. Konsep dari fenomena tersebut
kemudian diterapkan sebagai metode pengurutan data di dalam
array. Dalam metode ini data dengan nilai terkecil akan
diapungkan ke posisi teratas, dan sebaliknya data dengan nilai
terbesar akan berada pada posisi terbawah. Sebagai contoh,
asumsikan bahwa kita memiliki array A yang berisi lima buah
elemen data, seperti yang tampak di bawah ini.
25
22
18
20
15
A[1]
A[2]
A[3]
A[4]
A[5]
Gambar 5.1 Array A sebelum diurutkan dengan metode gelembung

Di sini kita akan mengurutkan array tersebut secara menaik,


yaitu dengan mengapungkan nilai terkecil ke posisi teratas
(paling

kiri).

Proses

ini

tentu

akan

dilakukan

dengan

menggunakan pertukaran antar elemen array. Tahapan-tahapan


yang harus dilakukan adalah sebagai berikut.
Tahap 1
Mulai dari A[5] sampai A[2], lakukan perbandingan nilai antara
A[k] dan A[k-1] dimana variabel k mewakili indeks array yang
sedang aktif. Apabila nilai A[k] lebih kecil, maka tukarkan nilai
A[k] dengan A[k-1]. Sampai di sini, array tersebut akan menjadi
seperti berikut.
15
25
22
18
20
A[1]
A[2]
A[3]
A[4]
A[5]
Gambar 5.2 Hasil Pengurutan Array A tahap 1

Tahap 2
Mulai dari A[5] sampai A[3], lakukan proses seperti pada tahap 1
sehingga array akan menjadi seperti berikut.
15

18

25

46

22

20

A[1]
A[2]
A[3]
A[4]
A[5]
Gambar 5.3 Hasil Pengurutan Array A tahap 2

Tahap 3
Mulai dari A[5] sampai A[4], lakukan proses seperti pada tahap 1
dan 2 sehingga array akan menjadi seperti berikut.
15
18
20
25
22
A[1]
A[2]
A[3]
A[4]
A[5]
Gambar 5.4 Hasil Pengurutan Array A tahap 3

Tahap 4
Tahap ini merupakan tahap terakhir dimana kita akan melakukan
perbandingan terhadap nilai dari elemen terakhir (A5]) dengan
elemen terakhir-1 (A[4]). Apabila nilai A[5] lebih kecil maka
tukarkan nilainya dengan A[4] sehingga array A di atas akan
terurut secara menaik seperti yang tampak di baeah ini.
15
18
20
22
25
A[1]
A[2]
A[3]
A[4]
A[5]
Gambar 5.5 Hasil Pengurutan Array A tahap 4

Pada proses yang terjadi di atas tampak jelas bahwa untuk


melakukan pengurutan data dengan lima buah elemen, kita
harus melakukan empat tahapan. Sekarang, apabila proses di
atas kita translasikan ke dalam bahasa pascal, maka hasilnya
adalah sebagai berikut.
Var
n,
{banyaknya elemen array}
j, k
{variabel bantu untuk indeks pengulangan}
temp : integer;
{variabel bantu untuk melakukan pertukarannilai}
begin
for j:= 1 to N-1 do begin
for k:= N downto j+1 do begin
if A[k] < A[k-1] then begin
temp := A[k];
A[k] := A[k-1];
A[k-1] := temp;
End;
End;
End;
End;

47

Untuk lebih memperjelas, coba perhatikan implementasinya di


dalam program berikut.
Program UrutGelembung;
Uses crt;
Const
n = 5;
A : array [1 . . n] of integer = (25, 22, 18, 20, 15);
Var
j, k, temp : integer;
begin
clrscr;
{menampilkan data sebelum proses pengurutan}
Writeln(Data sebelum diurutkan);
For j := 1 to n do begin
Writeln(A[, j,] = , A[j];
End;
Melakukan proses pengurutan data}
For j:= 1 to n-1 do begin
For k:= n downto j+1 do begin
If A[k] < A[k-1] then begin
Temp :=A[k];
A[k] := A[k-1];
Ak-1] := temp;
End;
End;
End;
{Menampilkan data setelah proses pengurutan}
Writeln;
Writeln (Data setelah diurutkan);
For j:= 1 to n do begin
Writeln(A[, j, ] = , A[j]);
End;
Readln;
End.

Hasil yang akan diberikan oleh program di atas adalah sebagaii


beriku.
Data sebelum diurutkan
25
22
18
20
15
Data setelah diurutkan
15
18
20
22
25

48

3)

Pengurutan Maksimum/Minimum

Dengan

metode

ini,

elemen

array

dengan

nilai

maksimum/minimum akan disimpan ke bagian ujung array


(elemen pertama maupun terakshir). Selanjutnya nilai tersebut
akan diisolasi atau diikat dan tidak diikutkan lagi dalam proses
selanjutnya. Di sini, kita hanya akan menggunakan metode
maksimum saja dan tidak akan membahas mengenai metode
minimum. Hal ini disebabkan karena konsep yang terdapat pada
metode minimum sama persis dengan metode maksimum. Untuk
mempermudah pembahasan, coba perhatikan kembali array A
yang terdapat pada bahasan sebelumnya.
25
22
18
20
15
A[1]
A[2]
A[3]
A[4]
A[5]
Gambar 5.6 Array A sebelum diurutkan dengan metode Maksimum/Minimum

Pada bagian ini kita akan melakukan pengurutan data di dalam


array tersebut dengan menggunakan metode maksimum, di
mana kita akan melempar nilai maksimum ke bagian paling
kanan array. Adapun tahapan-tahapan yang perlu dilalui untuk
melakukan hal tersebut adalah sebagai berikut.
Tahap 1
Mulai dari A[1] sampai A[5], cari nilai maksimum dan tukarkan
nilainya dengan elemen terakhir (A[5]) sehingga array akan akan
berubah menjadi seperti di bawah ini.
15
A[1]

22
18
20
25
A[2]
A[3]
A[4]
A[5]
Gambar 5.7 Hasil Pengurutan Array A tahap 1

Sampai di sini, elemen terakhir (A[5]) tidak akan diikutkan lagi ke


dalam proses atau tahap selanjutnya.
Tahap 2
Mulai dari A[1] sampai A[4], cari nilai maksimum dan tukarkan
nilainya dengan elemen terakhir saat ini (A[4]) sehingga array
akan akan berubah menjadi seperti di bawah ini.

49

15
A[1]

20
18
2
25
A[2]
A[3]
A[4]
A[5]
Gambar 5.8 Hasil Pengurutan Array A tahap 2

Sampai di sini, elemen ke-4 (A[4]) juga tidak akan diikutkan lagi
ke dalam proses atau tahap selanjutnya.
Tahap 3
Mulai dari A[1] sampai A[3], cari nilai maksimum dan tukarkan
nilainya dengan elemen terakhir saat ini (A[3]) sehingga array
akan tampak seperti di bawah ini.
15
A[1]

18
20
22
25
A[2]
A[3]
A[4]
A[5]
Gambar 5.9 Hasil Pengurutan Array A tahap 3

Sampai di sini, elemen ke-3 (A[3]) juga tidak akan diikutkan lagi
ke dalam proses selanjutnya.

Tahap 4
Tahap terakhir, cari nilai maksimum antara A[1] sampai A[2] dan
tukarkan nilainya dengan elemen A[2]. Untuk kasus ini nilai
maksimum terdapat pada A[2] sehingga di sini benarnya terjadi
proses yang seharusnya tidak perlu dilakukan, yaitu menukarkan
nilai A[2] dengan A[2]. Berikut ini bentuk translasi metode di atas
ke dalam bahasa Pascal.
Var
n,
x,
j, k,
maks,
imaks,

{banyaknya elemen array keseluruhan}


{banyaknya elemen array yang belum terurut}
{untuk indeks pengulangan}
{untuk menyimpan nilai maksimal}
{untuk menyimpan indeks dari elemen yang
menyimpan nilai maksimal}
{variabel bantu untuk proses pertukaran}

temp : integer;
begin
x:= n;
{mula-mula semua belum terurut}
for j:= 1 to n-1 do begin
maks := A[1];
imaks := 1;
for k:= 2 to x do begin
if(A[k] > maks) then begin
maks := A[k];

50

imaks := k;
end;
end;
{tukarkan maks dengan A[x]}
Temp := A[x];
A[x] := A[imaks];
A[imaks] := temp;
{ikat elemen terakshir dengan menurunkan nilai x}
x := x 1;
end;
end;

4)

Pengurutan Seleksi

Pengurutan dengan metode seleksi ini bekerja dengan cara


memilih salah satu elemen serta menganggapnya sebagai nilai
terkecil. Kemudian nilai tersebut aan dibandingkan dengan
elemen-elemen pada posisi berikutnya. Apabila nilai yang dipilih
pertama kali lebih besar dari nilai elemen pembanding maka
tukarkan

kedua

buah

nilai

tersebut.

Untuk

memperjels

pembahasan ini, marilah kita perhatikan kembali array A seperti


pembahasan sebelumnya. Berikut gambarannya.
25
22
18
20
15
A[1]
A[2]
A[3]
A[4]
A[5]
Gambar 5.10 Array A sebelum diurutkan dengan metode Seleksi

Tahap 1
Mula-mula, A[1] akan dianggap sebagai nilai terkecil, yaitu
dengan cara memasukkan nilai 1 ke dalam variabel, misalnya
dengan nama min. Mulai dari j = min + 1 sampai n (jumlah
elemen array), lakukan perbandingan antara A[j] dengan nilai
A[min]. Apabila nilai dari A[min] > A[j], isikan min = j. Setelah
pengulangan selesai, tukarkan nilai A[min] dan A[1]. Untuk kasus
ini, nilai min adalah 5 karena nilai terkecil tersimpan pada indeks
ke-5. hal tersebut akan menyebabkan array A tampak menjadi
seperti berikut.
15
A[1]

22
18
20
15
A[2]
A[3]
A[4]
A[5]
Gambar 5.11 Hasil Pengurutan Array A tahap 1

Tahap 2

51

Mula-mula, A[2] akan dianggap sebagai nilai terkecil, yaitu


dengan cara memasukkan nilai 2 ke dalam variabel, misalnya
dengan nama min. Kemudian sama seperti di atas, lakukan
pengulangan mulai dari j = min + 1 sampai n dan bandingkan
setiap nilainya.

Setelah didapatkan nilai min, maka tukarkan

A[min] dengan A[2]. Untuk kasus ini, nilai minimum ditemukan


pada indeks ke-3 sehingga min = 3. Tukarkan A[min] dengan A[2]
sehingga array A akan tampak seperti berikut.
15
A[1]

18
22
20
25
A[2]
A[3]
A[4]
A[5]
Gambar 5.12 Hasil Pengurutan Array A tahap 2

Tahap 3
Mula-mula, A[3] akan dianggap sebagai nilai terkecil, yaitu
dengan cara memasukkan nilai 3 ke dalam variabel min.
Kemudian sama seperti di atas, lakukan pengulangan mulai dari j
= min + 1 sampai n dan bandingkan setiap nilainya.

Setelah

didapatkan nilai min, maka tukarkan A[min] dengan A[3]. Untuk


kasus ini, nilai minimum ditemukan pada indeks ke-4 sehingga
min = 4. Tukarkan A[min] dengan A[4] sehingga array A akan
tampak seperti berikut.
15
A[1]

18
20
22
25
A[2]
A[3]
A[4]
A[5]
Gambar 5.13 Hasil Pengurutan Array A tahap 3

Tahap 4
Mula-mula, A[4] akan dianggap sebagai nilai terkecil, yaitu
dengan cara memasukkan nilai 4 ke dalam variabel min.
Kemudian sama seperti di atas, lakukan pengulangan mulai dari j
= min + 1 sampai n dan bandingkan setiap nilainya.

Setelah

didapatkan nilai min, maka tukarkan A[min] dengan A[4]. Untuk


kasus ini, nilai minimum ditemukan pada indeks ke-4 sehingga
min = 4. Tukarkan A[min] dengan A[4] sehingga array A akan
tampak seperti berikut.
15
A[1]

18
A[2]

20
A[3]

52

22
A[4]

25
A[5]

Gambar 5.14 Hasil Pengurutan Array A tahap 4

C. Penutup
1)

Pertanyaan
Buat program untuk mengurutkan data mahasiswa dengan
metode seleksi.

2) Umpan Balik dan Tindak Lanjut


Untuk menguasai materi ini, sebaiknya anda membuat
ringkasan materi tentang sorting (pengurutan) dan membuat
sendiri beberapa program dengan sorting.
Jawab

pertanyaan

di

atas

dengan

langsung

membuat

program di komputer. Jalankan program tersebut sampai benar.


Hapus kembali listing program yang sudah benar dan buat
kembali program tersebut, dan jalankan. Kalau tingkat kesalahan
pada pembuatan program sudah kecil, anda dapat melanjutkan
materi berikutnya. Kalau program belum jalan, perbaiki terus
sampai benar.
3)

Kunci Jawaban

Procedure selectionsort;
Var
i, j, temp, imax : integer;
begin
for i:= 1 to n-1 do
begin
imax := i;
for j := i+1 to n do
if TabInt[j] < TabInt[max] then
imax := j;
temp := TabInt[imax];
TabInt[imax] := TabInt[i];
TabInt[i] := temp;
End;
End.

Daftar Pustaka
Jurusan Informatika. 2006. Bahan Ajar Pemrograman 2. Hibah
Pengajaran PHK A1 Universitas Negeri Gorontalo

53

Kadir, Abdul. 2002. Pemrograman Pascal Buku 1. Yogyakarta:


Andi Offset.
Munir, Rinaldi. 2005. Algoritma dan Pemrograman dalam
bahasa Pascal dan C Edisi 3. Bandung: Informatika.
Rahardjo, Budi. 2005. Teknik
Pemrograman
Pascal.
Bandung:Informatika

BAB VI
SEARCHING
A. Pendahuluan
Deskripsi Singkat
Bab ini akan membahas definisi pencarian (searching),
metode pencarian beruntun, metode pencarian bagi dua.
Relevansi
Pencarian

dalam

sebuah

program

akan

sangat

menguntungkan bagi pemrogram apabila akan membuat sebuah


program yang mengharuskan adanya pencarian data tertentu.
Dengan pencarian, akan membat program lebih efektif.
Tujuan Instruksional Khusus
Mahasiswa mampu membuat program dengan menggunakan
perintah searching.

54

B. Penyajian
(1)

Definisi Pencarian (Searching)


Pencarian (searching) data tertentu yang terkandung di

dalam array merupakan hal yang banyak ditemukan dalam


kasus-kasus pemrograman. Maka dari itu, pada bagian ini kita
akan membahas mengenai cara yang seharusnya digunakan
untuk melakukan hal tersebut serte pengimplementasiannya di
dalam bahasa Pascal. Dalam ilmu algoritma, metode pencarian
data di dalam array diklasifikasikan menjadi dua, yaitu metode
pencarian beruntun (sequential search) dan metode pencarian
bagi

dua/pencarian

biner

(binary

search).

Berikut

ini

penjelasannya dari kedua metode tersebut.

2)

Metode Pencarian Beruntun


Metode ini banyak digunakan karena efektif untuk melakukan

pencarian dari sekumpulan data, baik data sudah terurut


maupun yang belum terurut atau masih acak. Bila dibandingkan
dengan yang lainnya, metode ini memiliki cara kerja yang relatif
mudah untuk dipahami. Dalam metode ini, data yang dicari akan
dibandingkandengan seluruh elemen array yang ada. Sebagai
contoh, apabila kita memiliki array A yang memiliki indeks 1
sampai n dan kita akan mencari nilai x di dalam array tersebut,
maka nilai x tersebut akan dibandingkan dengan nilai A[1]
sampai A[n]. Dalam metode ini juga diterapkan bahwa apabila
data ditemukan pada indeks tertentu, maka proses pencarian
akan dihentikan. Hal ini bertujuan agar proses pembandingan
nilai tidak dilakukan sampai indeks terakhir karena nilai yang
dicari

telah

ditemukan.Agar

lebih

gambar proses pencarian data berikut.

55

memperjelas,

perhatikan

1
2
3
4
5

Hentikan pencarian

Array A
75
73
78
81
80

Nilai yg akan dicari

Gambar 6.1. Pencarian Data dengan Metode Pencarian


Beruntun(sumber:Rahardjo)

Pada gambar di atas, nilai 1, 2, 5 merupakan indeks array


sedangkan nilai 75, 73, 80 merupakan nilai yang terkandung
dalam elemen-elemen array. Sekarang misalkan kita akan
melakukan pencarian data 78 di dalam array tersebut, maka
salah

satu

cara

yang

dapat

digunakan

adalah

dengan

membandingkan nilai 78 tersebut dengan seluruh elemen array


(dari A[1] sampai A[5]). Mula-mula kita akan membandingkan
nilai 78 dengan elemen pertama (A[1]), karena nilainya tidak
sama maka pencarian akan dialnjutkan ke elemen berikutnya
(A[2]), begitu seterusnya. Pada saat elemen ketiga, nilai A[3]
sama dengan nilai yang dicari pencarian akan dihentikan.
Berikut

ini

contoh

program

yang

akan

menunjukkan

implementasi dari pencarian array dengan menggunakan metode


di atas. Apabila data yang dicari ditemukan dalam array, maka
program akan menampilkan indeks dimana data tersebut berada.
Sebaliknya, apabila data tidak ditemukan maka program akan
mengembalikan indeks nol.
Program CariBeruntun;
Uses crt;
Const
A : array [1 . . 5] of integer = (75, 73, 78, 81, 80);
Var
i, x, indeks : integer;
begin
clrscr;
write (Masukkan nilai yang akan dicari : ); readln(x);
indeks := 0;
for i := 1 to 5 do begin
if A[i] = x then begin
indeks := I;
break;
end;

56

end;
writeln (x, ditemukan pada indeks ke-, indeks);
readln;
end.

Adapun contoh hasil yang akan diberikan oleh program di


atas adalah sebagai berikut .
Masukkan nilai yang akan dicari : 78
78 ditemukan pada indeks ke-3

Sekarang tinjaulah kasus apabila ternyat data yang dicari


dalam array tidak ditemukan. Sebagai contoh apabila kita
memiliki array dengan n buah elemen, maka dengan metode
runtunan ini, program akan melakukan pembandingan nilai
sebanyak n kali, yaitu dari indeks pertama sampai indeks ke-n.
Hal ini tentu dapat dikatakan sebagai sebuah kelemahan dari
metode tersebut.

3)

Metode Pencarian Bagi Dua


Berbeda dengan metode pencarian beruntun yang dapat

digunakan untuk data belum terurut, metode pencarian bagi dua


ini hanya dapat digunakan untuk data-data yang telah terurut,
baik secara menaik maupun menurun.
Dalam metode ini elemen array akan dibagi menjadi dua,
sehingga banyaknya proses pembandingan nilai dapat dikurangi.
Sebagai contoh, apabila terdapat array A yang memiliki n buah
elemen dengan indeks 1 sampai n dan datanya telah terurut
secara menaik, maka array tersebut akan dipenggal pada indeks
ke-k, dimana k = n + 1 div 2. hal tersebut mengakibatkan array
A terbagi menjadi dua bagian, yaitu dari A[1] . . A[k-1] dan
A[k+1] . . A[n], sedangkan a[k] menjadi pemenggal atau
pembatas antara dua bagian tersebut. Apabila x (nilai yang
dicari) sama dengan nilai A[k] maka hentikan pencarian,
sedangkan bila tidak, periksa apakah nilai A[k] > x ataukah A[k]

57

< x. Bila A[k] lebih besar dari x, maka ulangi metode pencarian
tersebut untuk A[1] sampai A[k-1]. Sebaliknya, apabila A[k] lebih
kecil dari x, maka ulangi metode pencarian tersebut untuk
A[k+1] sampai A[n]. Perhatikan gambar berikut.
Nilai yang dicari

Keadaan pertama
1
12 14
0

1
5

16

18

19

20

22

24

25

2
6

28

29

k1 = 7
Keadaan kedua
20 22

24

25

2
6

28

29

K2 = 11
Keadaan ketiga
20

22

Hentikan pencarian
24

K3 = 11
Gambar 6.2. Pencarian Data dengan Metode Pencarian Bagi
Dua(sumber:Rahardjo)

Pada gambar di atas, array terdiri dari 14 buah elemen yang


sudah terurut secara menaik dengan indeks 1 sampai 14. Mulamula (keadaan pertama), array akan dibagi menjadi dua bagian.
Pembatasnya adalah indeks ke-7. Nilai 7 didapat dari (1+14) div
2. Karena nilai pada indeks ke-7 (nilai 19) lebih kecil dari nilai
yang dicari (nilai 22), maka proses pencarian akan diulang untuk
indeks ke-8 sampai ke-14. Pada keadaan kedua ini array
tersebut juga akan dibagi menjadi dua. Kali ini pembatasnya
adalah indeks ke-11, yang berasal dari (8+4) div 2. Karena nilai
pada indeks ke-11 (nilai 25) lebih besar dari nilai yang dicari
(niali 22), maka proses pencarian akan dilakukan lagi untuk
indeks ke-8 sampai ke-10. Pada keadaan ini (keadaan ketiga),
array akan dibagi menjadi dua pada indeks ke-9, yang berasal
dari (8+10) div 2. Karena nilai pada indeks ke-9 sama dengan
nilai yang dicari, maka proses pencarian pun dihentikan. Untuk

58

lebih

memperjelas

pembahasan

serta

menunjukkan

implementasinya, perhatikan contoh program di bawah ini.


Program CariBagiDua;
Uses crt;
Const
A : array [1 . . 14] of integer = (10,12,14,15,16,18,19,20,22,24,25,26,28,29);
Var
idxAwal,
{indeks array awal}
idxAkhir,
{indeks array akhir}
k,
{indeks pemenggal/pembatas}
x : integer;
{nilai yang dicari}
ketemu : boolean;
{variabel status, ditemukan atau tdak ?}
begin
clrscr;
write (masukkan nilai yang akan dicari : ); readln(x);
{melakukan pencarian}
idxAwal := 1;
idxAkhir := 14;
{14 adalah jumlah elemen array A}
ketemu := false;
while (not ketemu) and (idxAwal<= idxAkhir) do begin
k:= (idxAwal + idxAkhir) div 2;
if A[k] = x then begin
ketemu := true;
end else begin
if A[k] < x then begin
idxAwal := k + 1;
{mencari di bagian kanan}
end else begin
idxAkhir := k 1;
{mencari di bagian kiri}
end;
end;
end;
{memeriksa, ketemu atau tidak}
if ketemu then begin
writeln (x, ditemukan pada indeks ke-, k);
end else begin
writeln(x, tidak ditemukan);
end;
readln;
end.

Berikut contoh hasil yang akan diberikan oleh program di atas.


Masukkan nilai yang akan dicari : 22
22 ditemukan pada indeks ke-9

C. Penutup
Pencarian (searching) dilakukan untuk menemukan nilai
tertentu pada sejumlah nilai yang tersedia. Terdapat bermacam-

59

macam program pencarian yang telah dikembangkan dengan ide


dasar yang berbeda. Dua diantaranya adlah pencarian beruntun
dan pencarian bagi dua.
Pencarian

beruntun

dilakukan

dengan

melakukan

perbandingan nilai yang dicari dengan setiap elemen array,


mulai

dari

indeks

terkecil

sampai

indeks

terbesar

yang

terdefinisi. Pencarian dihentikan jika nilai yang dicari telah


ditemukan atau semua elemen sudah diperiksa. Mencari nilai
terbesar atau terkecil adalah contoh lain dari proses beurtan
terhadap array.
Metode pencarian bagi dua ini hanya dapat digunakan untuk
data-data yang telah terurut, baik secara menaik maupun
menurun. Dalam metode ini elemen array akan dibagi menjadi
dua, sehingga banyaknya proses pembandingan nilai dapat
dikurangi.
1)

Pertanyaan
Buat program untuk mencari nilai tertentu dengan metode
pencarian beruntun.

2) Umpan Balik dan Tindak Lanjut


Untuk menguasai materi ini, sebaiknya anda membuat
ringkasan materi tentang searching (pencarian) dan membuat
sendiri beberapa program dengan searching.
Jawab

pertanyaan

di

atas

dengan

langsung

membuat

program di komputer. Jalankan program tersebut sampai benar.


Hapus kembali listing program yang sudah benar dan buat
kembali program tersebut, dan jalankan. Kalau tingkat kesalahan
pada pembuatan program sudah kecil, anda dapat melanjutkan
materi berikutnya. Kalau program belum jalan, perbaiki terus
sampai benar.

60

3)

Kunci Jawaban

Program pencarian_beruntun;
Const
nmin = 1;
nmax = 100;
type
arrint = array [nmin..nmax] of integer;
var
x
: integer;
TabInt : arrint;
n
: integer;
indeks : integer;
function cari1 (xx: integer) : integer;
var
i
: integer;
begin
i := 1;
while ((i<n) and (TabInt[i] <> xx)) do
i := i + 1;
if TabInt[i] = xx then
cari1 := i
else
cari1 := 0;
end;
begin
write (Nilai yang dicari = );
readln (x);
indeks := cari1 (x);
if indeks <> 0 then
write (x, ditemukan pada indeks ke- , indeks)
else
write (x, tidak ditemukan);
end.

Daftar Pustaka
Jurusan Informatika. 2006. Bahan Ajar Pemrograman 2. Hibah
Pengajaran PHK A1 Universitas Negeri Gorontalo
Kadir, Abdul. 2002. Pemrograman Pascal Buku 1. Yogyakarta:
Andi Offset.
Munir, Rinaldi. 2005. Algoritma dan Pemrograman dalam
bahasa Pascal dan C Edisi 3. Bandung: Informatika.
Rahardjo, Budi. 2005. Teknik
Pemrograman
Pascal.
Bandung:Informatika

61

BAB VI
FILE
A. Pendahuluan
Deskripsi Singkat
Bab ini akan membahas definisi file, variabel file, membuka
file, memanipulasi data dalam file, menutup file.
Relevansi
Data dalam sebuah program yang telah dibuat dengan
berbagai materi pada bab sebelumnya dapat disimpan untuk
digunakan kembali dengan perintah file. Dengan demikian,
apabila komputer dimatikan maka datanya tidak akan hilang.
Tujuan Instruksional Khusus

62

Mahasiswa mampu membuat program dengan menggunakan


perintah file.
B. Penyajian
1)

Definisi File
Dalam

disudutkan

kasus-kasus
untuk

pemrograman

menggunakan

file

tertentu
sebagai

kita
media

sering
yang

digunakan untuk menyimpan data-data, baik berupa data input


(untuk masukan) maupun sebagai data output (untuk keluaran).
Sebagai contoh, apabila kita menggunakan sistem operasi
Microsoft Windows maka kita akan menemukan file sistem
seperti autoexec.bat, config.sys, system.ini dan lainnya. File
tersebut sebenarnya digunakan untuk menyimpan data-data
secara terpisah sehingga nilainya dapat diubah dengan mudah
sesuai dengan kebutuhan. Sebagai seorang programmer, kita
tentu dituntut untuk dapat menggunakan (mengakses) file dari
dalam prograam yang kita buat. Berdasarkan prosedur yang ada,
proses pengaksesan file di dalam bahasa Pascal terdiri dari
emapt tahap, yaitu :
(a)

Menghubungkan file fisik yang akan dibuka atau dibuat


dengan variabel file

(b)

Membuka file

(c)

Melakukan operasi file (membaca atau menulis)

(d)

Menutup file

2)

Variabel File
Sebelum file dapat dibuka atau dibuat oleh program, kita

harus menghubungkannya dengan variabel file terlebih dahulu.


Variabel file merupakan peralatan logik yang digunakan sebagai
perantara dalm mentransfer atau membaca data dari atau ke
sebuah file fisik yang tersimpan di dalam disk. Dengan kata lain,
sebenarnya kita tidak secara langsung memanipulasi file fisik
tersebut, melainkan melalui variabel file. Dalam bahasa Pascal,

63

variabel seperti ini dianggap sebagai variabel biasa yang


dideklarasikan dengan tipe file tertentu. Cara yang harus
dilakukan untuk dapat menghubungkan file fisik dengan variabel
file

adalah

dengan

menggunakan

prosedur

Assign,

yang

memeiliki bentuk umum sebagai berikut.


Procedure Assign (NamaVariabelFile, NamaFileFisik);

NamaVariabelFile

merupakan

nama

variabel

yang

sebelumnya harus dideklarasikan terlebih dahulu, sedangkan


NamaFileFisik merupakan nama file yang akan dibuka atau
dibuat. Perlu diperhatikan bahwa nama file tersebut harus
dituliskan secara lengkap beserta lokasi atau path-nya. Sebagai
contoh,

apabila

kita

ingin

membuka

file

dengan

nama

CONTOH.TXT yang terdapat di dalam direktori COBA di drive D,


maka kode yang harus dituliskan adalah sebagai berikut.
Var
F:TextFile; {mendeklarasikan variabel file denagn nama F}
Begin
Assign (F, D:\COBA\CONTOH.TXT);
...
end.

Sedangkan apabila file yang akan kita akses berada dalam


satu direktori dengan program (file eksekusi) yang kita buat,
maka kita tidak perlu menuliskan lokasi atau path-nya. Artinya
kita hanya perlu untuk menuliskan nama file-nya saja seperti
berikut.
Assign (F, CONTOH.TXT);

Pada kode di atas, file CONTOH.TXT akan dihubungkan


dengan variabel F. Selanjutnya yang akan dimanipulasi di dalam
program adalah variabel F. Namun karena variabel tersbut
sebenarnya menunjuk ke file fisik, maka setiap perubahan yang
terjadi di dalam variabel F tentu akan mempengaruhi isi dari file
CONTOH.TXT.

64

Hal yang perlu diperhatikan di sini adaalah bahwa walaupun


file tersebut sudah terhubung dengan variabel file, namun file
masih dalam keadaan tertutup sehingga kita perlu membukanya
terlebuh dahulu sebelum kita mengakses data yang terdapat di
dalamnya.
3)

Membuka File
Seteleh file tersebut dihubungkan dengan variabel file, maka

langkah selanjutnya yang perlu dilakukan adalah membuka file.


Dalam bahasa Pascal, terdapat tiga buah prosedur yang dapat
digunakan untuk membuka file, yaitu Rewrite, Reset dan
Append.
(a)

Prosedur Rewrite
Prosedur ini digunakan untuk membuka file yang sama sekali

belum terdapat di dalam disk. Artinya, di sini kompiler akan


melakukan proses pembuatan file baru sekaligus membuka file
tersebut. Bentuk umum dari prosedur Rewrite adalah sebagai
berikut.
Procedure Rewrite(NamaVariabelFile[:File;
UkuranRecord : Word]);

Bila file yang dibuka berupa file teks, maka file tersebut akan
bersifat writeonly atau tidak dapat dibaca, artinya operasi yang
diizinkan

untuk

file

tersebut

hanyalah

operasi

tulis.

UkuranRecord merupakan ekspresi yang bersifat opsional yang


hanya disertakan apabila file yang dibuka merupakan file tanpa
tipe. Nilai tersebut akan digunakan sebagai ukuran record dalam
transfer data. Nilai tersebut akan digunakan sebagai ukuran
record

dalam

transfer

data.

Apabila

dihilangkan,

maka

UkuranRecord ini alan dianggap bernilai 128 byte. Untuk lebih


memahami penggunaan prosedur ini, perhatikan contoh program
sederhana ini.
Program ContohRewrite;

65

Var
F : TextFile;
Begin
Assign (F, D:\CONTOH.TXT);
Rewrite (F);
End.

Jalankan

program

tersebut

dan

lihatlah

drive

pada

komputer anda, maka di situ pasti akan tercipta file baru dengan
nama

CONTOH.TXT

bereksperimen

dimana

untuk

isinya

membuka

kosong.

filee

yang

Apabila
sudah

anda
ada

sebelumnya dengan menggunakan prosedur Rewrite maka isi


dari file tersebut akan ditimpa dengan isi file baru. Satu hal lagi
yang perlu diperhatikan adalah bahwa etelah pemanggilan
prosedur

Rewrite,

fungsi

EOF

(end-of-file)

akan

selalu

menghasilkan nilai true.


(b)

Prosedur Reset
Prosedur ini digunakan untuk membuka file yang sebelumnya

sudah ada di dalam disk. Hal ini bertujuan untuk membaca isi
dari file tersebut untuk kemudian dimanipilasi sesuai dengan
kebutuhan. Perlu sekali untuk diperhatikan bahwa apabila file
yang dibuka merupakan file teks, maka variabel file akan bersifat
read only (hanya dapat dibaca). Berikut ini prototype dari
prosedur Reset.
Procedure Reset (NamaVariabelFile [: file; UkuranRecord: word]);

UkuranRecord merupakan ekspresi yang bersifat operaional


yang hanya disertakan apabila file yang dibuka merupakan file
tanpa tipe. UkuranRecord sendiri berfungsi untuk menentukan
ukuran record dalam proses transfer data. Apabila nilai tersebut
dihilangkan, maka nilainya akan dianggap 128 byte. Sebagai
contoh, kita telah memiliki file SAMPLE.TXT yang disimpan di rive
D dan isinya seperti berikut.
Teknik Pemrograman Pascal
Oleh

: Budi Raharjo

66

Tahun

: 2005

Penerbit

: INFORMATIKA

Selanjutnya

kita

ingin

membaca

isi

file

tersebut

dan

ditampilkan di layar monitor, maka kita dapat menggunakan


prosedur Reset seperti yang tampak pada kode berikut.
Program ContohReset;
Uses crt;
Var
F : TextFile;
Teks : string;
Begin
Assign (F, D :\SAMPLE.TXT);
Reset (F);
While not eof (F ) do begin
Readln (F, teks) ;
{membaca data dari file dan mengisikannya ke variabel
teks}
Writeln (teks);
menampilkan variabel teks ke layar}
Close (F);
Readln;
End.

Sekarang coba jalankan program tersebut dan akan melihat


bahwa seluruh isi dari file SAMPLE.TXT akan ditampilkan di layar
monitor. Apabila kita menggunakan prosedur Reset pada file
yang belum terdapat di dalam disk maka kompiler akan
menampilkan pesan kesalahan pada saat program dijalankan.
(c)

Prosedur Append
Prosedur ini digunakan untuk menambahkan isi file yang

sebelumnya sudah terdapat di dalam disk. Isi yang ditambahkan


selalu berada pada bagian akhir dari isi file yang sudah ada
sebelumnya. Dalam menggunakan prosedur ini kita tidak perlu
memanggil prosedur Rewrite maupun reset karena prosedur
Append

secara

otomatis

akan

membuka

file

yang

telah

dihubungkan dengan variabel file. Namun sebagai catatan bagi


Anda bahwa prosedur Append hanya dapat digunakan apabila
file yang dibuka merupakan file teks. Berikut ini bentuk umum
dari prosedur Append.
Procedure Append (NamaVariabelFile: Text ) ;

67

Apabila anda membuka file teks yang belum ada didalam diks
dengan menggunakan prosedur Append, maka akan terjadi
kesalahan pada saat program sedang berjalan (run-time). Setiap
pemanggila prosedur Append, file bersifat write-only (hanya
dapat ditulis) dan posisi file akan diset pada bagian akhir baris
file. Untuk dapat lebih memahaminya, buatlah file teks (*.TXT)
dengan program teks editor yang tersedia, misalnya Notepad,
kemudian isikan teks berikut ke dalamnya.
Ini adalah data yang dituliskan pada baris pertama.
Ini adalah data yang dituliskan pada baris pertama.

Sebagai

contoh,

file

tersebut

disimpan

dengan

nama

TEST.TXT pada drive D di dalan direktori COBA. Selanjutnya kita


ingin menamnbahkan dua buah baris data ke dalam file di atas,
maka kita dapat melakukannya melalui kode program dibawah
ini.
Program ContohAppend;
Uses
Crt;
Var
F: TextFile;
Begin
Assign (F,D:\COBA\TEST.TXT) ;
Append (F) ; {Membuka file untuk di tambah isinya}
{Menambahkan data ke dalam file}
writeln (F,Ini adalah data pertama yang ditambahkan) ;
writeln (F,Ini adalah data kedua yang ditambahkan) ;
close(F) ;
end.
Ini
Ini
Ini
Ini

adalah
adalah
adalah
adalah

data
data
data
data

4)

yang dituliskan pada baris pertama


yang dituliskan pada baris kedua
pertama yang ditambahkan
kedua yang ditambahkan

Memanipulasi Data Dalam File


Setelah

Anda

mengerti

cara

untuk

mengkaitkan

atau

menghubungkan file ke variabel file dan juga bagaimana cara


membuka file tersebut maka kini saatnya Anda mengetahui
bagaimana cara memanipulasi data dalam file dari program yang

68

kita buat. Untuk melakukan hal tersebut tentu Anda harus


memahami dengan benar cara membaca data dan menuliskan
data kedalam file.
(a)

Menulis Data ke Dalam File


Dalam bahasa Pascal, proses penulisan data ke dalam file

dapat dilakukan dengan menggunakan prosedur Write, Writeln


maupun BlockWrite.

Untuk

informasi

lebih

detil

mengenai

masing-masing prosedur tersebut, Anda dapat melihat sub bab di


bawah ini.
Menggunakan Prosedur Write

(1)

Prosedur Write digunakan untuk menuliskan data kedalam file


dimana posisi kursor tidak akan dipindahkan kebaris selanjutnya.
Berikut ini bentuk prototipe dari prosedur Write.
Procedure Write (NamaVariabelFile; VI [ , V2..VN] ) ;

Dimana V1..VN adalah nama variabel yang akan digunakan


untuk

menyimpan

data

yang

akan

dituliskan.

Walaupun

demikian, Andajuga dapat menuliskannya secara langsung tanpa


harus menyimpannya terlebih dahulu ke dalam variabel seperti
yang tampak pada kode berikut.
write (F,Mencoba menuliskan data ke dalam file);

Berdasarkan

kode

di

atas,

maka

teks

tersebut

akan

dimasukkan atau ditulis ke dalam file yang telah dihubungkan


dengan variabel file F. Untuk lebih memahaminya, perhatikan
contoh program di bawah ini dimana kita akan melakukan
penulisan terhadap file DATA.TXT yang terdapat pada direktori
COBA di dalam drive D. Sebagai catatan bahwa file DATA.TXT ini
sebelumnya sudah ada di dalam disk dimana isi dari file tersebut
masih kosong.
Program ContohWrite;
Uses crt;
Var
F : TextFile;
Begin

69

Assign (F,D:\COBA\DATA.TXT);
Reset (F);
Write (F, Teknik Pemrograman );
Write (F, Pascal);
Close (F);
End.

Jalankan program tersebut dan buka kembali isi dari file


DATA.TXT, maka kita akan melihat bahwa file tersebut sekarang
telah berisi teks berikut.
Teknik Pemrograman Pascal

(2)

Menggunakan Prosedur Writeln


Sebenarnya konsep dari prosedur Writeln ini sama dengan

prosedur Write di atas. Perbedaannya, Writeln digunakan untuk


menuliskan data per baris. Artinya, setelah melakukan prosedur
Write, prosedur ini akan memindahkan kursor aktif ke baris
selanjutnya. Berikut contoh program yang akan menunjukkan
penggunaan prosedur Writeln yang digunakan untuk menuliskan
data ke dalam file.
Program ContohWriteln;
Uses crt;
Var
F : TextFile;
Begin
Assign (F,D:\COBA\DATA.TXT);
Reset (F);
Writeln (F, Teknik Pemrograman );
Writeln (F, Pascal);
Close (F);
End.

Apabila dijalankan, program di atas akan menyebabkan isi file


DATA.TXT berubah menjadi seperti di bawah ini.
Teknik Pemrograman
Pascal

(b)

Membaca Data dari File


Untuk

membaca

data

dari

dalam

file,

menggunakan prosedur Read, Readln dan BlockRead.

70

kita

dapat

Menggunakan Prosedur Read

(1)

Pada file teks, prosedur ini digunakan untuk membaca data


per karakter. Apabila digunakan pada file bertipe maka prosedur
Read akan membaca per elemen data. Berikut bentuk umumnya.
procedure Read (NamaVariabelFile; V1[, V2 . . VN]);

dimana V1 . . VN adalah nama variabel yang akan digunakan


untuk menyimpan data hasil proses pembacaan.
Menggunakan Prosedur Readln

(2)

Cara kerja dari prosedur ini sebenarnya sama dengan


prosedur Read, hanya saja dalam prosedur Readln proses
pembacan datanya tidak dilakukan per karakter melainkan per
baris data. Setelah mengeksekusi prosedur Read, maka kursor
akan ditujukkan ke baris selanjutnya. Proses pembacaan data
dengan prosedur Readln tentu akan membutuhkan waktu yang
relatif lebih cepat apabila dibandingkan dengan prosedur Read
karena dilakukan per baris. Hal yang perlu diingat bahwa
prosedur Readln hanya dapat digunakan untuk file teks saja.
Bentuk umum dari prosedur Readln adalah sebagai berikut.
procedure Readln (NamaVariabelFile; V1[, V2 . . VN]);

dimana V1 . . VN adalah nama variabel yang akandigunakan


untuk menyimpan data hasil proses pembacaan.
5)

Menutup File
Setelah

selesai

mengakses

file

maka

sebaiknya

kita

menutupnya. Untuk keperluan ini, bahasa Pascal menyediakan


prosedur Close. Berikut bentuk umumnya.
procedure close (var F);

dimana F adalah sebuah variabel file yang sebelumnya telah


dibuka dengan menggunakan fungsi Reset, Rewrite maupun
Append.
6)

Jenis File

71

Dalam bahasa Pascal, file dibedakan menjadi tiga jenis,


yaitu :
(a) File Teks
(b) File Bertipe
(c) File Tanpa Tipe
(a)

File Teks
File teks adalah file yang menyimpan data-data dalam bentuk

teks. Dalam bahasa Pascal, file teks ini direpresentasikan dengan


tipe

Text

atau

TextFile.

Berikut

ini

contoh

kode

untuk

mendeklarasikan variabel yang bertipe TextFile.


var
F : TextFile; {mendeklarasikan variabel F bertipe TextFile}

Untuk

dapat

lebih

mengetahui

penggunaannya

di

dalam

program, perhatikan contoh program berikut.


Program FileTeks;
Uses crt;
Var
F : TextFile;
Begin
Assign (F, D:\CONTOH.TXT);
Rewrite (F);
Writeln (F, Teknik Pemrograman Pascal);
Writeln (F, Oleh
: Budi Raharjo);
Writeln (F, Tahun
: 2005);
Writeln (F, Penerbit
: INFORMATIKA Bandung);
Close (F);
End.

Di sini kita mengasumsikan bahwa file CONTOH.TXTbelum


ada di dalam dirive D, selanjutnya kita ingin membuat atau
menciptakan file tersebut dan mengisikan data yang berupa teks
ke dalamnya. Sekarang jalankan program tersebut dan lihatlah
drive D, maka kita akan menmui file baru dengan nama
CONTOH.TXT yang isinya adalah sebagai berikut.
Teknik Pemrograman Pascal
Oleh
: Budi Raharjo
Tahun
: 2005
Penerbit
: INFORMATIKA Bandung

(b)

File Bertipe

72

File bertipe adalah file yang menampung data dengan tipe


data tertentu, seperti integer, real dan lainnya. Selain tipe data
dasar, kita juga dapat mendefinisikan file bertipe ini dengan tipe
data bentukan, misalnya record. Berikut ini bentuk umum untuk
mendeklarasikan variabel file bertipe.
Var
NamaVariabelFile : file of <Tipedata>

Sebagai contoh, apabila kita akan mendeklarasikan variable


file yang mengakses file yang berisi data integer amak kode
yang harus dituliskan adalah sebagai berikut.
var
F : file of integer;

Begitu juga apabila file berisi data real, maka kodenya adalah
seperti berikut.
var
F : file of real;

Contoh penggunaan file bertipe untuk tipe record adalah sebagai


berikut.
Type
Tsiswa = Record
NIM : string [8];
Nama : string [25];
Umur : integer;
Alamat : string [30];
Kota : string [15];
End;
Var
F : file of Tsiswa;

(c)

File Tanpa Tipe


Dalam bahasa Pascal, file tanpa tipe direpresentasikan

dengan

tipe

FILO.

File

jenis

ini

dapat

digunakan

untuk

menyimpan jenis data apa saja, baik teks maupun tipe lainnya,
namun biasanya digunakan untuk menyimpan data-data biner
(termasuk file EXE maupun COM). Berikut bentuk umumnya.
Var
NamaVariabelFile : FILE

73

Sebagai contoh apabila kita ingin mendeklarasikan variabel F


yang akan digunakan sebagai variabel file tanpa tipe, maka kita
harus mendeklarasikannya sebagai berikut.
var
F : FILE

C. Penutup
Sejauh ini program yang kita buat masih menggunakan data
yang bersifat sementara. Artinya, umur atau daur hidup dari data
tersebut masih tergantung pada lamanya program bersangkutan
dijalankan. Hal ini disebabkan karena data tersebut hanya
disimpan di dalam memori komputer sehingga apabila program
dihentikan maka alamat memori tempat data-data tersebut
disimpan

juga

akan

didealokasikan

oleh

kompiler

secara

otomatis, dan ini mengakibatkan data-data yang tersimpan pun


akan

hilang.

Untuk

mengatasi

kasus

tersebut,

dalam

pemrograman disediakan alat bantu untuk penyimpanan datadata hasil program yang disebut dengan file. Secara fisik, file
disimpan di dalam suatu disk seperti harddisk atau disket, yang
selanjutnya dapat dimanipulasi isinya.
1)

Pertanyaan
(a) Buat program untuk pengolahan data barang dengan
menggunakan media file teks.
(b) Buat program untuk mengkoreksi data barang dengan
menggunakan media file teks.

2) Umpan Balik dan Tindak Lanjut


Untuk menguasai materi ini, sebaiknya anda membuat
ringkasan materi tentang file dan membuat sendiri beberapa
program file.

74

Jawab

pertanyaan

di

atas

dengan

langsung

membuat

program di komputer. Jalankan program tersebut sampai benar.


Hapus kembali listing program yang sudah benar dan buat
kembali program tersebut, dan jalankan. Kalau tingkat kesalahan
pada pembuatan program sudah kecil, anda dapat melanjutkan
materi berikutnya. Kalau program belum jalan, perbaiki terus
sampai benar.
3) Kunci Jawaban
Jawaban a
program file1;
uses crt;
var
berkasteks:text;
kodebrg :string[5];
namabrg :string[20];
unitbrg :integer;
hargabrg:real;
kodecari:string[5];
spasi :string[5];
lagi :char;
begin
assign(berkasteks,'barang.txt');
lagi :='Y';
while upcase(lagi)='Y' do
begin
spasi := ' ';
reset(berkasteks);
clrscr;
write('kode barang dicari ? ');readln(kodecari);
writeln;
kodecari :=copy(spasi,1,5 - length(kodecari)) + kodecari;
while (Not Eof(berkasteks)) And (kodebrg <> kodecari) do
Readln(berkasteks,kodebrg,namabrg,unitbrg,hargabrg);
if kodebrg=kodecari then
begin
writeln('nama barang :',namabrg);
writeln('unit barang :',unitbrg:7);
writeln('harga barang :',hargabrg:10:2);
end
else
write('tidak ada data barang ini !!!');
close(berkasteks);
writeln;
write('ada data yang akan dicari [y/t] ?');readln(lagi);
end;
end.

75

Jawaban b
program koreksidata;
uses crt;
var
berkasteks, berkasdummy :text;
kodebrg:string[5];
namabrg:string[20];
unitbrg:integer;
hargabrg:real;
kodecari:string[5];
spasi:string[5];
lagi:char;
ketemu:boolean;
begin
lagi:='Y';
while upcase(lagi) ='Y' do
begin
assign(berkasteks,'barang.txt');
reset(berkasteks);
assign(berkasdummy,'barang.$$$');
rewrite(berkasdummy);
spasi :=' ';
clrscr;
write('kode barang dikoreksi ?'); readln(kodecari);
writeln;
kodecari:=copy(spasi,1,5-length(kodecari))+kodecari;
ketemu:=false;
while not eof(berkasteks) do
begin
readln(berkasteks,kodebrg,namabrg,unitbrg,hargabrg);
if kodebrg = kodecari then
begin
ketemu:=true;
writeln('kode barang :',kodebrg);
write ('koreksinya :');readln(kodebrg);
writeln('nama barang :',namabrg);
write ('koreksinya :');readln(namabrg);
writeln('unit barang :',unitbrg:7);
write ('koreksinya :');readln(unitbrg);
writeln('harga barang :Rp.',hargabrg:10:2);
write ('koreksinya :');readln(hargabrg);
end;
writeln(berkasdummy,kodebrg:5,namabrg:20,unitbrg,hargabrg:10:2);
end;
if not ketemu then
writeln('tidak ada data barang ini !!!');
close(berkasteks);
close(berkasdummy);
erase(berkasteks);
rename(berkasdummy,'barang.txt');
writeln;
write('ada lagi data yang akan dicari [Y/T] ?');readln(lagi);
end;
end.

76

Daftar Pustaka
Jogiyanto, 1989. Turbo Pascal. Yogyakarta : Andi Ofset.
Jurusan Informatika. 2006. Bahan Ajar Pemrograman 2. Hibah
Pengajaran PHK A1 Universitas Negeri Gorontalo
Kadir, Abdul. 2002. Pemrograman Pascal Buku 1. Yogyakarta:
Andi Offset.
Kadir, Abdul. 2002. Pemrograman Pascal Buku 2. Yogyakarta:
Andi Offset.
Rahardjo, Budi. 2005. Teknik
Pemrograman
Pascal.
Bandung:Informatika
Wahid,
Fathul.
2004.
Dasar-Dasar
Algoritma
dan
Pemrograman. Yogyakarta : Andi.

77

Anda mungkin juga menyukai