04 SubAlgoritma (Prosedur dan Fungsi)
Download
Report
Transcript 04 SubAlgoritma (Prosedur dan Fungsi)
Computer Science, University of Brawijaya
Putra Pandu Adikara, S.Kom
Algoritma dan Struktur Data
SubAlgoritma (Prosedur & Fungsi)
SubAlgoritma/SubProgram
Masalah: program menjadi besar dan kompleks untuk
melakukan pengecekan kesalahan menjadi sangat rumit.
Program besar dipecah-pecah menjadi prosedurprosedur dan fungsi-fungsi .
Memudahkan dalam pengecekan kesalahan dan juga
program menjadi lebih mudah dimengerti dan
menghindari penulisan kode program yang berulangulang.
SubProgram
Subroutine sinonim dgn "subprogram." Istilah ini ada krn terminologi
di Fortan dan bhs assembly.
Function dan Procedure juga sinonim dgn "subprogram“.
Predicate fungsi dgn nilai balik boolean (misal sukses atau
gagal)
Method atau Member function subprogram yg digunakan dlm
object-oriented programming (OOP) yg menggambarkan aksi dari
suatu objek
Event handler atau handler, subprogram yg dipanggil saat ada
“event”, misal prosedur yg dijalankan ketika ada event mouse click
Prosedur (Procedure)
Subprogram yang dapat dipanggil di dalam program (atau
subprogram lain).
Tidak menghasilkan nilai balik.
Deklarasi prosedur:
procedure nama_procedure();
begin
{proses}
end;
Contoh:
procedure Hello();
begin
WriteLn(‘Hello World');
end;
Memanggil Prosedur
Contoh pemanggilan procedure
begin
Hello();
end.
Fungsi (Function)
Subprogram yang menghasilkan nilai balik (seperti fungsi
matematis)
Deklarasi prosedur:
function nama_function(): [tipedata_nilai_balik];
begin
{proses}
end;
Contoh
function pi(): double;
begin
pi := 3.14;
end;
Memanggil fungsi
Contoh pemanggilan fungsi
var
nilai: real;
begin
nilai := pi();
WriteLn(nilai);
end.
Parameter
adalah argumen berupa nilai yg diberikan ke
dalam suatu prosedur/fungsi
Prosedur bisa mempunyai parameter:
Value parameter (parameter passing by value)
• memasukkan nilai ke dalam parameter
• nilai yg dimasukkan hanya bisa berubah di dalam prosedur
Variable parameter (parameter passing by reference)
• Memasukkan nilai ke dalam parameter
• nilai yg dimasukkan berubah di dalam dan luar prosedur
Prosedur dgn Value parameter
Deklarasi prosedur:
Diawali reserved word procedure kemudian nama
prosedur
Deklarasi parameter diapit/didalam "(" dan ")" setelah nama
prosedur
Deklarasi sintaks:
procedure
nama_procedure([nama_param]:[tipe_data]
[;dst]);
Contoh Value Parameter pada Prosedur
Contoh deklarasi:
procedure WriteValue(text:string; nilai: int);
begin
WriteLn(text,'=',nilai);
end;
Pemanggilan prosedur dgn value parameter:
[nama_proc]([nilai/variable],[dst]);
Misal:
WriteValue('Isi nilai=',i);
Fungsi dgn Value parameter
Deklarasi fungsi:
Diawali reserved word function kemudian nama fungsi
Deklarasi parameter diapit "(" dan ")" setelah nama fungsi
Antar parameter dipisah tanda titik koma ";"
Deklarasi sintaks:
Di Pascal
function nama_procedure(
[nama_param]:[tipe_data] [;dst]): [tipe_data];
begin
{proses}
[nama_procedure] := [nilai_balik];
end;
Fungsi dgn Value parameter
Deklarasi sintaks:
Di Delphi
function nama_procedure(
[nama_param]:[tipe_data] [;dst]): [tipe_data];
begin
{proses}
result := [nilai_balik];
end;
Contoh Value Parameter pada Fungsi
Contoh deklarasi:
function NilaiInteger(nilai: integer): integer;
begin
NilaiInteger:=nilai; //di Delphi result:=nilai
end;
Pemanggilan function dgn value parameter:
NilaiInteger(i);
Untuk mengisi nilai balik fungsi ke suatu variable:
var a:integer;
begin
a = NilaiInteger(i);
end;
Reference Parameter
Deklarasi prosedur/fungsi:
Hampir sama dengan value parameter, tapi sebelum nama
parameter ditambahi keyword var
Bila memerlukan output seperti nilai balik lebih dari 2.
Deklarasi sintaks:
function nama_procedure(var [nama_param]:[tipe_data]
[;dst]): [tipe_data];
begin
{proses}
end;
Pemanggilan procedure dgn value parameter
[nama_proc]([variable],[dst]);
Contoh Prosedur dgn Ref Parameter
Contoh deklarasi prosedur
procedure WriteValue(text:string; var
nilai:integer)
begin
nilai := 10;
WriteLn(text, '=',nilai);
end;
Pemanggilan prosedur dgn ref parameter
Misal:
WriteValue('Isi nilai=',i);
nilai i = ??
Contoh Fungsi dgn Ref Parameter
Contoh deklarasi fungsi
function NilaiInteger(var nilai:integer):integer;
begin
nilai := nilai*3;
NilaiInteger := nilai;
end;
Pemanggilan function dgn reference parameter
NilaiInteger(i); //tanpa assignment
Untuk mengisi (assign) nilai balik fungsi ke suatu variable
a = NilaiInteger(i);
nilai i = ??
Prosedur/Fungsi Overloading
Prosedur/Fungsi overloading prosedur/fungsi
dengan nama yang sama tetapi dengan tipe data fungsi
dan/atau parameter yang berbeda
Diakhir deklarasi prosedur/fungsi ditambahkan identifier
overload;
Contoh Prosedur/Fungsi Overloading
Contoh:
function Convert (nilai:string; kali : integer ): integer;
overload;
var nilaiInt,errorCode:integer;
begin
Val(nilai,nilaiInt,errorCode); //di Delphi StrToInt
Convert := nilaiInt * kali;
end;
function Convert (nilai: string):float; overload;
var nilaiFloat:real; errorCode:integer;
begin
Val(nilai,nilaiFloat,errorCode); //di Delphi StrToFloat
Convert := nilaiFloat;
end;
Prosedur/Fungsi Rekursif
Prosedur/Fungsi rekursif prosedur/fungsi
yang memanggil dirinya sendiri terus menerus di
dalam badan prosedur/fungsi tsb.
Pemanggilan akan berhenti saat suatu kondisi
berhenti (tidak memanggil dirinya) ditentukan.
Contoh Prosedur/Fungsi Rekursif
Contoh f(n)=n! dimana n! = n *(n – 1)!
Misal n = 2, maka:
f(2) = 2! = 2 * (2-1)! = 2 * 1! = 2 * f(1)
f(1) = 1! = 1 * (1-0)! = 1 * 0! = 1 * f(0)
f(0) = 0! = 1
function Factorial(lNum:integer): LongInt;
begin
if (lNum < 2) then //contoh kondisi berhenti
Factorial := 1
else //pemanggilan fungsi diri
Factorial := lNum * Factorial(lNum - 1);
end;