Anda di halaman 1dari 18

Fungsi 2

DASAR PEMROGRAMAN

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

a
b

Parameter aktual

disalin

x
y

Parameter formal

Nilai dari parameter aktual akan disalin ke parameter formal


Nilai parameter aktual tidak bisa berubah meskipun nilai parameter
formalnya berubah
//contoh pemanggilan dengan nilai
#include <stdio.h>
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);
}

Proses Penukaran nilai


x

88

77

88

77

88

Mula-mula

Sesudah : z=x

77

77

88

77

88

88

Sesudah : x=y

Sesudah : y=z

2. Pemanggilan dengan Referensi


Upaya untuk melewatkan alamat dari suatu variabel ke dalam fungsi
Untuk mengubah isi suatu variabel di luar fungsi dimana pelaksanaan
pengubahan dilakukan di dalam fungsi
- Modifikasi pada parameter formal :
tukar(int *px, int *py)
{
int z;

Variabel pointer
menunjuk ke variabel lain

z= *px;
*px=*py;
*py=z;

- Modifikasi untuk parameter aktual :


tukar(&a,&b);

variabel diawali dengan &


menyatakan alamat dari a dan alamat
dari b

px

py

alamat a

alamat b

Variabel pointer px menunjuk ke variabel a dan


variabel pointer py menunjuk ke variabel b

//contoh pemanggilan dengan referensi


#include <stdio.h>
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);
}

Jenis-jenis Variabel berdasarkan


kelas 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

Variabel Lokal

Hanya dikenal didalam fungsi


tempat variabel tersebut
dideklarasikan.
Setelah fungsi selesai dijalankan,
variabel lokal tersebut otomatis
akan hilang.
Tidak ada inisialisasi secara
otomatis (saat variabel diciptakan,
nilainya tak menentu).
9

Contoh Variabel Lokal


void 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);
}

10

Variabel Eksternal

Dapat diakses oleh semua fungsi


Kalau tak diberi nilai, secara
otomatis diinisialisasi dengan nilai
sama dengan nol.

11

Contoh#1 Variabel Eksternal


#include <stdio.h>
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++;
}

12

Contoh#2 Variabel Eksternal


#include <stdio.h>
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++;
}

13

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()

14

Contoh Program dengan beberapa fungsi


//program dengan beberapa fungsi
#include <stdio.h>
void fungsi_1(void);
void fungsi_2(void);
main()
{
fungsi_1();
}
void fungsi_1(void)
{
printf("Fungsi 1 dijalankan\n");
fungsi_2();
}
void fungsi_2(void)
{
printf("Fungsi 2 dijalankan\n");
}

15

Rekursi
Fungsi dapat dipakai secara rekursi, yaitu dapat memanggil
dirinya sendiri
Contoh :

If n==1, xn = x
Else : xn=x*xn-1

xn

Jika x=2 dan n=3, maka


23 = 2 * 22

22= 2 * 21

21 = 2

16

Contoh Program rekursi


//rekursi untuk mencari faktorial
#include<stdio.h>
int faktorial(int);
main()
{
int x;
printf("MENCARI FAKTORIAL DARI X\n");
printf("Masukkan nilai x : ");
scanf("%d",&x);
printf("Nilai faktorial dari x = %d adalah
%d\n",x,faktorial(x));
}
int faktorial(int m)
{
if(m==1)
return(1);
else
return(m=m*faktorial(m-1));
}

17

Tugas
1.

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

18

Anda mungkin juga menyukai