210 likes | 404 Views
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 prosedur-prosedur dan fungsi-fungsi .
E N D
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 prosedur-prosedur dan fungsi-fungsi . • Memudahkan dalam pengecekan kesalahan dan juga program menjadi lebih mudah dimengerti dan menghindari penulisan kode program yang berulang-ulang.
SubProgram • Subroutinesinonim 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: procedurenama_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: functionnama_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 procedurekemudian 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 functionnama_procedure( [nama_param]:[tipe_data] [;dst]): [tipe_data]; begin {proses} [nama_procedure] := [nilai_balik]; end;
Fungsi dgn Value parameter • Deklarasi sintaks: • Di Delphi functionnama_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: functionnama_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; varnilai: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 fungsidan/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;