Anda di halaman 1dari 10

BAB 

 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.

Disamping mudah dibaca, pelacakan kesalahan


program  juga  menjadi  lebih  mudah.  Untuk  contoh  di  atas,
apabila   terjadi   kesalahan   dalam   pembacaan   data,   kita
bisa memusatkan perhatian pada subrutin BacaData.
Apabila berikutnya terjadi kesalahan dalam penulisan
hasil, kita hanya perlu memusatkan perhatian pada
subrutin  TulisHasil.

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;

nama_prosedur dan nama_fungsi merupakan nama yang


diberikan ke prosedur atau fungsi. tipe_kembalian
adalah   tipe   data   dari   nilai   yang   dikembalikan   oleh
fungsi. parameter1, parameter2, ...merupakan
informasi yang diberikan ke prosedur atau fungsi.
Berikut ini adalah contoh sebuah prosedur dengan
nama  prosedurku:
procedure  prosedurku  ;
Begin
{  pernyataan-pernyataan  }
end;

Berikut  adalah  contoh  fungsi  dengan  nama  fungsiku  :
function  fungsiku  :  integer;
Begin
{  pernyataan-pernyataan  }
end;

Kedua subrutin di atas belum memiliki parameter.


Berikut  ini  adalah  contoh  subrutin  dengan  parameter.
Dalam memberikan parameter, harus ditentukan tipe
parameternya.
procedure  coba(S:string);
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;

Untuk beberapa parameter dengan tipe sama, maka


cukup  menuliskan  tipe  satu  kali  tetapi  masing-masing
parameter  dipisahkan  dengan  tanda  koma.  Contoh  :
function  lagi(i,j:longint):longint;
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;

Pemanggilan sebuah prosedur dan fungsi dilakukan


dengan  menyebutkan  namanya.  Contoh:
prosedurku;
Bila  terdapat  parameter,  letakkan  parameter  di  dalam
tanda  kurung.  Contoh:
coba  {‘Pascal’};
Memanggil   prosedur   coba   dengan   parameter   ‘Pascal’,
contoh  lain  :
cobalagi{‘Pascal’,100};

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.

Setelah diekskusi, nilai bil tidak berubah dan


hanya   berubah   pada   lingkup   lokal   procedure   Ubah
itu sendiri dan ketika bil dipanggil tanpa
memanggil   procedure   Ubah,   maka   nilai   kembali   ke
asal yaitu 1. hal ini dapat dibuktikan dengan
hasil  ekskusi  contoh  program  di  atas  berikut  :

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

Di dalam sebuah prosedur atau fungsi, dapat


dideklarasikan  tipe,  variabel,  atau  konstanta  yang
bersifat lokal. Dapat juga dideklarasikan tipe,
variabel, atau konstanta di luar kelas, dengan
demikian  sifatnya  global.
Contoh  :
var  global:integer;
procedure  coba;
var
lokal:integer;
Begin
end;

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

Anda mungkin juga menyukai