Anda di halaman 1dari 74

MODUL

ALGORITMA 2

Oleh : Ahmad Husain, M.Kom

Universitas Indraprasta PGRI

1
BAHAN AJAR
MATA KULIAH PEMROGRAMAN

Tinjauan Mata Kuliah


1.1. Deskripsi Mata Kuliah
Algoritma dan struktur data merupakan matakuliah yang
mempelajari bagaimana membuat program terstruktur. Matakuliah
praktikum dengan 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 dapat memahami lebih lanjut tentang pemrograman terstruktur.
Dengan menggunakan bahasa pemrograman Pasal ini, mahasiswa bisa
membuat program untuk memecahkan berbagai macam persoalan dalam
kehidupan sehari-hari.

1.3. Tujuan Instruksional Umum


Setelah menyelesaikan mata kuliah ini, mahasiswa diharapkan
mampu membuat program terstruktur yang 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

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

3
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,

4
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] 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

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

5
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 : array [0 . . 9] of integer;
A2 : array [5 . . 15] of integer;
A3 : array [’a’ . . ’j’] of integer;
A4 : 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)

6
Untuk lebih memahaminya, coba perhatikan contoh kode di bawah ini.
Var
A: array [1..100] of integer;
Begin
A[1] :=1; {mengisi elemen pertama dengan nilai 1}
A[2] :=2; {mengisi elemen kedua dengan niali 2}
A[3] :=3; {mengisi elemen ketiga dengan niali 3}
....
A[100] :=100; {mengisi elemen keseratus dengan nilai 100}
end.

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);

7
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

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

9
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 [1] := ’V’ ; {SALAH, karena elemen A [1] selalu bernilai ’A’}
A [2] := ’W’ ; {SALAH, karena elemen A [2] selalu bernilai ’B’}
A [1] := ’X’ ; {SALAH, karena elemen A [3] selalu bernilai ’C’}
A [1] := ’Y’ ; {SALAH, karena elemen A [4] selalu bernilai ’D’}
A [1] := ’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);
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

10
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. 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); {salah}

Berikut ini kode yang merupakan 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;

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

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

12
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 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 masing-masing berordo 2 x 3 (memiliki 2
baris dan 3 kolom).
Program JumlahMatriks;
Uses crt;

13
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;
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

14
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

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)

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.

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

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:

16
A[1, 1, 1] = 1 A[1, 1, 2] = 2 A[1, 2, 1] = 3 A[1, 2, 2] = 4
A[2, 1, 1] = 5 A[2, 1, 2] = 6 A[2, 2, 1] = 7 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 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) Pertanyaan

(a) 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,

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

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

19
Record adalah jenis tipe data terstruktur yang berisi beberapa data,
yang masing-masing dapat berlainan tipe.

2) Mendeklarasikan Record
Suatu tipe record dideklarasikan dengan bentuk sebagai berikut :
RECORD Gambar 2.1 Pendeklarasian Record
Daftar_field_1 : tipe_1; (sumber:Kadir)
Daftar_field_2 : tipe_2;
...
daftar_field_n : tipe_n;
END
Masing-masing daftar_field dapat berupa satu atau beberapa nama
pengenal dan masing-masing dinamakan field. Bila daftar_field berisi lebih
dari satu field , antar field perlu dipisahkan dengan koma. Masing-masing
tipe dapat berupa tipe data apa saja termasuk array.
Berikut contoh pendeklarasian record :
Type
RecBarang = Record
Nama : String;
Kualitas : Char;
Harga : LongInt
End;

Var
Barang : RecBarang;

Dengan mendeklarasikan seperti di atas, Barang akan mengandung tiga


buah field, yaitu :
- Nama,
- Kualitas,
- Harga.

3) Cara Mengakses Field


Field dari suatu record diakses dengan bentuk :

Variabel.field

Gambar 2.2 Mengakses Field(sumber:Kadir)


Sebagai contoh :
Barang.Nama

20
Berarti “field Nama dari variabel record bernama Barang“.
Contoh penugasan nilai ke field tersebut :
Barang.Nama := ’Ubin TISKA 20x20’;

