Materi | Catatan Kuliah

Bab 4
Procedure
Anda sudah menggunakan procedure dan function dalam topik-topik yang lalu
mungkin tanpa Anda sadari. Write, Writeln, Read, dan Readln adalah contoh
procedure yang digunakan untuk menulis atau membaca data. Sedang abs, sqrt,
sqr, sin, dan cos adalah contoh fucntion yang memang sudah disediakan oleh
sistem Pascal.
Ternyata kita juga dapat membuat procedure atau function buatan kita
sendiri dan diperlakukan seperti procedure atau function yang disediakan oleh
sistem. Procedure dan function ini termasuk dalam subprogram. Kegunaan subprogram adalah untuk mempermudah pengelolaan dan penyederhanaan program.

4.1

Struktur Rancangan Puncak-Turun dengan
Procedure

Program tersusun atas beberapa modul. Modul kemudian dapat diimplementasikan dengan subprogram (procedure atau function).
Kapan procedure digunakan? Pada umumnya setiap modul dapat diimplemtasikan dalam bentuk procedure atau function. Namun untuk modul yang sangat
sederhana bentuk procedure atau function tidak diperlukan. Keputusan penggunaan modul atau tidak dapat didasarkan pada bagaimana secara keseluruhan
program menjadi lebih mudah dipahami.
Jika modul hanya terdiri atas 1 baris saja, lebih baik tidak usah dijadikan

procedure. Jika modul terdiri atas banyak baris, lebih baik dijadikan procedure
saja. Inin untuk mempermudah pemahaman program secara keseluruhan.
Perlu dicatat di sini bahwa keputusan untuk menjadikan modul menjadi procedure atau tidak, hanya menyebabkan pada perbedaan keterbacaan program,
bukan pada hasil program.

56

4. Procedure

4.2
4.2.1

Perancangan Procedure
Pengertian Subprogram

Subprogram adalah bagian dari program yang dirancang untuk melaksanakan suatu tugas tertentu. Idenya adalah konsep tentang modularitas : program dipecah
atas subprogram-subprogram yang lebih kecil. Dengan cara ini, program akan
lebih mudah dimengerti, dan jika ada kesalahan di dalam proses pengolahan data
akan lebih mudah untuk melokalisirnya.
Di dalam Pascal subprogram bisa berwujud prosedur atau fungsi. Secara

garis besar, konstruksi keduanya mirip dengan program. Prosedur dan fungsi bisa
dikatakan sebagai ’program kecil’. Keduanya bisa memiliki deklarasi-deklarasi,
bagian badan, bahkan prosedur atau fungsi yang lain.
Aturan umum yang dapat digunakan untuk menentukan perlunya dibuat suatu prosedur atau fungsi : bagilah suatu penyelesaian persoalan (solusi) menjadi
subsolusi-subsolusi yang lebih kecil. Masing-masing subsolusi diwujudkan dalam
bentuk prosedur atau fungsi. Contoh : masalah pengelolaan data karyawan dapat dibagi menjadi bagian pemasukan data, pengubahan data, penampilan data,
dan penghapusan data. Wujudkan masing-masing bagian tersebut dalam sebuah
procedure atau function.

4.2.2

Procedure

Prosedur adalah bentuk subprogram yang semata-mata bertugas mengerjakan
suatu aktivitas. Struktur pendefinisian prosedur adalah sebagai berikut.
pro c edure nama−p r o s e d u r [ ( d e r e t a n −p a r a m e t e r ) ] ;
[ b a g i a n d e k l a r a s i k o n s t a n t a , t i p e , v a r i a b e l , dan p r o s e d u r / f u n g s i ]
b eg in
[ statemen −s t a t e m e n dalam badan p r o s e d u r ]
end ;


Gambar ?? menggambarkan diagram sintaksis procedure dalam Pascal.

