fungsi 2 pdf.pdf
TRANSCRIPT
-
8/16/2019 Fungsi 2 pdf.pdf
1/18
Fungsi 2
DASAR PEMROGRAMAN
-
8/16/2019 Fungsi 2 pdf.pdf
2/18
2
Cara Melewatkan Parameter
Ada 2 cara melewatkan parameter ke dan dari fungsi :
• Pemanggilan dengan Nilai (Call by value)
• Pemanggilan dengan Referensi (Call by Reference)
1. Pemanggilan dengan Nilai
x
y
Parameter formal
a
b
Parameter aktual
disalin
-
8/16/2019 Fungsi 2 pdf.pdf
3/18
3
Nilai dari parameter aktual akan disalin ke parameter formalNilai parameter aktual tidak bisa berubah meskipun nilai parameter
formalnya berubah
//contoh pemanggilan dengan nilai
#include
void tukar(int,int);
main(){
int a,b;
a=88; b=77; printf("Nilai sebelum pemanggilan fungsi\n"); printf("a= %d b= %d\n\n", a,b );
tukar(a,b);
printf("Nilai sesudah pemanggilan fungsi\n");
printf("a= %d b=%d\n\n",a,b);}
void tukar(int x, int y){
int z; //variabel sementara
z=x;
x=y;y=z; printf("Nilai di akhir fungsi tukar\n"); printf("x= %d y= %d\n\n",x,y);
}
-
8/16/2019 Fungsi 2 pdf.pdf
4/184
Proses Penukaran nilai
x y z
88 77 ?
Mula-mula
x y z
88 77 88
Sesudah : z=x
x y z
77 77 88
Sesudah : x=y
x y z
77 88 88
Sesudah : y=z
-
8/16/2019 Fungsi 2 pdf.pdf
5/185
2. Pemanggilan dengan ReferensiUpaya untuk melewatkan alamat dari suatu variabel ke dalam fungsi
Untuk mengubah isi suatu variabel di luar fungsi dimana pelaksanaan
pengubahan dilakukan di dalam fungsi
t ukar ( i nt *px, i nt *py){
i nt z;
z= *px;*px=*py;*py=z;……
- Modif ikasi pada parameter formal :
Variabel pointer
menunjuk ke variabel lain
- Modifikasi untuk parameter aktual :
t ukar ( &a, &b) ;
variabel diawali dengan &
menyatakan alamat dari a dan alamat
dari b
-
8/16/2019 Fungsi 2 pdf.pdf
6/186
alamat a
px
a
alamat b
py
b
Variabel pointer px menunjuk ke variabel a dan
variabel pointer py menunjuk ke variabel b
-
8/16/2019 Fungsi 2 pdf.pdf
7/187
//contoh pemanggilan dengan referensi
#include void tukar(int *px,int *py);
main(){
int a,b;a=88;
b=77; printf("Nilai sebelum pemanggilan fungsi\n"); printf("a= %d b= %d\n\n", a,b );
tukar(&a,&b);
printf("Nilai sesudah pemanggilan fungsi\n"); printf("a= %d b=%d\n\n",a,b);
}
void tukar(int *px, int *py){
int z; //variabel sementara
z=*px;*px=*py;
*py=z; printf("Nilai di akhir fungsi tukar\n"); printf("x= %d y= %d\n\n",*px,*py);
}
-
8/16/2019 Fungsi 2 pdf.pdf
8/188
Jenis-jenis Variabel berdasarkankelas penyimpanan (storage class)
Jenis-jenis variable pada C
Variabel lokal
Variabel eksternal Variabel statis
Variabel register Hanya akan dibahas variabel
lokal dan variabel eksternal saja.
-
8/16/2019 Fungsi 2 pdf.pdf
9/189
Variabel Lokal Hanya dikenal didalam fungsi
tempat variabel tersebutdideklarasikan.
Setelah fungsi selesai dijalankan,variabel lokal tersebut otomatis
akan hilang.
Tidak ada inisialisasi secara
otomatis (saat variabel diciptakan,
nilainya tak menentu).
-
8/16/2019 Fungsi 2 pdf.pdf
10/1810
Contoh Variabel Lokalvoid fung_1(void);
main()
{int i = 20;
fung_1();
printf("nilai i di dalam main() =
%d\n", i);}
void fung_1(void)
{
int i = 11; printf("nilai i di dalam fung_1() =%d\n", i);
}
-
8/16/2019 Fungsi 2 pdf.pdf
11/1811
Variabel Eksternal
Dapat diakses oleh semua fungsi Kalau tak diberi nilai, secara
otomatis diinisialisasi dengan nilai
sama dengan nol.
-
8/16/2019 Fungsi 2 pdf.pdf
12/18
12
Contoh#1 Variabel Eksternal#include
int i = 273; /* variabel eksternal */
void tambah(void);
main()
{
printf("Nilai awal i = %d\n", i);
i += 7;
printf("Nilai i kini = %d\n", i);
tambah();
printf("Nilai i kini = %d\n", i);
tambah();
printf("Nilai i kini = %d\n", i);
}
void tambah(void)
{ i++;
}
-
8/16/2019 Fungsi 2 pdf.pdf
13/18
13
Contoh#2 Variabel Eksternal#include
int i = 273; /* variabel eksternal */
void tambah(void);
main(){
extern int i; /* variabel eksternal */
printf("Nilai awal i = %d\n", i);
i += 7;
printf("Nilai i kini = %d\n", i);
tambah();
printf("Nilai i kini = %d\n", i);
tambah();
printf("Nilai i kini = %d\n", i);}
void tambah(void)
{
int i; /* variabel lokal */i++;
}
-
8/16/2019 Fungsi 2 pdf.pdf
14/18
14
Menciptakan Sejumlah Fungsi Pada C semua fungsi bersifat sederajat.
Suatu fungsi tidak dapat didefinisikan di dalam fungsi yang lain,
tetapi suatu fungsi boleh memanggil fungsi yang lain,
dan tak tergantung pada peletakan definisi fungsi pada program
fungsi_a() fungsi_b()
fungsi_c()
-
8/16/2019 Fungsi 2 pdf.pdf
15/18
15
/ / pr ogr am dengan beber apa f ungsi
#i ncl ude
voi d f ungsi _1( voi d) ;voi d f ungsi _2( voi d) ;
mai n( ){
f ungsi _1( ) ;}
voi d f ungsi _1( voi d){
pr i nt f ( "Fungsi 1 di j al ankan\ n" ) ;f ungsi _2( ) ;}
voi d f ungsi _2( voi d)
{ pr i nt f ( "Fungsi 2 di j al ankan\ n" ) ;}
Contoh Program dengan beberapa fungsi
-
8/16/2019 Fungsi 2 pdf.pdf
16/18
16
Rekursi Fungsi dapat dipakai secara rekursi, yaitu dapat memanggil
dirinya sendiri
Contoh :xn If n==1, xn = x
Else : xn=x*xn-1
Jika x=2 dan n=3, maka
23 = 2 * 22 22= 2 * 21 21 = 2
28 4
-
8/16/2019 Fungsi 2 pdf.pdf
17/18
17
Contoh Program rekursi/ / r ekur si unt uk mencar i f akt or i al
#i ncl ude
i nt f akt or i al ( i nt ) ;
mai n( ){
i nt x;
pr i nt f ( "MENCARI FAKTORI AL DARI X\ n") ;pr i nt f ( "Masukkan ni l ai x : " ) ;scanf ( "%d" , &x) ;pr i nt f ( "Ni l ai f akt or i al dar i x = %d adal ah%d\ n" , x, f akt or i al ( x) ) ;
}
i nt f akt or i al ( i nt m){
i f ( m==1)return(1);
el se r et ur n( m=m*f akt or i al ( m- 1) ) ;}
-
8/16/2019 Fungsi 2 pdf.pdf
18/18
18
Tugas1. Buat program untuk menghitung volume
dari tabung dan kerucut
Jari-jari lingkaran dan tinggi tabung /
kerucut didapat dari keyboard.
2. Buat program yang berisi menu pilihan
untuk operasi penjumlahan, pengurangan
dan perkalian dari dua buah bilangan bulat
yang didapat dari keyboard. Jadikan supaya
program ini dapat memilih berulang-ulang