Dengan cara seperti di atas, field Nama dari record Barang berisi string
’Ubin TISKA 20x20’.
Isi dari suatu field ditampilkan dengan menggunakan Write atau Writeln.
Contoh :
Writeln (Barang.Nama);

Merupakan perintah untuk menampilkan isi field Nama dari record


Barang.

Contoh program yang memberikan gambaran pendeklarasian record,


pengisian terhadap field-field serta menampilkan isi masing-masing field
dapat dilihat di bawah ini.
Program Rec1;
Uses crt;
Type
RecBarang = Record
Nama : String[25];
Kualitas : Char;
Harga : LongInt
End;
Var
Barang : RecBarang; {variabel bertipe record}
Begin
Clrscr;
{Penugasan nilai terhadap field-field}
Barang.Nama := ’Ubin TISKA 20x20’;
Barang.Kualitas := ’A’;
Barang.Harga := 14000;

{menampilkan isi field}


writeln (’Nama Barang : ’, Barang.Nama);
writeln (’Kualitas : ’, Barang.Kualitas);
writeln (’Harga : ’, Barang.Harga);
Readln
End.

Hasil program :

Nama Barang : Ubin TISKA 20x20


Kualitas :A

21
Harga : 14000

4) Penugasan Antar Record


Jika record R1 dan R2 bertipe sama dan masing-masing memiliki F1, F2,
dan F3, maka penugasan :
R1 := R2;
diperkenankan. Pernyataan di atas merupakan penyederhanaan dari
sederetan pernyataan berikut :
R1.F1 := R2.F1;
R1.F2 := R2.F2;
R1.F3 := R2.F3;
Untuk lebih jelasnya, tulislah program berikut dan cobalah
menjalankannya.
Program Rec2;
Uses crt;
Type
RecBarang = Record
Nama : string[25];
Kualitas : car;
Harga : longInt
End;
Var
Barang1, Barang2 : RecBarang; {variabel bertipe record}
Begin
Clrscr;
{penugasan nilai terhadap field-field}
Barang1.Nama := ’Ubin TISKA 20x20’;
Barang1.Kualitas := ’A’;
Barang1.Harga := 14000;

{menyalin record}
Barang2 := Barang1;

Menampilkan isi field}


Writeln (’Nama Barang : ’, Barang2.Nama);
Writeln (’Kualitas : ’, Barang.Kualitas);
Writeln (’Harga : ’, Barang.Harga);
Readln
End.

Dengan adanya penugasan


Barang2 := Barang1;
maka semua field pada record Barang2 akan berisi recrod Barang1. Hasil dari
program di atas :

22
Nama Barang : Ubin TISKA 20x20
Kualitas :A
Harga : 14000

5) Record Di Dalam Record


Mungkin saja sebuah record berisi record. Sebagai gambaran hal ini,
perhatikan deklarasi berikut :
RecTanggal = Record
Tanggal,
Bulan,
Tahun :Integer
End;
RecPegawai = Record
Nomor : LongInt;
Nama : String [35];
TglLahir : RecTanggal;
Gaji : LongInt
End;

Tampak bahwa tipe record bernama RecPegawai berisi record yang lain
(RecTanggal).
Hal yang menarik yang perlu diperhatikan adalah cara mengakses field
seperti Tanggal, Bulan dan Tahun. Notasi yang diperlukan adalah sebagai
berikut.
Nama_variabel.TglLahir.Tanggal
Nama_variabel.TglLahir.Bulan
Nama_variabel.TglLahir.Tahun

Praktekkan program berikut, untuk mencoba pembuatan record dengan


bentuk sepert di atas.

Program Rec3;
Uses crt;
Type
RecTanggal = Record
Tanggal,
Bulan,
Tahun : Integer
End;
RecPegawai = Record
Nomor : LongInt;
Nama : string [35];
TglLahir : RecTanggal;
Gaji : longInt