Terlihat bahwa struktur prosedur mirip dengan struktur program Pascal.
Perbedaannya adalah pada kata procedure dan adanya deretan parameter yang
menyertainya. Tentang parameter akan dibicarakan kemudian.
Prosedur digunakan dengan cara memanggil namanya. Sebagai contoh,
pada program pengelolaan data karyawan, jika diinginkan untuk mengubah data
karyawan, maka prosedur ubah data dipanggil untuk melaksanakan hal tersebut.
Begitu nama sebuah prosedur dipanggil di suatu bagian program, maka eksekusi
program akan berpindah ke prosedur tersebut. Program akan mengerjakan apa
yang diminta di dalam prosedur tersebut. Setelah selesai, eksekusi akan kembali
kepada bagian pemanggil.
Yohanes Suyanto

57

4.2. Perancangan Procedure
procedure



procedure





identifier




✒ parameter

✓✏
✏;

✒✑







✒✓

✏✏

✒✏ deklarasikonstanta

✓✑

✒ deklarasitipe



✒ deklarasivariabel




✒ deklarasiprosedur



✒ deklarasifungsi









✒ begin




✒ statemen


✓ ✏
✓✏
✏ end
;
✒ ✑
✒✑


Gambar 4.1: Sintaksis Procedure

1
2

program C o n t o h p r o s e d u r ;
var a , b : in t eg er ;

3
4
5

6
7
8

pro c edure P r i n t B i l a n g a n ; // d e k l a r a s i p r o s e d u r
b eg in
// untuk menampilkan dua b i l a n g a n
w r i t e l n ( ’ H a s i l pertama = ’ , a ) ;
w r i t e l n ( ’ H a s i l k edua
= ’ ,b) ;
end ;

9
10
11
12
13
14
15
16

17

b eg in
w r i t e ( ’ Masukkan b i l a n g a n pertama : ’ ) ; r e a d l n ( a ) ;
w r i t e ( ’ Masukkan b i l a n g a n kedua : ’ ) ; r e a d l n ( b ) ;
Print Bilangan ;
// p a n g g i l p r o s e d u r − p e r h a t i k a n h a s i l n y a
a := a + 1 0 ;
b := b + 5 ;
Print Bilangan ;
// p a n g g i l s e k a l i l a g i , p e r h a t i k a n h a s i l n y a
end .

Contoh 4.1:
Yohanes Suyanto

58

4. Procedure


parameter
✓✏
✓✏
✓✏
✓✓ identifier
✏:
(
tipedata
✒✑
✒✑
✓ ✏
✓✏
✒ var
✑✒

,
✒ ✑
✒✑
✓✏


;
✒✑

✓✏
✏)
✒✑



Gambar 4.2: Sintaksis parameter dalam Procedure

Buatlah procedure untuk menampilkan pola kotak dari huruf ’*’ dengan tinggi m dan lebar n. Nilai m dan n merupakan parameter masukan procedure. Contoh untuk m = 4 dan n = 5, hasilnya berbentuk
:
*****
*****
*****
*****
Jawab:
Terlihat bahwa untuk persoalan tersebut lebih mudah diselesaikan
dengan iterasi. Setiap baris diulang sebanyak n dan jumlah baris
adalah m. Dengan demikian bentuk programnya menjadi:
1
2
3
4
5
6
7
8
9

pro c edure Kotak (m, n : i n t e g e r ) ;
var i , j : in t eg er ;
b eg in
f o r i :=1 to m do b eg in
f o r j :=1 to n do
write ( ’∗ ’ ) ;
writeln ;
end ;
end ;

Contoh 4.2:
Buatlah procedure untuk menampilkan pola segitiga dari huruf ’*’
dengan tinggi dan lebar n. Nilai n merupakan parameter masukan
procedure. Contoh untuk n = 5, hasilnya berbentuk:
*
**
***
****
*****
Yohanes Suyanto

59

4.2. Perancangan Procedure
Jawab:
Terlihat bahwa untuk persoalan tersebut juga lebih cocok diselesaikan
dengan iterasi. Setiap baris diulang sebanyak nilai i, i bergerak dari
1 sampai dengan n, dan jumlah baris adalah n. Dengan demikian
bentuk programnya menjadi:
1
2
3
4
5
6
7
8
9

pro c edure S e g i T i g a ( n : i n t e g e r ) ;
var i , j : in t eg er ;
b eg in
f o r i :=1 to n do b eg in
f o r j :=1 to i do
write ( ’∗ ’ ) ;
writeln ;
end ;
end ;

