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