2. Procedure dan Function bertujuan
untuk membagi-bagi sebuah program
menjadi beberapa sub program,
sehingga program menjadi lebihsehingga program menjadi lebih
sederhana dan efisien.
Sub Program bertujuan untuk
mengurangi penulisan kode program
secara berulang kali.
2
3. Procedure Nama_Prosedur (parameter input: tipe; var
parameter output:tipe);
Function Nama_Fungsi(parameter input: tipe; var parameter
output:tipe):Tipe Fungsi
Parameter adalah nama Variabel yang dideklarasikan pada
bagian header prosedur/Fungsi.
1. Parameter aktual (argumen) adalah parameter yang
disertakan pada waktu pemanggilan procedure/Fungsi.
2. Parameter formal adalah parameter yang dideklarasikan di
dalam bagian header prosedur/Fungsi itu sendiri.
3
4. Aturan yang harus diperhatikan antara
parameter aktual dan parameter formal:
1. Jumlah parameter aktual pada pemang-
gilan prosedur harus sama dengan jumlahgilan prosedur harus sama dengan jumlah
parameter formal pada header prosedur/
Fungsinya.
2. Tiap parameter aktual harus bertipe sama
dengan tipe parameter formal yang
bersesuaian
4
5. Variabel Global
Adalah variabel yang yang dapat dikenali oleh
semua sub program dan program utama.
Dideklarasikan di awal program .Dideklarasikan di awal program .
Variabel Lokal
Adalah variabel yang hanya dapat dikenali
oleh sub program yang mendeklarasikannya.
Dideklarasikan di dalam sub program
5
6. Dapat menggunakan parameter input
dan output.
Menerima input data pada saat
dipanggil lewat parameter inputdipanggil lewat parameter input
(passing by value).
Mengembalikan nilai lewat variabel
acuan (passing by reference).
Dapat mengirim satu nilai atau lebih.
6
8. 1. Prosedur Tanpa Parameter
2. Prosedur Dengan Parameter Input
3. Prosedur Dengan Parameter Output3. Prosedur Dengan Parameter Output
4. Prosedur Dengan Parameter Input
dan Output.
Perhatikan perbedaannya pada contoh
perhitungan Luas Segitiga yang akan
dibahas untuk tiap jenis prosedur.
8
9. Prosedur Tanpa Parameter tidak mengguna-
kan parameter input dan output
Semua proses dilakukan di dalam prosedur.
Bentuk :
Procedure Nama_Prosedur;
Contoh : Procedure LuasSegitiga;
Program tidak efisien bila digunakan sebagai
program.
9
11. Bentuk :
Procedure Nama_prosedur(parameter_input: Tipe);
Contoh :
Procedure LuasSegitiga( alas,tinggi: Real);Procedure LuasSegitiga( alas,tinggi: Real);
Alas dan tinggi adalah Variabel Input untuk menerima data
pada saat dipanggil.
LuasSegitiga(a,t);
Variabel a dan t adalah parameter aktual yang mengirim data
ke Prosedur.
Variabel alas, tinggi, a , dan t harus bertipe sama dan
bersesuaian.
11
13. Bentuk :
Procedure Nama_prosedur( Var
parameter_output:tipe)
Parameter output harus didahului oleh kata Var.Parameter output harus didahului oleh kata Var.
Contoh :
Procedure LuasSegitiga( Var Luas: Real);
Prosedur mengirim output ke program
pemanggil.
13
15. Bentuk :
Procedure Nama_prosedur(parameter_input: tipe;
Var parameter_output:tipe)
Prosedur menerima data input dan mengirim hasilProsedur menerima data input dan mengirim hasil
output ke program utama.
Contoh :
Procedure LuasSegitiga( alas,tinggi: Real; Var
Luas:Real);
Sangat efisien untuk digunakan sbg sub program
15
17. Sebuah Fungsi memiliki tipe data.
Dapat menggunakan parameter input
dan output.
Dapat mengembalikan satu nilai atau
lebih.lebih.
Jika mengembalikan satu nilai, maka
nama fungsi dapat digunakan sebagai
variabel outputnya.
Jika mengembalikan lebih dari satu nilai,
maka harus menggunakan parameter
output.
17
18. Function NamaFungsi(parameter input:tipe ;
var parameter output:tipe) : Tipe Fungsi;
Var ……. {Variabel Lokal};Var ……. {Variabel Lokal};
Begin
pernyataan;
End;
18
19. Fungsi Tanpa Parameter
Fungsi Dengan Parameter Input
Fungsi Dengan Parameter Input danFungsi Dengan Parameter Input dan
Output
Contoh Kasus:
Buatlah Program untuk menghitung Luas
dan Keliling dari sebuah Persegi Panjang.
19
20. Fungsi Tanpa parameter adalah fungsi yang
tidak menerima dan mengirim nilai/data pada
saat dipanggil.
Semua variabel dideklarasikan secara lokal
dalam fungsi.dalam fungsi.
Semua proses input dan output dilakukan
dalam fungsi.
Dipanggil tanpa menggunakan parameter.
Tipe dari fungsi adalah bebas karena tidak
mengembalikan data.
Tidak efisien untuk digunakan dalam
program.
20
22. Proses Input dilakukan dalam Program Utama/sub
program pemanggil.
Proses Output dilakukan di dalam fungsi itu sendiri.
Tipe Fungsi sesuai dengan tipe data output.
Fungsi menggunakan parameter input untuk menerima
input data pada saat dipanggil.
Fungsi menggunakan parameter input untuk menerima
input data pada saat dipanggil.
Nama fungsi dapat digunakan sebagai variabel output.
Misalnya :
Function Luas(p,l : real):real;
Maka pernyataan outputnya adalah :
Write(‘ Luas = ‘, Luas(p,q):6:2);
22
24. Proses input dilakukan dalam sub program
yang memanggil fungsi.
Setiap proses harus dikerjakan dalam fungsiSetiap proses harus dikerjakan dalam fungsi
masing-masing. Misalnya : luas dihitung
oleh fungsi luas dan Keliling dihitung oleh
fungsi Keliling.
Umumnya digunakan sbg Sub Program
24
27. Bentuk dari program terstruktur jelas nampak
dalam program yang cukup besar, mis Program
Matriks karena ada proses yang sama yang selalu
berulang kali digunakan.
Terstruktur karena prosedur atau fungsi tampakTerstruktur karena prosedur atau fungsi tampak
berurutan susunannya dari atas ke bawah dalam
bentuk sub program yang lebih sederhana.
Dalam prosedur dan fungsi, array harus
dideklarasikan sebagai sebuah tipe data karena
parameter formal pada header prosedur dan
fungsi tidak mengenal deklarasi array dengan
cara yang biasa digunakan.
27
28. Cara biasa :
Var A : array [1..10,1..10] of integer;
Harus diubah menjadi tipe data sbb :
type matrix = array [1..10,1..10] of integer;
Matrix adalah nama tipe dari
array[1..10,1..10] of integer, sehingga
deklarasi variabel A menjadi :
Var A : matrix
28
29. Prosedur dalam program :
1. Prosedur input : digunakan untuk melakukan
proses input data matriks A dan B
2. Prosedur Jumlah : Untuk menghitung
matriks C = A + B dan D = B - A.
3. Prosedur Cetak : Untuk mencetak matrik A,
B, C dan D
4. Program utama
29
30. Procedure input(x,y : integer; var m : matrix);
var i,j : integer;
{Input Data Matrix}
BeginBegin
for i:=1 to x do
for j:=1 to y do
begin
write('M[',i,',',j,'] : ');readln(m[i,j]);
end; writeln;
end;
30
31. Procedure Jumlah(x,y:integer; a,b :matrix;var c,d
:matrix);
var i,j : integer;
Begin
for i:=1 to x dofor i:=1 to x do
Begin
for j:=1 to y do
Begin
c[i,j] := a[i,j] + b[i,j]; {C = A + B}
d[i,j] := a[i,j] - b[i,j]; {D = A – B}
End;
End;
End;
31
32. Procedure Cetak(x,y : integer; m : matrix);
var i,j:integer;
Begin
Writeln;Writeln;
for i:=1 to x do
begin
for j:=1 to y do
write(M[i,j],' ');
writeln;
end;
writeln;
End;
32
34. Aturan Perkalian Matriks adalah :
Jumlah Kolom Matrik A = Jumlah Baris
Matriks B.
Program Perkalian Matrik A x B = C :Program Perkalian Matrik A x B = C :
Satu prosedur input data. Untuk melakukan
proses input data matriks A dan B
Satu prosedur untuk melakukan proses
perkalian.
Satu prosedur cetak. Untuk mencetak matrik
A, B, dan C.
Satu bagian program utama
34
35. uses crt;
type matrix = array [1..10,1..10] of integer;
Procedure input(x,y : integer; var m : matrix);
var i,j : integer;
Begin
{Input Data Matrix}
for i:=1 to x do
for j:=1 to y do
begin
write('M[',i,',',j,'] : ');readln(m[i,j]);
end; writeln;
end;
35
36. Procedure Kali(x,y,z: integer; a,b : matrix;var c :
matrix);
var i,j,k : integer;
Begin
{Proses Perkalian: Axy x Byz = Cxz}{Proses Perkalian: Axy x Byz = Cxz}
for i:=1 to x do
for j:=1 to z do
Begin
C[i,j]:=0;
for k:=1 to y do
c[i,j] := c[i,j] + a[i,k]*b[k,j];
End;
End;
36
37. Procedure Cetak(x,y : integer; a : matrix);
var i,j:integer;
Begin
Writeln;Writeln;
for i:=1 to x do
begin
for j:=1 to y do
write(A[i,j],' ');
writeln;
end;
writeln;
End;
37
39. Pada prinsipnya, Fungsi sama dengan Prosedur.
Perbedaannya hanya pada tipe fungsi. Misalnya pada
penjumlahan dan pengurangan Matriks bila dikonversi
ke fungsi maka hanya kata Procedure diganti menjadi
Function ditambah nama Tipenya.
Procedure input(x,y : integer; var m : matrix);Procedure input(x,y : integer; var m : matrix);
Procedure Jumlah(x,y: integer; a,b : matrix;var c,d :
matrix);
Menjadi :
Function input(x,y : integer; var m : matrix):integer;
Function Jumlah(x,y: integer; a,b : matrix;var c,d :
matrix):integer;
39
40. 1. Buatlah Program Untuk menghitung
Luas, Volume, dan Keliling sebuah
Balok. Buat 4 buah prosedur : Input,
Luas, Volume, dan Keliling.Luas, Volume, dan Keliling.
2. Diketahui 2 buah Matris A (pxq) dan B (mxn).
Buatlah Program untuk menghitung AxB,
A Transpose dan A Transpose x B
dengan prosedur atau fungsi.
40