Contoh 4.3:
Buatlah procedure untuk menampilkan pola kotak dari karakter ’*’
seperti Contoh 4.??, tetapi bagian tengah berisi spasi. Contoh untuk
m = 4 dan n = 5, hasilnya berbentuk :
*****
*
*
*
*
*****
Jawab:
Untuk menyelesaikan persoalan ini perlu dicari pola, kapan harus dicetak spasi dan kapan ahrus dicetak ’*’. Untuk ini, kipa perhatikan
kapan harus mencetak ’*’, yaitu baris pertama, baris terkahir, kolom
pertama, dan kolom terakhir. Baris pertama tercetak saatnilai i = 1,
sedang baris terakhir tercetak saat nilai i = m. Kolom pertama berarti nilai j = 1 dan kolom terakhir berarti j = n. Dengan demikian
bentuk programnya menjadi:
1
2
3
4
5
6
7
8
9
10
11

pro c edure Kotak2 (m, n : i n t e g e r ) ;
var i , j : in t eg er ;
b eg in
f o r i :=1 to m do b eg in
f o r j :=1 to n do
i f ( i =1) o r ( i=m) o r ( j =1) o r ( j=m)
then w r i t e ( ’ ∗ ’ )
else write ( ’ ’ ) ;
writeln ;
end ;
end ;

Yohanes Suyanto

60

4. Procedure
Contoh 4.4:
Buatlah procedure untuk menampilkan pola segi tiga dari huruf ’*’
seperti Contoh 4.??, tetapi bagian tengah berisi spasi. Contoh untuk
n = 5, hasilnya berbentuk :
*
**
* *
* *
*****
Jawab:
Untuk menyelesaikan persoalan ini juga perlu dicari pola, kapan harus
dicetak spasi dan kapan harus dicetak ’*’. Perhatikan kapan harus
mencetak ’*’, yaitu kolom pertama, baris terkahir, dan diagonal.
Kolom pertama tercetak saatnilai j = 1, sedang kolom terakhir berarti j = n. Kolom diagonal terjadi saat nilai i = j. Dengan demikian
bentuk programnya menjadi:
1
2
3
4
5
6
7
8
9
10
11

pro c edure S e g i T i g a 2 ( n : i n t e g e r ) ;
var i , j : in t eg er ;
b eg in
f o r i :=1 to n do b eg in
f o r j :=1 to i do
i f ( j =1) o r ( i=n ) o r ( i=j )
then w r i t e ( ’ ∗ ’ )
else write ( ’ ’ ) ;
writeln ;
end ;
end ;

Contoh 4.5:
Bagaimana bentuk aplikasi lengkap dalam GUI untuk menampilkan
pola kotak dan segitiga seperti contoh sebelumnya?
Jawab:
Desain from untuk persoalan ini terlihat seperti Gambar ??.
Program 4.1: Program menampilkan Kotak dan Segitiga dalam GUI
1

u n i t prog6 2 ;

2
3

interface

4
5
6

uses
Windows , M essag es , S y s U t i l s , V a r i a n t s , C l a s s e s ,
G r a p h i c s , C o n t r o l s , Forms ,

Yohanes Suyanto

61

4.2. Perancangan Procedure

Gambar 4.3: Desain Form Program Pola Kotak dan Segitiga

7

Dialogs , StdCtrls , ExtCtr ls ;

8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

type
TForm1 = c l a s s ( TForm )
Memo1 : TMemo;
RadioGro up1 : TRadioGroup ;
L a b e l 1 : T Label ;
L a b e l 2 : T Label ;
E d i t 1 : T E dit ;
E d i t 2 : T E dit ;
Butto n1 : TButton ;
pro c edure B u t t o n 1 C l i c k ( S e n d e r : TObject ) ;
private
{ Private declarations }
pro c edure Kotak (m , n : I n t e g e r ) ;
pro c edure Kotak2 (m , n : I n t e g e r ) ;
pro c edure S e g i t i g a ( n : I n t e g e r ) ;
pro c edure S e g i t i g a 2 ( n : I n t e g e r ) ;
public
{ Public declarations }
end ;

28
29
30

var
Form1 : TForm1 ;