23
End;
Var
DataPeg : RecPegawai; {variabel betipe record}
Begin
Clrscr;
Penugasan nilai terhadap field-fiedl}
DataPeg.Nomor := 56789;
DataPeg.Nama := ’Badu’;
DataPeg.TglLahir.Tanggal := 24;
DataPeg.TglLahir.Bulan := 12;
DataPeg.TglLahir.Tahun := 1972;
DataPeg.Gaji := 750000;

{menampilkan isi field}


Writeln (’Nama Pegawai : ’, DataPeg.Nama);
Writeln (’Tanggal Lahir : ’, DataPeg.TglLahir.Tanggal,
’/’, DataPeg.TglLahir.Bulan,
’/’, DataPeg.TglLahir.Tahun);
Readln
End.

Hasil dari program di atas adalah sebagai berikut :

Nama Pegawai : Badu


Tanggal Lahir : 24 / 12 / 1972

6) Pernyataan With
Untuk menyederhanakan notasi seperti :
DataPeg.TglLahir.Tanggal
Turbo Pascal menyediakan pernyataan WITH. Bentuk pernyataan ini
adalah sebagai berikut :

With nama_record do
pernyataan

Gambar 2.3 Bentuk Umum Pernyataan With(sumber:Kadir)

Pada bentuk ini, field-field yang terletak pada bagian pernyataan dapat
disebutkan tanpa perlu menyertakan lagi nama record dan tanda titik.
Untuk lebih jelasnya, perhatikan program berikut yang merupakan
alternatif lain dari program di atas.

24
Program Rec4;
Uses crt;
Type
RecBarang = Record
Nama : String [25];
Kualitas : Char;
Harga : LongInt
End;
Var
Barang : RecBarang; {variabel bertipe record}
Begin
Clrscr;
{penugasan nilai terhadap field-field}
With Barang do
Begin
Nama := ’Ubin TISKA 20x20’;
Writeln (’Nama Barang : ’, Nama);
Writeln (’Kualitas :’, Kualitas);
Writeln (’Harga :’, Harga);
End;
Readln
End.

Bila suatu record memiliki record lain, pernyataan With dapat diikuti
dengan with yang lain. Sebagai contoh, program di atas ditulis menjadi :

Program Rec5;
Uses crt;
Type
RecTanggal = Record
Tanggal,
Bulan,
Tahun : Integer
End;
RecPegawai = Record
Nomor : LongInt;
Nama : string [35];
TglLahir : RecTanggal;
Gaji : LongInt
End;
Var
DataPeg : RecPegawai; {variabel bertipe record}
Begin
Clrscr;
{Penugasan nilai terhadap field-field}
With DataPeg do
With TglLahir do
Begin
Nomor := 56789;
Nama := ’Badu’;
Tanggal := 24;

25
Bulan := 12;
Tahun := 1972;
Gaji := 750000;
End;
{menampilkan isi field}
With DataPeg do
With TglLahir do
Begin
Writeln (’Nama Pegawai :’, DataPeg.Nama);
Writeln (’Tanggal lahir :’, DataPeg.TglLahir.Tanggal,
’/’, DataPeg.TglLahir.Bulan
’/’, DataPeg.TglLahir.Tahun)
End;
Readln
End.

Pernyataan seperti :
With DataPeg do
With TglLahir do
Dapat ditulis menjadi :
With DataPeg, TglLahir do
dengan antar nama record dipisahkan oleh tanda koma.
Contoh program :

Program Rec6;
Uses crt;
Type
RecTanggal = Record
Tanggal,
Bulan,
Tahun : Integer
End;
RecPegawai = Record
Nomor : LongInt;
Nama : string [35];
TglLahir : RecTanggal;
Gaji : LongInt
End;
Var
DataPeg : RecPegawai; {variabel bertipe record}
Begin
Clrscr;
{Penugasan nilai terhadap field-field}
With DataPeg, TglLahir do
Begin
Nomor := 56789;
Nama := ’Badu’;
Tanggal := 24;
Bulan := 12;
Tahun := 1972;

