17
13 19
27
Bagaimana programnya ?
Solusi 1: tanpa prosedur
Solusi 2: dengan prosedur
Konsep Prosedur
Nama Lokal :
◼ Nama-nama di bagian deklarasi prosedur.
◼ Bersifat lokal, hanya dapat digunakan di dalam
prosedur yang melingkupinya.
Nama Global
■ Sebaliknya nama-nama yang dideklarasikan di dalam program utama
dikatakan lingkupnya “global”. Nama-nama global dapat digunakan dibagian
manapun di dalam program baik di dalam program utama maupun di dalam
prosedur yang dipanggil.
■ Keputusan apakah suatu peubah akan dideklarasikan secara global atau
lokal berggantung pada penggunaan nama tersebut. Bila suatu peubah
digunakan di seluruh bagian program, maka peubah tersebut harus
dideklarasikan secara global.
Nama Global :
◼ Nama-nama yang dideklarasikan di program utama.
◼ Bersifat global, dapat digunakan di bagian manapun dalam
program, baik di program utama maupun di prosedur.
Nama Lokal dan Nama Global
DEKLARASI
I, N: integer
alas, tinggi: real
procedure HitungLuasSegitiga(input alas, tinggi: real)
ALGORITMA
read(N)
for i 1 to N do
read(alas, tinggi)
HitungLuasSegitiga(alas,tinggi)
end for
Contoh Parameter keluaran
PROGRAM Segitiga
{Menghitung luas N buah segitiga}
DEKLARASI
I, N: integer
a,t,L: real
procedure HitungLuasSegitiga(input alas, tinggi: real,
output luas: real)
ALGORITMA
read(N)
for i 1 to N do
read(a,t)
HitungLuasSegitiga(a,t,L)
write(L)
end for
Contoh Parameter
masukan/keluaran
PROGRAM PertukaranNilai
{Menghitung luas N buah segitiga}
DEKLARASI
m,n: integer
procedure Tukar(input/output A,B: integer)
ALGORITMA
m 8
n 5
write(m,n) {cetak nilai m dan n sebelum pertukaran}
Tukar(m,n)
write(m,n)
Konsep dan Definisi Prosedur
hitungLuasSegitiga(4.5 , 5);
}
Rekursi
Basis Rekurens
Bagian yang berisi nilai fungsi yang Bagian ini mendefinisikan fungsi dalam
terdefinisi secara eksplisit. terminologi dirinya sendiri.
• contoh :
3!= 3. 2!
3!= 3. 2. 1!
3!= 3. 2. 1
3!= 6
Factorial
1. int Faktorial(int n)
2. {
3. if ((n == 0) || (n == 1 ))
4. return (1);
5. else
6. return (n * Faktorial(n-1));
7. }
Pada baris 3 dari fungsi diatas, nilai n dicek sama dengan 0 atau 1,
jika ya, maka fungsi mengembalikan nilai 1 {baris 4}, jika tidak,
fungsi mengembalikan nilai n * Faktorial (n -1) {baris 6} disinilah
letak proses rekursif itu, perhatikan fungsi factorial ini memanggil
dirinya sendiri tetapi dengan parameter (n-1)
Fibonacci
import java.util.Scanner;
public class no1{
static int S(int n){
if (n == 1)
return (1);
else
return (n + S(n-1));
}
public static void main(String[] args){
int n;
Scanner s=new Scanner(System.in);
System.out.print(“Masukkan n: “);
n=s.nextInt();
System.out.println(“Deret S = 1+2+3+4+5+...+n \n”);
System.out.println(“Jumlah deret S = “+S(n));
}
}
No. 2 dalam bhs Java (Sourcecode)
LATIHAN
Silahkan beri penjelasan setiap
baris code
Tujuan Rekursi
• Rekursi
• Tidak cocok ketika kinerja tinggi diperlukan, karena terjadi
overhead pemanggilan fungsi dalam jumlah yang relatif
besar
• Iterasi
• Cocok diterapkan ketika kinerja aplikasi
harus diterapkan (hanya ada satu kali pemanggilan fungsi)
Definisi Iterasi
System.out.println(perpangkatanIter(bil,pangkat));
System.out.println(perpangkatanRekur(bil,pangkat));
System.out.println(faktorialIter(bil));
System.out.println(faktorialRekur(bil));
}