31
32

implementation

33
34

{$R ∗ . dfm}

Yohanes Suyanto

62

4. Procedure
35
36
37
38
39
40
41
42
43
44
45
46

pro c edure TForm1 . Kotak (m, n : i n t e g e r ) ;
var i , j : in t eg er ;
st : String ;
b eg in
Memo1 . C l e a r ;
f o r i :=1 to m do b eg in
s t := ’ ’ ;
f o r j :=1 to n do
s t := s t+ ’ ∗ ’ ;
Memo1 . L i n e s . Add ( s t ) ;
end ;
end ;

47
48
49
50
51
52
53
54
55
56
57
58
59

pro c edure TForm1 . S e g i T i g a ( n : i n t e g e r ) ;
var i , j : in t eg er ;
st : String ;
b eg in
Memo1 . C l e a r ;
f o r i :=1 to n do b eg in
s t := ’ ’ ;
f o r j :=1 to i do
s t := s t+ ’ ∗ ’ ;
Memo1 . L i n e s . Add ( s t ) ;
end ;
end ;

60
61
62
63
64
65
66
67
68
69
70
71
72
73
74

pro c edure TForm1 . Kotak2 (m, n : i n t e g e r ) ;
var i , j : in t eg er ;
st : String ;
b eg in
Memo1 . C l e a r ;
f o r i :=1 to m do b eg in
s t := ’ ’ ;
f o r j :=1 to n do
i f ( i =1) o r ( i=m) o r ( j =1) o r ( j=m)
then s t := s t+ ’ ∗ ’
e l s e s t := s t+ ’ ’ ;
Memo1 . L i n e s . Add ( s t ) ;
end ;
end ;

75
76
77
78
79
80
81
82
83
84
85
86
87
88
89

pro c edure TForm1 . S e g i T i g a 2 ( n : i n t e g e r ) ;
var i , j : in t eg er ;
st : String ;
b eg in
Memo1 . C l e a r ;
f o r i :=1 to n do b eg in
s t := ’ ’ ;
f o r j :=1 to i do
i f ( j =1) o r ( i=n ) o r ( i=j )
then s t := s t+ ’ ∗ ’
e l s e s t := s t+ ’ ’ ;
Memo1 . L i n e s . Add ( s t ) ;
end ;
end ;

90

Yohanes Suyanto

63

4.3. Soal Latihan
91
92
93
94
95
96
97
98
99
100
101
102
103

pro c edure TForm1 . B u t t o n 1 C l i c k ( S e n d e r : TObject ) ;
var
Tinggi , Lebar : integer ;
b eg in
T i n g g i := S t r T o I n t ( E d i t 1 . Text ) ;
L e b a r := S t r T o I n t ( E d i t 1 . Text ) ;
case RadioGro up1 . I t e m I n d e x o f
0 : Kotak ( T i n g g i , L e b a r ) ;
1 : Kotak2 ( T i n g g i , L e b a r ) ;
2 : Segitiga ( Tinggi ) ;
3 : Segitiga2 ( Tinggi ) ;
end ;
end ;

104
105

4.3

end .

Soal Latihan

1. Buatlah procedure untuk menampilkan pola segi tiga dari karakter ’*’
seperti Contoh 4.??, tetapi sisi tegak ada di bagian kanan. Contoh untuk n = 5, hasilnya berbentuk :
*
**
* *
* *
*****
2. Ingin dibuat procedure untuk menampilkan pola bilangan dalam segi tiga
seperti contoh berikut (untuk n = 5). Bagaimana isi procedurenya?
1
121
12321
1234321
123454321
3. Ingin dibuat procedure untuk menampilkan pola bilangan dalam segi tiga
seperti contoh berikut (untuk n = 5). Bagaimana isi procedurenya?
1
121
12321
1234321
123454321
Yohanes Suyanto

64

4. Procedure
12344444321
1233333333321
122222222222221
11111111111111111
4. Ingin dibuat procedure untuk menampilkan pola bilangan dalam kotak
seperti contoh berikut (untuk n = 4). Bagaimana isi procedurenya?
1111111
1222221
1233321
1234321
1233321
1222221
1111111

Yohanes Suyanto