Fungsi, Prosedur , Parameter,Subprogram yang mengandung program lain, Rekursi,Mengenal kata kunci forward,Overload fungsi dan prosedur.
* FUNGSI (Ada input sehingga hasil keluaran adalah variabel terikat)
Function NamaFungsi (Parameter1: tipe_data; Parameter2: tipe_data): tipe_data;
var {variabel lokal}
begin
NamaFungsi := nilai_kembalian;
…
end;
=> Contoh:
function Kali(x,y: longint): longint;
begin
kali := x*y;
end;
=> Pemanggilannya dalam program utama:
begin
hasil := kali(10,5);
…
end.
* PROSEDUR (Tidak ada input, hanya sederet perintah tetap)
=> Dapat sewaktu-waktu dipanggil.
procedure NamaProsedur (parameter1: tipe_data; parameter2: tipe_data);
var {daftar variabel lokal}
begin
{kode program untuk prosedur}
end;
=> Dalam program utama:
begin
NamaProsedur(a,b);
…
end.
* PARAMETER
=> Sebuah nilai yang dimasukkan dalam proses tertentu dan nilainya mempengaruhi. Nilai ditaruh dalam kurung setelah nama proses.
ex.: f(x) = 2x2 + 5x – 3 => x parameter fungsi y.
=> Dibedakan menjadi 2:
a. Parameter aktual : parameter yang ada saat pemanggilan fungsi/prosedur.
b. Parameter formal : parameter yang ada saat pembuatan fungsi/prosedur.
=> Contoh:
function PangkatTiga(x: longint): longint;
begin
PangkatTiga := power(x,3); {x adalah parameter formal; ini bagian function}
end;
var a, hasil : longint;
begin
…
hasil := PangkatTiga(a); {a adalah parameter aktual; lihat ini adalah main code}
…
end.
A. Melewatkan Parameter
1. Melewatkan Parameter berdasarkan nilai
=> Nilai yang dimasukkan ke dalam rutin tidak ditimpa setelah proses, tetapi ditempatkan ke memori lain. Sehingga perubahan nilai dalam rutin tidak mempengaruhi nilai asli di luar rutin.
2. Melewatkan Parameter berdasarkan referensi (alamat)
=> Nilai yang dimasukkan akan tertimpa karena alamat dari nilai luar dan dalam rutin sama. Sehingga nilai asli berubah.
=> Penulisan: procedure Tambah(var x: longint);
B. Parameter Masukan, Keluaran, Masukan/Keluaran
1. Parameter masukan
=> Input ke rutin => di parameter aktual.
2. Parameter keluaran
=> Output dan sebagai alias dari variabel output di prosedur.
3. Parameter masukan/keluaran
=> Sebagai input-output (x := x + 1) => contoh
C. Parameter Konstan
=> Di depannya ada KaliTiga(const x: integer); {Nilai x selalu tetap}
D. Parameter Array Terbuka
=> Pada Pascal, jumlah parameter formal dan aktual harus sama. Sehingga akan ada sedikit kendala bila program membutuhkan jumlah parameter yang tidak tetap.
=> Maka tipe data dibuat jadi array =
function Tambah(const paramarray: array of integer): integer;
=> Lalu buat variabel yang array juga. Setelah input data ke variabel array itu, gunakan fungsi(var).
=> Bila data tidak dimasukkan dalam bentuk variabel, maka
ex.: a := Tambah([10,20]);
* Subprogram yang mengandung program lain
=> Suatu rutin yang terdapat dalam rutin lain. Misal: rutin B dalam rutin A. Jadi rutin B hanya dikenal dalam rutin A.
* REKURSI
=> Teknik pemanggilan suatu rutin oleh dirinya sendiri.
function Faktorial (x: integer): integer;
begin
if (x=0) then
Faktorial := 1;
else
Faktorial := x * Faktorial (x-1);
end;
=> Jadi pengulangan terjadi terus sampai nilai tertentu yang ditentukan.
* MENGENAL KATA KUNCI FORWARD
=> Kasus dimana rutin A dipakai dalam rutin B dan rutin B dalam rutin A.
procedure B;
forward;
procedure A;
begin
B;
end;
procedure B;
begin
A;
end;
* OVERLOAD FUNGSI DAN PROSEDUR
=> Dua/beberapa prosedur dengan nama yang sama, tetapi berbeda parameter. Berbeda di sini berarti:
a. Berbeda tipe data
b. Berbeda jumlah parameternya
c. Gabungan (a) dan (b)
A. Overload dengan Tipe Data yang Berbeda
=> ex.: procedure bagi (x,y: integer): integer;
procedure bagi (x,y: real): real;
=> bila ada bagi (25,5) maka procedure yang dipakai yang tipe datanya sesuai.
B. Overload dengan Jumlah Parameter yang Berbeda
=> ex.: function Maks (nilai1, nilai2: integer): integer;
function Maks (nilai1, nilai2, nilai3: integer): integer;
=> Maka fungsi yang dipanggil berdasarkan jumlah parameter yang tepat.
C. Overload dengan Tipe dan Jumlah Parameter Berbeda
=> Gabungan A dan B