Procedure/Function
[(list-parameter-
... formal)]
Subprogram call
[(list-parameter-aktual)]
...
...
return [(return-
value)]
Selesai
17/11/2020 KU1072/Pengenalan Komputasi B/Subprogram 5
Fungsi
input(r)
• Flowchart function Luas
Luas (r)
L Luas (r)
return (3.14 * r * r)
output(L)
Selesai
// ALGORITMA
... // deretan instruksi untuk menghasilkan param_out
// berdasarkan nilai param_in
return [<nilai_output>];
}
// KAMUS LOKAL
int hasil;
// ALGORITMA
hasil = X * X;
return hasil;
17/11/2020
} Pengenalan Komputasi 17
Contoh-1: Fungsi Kuadrat (1)
• Definisi matematika: f(x) = x2
• Bagaimana memindahkannya dalam program?
• Nama fungsi: Kuadrat → ditentukan oleh programmer
• Spesifikasi fungsi: menghasilkan kuadrat dari input
• Type domain/input: integer; didefinisikan oleh parameter input x
• Type range/output: integer; didefinisikan berdasarkan type parameter
output hasil
• Realisasi fungsi: x * x
// KAMUS LOKAL
//
intnama-nama
hasil; variabel lokal
// ALGORITMA
... // =deretan
hasil X * X; instruksi untuk menghasilkan param_out
// berdasarkan
return hasil; nilai param_in
<type_out>
int <nama_fungsi>
Max2 ( [<type_in>
int A,<param_in>]
int B ) {
// Menghasilkan bilangan terbesar
// spesifikasi_fungsi
// antara A dan B
// KAMUS LOKAL
//
intnama-nama
maks; variabel local
// ALGORITMA
...(A
if //>=deretan
B) { instruksi untuk
// menghasilkan
maks = A; nilai_output
// berdasarkan
} else { // A < B nilai parameter_input
maks = B;
}
return maks;
}
17/11/2020 Pengenalan Komputasi 22
Contoh-2: Nilai maksimum 2 integer (3)
• Alternatif: tidak perlu variable kamus lokal
// Fungsi Max2 // Fungsi Max2
int Max2 (int A, int B ) { int Max2 (int A, int B ) {
// menghasilkan nilai terbesar // menghasilkan nilai terbesar
// antara A dan B // antara A dan B
• Algoritma:
• A >= B and A >= C : maksimum = A
• B >= A and B >= C : maksimum = B
• C >= A and C >= B : maksimum = C
• Untuk mencari nilai terbesar, buat dan gunakan fungsi Max2 yang
telah didiskusikan di Contoh-2
int main () {
// KAMUS
int A, B;
float hasil;
// ALGORITMA PROGRAM UTAMA
cout << "Masukkan bilangan pertama = "; cin >> A;
cout << "Masukkan bilangan kedua = "; cin >> B;
hasil = 0.1 * (float)Max2(A,B);
cout << "10 persen dari bilangan terbesar = " << hasil << endl;
return 0;
}
// Realisasi Fungsi Max2
int Max2 (int A, int B) {
// Menghasilkan bilangan terbesar antara A dan B
// KAMUS LOKAL
// ALGORITMA
if (A >= B) {
return A;
} else { // A < B
return B;
}
17/11/2020 } Pengenalan Komputasi 29
Latihan-2
• Selain dipanggil di fungsi utama, fungsi juga bisa dipanggil di
fungsi lain.
// Prosedur CetakNama
void CetakNama (string nama) {
// Mencetak Hello + nama ke layar
// Algoritma
cout << "Hello, " << nama << "!" << endl;
}
int main () {
// KAMUS
float N;
// ALGORITMA
cout << "Masukkan bilangan = "; cin >> N;
cout << "Akar dari " << N << " = " << (sqrt(N)) << endl;
return 0;
}
17/11/2020 Pengenalan Komputasi 37
Latihan-3
• Buatlah sebuah fungsi bernama HitungJarak, yang menerima
masukan: v : kecepatan (dalam m/s, bilangan riil) dan t : waktu
tempuh (dalam s, bilangan riil) dan menghasilkan jarak tempuh s
dengan rumus: s = v * t.
• Asumsikan nilai t ≥ 0 dan s ≥ 0.