Procedure dan Function

Procedure dan Function adalah salah satu cara untuk membagi-bagi satu program utuh ke dalam sub program atau modul-modul, sehingga akan lebih mudah bagi kita ataupun orang lain untuk mempelajari algoritma dan aliran program. Di dalam Turbo Pascal, penulisan procedure dan function diletakkan di sebelah atas setelah pendeklarasian tipe data, variabel ataupun konstanta global. Dikatakan global, sebab di dalam procedure dan function, akan dapat dijumpai pemesanan variabel yang hanya dapat digunakan di dalam procedure atau function itu sendiri dan tidak akan dapat digunakan dalam procedure atau function lainnya maupun di dalam program utama. Demikian juga, kita akan dapat menjumpai variabel yang nilainya dipassing / dilewatkan dari pemanggilan procedure atau function tersebut. Hal ini biasa dikenal sebagai passing parameter, dimana pada saat kita memanggil procedure atau function tersebut, kita wajib mengisikan nilai pada variabel passingnya, yang nanti nilai tersebut akan dikirim ke dalam procedurenya untuk selanjutnya diproses.

Penulisan procedure sebagai berikut:
Procedure namaprocedure;
var
…;
begin
…;
…;
end;
Procedure namaprocedure (a,b:integer);
var
…;
begin
…;
…;
end;

Untuk memanggil procedure, kita cukup menuliskan nama procedurenya saja.
Berikut adalah contoh programnya:
{ Program Deret Pascal }
uses crt;
var
hasil:real;
baris:array[1..30,1..30] of integer;
procedure hitung;
var
l,k:integer;
begin
baris[2,1]:=1;
baris[2,2]:=1;
baris[2,3]:=1;
l:=1;
repeat
baris[l,1]:=1;
for k:=2 to l-1 do baris[l,k]:=baris[l-1,k-1]+baris[l-1,k];
baris[l,k+1]:=1;
l:=l+1;
until l>hasil;
end;
procedure tampil;
var
l,j,k:integer;
begin
l:=1;
repeat
for j:=1 to (35-2*(l-1)) do write(‘ ‘);
for k:=1 to l do
if (baris[l,k+1]<10) then write(baris[l,k],’ ‘)
else
if (baris[l,k+1]<100) then write(baris[l,k],’ ‘)
else
write(baris[l,k],’ ‘);
writeln;
l:=l+1;
until l>hasil;
end;
begin
clrscr;
write(‘Input Batasan : ‘);
readln(hasil);
hitung;
tampil;
readln;
end.

Jika sama-sama merupakan bagian dari program yang utuh, lalu apakah perbedaan antara procedure dan function? Jika procedure hanya bertindak sebagai penggalan program, maka function akan mengembalikan suatu nilai apabila kembali kepada program utama atau ke tempat dimana dia dipanggil. Function lebih sering digunakan untuk melakukan suatu operasi perhitungan baik yang sederhana maupun yang rumit sekalipun, sehingga kita cukup memanggil function tertentu untuk mendapatkan nilai atau hasil perhitungan yang kita inginkan. Misalnya function untuk mengkonversi bilangan desimal ke bilangan heksadesimal atau yang lainnya.

Berikut adalah contohnya:
{
Program Konversi Biner ke Desimal
Created by Yulius Candra Wahyu Kurniawan
(C) 1997
}
uses crt;
var
biner:string;
function convert(biner:string):real;
var
i,m,x,code,dum,hasil:integer;
begin
m:=0;
hasil:=0;
for i:=length(biner) downto 1 do
begin
val(biner,x,code);
dum:=x*trunc(exp(m*ln(2)));
hasil:=hasil+dum;
inc(m);
end;
convert:=hasil;
end;
begin
clrscr;
write(‘Input Bilangan Biner : ‘);
readln(biner);
write(‘Bilangan Desimalnya : ‘,convert(biner):3:0);
readln;
end.