Function dan Recursion
Definisi Function
Function adalah sub program yang terdiri dari sekumpulan perintah untuk melakukan suatu tugas tertentu. Function memungkinkan suatu program menjadi lebih terstruktur dan juga memudahkan pengecekan kesalahan.
Function Construction
return-value-type function-name( parameter-list )
{
statements;
}
return -value-type: tipe data dari nilai yang akan direturn atau dikembalikan.
- Jika tidak diisi, maka akan digunakan tipe data bawaan (default integer).
- Jika return-value-type adalah void, maka function tidak akan menampilkan return value atau nilai kembalian.
paramter-list: daftar nilai yang akan dikirim dari function initiator (user).
Contoh:
Function Prototype
Function dalam C biasanya ditulis di atas pemanggil atau main program. Jika tidak, sebaiknya menggunakan Function Prototype.
Tujuan Function Prototype:
- Untuk memastikan suatu fungsi diketahui oleh inisiator / pemanggil.
- Compiler akan memvalidasi parameter.
Syntax: return-value-type function-name ( parameter-list );
Contoh Program:
#include <stdio.h>
int maximum (int x, int y){
int max = x;
if ( y > max) max = y;
return max
}
void main () {
int a,b;
printf("Input 2 even values : ");
scanf("%d %d", &a, &b);
printf("Largest value : %d\n",maximum(a,b));
}
Identifier Scoping
- Local
- Scope terbatas di dalam function.
- Global
- Dapat dijangkau dari titik manapun di dalam program.
- Global Identifier, dapat dideklarasi kembali di dalam subprogram.
- Tetapi tidak dianjurkan untuk menggunakan variabel global karena:
- Memungkinkan meningkatnya tingkat kesalahan ketika baris kode meningkat.
- Sulit dalam debugging.
- Eksklusivitas data rendah. Semua fungsi dalam program dapat mengubah nilainya.
-> scope variabel x
-> scope variabel y
-> scope y dan z hanya ada di main program. z di dalam main program berbeda dengan yang di dalam function2()
Passing Parameter
Dua macam passing parameter:
- By-Value, yang dikirim ke modul lain adalah nilainya.
- By Location / by reference, yang dikirim ke modul lain adalah alamatnya.
Contoh Program:
/*Passing Parameter By-Value*/
#include <stdio.h>
void Line (char x ) { /* x is Formal Parameter*/
{
int i; / *i, x are Local Variable */
for (i = 1; i<=10; i++) printf(“%c”,x);
}
/*Main Program*/
void main()
{
char A = ’-’;
Line(A); /* A is Actual Parameter */
}
/*Passing Parameter By-Location*/
#include <stdio.h>
void Calculate (int X, int Y, int *P, int *Q)
{
*P = X + Y;
*Q = X * Y;
}
void main()
{
int X, Y, P, Q; /*local variable*/
printf(“ X=”); scanf(“%d”,&X);
printf(“ Y=”); scanf(“%d”,&Y);
Calculate(X,Y,&P,&Q);
printf(”X + Y = %d\n”, P);
printf(”X * Y = %d\n”, Q);
}
Definisi Recursive
Recursive adalah suatu fungsi yang memanggil dirinya sendiri.
Fungsi recursive mempunyai dua komponen:
- Base case: return value(constant) tanpa memanggil recursive selanjutnya.
- Reduction step: kembali memanggil dirinya sendiri hingga mencapai base case.
Contoh:
Factorial (n) or n! defined as follows :
n! = 1, for n = 0;
n! = n * (n-1)!, for n > 0
4! = 4 * 3!
3! = 3 * 2!
2! = 2 * 1!
1! = 1* 0!
0! = 1
Trace back : 4! = 1*2*3*4 = 24
Base case : n = 0
Reduction step: f(n) = n * f(n-1)
Recursive dan Iterative
/*Factorial - Recursive*/
long factor (int n)
{
if(n==0) return (1);
else return(n * factor(n-1));
}
/*Factorial - Iterative*/
long factor(int n) {
long i, fac = 1;
for(i=1; i<=n; i++) fac *= i;
return (fac);
}
Sources:
http://ryanmuhammad-bahrudin.blogspot.com/2015/01/pengertian-function-beserta-contoh-nya.html
http://2.bp.blogspot.com/-http://kokododi.blogspot.com/2014/09/pembahasan-dan-contoh-fungsi-pada-c.html

Comments
Post a Comment