Sub Program dibagi menjadi dua yaitu Prosedur (Procedure) dan Fungsi (Function). Prosedur adalah suatu program terpisah dalam blok sendiri yang berfungsi sebagai sub program. Prosedur diawali dengan kata Procedure didalam bagian deklarasi prosedur.
Bentuk umum penulisan prosedur dalam sebuah program :
Procedure NamaProsedur (parameter1: tipe_data ; parameter2 : tipe_data) ;
Const {daftar konstanta lokal}
Var {daftar pendeklarasian variabel lokal}
Begin
....... {kode program yang ditulis}
End ;
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 bisa berupa nilai/variabel/konstanta yang menghubungkan sub program dengan bagian yang menggunakan. Parameter bersifat opsional.
Supaya nilai variabel dapat digunakan di modul lainnya yang membutuhkan, maka dapat dilakukan dengan beberapa cara, yaitu :
- Dibuat bersifat global. Supaya suatu nilai dapat bersifat global, maka harus dideklarasikan diatas modul yang menggunakannya. Contoh Program :
uses wincrt ;
var
A,B,C : integer ;
procedure satu ;
begin
writeln ('Nilai A : ') ; Readln (A) ;
writeln ('Nilai B : ') ; Readln (B) ;
end ;
procedure dua ;
begin
C := B + 1 ;
end ;
begin
satu ;
Writeln (A) ;
Writeln (B) ;
dua ;
Writeln (C) ;
end.
- Dikirim sebagai parameter ke modul yang membutuhkannya. Parameter yang dikirim dari modul utama ke modul prosedur disebut dengan parameter nyata (actual parameter). Parameter yang ada dan dituliskan pada judul prosedur disebut dengan parameter formal (formal parameter). Proses pengiriman data lewat parameter nyata ke parameter formal disebut dengan passing parameter. Parameter nyata dan parameter formal harus dengan tipe yang sama. Pada bahasa pascal pengiriman parameter dapat dikirimkan secara nilai (by value) atau secara alamat (by reference).
Contoh program secara nilai (by value) :
uses wincrt ;
procedure tukar (A,B : integer) ;
var
C : integer ;
begin
C := A ;
A := B ;
B := C ;
writeln ('Nilai Pertama : ', A) ;
writeln ('Nilai Kedua : ', B) ;
end ;
var
X,Y : integer ;
begin
X := 10 ;
Y := 15 ;
tukar (X,Y) ;
writeln ('X = ', X ,' Y = ', Y) ;
end.
|
Berdasarkan program di atas nilai dari X diberikan kepada A dan nilai dari Y diberikan kepada B. Nilai yang dipertukarkan adalah nilai A dan B yang terjadi di dalam prosedur tukar, sedangkan nilai X dan Y yang berada di program utama tetap.
Hasil outputnya :
Nilai Pertama : 15
Nilai Kedua : 10
X = 10 Y= 15
|
Contoh program secara alamat (by reference) :
uses wincrt ;
procedure tukar_alamat (var A,B : integer) ;
var
C : integer ;
begin
C := A ;
A := B ;
B := C ;
writeln ('Nilai Pertama : ', A) ;
writeln ('Nilai Kedua : ', B) ;
end ;
var
X,Y : integer ;
begin
X := 10 ;
Y := 15 ;
tukar_alamat (X,Y) ;
writeln ('X = ', X ,' Y = ', Y) ;
end.
|
Berdasarkan program diatas terlihat bahwa pengiriman parameter alamat merupakan pengiriman dua arah, bolak-balik sehingga perubahan nilai di parameter formal akan mempengaruhi nilai pada parameter nyata juga. Pada contoh disamping nilai dari variabel A dan B yang telah dipertukarkan mempengaruhi nilai X dan Y menjadi tertukar pula.
Hasil outputnya :
Nilai Pertama : 15
Nilai Kedua : 10
X = 15 Y= 10
|
Untuk pengiriman parameter by reference dalam bahasa pascal, kita harus mengawali parameter tersebut dengan kata kunci Var. Contoh pengiriman berdasarkan referensinya :
Prosedure NamaProsedur ( var parameter1 : integer; var parameter2 : string) ;
Begin
........ {kode yang akan ditulis}
End ;
Tipe parameter formal yang dapat digunakan adalah berupa variable atau konstanta. Tipe data sederhana, seperti integer, byte, real, char dan boolean dapat langsung digunakan. Sedangkan tipe data kompleks seperti string, array dan record tidak dapat langsung dipergunakan tetapi harus dideklarasikan terlebih dahulu menggunakan type.
1. Contoh untuk tipe data array :
Type
Nilai = array [1..100] of integer ;
Procedure Arrayku (a : Nilai) ;
2. Contoh untuk tipe data string ;
Type
Kata = string [25] ;
Procedure panjang_kata (Nama: Kata) ;
Untuk pemgiriman parameter string secara nilai, panjang parameter formal dan parameter nyata boleh tidak sama. Akan tetapi untuk pengiriman parameter secara acuan panjang string harus sama. Variabel lokal adalah variabel yang hanya dikenal oleh bagian mendeklarasikan.
Memahami contoh program :
1. procedure xyz (var x,y, : integer) ;
2. var z : integer ;
3. begin
4. z := y ;
5. y := x ;
6. x := z ;
7. end ;
8. var x1,x2 : integer ;
9. begin
10. x1 := 10 ; x2 := 5 ;
11. writeln (x1,x2) ;
12. xyz (x1,x2) ;
13. writeln (x1,x2) ;
14. end.
|
Memahami Program di atas:
No. 1 – 7 → Sub Program
No. 8 – 14 → Program Utama
No. 1 → Parameter Formal
No. 12 → Parameter Aktual dan Pemanggilan Prosedur
No. 11 → Yang dicetak (10,5) → secara nilai
No. 13 → Yang dicetak (5,10) → secara alamat
Fungsi adalah modul program yang memberikan/mengembalikan (return) sebuah nilai yang bertipe sederhana (integer, real, boolean, string). Sebagaimana halnya dengan prosedur, fungsi diakses dengan memanggil namanya. Selain itu fungsi juga dapat mengandung daftar parameter formal. Blok fungsi hampir sama dengan blok prosedur, hanya fungsi harus dideklarasikan dengan tipenya. Tipe deklarasi ini menunjukkan tipe hasil dari fungsi. Sama dengan prosedur, parameter dalam fungsi dapat dikirim secara nilai (by value) atau secara acuan (by reference). Parameter yang dikirimkan secara nilai, maka parameter formal yang ada di prosedur akan berisi nilai yang dikirimkan yang kemudian bersifat lokal di prosedur. Bila pengiriman parameter secara acuan (by reference), maka perubahan-perubahan yang terjadi pada nilai parameter formal di prosedur akan mempengaruhi nilai actual parameter
Bentuk umum penulisan fungsi dalam sebuah program :
Function NamaFungsi (parameter: tipe_data ; .......) : tipe_data ;
Const {daftar konstanta lokal}
Var {daftar pendeklarasian variabel lokal}
Begin
....... {kode program yang ditulis}
NamaFungsi := nilai_kembalian ; {INGAT baris ini}
End ;
Lalu apa perbedaan prosedur dan fungsi? Prosedur hanya bisa menjalankan perintah dan tidak mengembalikan nilai, sedangkan fungsi bisa mengembalikan nilai untuk di tampilkan dilayar atau diolah lagi
maaf mas kenapa yang fungsi singkat sekali penjelasannya????????
BalasHapus