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;