You are on page 1of 8

Prosedur dan Fungsi

Tujuan :
Mengenal pembuatan prosedur
Mengenal pembuatan fungsi
Mengenal passing parameter by value dan by reference
Mampu menjelaskan kegunaan prosedur untuk membuat ukuran program menjadi
lebih kecil dan untuk memudahkan pemeliharaan program
Mampu membuat deklarasi prosedur
Prosedur
Prosedur merupakan subprogram yang dibuat dalam blok tersendiri. Dalam suatu program
bisa terdapat lebih dari satu prosedur. Prosedur banyak dipergunakan dengan alasan :
1. Agar program lebih terstruktur, yaitu dengan memecah-mecah program yang panjang dan
rumit menjadi subprogram yang lebih sederhana. Dengan demikian program utama menjadi
lebih pendek, jelas dan mudah dimengerti
2. Mengurangi pengulangan, karena cukup memanggil prosedur tersebut untuk
mengerjakan tugas tertentu :
Program berikut merupakan contoh prosedur sederhana untuk mencetak kalimat.
Praktikum Dasar Pemrograman
Rahmat Wijaya S.Kom
Pusat Pengembangan Bahan Ajar
Universitas Mercu Buana
12
1
Pertemua
n 13
1 Program Hello1;
2
3 Uses Crt;
4
5 Procedure CetakHello;
6 var
7 nama:string;
8 begin clrscr;
9 Write('Inputkan nama anda: ');
10 Readln(nama);
11 Writeln('Hello ',nama);
12 Writeln('Anda Sedang Praktikum');
13 Writeln('Komputer Dasar dengan Pascal');
14 Readln;
16 end;
17
18 Begin
19 CetakHello;
20 Readln;
21 End.
Program berikut merupakan contoh lain prosedur sederhana untuk menghitung luas
dan keliling lingkaran.
1 Program HitungLingkaran;
2
3 Uses Crt;
4
5 Procedure Lingkaran;
6 Var
7 jari:integer;
8 luas,keliling:real;
9 begin
10 Write('Masukkan jari-jari : ');
11 Readln(jari);
12 luas:=3.14*jari*jari;
Praktikum Dasar Pemrograman
Rahmat Wijaya S.Kom
Pusat Pengembangan Bahan Ajar
Universitas Mercu Buana
12
2
13 keliling:=2*3.14*jari;
14 Writeln('Luas lingkaran: ',luas:8:2);
16 Writeln('Keliling lingkaran: ',keliling:8:2);
17 end;
18 Begin
19 Clrscr;
20 Writeln('Program menghitung luas dan keliling
lingkaran');
21 Lingkaran;
22 Readln;
23 End.
Passing Parameter by Value
Sebuah prosedur bisa memiliki satu/lebih parameter. Pengiriman (passing)
parameter by value mengakibatkan parameter formal pada prosedur akan berisi nilai yang
dikirimkan oleh program utama yang nantinya bersifat lokal di prosedur tersebut. !ika nilai
parameter formal pada prosedur tersebut berubah tidak mempengaruhi nilai parameter
nyata di program utama.
Program berikut merupakan contoh sederhana passing parameter by value untuk
mencetak garis. Perhatikan pemanggilan prosedur yang dilakukan lebih dari satu kali pada
baris "# dan "$.
1 Program CetakGaris;
2
3 Uses Crt;
4 Var
5 n:integer;
6 kal:string;
7
8 Procedure CetakGaris(panjang:integer);
9 var
10 i:integer;
11 begin
12 for i:=1 to panjang do
13 write('-');
Praktikum Dasar Pemrograman
Rahmat Wijaya S.Kom
Pusat Pengembangan Bahan Ajar
Universitas Mercu Buana
12
3
14 writeln;
16 end;
17
18 Begin
19 Clrscr;
20 Write('Tuliskan kalimat: ');
21 Readln(kal);
22 n:=length(kal);
23 writeln;
24 Cetakgaris(n);
25 Writeln(kal);
26 Cetakgaris(n);
27 Readln;
28 End.
Passing Parameter by Reference
!ika parameter dikirimkan by reference perubahan yang terjadi pada nilai
parameter formal di prosedur akan mempengaruhi nilai parameter nyata di program utama.
Pada program berikut deklarasi parameter dengan kata kunci var untuk menandai passing
parameter by reference. Perhatikan perubahan nilai % dan y antara sebelum dan sesudah
prosedur dijalankan. &emudian cobalah hilangkan kata kunci var pada parameter b dan
perhatikan apa yang terjadi ketika program dijalankan.
1 Program PassingbyRef;
2
3 Uses Crt;
4 Var
5 x,y:integer;
6
7 Procedure Hitung(a:integer; var b:integer);
8 begin
9 a:=a+5;
10 b:=b+5;
11 end;
12
13 Begin
14 Clrscr;
16 x:= 20;
17 y:= 25;
18 Writeln('Nilai x sebelum prosedur dijalankan: ',x);
19 Writeln('Nilai y sebelum prosedur dijalankan: ',y);
20 Writeln;
21 Hitung(x,y);
Praktikum Dasar Pemrograman
Rahmat Wijaya S.Kom
Pusat Pengembangan Bahan Ajar
Universitas Mercu Buana
12
4
22 Writeln('Nilai x setelah prosedur dijalankan: ',x);
23 Writeln('Nilai y setelah prosedur dijalankan: ',y);
24 Readln; End.
Program berikut merupakan contoh lain passing parameter by reference untuk
menghitung pangkat suatu bilangan. !alankan program dan kemudian coba hilangkan kata
kunci var pada parameter c dan perhatikan apa yang terjadi ketika program dijalankan.
1 Program ProcPangkat;
2
3 Uses Crt;
4 Var
5 x,y,z:real;
6
7 Procedure Pangkat(a,b:real; var c:real);
8 begin
9 c:=Exp(Ln(a)*b);
10 end;
11
12 Begin
13 Clrscr;
14 Write('Masukkan basis yang akan dipangkatkan: ');
16 Readln(x);
17 Write('Masukkan pangkat: ');
18 Readln(y);
19 Writeln;
20 Pangkat(x,y,z);
21 Writeln('Nilai ',x:0:2,'^',y:0:2,' adalah: ',z:0:2);
22 Readln;
23 End.
Fungsi
Fungsi hampir sama dengan prosedur, tetapi fungsi bisa mengembalikan suatu nilai.
Penulisan fungsi adalah:
Function nama_fungsi(parameter) : tipe_fungsi;
Begin
statemen;
End;
Praktikum Dasar Pemrograman
Rahmat Wijaya S.Kom
Pusat Pengembangan Bahan Ajar
Universitas Mercu Buana
12
5
Nilai yang dikirimkan balik, terdapat pada nama fungsinya. Dengan demikian nama fungsi
dipergunakan untuk menampung hasil yang dikirim dari fungsi. Program berikut adalah
modifikasi prosedur pangkat dengan menggunakan deklarasi fungsi. Perhatikan penggunaan
variable z pada baris 20 untuk menampung hasil pemangkatan dari fungsi. Kemudian cobalah
untuk mempelajari perbedaannya dengan prosedur.
1 Program FunctPangkat;
2
3 Uses Crt;
4 Var
5 x,y,z:real;
6
7 Function Pangkat(a,b:real):real;
8 begin
9 pangkat:=Exp(Ln(a)*b);
10 end;
11
12 Begin
13 Clrscr;
14 Write('Masukkan basis yang akan dipangkatkan: ');
16 Readln(x);
17 Write('Masukkan pangkat: ');
18 Readln(y);
19 Writeln;
20 z:=Pangkat(x,y);
21 Writeln('Nilai ',x:0:2,'^',y:0:2,' adalah: ',z:0:2);
22 Readln;
23 End.
Praktikum Dasar Pemrograman
Rahmat Wijaya S.Kom
Pusat Pengembangan Bahan Ajar
Universitas Mercu Buana
12
6
Program berikut merupakan contoh penggunaan fungsi dan prosedur dalam satu program.
Jalankan program ini dan pelajari perbedaan prosedur PKonversi dan fungsi FKonversi.
1 Program KonversiNilai;
2
3 Uses Crt;
4
5 Var
6 n:integer;
7 h1,h2,lagi:char;
8
9 Procedure InputNilai(var nilai:integer);
10 begin
11 Write('Masukkan nilai : ');
12 Readln(nilai);
13 end;
14
16 Procedure PKonversi(nilai:integer; var huruf:char);
17 begin
18 if nilai>=80 then
19 huruf:='A'
20 else if nilai>=70 then
21 huruf:='B'
22 else if nilai>=60 then
23 huruf:='C'
24 else
25 huruf:='D'
26 end;
27
28 Function FKonversi(nilai:integer):char;
29 begin
30 if nilai>=80 then
31 FKonversi:='A'
32 else if nilai>=70 then
33 FKonversi:='B'
34 else if nilai>=60 then
35 FKonversi:='C'
36 else
Praktikum Dasar Pemrograman
Rahmat Wijaya S.Kom
Pusat Pengembangan Bahan Ajar
Universitas Mercu Buana
12
7
37 FKonversi:='D'
38 end;
39
40 Procedure Cetak(huruf:char);
41 begin
42 Writeln('Nilai huruf : ',huruf);
43 end;
44
45 Begin
46 Repeat
47 Clrscr;
48 InputNilai(n);
49 PKonversi(n,h1);
50 Cetak(h1);
51 h2:=Fkonversi(n);
52 Cetak(h2);
53 Writeln;
54 Write('Akan konversi lagi (y/t): ');
55 Readln(lagi);
56 Until (lagi='t') or (lagi='T');
57 Readln;
58 End.
Praktikum Dasar Pemrograman
Rahmat Wijaya S.Kom
Pusat Pengembangan Bahan Ajar
Universitas Mercu Buana
12
8

You might also like