26
Gaji := 750000;
End;
{menampilkan isi field}
With DataPeg, TglLahir do
Begin
Writeln (’Nama Pegawai :’, DataPeg.Nama);
Writeln (’Tanggal lahir :’, DataPeg.TglLahir.Tanggal,
’/’, DataPeg.TglLahir.Bulan
’/’, DataPeg.TglLahir.Tahun)
End;
Readln
End.

7) Array Record
Elemen suatu array juga bisa berupa record. Sebagai contoh dapat dilihat
di bawah ini.
Const
Jum_Maks = 20;
Type
RecBarang = Record
Nama : String [25];
Kualitas : Char;
Harga : LongInt
End;
TabelBarang = Array [ 1 . . Jum_Maks] of RecBarang;
Var
DafBarang : TabelBarang; {array record}

Pada contoh di atas, DafBarang adalah array yang maksimum berisi 20


buah elemen bertipe record.
Untuk mengakses suatu field, kita perlu menggunakan notasi :
DafBarang [indeks].NamaField

Berikut contoh program Array Record.

Program Rec7;
Uses Crt;
Const
Jum_Maks = 20; {jumlah maksimal jenis baramg}

Type
RecBarang = Record
Nama : string [25];
Kualitas : char;
Harga : longInt
End;
TabelBarang = Array [ 1 . . Jum_Maks] of RecBarang;
Var

27
DafBarang : TabelBarang; {array record}
JumBarang : Integer;

{memasukkan data barang je array DafBarang}


Procedure EntriBarang (Var DafBarang : TabelBarang;
Var JumBarang : Integer);
Var
Indeks : Integer;
Begin
Clrscr;
Write (’Jumlah Barang (Maksimum = 20) :’); Readln (JumBarang);
For Indeks := 1 to JumBarang do
With Dafbarang [indeks] do
Begin
Clrscr;
Writeln (’Data Barang ’, Indeks, ’ :’);
Write (’Nama :’); Readln (Nama);
Write (’Kualitas :’); Readln (Kualitas);
Write (’Harga :’); Readln (Harga);
Writeln;
End;
End; {akhir EntriBarang}

{menampilkan isi array DafBarang}


Procedure InfoBarang (Var DafBarang : Tabelbarang;
JumBarang : Integer);
Var
Indeks : Integer;
Begin
Clrscr;
Writeln (’NAMA BARANG’:25, ’KUALITAS’:10, ’HARGA’:10);
For Indeks := 1 to JumBarang do
With Dafbarang [Indeks] do
Writeln (Nama : 25, Kualitas : 10, Harga : 8);
End; {Akhir InfoBarang}

Begin
Entribarang (DafBarang, JumBarang);
InfoBarang (DafBarang, JumBarang);
Readln
End.

C. Penutup
Record adalah salah satu tipe data terstuktur bentukan yang
digunakan untuk mempresntasikan sebuah objek yang tidak dapat
dipresentasikan menggunakan tipe data dasar, seperti integer, real,
boolean, character. Setiap record terdiri dari beberapa elemen yang disebut

28
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
(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

29
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;
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’;

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

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

31
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 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
seperti ini dinamakan teknik pemrograman modular. Beberapa bahasa
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

32
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
menemukan kesalahan program. Kemudahan menulis akan sangat
berguna pada masalah 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 orang yang berbeda. Seluruh modul diintegrasikan
menjadi satu buah program yang lengkap. Program modular menjai lebih
mudah untuk dibaca dan dimengerti. Program yang tidak modular sulit
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

33
mendefinisikan keadaan awal sebelum rangkaian instruksi di dalam
prosedur dilaksanakan dan 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}

34
Deskripsi
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, instruksi-instruksi 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.

35
Di dalam program pemanggil, kita harus mendeklarasikan
prototype prosedur di dalam bagian deklarasi. Prototype 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

36
Kata prosedur sering kita dengar dalam kehidupan sehari-hari.
Seorang mahasiswa pada setiap awal semester selalu 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
alas,tinggi,luas : real;
begin

37
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 pemanggilan fungsi dan parameter.

Relevansi
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

38
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, pada fungsi terdapat pengembalian nilai, sehingga pada
saat pemanggilan, fungsi dapat 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;

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

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

40
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


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,

41
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

