VI
SUBRUTIN (PROCEDURE DAN FUNCTION)
Kompetensi Dasar :
1. Mahasiswa dapat memahami arti dan penggunaan
procedure dan function.
Indikator :
1. Mahasiswa mampu membedakan penggunaan procedure
dan function dalam program.
2. Mahasiswa mampu membuat procedure dalam sebuah
program bahasa Pascal.
3. Mahasiswa mampu membuat function dalam sebuah
program bahasa Pascal.
51
Ada dua macam subrutin pada Pascal, yaitu prosedur
dan fungsi. Kedua jenis subrutin ini memiliki kegunaan
yang sama, yaitu melakukan tugas tertentu. Perbedaannya
fungsi selalu mengembalikan suatu nilai setelah
dipanggil sedangkan prosedur tidak.
Kita memerlukan subrutin karena dalam program yang
besar, akan lebih baih jika tugas tertentu dilakukan
oleh subrutin tertentu. Dengan demikian program menjadi
lebih mudah dibaca. Perhatikan program-program di bawah
ini:
Begin
BacaData;
ProsesData;
TulisHasil;
End.
A. Pengertian dan Contoh Procedure dan Function
Berikut ini adalah sintaks penulisan prosedur secara
umum:
prosedur nama_prosedur {parameter1; parameter2; ...}
Begin
{ pernyataan-pernyataan }
end;
Berikut ini adalah sintaks penulisan fungsi secara
umum:
52
function nama_fungsi {parameter1; parameter2; ... }:
tipe_kembalian
Begin
{ pernyataan-pernyataan }
end;
Berikut adalah contoh fungsi dengan nama fungsiku :
function fungsiku : integer;
Begin
{ pernyataan-pernyataan }
end;
Bila sebuah prosedur atau fungsi memerlukan beberapa
parameter, masing-masing parameter dipisahkan dengan
tanda titik koma. Contoh :
53
procedure cobalagi(S:string; x:integer);
begin
{ pernyataan-pernyataan }
end;
Fungsi lagi di atas memerlukan dua parameter bertipe
longint, yaitu i dan j. Fungsi lagi di atas
mempunyai tipe kembalian longint. Untuk
mengembalikan nilai pada suatu fungsi, berilah nilai
pada variabel yang bernama sama dengan fungsinya.
Sebagai contoh, untuk lagi di atas, dapat dituliskan
pernyataan berikut:
function lagi(i,j:longint):longint;
begin
lagi := i+j;
end;
54
Untuk menangkap nilai kembalian dari sebuah fungsi,
harus menyediakan variabel.contoh:
x:=lagi(2,5);
Ada dua cara yang dapat dilakukan dalam melewatkan
parameter ke sebuah prosedur atau fungsi :
1. Passing by value / dilewatkan dengan nilai. Bila
melewatkannya dengan nilai, subrutin yang
dipanggil tidak dapat mengubah nilainya. Hal ini
dikarenakan parameter yang dilewatkan secara nilai
akan dikopi sebagai nilai lokal di procedure /
function yang bersangkutan.
Contoh :
uses wincrt;
procedure Ubah(a:integer);
begin
a := 10;
writeln('Ubah menjadi=',a);
end;
{main program}
var bil : integer;
begin
bil := 1;
writeln('Bil sebelum=',bil);
Ubah(bil);
writeln('Bil sesudah=',bil);
end.
55
2. Passing by reference / melewatkan dengan
referensi, subrutin yang dipanggil dapat mengubah
nilainya. Untuk melewatkan parameter dengan
referensi tambahkan kata kunci var di depan nama
parameter.
Contoh:
uses wincrt;
procedure ubah(var a:integer);
begin
a := 10;
writeln('ubah menjadi=',a);
end;
{main program}
var bil : integer;
begin
bil := 1;
writeln('bil sebelum=',bil);
ubah(bil);
writeln('bil sesudah=',bil);
end.
Setelah diekskusi, nilai bil akan berubah setelah
pemanggilan procedure Ubah. Hal ini dikarenakan
pada parameter procedure tersebut ditambahkan kata
kunci var nilai bil berubah menjadi 10. Berikut
hasil ekskusi contoh program di atas :
56
B. Rangkuman
1. Ada dua macam subrutin pada Pascal, yaitu
prosedur dan fungsi. Kedua jenis subrutin ini
memiliki kegunaan yang sama, yaitu melakukan
tugas tertentu. Perbedaannya fungsi selalu
mengembalikan suatu nilai setelah dipanggil
sedangkan prosedur tidak.
2. Ada dua cara yang dapat dilakukan dalam
melewatkan parameter ke sebuah prosedur atau
fungsi :
a. Passing by value
b. Passing by reference
57
C. Tugas Praktikum (dikumpulkan akhir sesi)
1. kompilasi dan amati program pangkat berikut :
uses wincrt;
function pangkat(x, y : real):real;
var
z : real;
begin
if(x < 0.0) then
begin
if(round(y) = y) then
begin
if(round(y) mod 2 = 0) then
z := exp (y * ln (-x))
else
z := -exp (y * ln (-x))
end
else
begin
pangkat := 0.0;
writeln('tidak dapat diselesaikan');
exit;
end;
end
else if (x > 0.0) then
z := exp (y * ln (x))
else
z := 0.0;
pangkat := z;
end;
{ main program }
Var
x, y : real;
begin
write ('masukkan x : ');
readln(x);
write ('masukkan y : ');
readln(y);
writeln('x^y : ', pangkat (x,y):1:3);
end.
58
2. Buatlah program prosedur dengan parameter a dan
b untuk menukar nilai dari 2 variabel, jika
diketahui algoritma penukaran dua variabel
tersebut sebagai berikut :
Procedure tukar
Kamus
a, b, temp : real
Algoritma
temp ß b
b ß a
a ß temp
Output yang dihasilkan :
D. Tugas Rumah (dikumpulkan pada pertemuan berikutnya)
Buatlah algoritma dan flowchart berdasarkan program
pangkat di atas!
59
Daftar Pustaka
Pranata, Anthony., Algoritma Pemrograman, J&J Learning,
Yogyakarta
60