1 Functions (Bag 2). 2 Topik Scope Prototypes 3 Scope Variabel yg dideklarasikan dalam badan fungsi...
-
Upload
david-channell -
Category
Documents
-
view
214 -
download
0
Transcript of 1 Functions (Bag 2). 2 Topik Scope Prototypes 3 Scope Variabel yg dideklarasikan dalam badan fungsi...
3
Scope
• Variabel yg dideklarasikan dalam badan fungsi (termasuk formal parameter) yang hanya dpt diakses pd saat fungsi sedang di eksekusi
• Buktinya, hal ini benar dari tiap blok dalam suatu program.
4
int globalVar = 0;
int increment ( int paramVar ){ int localVar = 2; extern int globalVar; globalVar += localVar; return (paramVar + localVar);}
int main(){ int localVar = 5; for (localVar=0; localVar < 5; localVar++) { int blockVar = 1; blockVar = increment(blockVar); } printf("%d\n", globalVar); printf("%d\n", blockVar); /* Error! diluar scope */ return 0;}
Contoh: scope.c
5
int globalVar = 0;
int increment ( int paramVar ){ int localVar = 2; extern int globalVar; globalVar += localVar; return (paramVar + localVar);}
int main(){ int localVar = 5; for (localVar=0; localVar < 5; localVar++) { int blockVar = 1; blockVar = increment(blockVar); } printf("%d\n", globalVar); printf("%d\n", blockVar); /* Error! diluar scope */ return 0;}
Contoh: scope.cDeklarasi variabel Global
6
int globalVar = 0;
int increment ( int paramVar ){ int localVar = 2; extern int globalVar; globalVar += localVar; return (paramVar + localVar);}
int main(){ int localVar = 5; for (localVar=0; localVar < 5; localVar++) { int blockVar = 1; blockVar = increment(blockVar); } printf("%d\n", globalVar); printf("%d\n", blockVar); /* Error! diluar scope */ return 0;}
Contoh: scope.c
Variables local pd block ini.
7
int globalVar = 0;
int increment ( int paramVar ){ int localVar = 2; extern int globalVar; globalVar += localVar; return (paramVar + localVar);}
int main(){ int localVar = 5; for (localVar=0; localVar < 5; localVar++) { int blockVar = 1; blockVar = increment(blockVar); } printf("%d\n", globalVar); printf("%d\n", blockVar); /* Error! diluar scope */ return 0;}
Contoh: scope.c
Scope dr variable localVar.
8
int globalVar = 0;
int increment ( int paramVar ){ int localVar = 2; extern int globalVar; globalVar += localVar; return (paramVar + localVar);}
int main(){ int localVar = 5; for (localVar=0; localVar < 5; localVar++) { int blockVar = 1; blockVar = increment(blockVar); } printf("%d\n", globalVar); printf("%d\n", blockVar); /* Error! diluar scope */ return 0;}
Contoh: scope.c
Scope dr variablel blockVar.
9
Prototyping Function
• Fungsi harus di deklarasikan sebelum di gunakan (spt variables)
• Deklarasi ini disebut “prototype”
• Menentukan nama, parameter dan return type dari function, tanpa badan fungsi.
10
Contoh: Continuing Fraction
Diberikan n dan terms, hitung:
y =1
1 +1 + 1
1 + 1
+1 n. . .
Terms jml bentukPecahan yg di bagi
11
Contoh: Continuing Fraction
Contoh: jika n adl 2, dan terms adl 1:
y = 1 +1
+1 n
= 1 +1
+1 2
1.33333
12Fraction(n, terms)
Contoh: Continuing Fraction
Diberikan n dan terms, hitung:
y =1
1 +1 + 1
1 + 1
+1 n. . .
16
Contoh: cfraction.c
Fraction ( n, terms ){ return 1 / Sum ( n, terms )}
hit pecahan berkelanjutan
input n, terms
set sum to
1 + Fraction(n, terms)
output sum Sum ( n, terms ){ if ( last term ) then return 1 + n else return 1 + Fraction ( n, terms - 1 )}
17
#include <stdio.h>
/*******************************\ hit pecahan berkelanjutan\*******************************/
double Fraction(double n, int terms);double Sum(double, int);
int main(){ double n, sum; int terms;
printf("Enter n and nterms: "); scanf("%lf %d", &n, &terms); sum = 1 + Fraction(n, terms); printf("%.32f\n", sum);
return 0;}
hit pecahan berkelanjutan
input n, terms
set sum to 1 + Fraction(n, terms)output sum
Contoh: cfraction.c
18
#include <stdio.h>
/*******************************\ hit pecahan berkelanjutan\*******************************/
double Fraction(double n, int terms);double Sum(double, int);
int main(){ double n, sum; int terms;
printf("Enter n and nterms: "); scanf("%lf %d", &n, &terms); sum = 1 + Fraction(n, terms); printf("%.32f\n", sum);
return 0;}
hit pecahan berkelanjutan
input n, terms
set sum to 1 + Fraction(n, terms)output sum
Contoh: cfraction.c
Function prototypes
19
double Fraction(double n,int terms){ return (1 / Sum(n,terms));}
double Sum(double n, int terms){ if (terms==1) { return 1 + n; } else { return (1 + Fraction(n,terms-1)); }}
Fraction ( n, terms ){ return 1 / Sum ( n, terms )}
Sum ( n, terms ){ if ( last term ) { return 1 + n } else { return (1 + Fraction (n, terms-1)) }}
Contoh: cfraction.c
20
#include <stdio.h>
/*******************************\ hit pecahan berkelanjutan\*******************************/
double Fraction(double n, int terms);double Sum(double, int);
int main(){ double n, sum; int terms;
printf("Enter n and nterms: "); scanf("%lf %d", &n, &terms); sum = 1 + Fraction(n, terms); printf("%.32f\n", sum);
return 0;}
Header Files:
Jika fungsi sering dipakai, prototipe fungsi biasanya disimpan dalam “header” file (file dg extensi .h)
21
double Fraction(double n, int terms);double Sum(double, int);funcs.h
funcs.c
double Fraction(double n,int terms){ return (1 / Sum(n,terms));}
double Sum(double n, int terms){ if (terms==1) { return 1 + n; } else { return (1 + Fraction(n,terms-1)); }}
Header Files:
22
#include <stdio.h>#include “funcs.h”#include “funcs.c”
int main(){ double n, sum; int terms;
printf("Enter n and nterms: "); scanf("%lf %d", &n, &terms); sum = 1 + Fraction(n, terms); printf("%.32f\n", sum);
return 0;}
cfraction.c
Header Files:
23
• Berisi prototipe fungsi utk standard input/output.
• Standard header files biasanya disimpan dalam include directory.
#include <stdio.h>#include “funcs.h”#include “funcs.c”
int main(){ double n, sum; int terms;
printf("Enter n and nterms: "); scanf("%lf %d", &n, &terms); sum = 1 + Fraction(n, terms); printf("%.32f\n", sum);
return 0;}
Header Files: