Mengamati observasi Aktivitas belajar siswa
Sebagaimana halnya sebuah program, suatu procedure juga memiliki header dan blok. Perbedaan bentuknya dengan program hanyalah pada bagian header-nya saja.
Bentuk umum header suatu procedure adalah : procedure nama;
atau procedure nama parameter_formal : tipe_data;
Jika kita menggunakan procedure dalam suatu program, maka procedure tersebut harus dituliskan pada bagian deklarasi.
Jangkauan Variabel
Variabel yang dideklarasikan dalam suatu blok program hanya berlaku pada blok dimana variabel tersebut didefinisikan. Perhatikan contoh program berikut.
program p; var x : real;
procedure pl; var y : integer;
begin ………………;
………………; end;
Program Utama begin
………………; ………………;
………………; end.
Keterangan : daerah berlakunya variabel x mencakup semua perintah dalam program
tersebut, namun untuk variabel y hanya berlaku di bagian subprogram procedure saja.
Procedure dengan Parameter
Nilai dalam suatu subprogram FreePascal sifatnya adalah lokal, artinya hanya dapat digunakan pada modul atau unit yang bersangkutan saja, tidak dapat digunakan pada modul atau
unit program yang lainnya. Parameter adalah data masukan untuk subprogram yang nantinya akan diproses lebih lanjut dalam subprogram tersebut. Dalam Pascal, dikenal dua macam parameter,
yaitu : 1. parameter nilai value parameter, dan
2. parameter referensi reference parameter. Cara mendeklarasikan parameter tersebut adalah sebagai berikut :
procedure BnamaParam : tipeData; var namaParam : tipeData;
begin { statement }
end;
Untuk menggunakan sebuah prosedur dalam program utama adalah cukup dengan memanggil nama prosedur dan memberikan parameter yang sesuai jika prosedur yang dipanggil
membutuhkan parameter. Contoh : procedure tanya_hitung;
var X,Y : real; begin
write ‘Nilai X ?’; readln X;
Y:=XX; writeln ‘Nilai Y = ‘, Y : 6:2;
end; Program Utama
begin Tanya_hitung;
end.
Program ini jika di compile dan di run, hasilnya adalah : Nilai X ? 5
Nilai Y = 25.00
Keterangan :
Variabel X dan Y sifatnya adalah lokal untuk prosedur tanya_hitung, artinya hanya dapat digunakan pada modul itu saja. Pada modul yang lain tidak dapat digunakan.
Pengiriman Parameter passing parameter
Proses pengiriman data dari parameter aktual ke parameter formal disebut dengan transfer parameter passing parameter. Nama parameter aktual dan parameter formal boleh berbeda,
tetapi harus memiliki tipe data yang sama selain itu juga jumlah parameter aktual dan parameter formal harus sama. Di FreePascal, parameter dapat dikirim secara nilai by value atau secara
acuan by reference. a Pengiriman parameter secara nilai by value
Jika parameter dikirim secara nilai, maka parameter formal yang terletak di dalam pendefinian prosedur akan berisi nilai yang dikirimkan dari parameter aktual, yang
kemudian bersifat lokal di prosedur tersebut. Bila nilai parameter formal di dalam prosedur tersebut berubah, maka tidak akan mempengaruhi nilai parameter aktual nilai
parameter aktual tetap. Pengiriman parameter secara nilai biasanya terjadi pada jenis parameter masukan input parameter.
b Pengiriman parameter secara acuan by reference Bila parameter dikirimkan secara acuan, maka perubahan-perubahan yang terjadi pada
nilai parameter formal di prosedur akan mempengaruhi nilai parameter aktual di blok program utama. Jenis parameter ini dideklarasikan di dalam prosedur dengan
menggunakan kata cadang var.
Acuan Forward
Digunakan untuk mendeklarasikan dimuka judul prosedur terpisah dari bloknya. Kegunaan utama dari mekanisme forward ini adalah untuk teknik rekursif dengan menggunakan dua prosedur
yan saling memanggil. Contoh :
Var I : integer;
Procedure pro1var I : integer; Forward; Procedure pro2var I : integer;
Begin Writeln‘prosedur pro’,I;
End; Procedure pro1;
Begin Writeln‘prosedur pro’,I;
End; Program Utama
Begin I := 1; pro1I;
I := 2; pro2I; End.
Hasilnya : Prosedur pro1
Prosedur pro2
Prosedur tercadang yang disediakan oleh FreePascal antara lain : 1. Prosedur standar EXIT
Digunakan untuk keluar dari suatu blok. 2. Prosedur standar HALT
Digunakan untuk menghentikan program baik di program bagian maupun di program utama.
3. Prosedur standar MOVE Bentuk umum : MOVE var source, dest; count : word;
Digunakan untuk menyalin suatu blok sebanyak count byte memori dari blok dimulai byte pertama source dan disalinkan ke byte pertama dest.
4. Prosedur standar FILLCHAR Digunakan untuk mengisi sejumlah byte bilai ke dalam suatu variabel, sebagai berikut :
FillChar x; count : word; ch; X adalah variabel yang dapat bertipe apapun yang akan diisi dengan nilai tipe ordinal Ch
sebanyak count byte.
Perhatikan pernyataan berikut Misalkan terdapat tiga bilangan berbeda. Bagaimana cara membuat program yang bisa
menentukan bilangan bulat terbesar diantara tiga bilangan bulat tersebut? Untuk
lebih jelasnya, perhatikan program untuk mengetahui nilai terbesar dari tiga bilangan a,b,c dengan
bantuan subprogram procedure.
procedure maksimum; var max : integer;
begin if a b then max := a else max := b;
if c max then max := c; writeln max;
end;
Program tersebut hanya merupakan deklarasi procedure, untuk kemudian dapat digunakan dengan bentuk tulisan sebagai berikut :
program contoh_1; var a,b,c : integer;
procedure maksimum; var max : integer;
begin if a b then max := a else max := b;
if c max then max := c; writeln max;
end; program utama
begin readln a, b, c;
maksimum; end.