42
BAB V
SORTING

A. Pendahuluan

Deskripsi Singkat
Bab ini akan membahas definisi pengurutan, pengurutan gelembung,
pengurutan maksimum/minimum, pengurutan seleksi.

Relevansi
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)

43
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)


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.

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

45
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;

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;

46
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

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 20 18 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

47
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 22 18 20 25
A[1] 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.
15 20 18 2 25
A[1] 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 18 20 22 25
A[1] 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

48
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, {banyaknya elemen array keseluruhan}
x, {banyaknya elemen array yang belum terurut}
j, k, {untuk indeks pengulangan}
maks, {untuk menyimpan nilai maksimal}
imaks, {untuk menyimpan indeks dari elemen yang menyimpan nilai
maksimal}
temp : integer; {variabel bantu untuk proses pertukaran}
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];
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

49
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 22 18 20 15
A[1] A[2] A[3] A[4] A[5]
Gambar 5.11 Hasil Pengurutan Array A tahap 1
Tahap 2
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 18 22 20 25
A[1] 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 18 20 22 25
A[1] A[2] A[3] A[4] A[5]
Gambar 5.13 Hasil Pengurutan Array A tahap 3

Tahap 4

50
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 18 20 22 25
A[1] A[2] A[3] A[4] 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

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

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

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]

53
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
memperjelas, perhatikan gambar proses pencarian data berikut.

Array A
1 75
2 73
3 78
4 81
Hentikan pencarian 5 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;

54
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;
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

55
dengan nilai A[k] maka hentikan pencarian, sedangkan bila tidak, periksa
apakah nilai A[k] > x ataukah A[k] < 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
10 12 14 15 16 18 19 20 22 24 25 26 28 29

k1 = 7
Keadaan kedua
20 22 24 25 26 28 29

K2 = 11
Keadaan ketiga
Hentikan pencarian
20 22 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. Mula-mula (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 lebih memperjelas pembahasan serta menunjukkan
implementasinya, perhatikan contoh program di bawah ini.
Program CariBagiDua;
Uses crt;

56
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-macam program
pencarian yang telah dikembangkan dengan ide dasar yang berbeda. Dua
diantaranya adlah pencarian beruntun dan pencarian bagi dua.

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

3) Kunci Jawaban
Program pencarian_beruntun;
Const
nmin = 1;
nmax = 100;
type
arrint = array [nmin..nmax] of integer;
var
x : integer;

58
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

59
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


Mahasiswa mampu membuat program dengan menggunakan
perintah file.

B. Penyajian

60
1) Definisi File
Dalam kasus-kasus pemrograman tertentu kita sering disudutkan
untuk menggunakan file sebagai media 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, 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);

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

62
(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;
Var
F : TextFile;
Begin
Assign (F, ’D:\CONTOH.TXT’);
Rewrite (F);
End.

Jalankan program tersebut dan lihatlah drive D pada komputer anda,


maka di situ pasti akan tercipta file baru dengan nama CONTOH.TXT
dimana isinya kosong. Apabila anda bereksperimen untuk membuka filee
yang sudah 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

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

64
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 ) ;

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

65
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 adalah data yang dituliskan pada baris pertama


Ini adalah data yang dituliskan pada baris kedua
Ini adalah data pertama yang ditambahkan
Ini adalah data kedua yang ditambahkan
4) 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 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.

(1) Menggunakan Prosedur Write


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’);

66
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
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);

67
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, kita dapat menggunakan
prosedur Read, Readln dan BlockRead.

(1) Menggunakan Prosedur Read


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.

(2) Menggunakan Prosedur Readln


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.

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

69
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


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

70
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

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

71
2) Umpan Balik dan Tindak Lanjut
Untuk menguasai materi ini, sebaiknya anda membuat ringkasan
materi tentang file dan membuat sendiri beberapa program file.
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);

72
end
else
write('tidak ada data barang ini !!!');
close(berkasteks);
writeln;
write('ada data yang akan dicari [y/t] ?');readln(lagi);
end;
end.

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

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

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.

74

Anda mungkin juga menyukai