void main () {
int a,b;
printf("Input 2 bilangan bulat : ");
scanf("%d %d", &a, &b);
printf("Bilangan yg lebih besar :
%d\n",maksimum(a,b));
}
How to Pass Argument to a function?
Prototipe Fungsi
Penulisan fungsi pada bahasa C pada dasarnya
diletakkan diatas fungsi utama (blok main). Namun
ada kalanya blok fungsi diletakkan setelah blok
pemanggil. Pada kondisi tersebut perlu digunakan
prototipe fungsi.
Tujuan dari prototipe fungsi :
Meyakinkan sebuah fungsi dikenal oleh pemanggilnya Compiler
akan memvalidasi parameter
Sintaks:
return-value-type function-name( parameter-list );
Contoh Program tanpa Fungsi
#include <stdio.h>
#include <conio.h>
void main(){
int bil1, bil2, bil3, bil4;
printf("Program Menghitung Penjumlahan & Pengurangan\n");
printf("dari 2 buah bilangan\n");
printf("-------------------------------------\n");
printf("Nilai A : "); scanf("%d", &bil1);
printf("Nilai B : "); scanf("%d", &bil2);
bil3 = bil1 + bil2;
bil4 = bil1 - bil2;
printf("\n\nResult:\n");
printf("\t%2d + %2d = %2d\n", bil1, bil2, bil3);
printf("\t%2d - %2d = %2d\n", bil1, bil2, bil4);
getch();
}
Contoh Program dengan fungsi tanpa prototipe
#include <stdio.h>
#include <conio.h>
void judul(){
printf("Program Mencari Penjumlahan dan
Pengurangan\n");
printf("dari 2 buah bilangan\n");
printf("-------------------------------------\n");
}
void main(){
judul();
int bil1, bil2, bil3, bil4;
printf("Nilai A : "); scanf("%d", &bil1);
printf("Nilai B : "); scanf("%d", &bil2);
bil3 = jumlah(bil1, bil2);
bil4 = selisih(bil1, bil2);
printf("\n\nResult:\n");
printf("\t%2d + %2d = %2d\n", bil1, bil2, bil3);
printf("\t%2d - %2d = %2d\n", bil1, bil2, bil4);
getch();
}
Contoh Program dengan fungsi dengan prototipe
#include <stdio.h>
#include <conio.h>
void judul();
int jumlah(int a, int b);
int selisih(int a, int b);
void main(){
int bil1, bil2, bil3, bil4;
clrscr();
judul();
printf("Nilai A : "); scanf("%d", &bil1);
printf("Nilai B : "); scanf("%d", &bil2);
bil3 = jumlah(bil1, bil2);
bil4 = selisih(bil1, bil2);
printf("\n\nResult:\n");
Cont…
printf("\t%2d + %2d = %2d\n", bil1, bil2, bil3);
printf("\t%2d - %2d = %2d\n", bil1, bil2, bil4);
getch();
}
void judul(){
printf("Program Mencari Penjumlahan dan
Pengurangan\n");
printf("dari 2 buah bilangan\n");
printf("-------------------------------------------\n")
;
}
#include <stdio.h>
}
Contoh Pengiriman parameter by
reference
#include <stdio.h>
void Hitung (int X, int Y, int *P, int *Q)
{
*P = X + Y;
*Q = X * Y;
}
void main()
{
int X, Y, P, Q; /*local variabel*/
printf(“ X=”); scanf(“%d”,&X);
printf(“ Y=”); scanf(“%d”,&Y);
Hitung(X,Y,&P,&Q);
printf(”X + Y = %d\n”, P);
printf(”X * Y = %d\n”, Q);
}
Cont…
void BacaData(int n, int x[]) {
int i, j;
printf("\nProses Baca Data Secara RANDOM: \n");
for(i = 0; i < n; i++) {
x[i] = rand()%100;
printf("Data ke -%2d : %d\n", i+1, x[i]);
}
}
void TampilData(int n, int x[]) {
int i, j;
for(i = 0; i < n; i++)
printf("%5d", x[i]);
}
Fungsi Rekursi
Fungsi rekursi adalah fungsi yang di dalam function body-nya ada statement yang
memanggil dirinya sendiri.
Contoh :
Faktorial (n) atau n! didefinisikan sebagai berikut :
n! = 1, untuk n = 0;
n! = n * (n-1)!, untuk n > 0
4! = 4 * 3!
3! = 3 * 2!
2! = 2 * 1!
1! = 1* 0!
0! = 1
Bila ditelusur mundur : 4! = 1*2*3*4 = 24
Contoh perhitungan 5 faktorial
5!
(5 * 4!)
(5 * (4 *3!))
(5 * (4 * (3 * 2!)))
(5 * (4 * (3 * (2 * 1!))))
(5 * (4 * (3 * (2 * (1 * 0!)))))
(5 * (4 * (3 * (2 * (1 * 1)))))
(5 * (4 * (3 * (2 * 1))))
(5 * (4 * (3 * 2)))
(5 * (4 * 6 ))
(5 * 24)
120
Cont…
Fungsi faktorial
Base case : n = 0
Reduction step: f(n) = n * f(n-1)
Fungsi Iterasi vs Rekursif
• Faktorial - Rekursif
long faktor (int n) {
if(n==0)
return (1);
else
return(n * faktor(n-1));
• Faktorial - Iteratif
}
long faktor(int n) {
long i, fak = 1;
for(i=1; i<=n; i++)
fak *= i;
return (fak);
}
Gambaran Proses Rekursif
Jadi 4! = 4*3*2*1 = 24
Kekurangan Rekursif
Meskipun penulisan program dengan cara rekursif bisa lebih
pendek, namun procedure atau function rekursif memerlukan :
• Menggunakan memori yang lebih banyak
• Waktu lebih lama
Kapan Menggunakan Rekursif?