Fungsi merupakan blok penting dalam pemrograman C dengan tujuan :
1. Program menjadi terstruktur, sehingga mudah dipahami dan mudah dikembangkan.
2. Dapat mengurangi pengulangan kode(duplikasi kode)
Tugas khusus yang dilakukan fungsi dapat dilihat dari beberapa fungsi standart yaitu :
1. getch(); untuk membaca kode keyboard yang ditekan.
2. printf(); untuk menampilkan informasi(data) ke layer monitor.
Fungsi dibagi menjadi 2, yaitu:
1. Fungsi tanpa parameter
Contoh program
#include <stdio.h>
inisialisasi();
main()
{
int x,y;
clrscr();
printf(“x=%d \n”,x);
y=inisialisasi();
printf(“y=%d \n”,y);
getch();
}
Inisialisasi();
{
return(0);
}
Hasil eksekusi adalah:
x=0 dan y=0
2. Fungsi dengan parameter
Contoh program
#include<stdio.h>
minimum(x,y)
int x,y;
{
if(x<y)
return(x);
else
return(y);
}
main()
{
int a=20;
int b=44;
int hasil;
hasil=minimum(a,b);
clrscr();
printf("nilai terkecil=%d\n",hasil);
printf("nilai terkecil=%d\n",minimum(3,2));
getch();
}
Hasil eksekusi
Nilai terkecil=20
Nilai terbesar=2
Di dalam fungsi dikenal istilah Parameter Formal dan Parameter Aktual :
a. Parameter formal adalah parameter yang terdapat pada pendefinisian sebuah fungsi.
b. Parameter aktual adalah parameter yang terdapat pada saat pemanggilan fungsi.
Cara melewatkan parameter ke dalam suatu fungsi dapat dilakukan melalui dua cara yaitu:
a. Pelewatan parameter melalui nilai (call by value) :
- Pelewatan
parameter ke dalam fungsi dengan menyalin nilai dari suatu variabel
aktualnya.
Maksudnya adalah fungsi menerima masukan berupa nilai, bukan
alamat memori letak dari datanya dan nilai tersebut disimpan di alamat
memori yang terpisah dari nilai aslinya yang digunakan oleh bagian
program yang memanggil fungsi.
Contoh :
#include <stdio.h>
#include <conio.h>
int kali(int a,int b, int c) //parameter formal
{
int x;
x = a * b * c;
return(x);
}
int main()
{
int a,b,c;
printf(”Masukkan angka 1 : “);
scanf(”%d”,&a);
printf(”Masukkan angka 2 : “);
scanf(”%d”,&b);
printf(”Masukkan angka 3 : “);
scanf(”%d”,&c);
printf(”Hasil perkalian ketiga bilangan adalah %d”,kali(a,b,c)); //parameter aktual
getch();
return(0);
}
b. Pelewatan parameter melalui acuan/referensi (call by reference) :
- pelewatan
parameter ke dalam fungsi dengan menyalin alamat dari suatu variabel
aktualnya. Fungsi yang menerima kiriman alamat ini akan menggunakan
alamat yang sama untuk mendapatkan nilai datanya. Hal ini dilakukan
dengan menggunakan pointer. Pointer adalah variabel yang merujuk pada
alamat lokasi suatu memori tertentu, variable pointer dapat
dideklarasikan dengan menuliskan nama variabelnya diawali dengan
asterisk (‘*’). Perubahan yang terjadi pada variabel asal akan
mengakibatkan perubahan pada variabel pointernya dan sebaliknya.
Contoh :
#include <stdio.h>
#include <conio.h>
void desc_sort(int *bil1,int *bil2) //parameter formal
{
if(*bil1<*bil2)
{
*bil1 = *bil1 + *bil2;
*bil2 = *bil1 - *bil2;
*bil1 = *bil1 - *bil2;
}
}
int main()
{
int a,b,c;
printf(”Masukkan angka 1 : “);
scanf(”%d”,&a);
printf(”Masukkan angka 2 : “);
scanf(”%d”,&b);
printf(”Masukkan angka 3 : “);
scanf(”%d”,&c);
desc_sort(&a,&b); //parameter aktual
desc_sort(&a,&c); //parameter aktual
desc_sort(&b,&c); //parameter aktual
printf(”Hasil descending sort adalah %2d %2d %2d”,a,b,c);
getch();
return(0);
}
Di dalam penggunaan fungsi-fungsi dalam program kita mengenal adanya istilah variable local dan variable global :
a. Variabel lokal :
- Variabel
yang nama dan nilainya hanya dikenal di suatu blok statement tertentu
saja atau di dalam suatu fungsi. Variabel lokal harus dideklarasikan di
dalam blok bersangkutan. Variabel lokal akan dihapus dari memori jika
proses sudah meninggalkan blok statement letak variable lokalnya.
b. Variabel global :
- Variabel
yang dikenal di semua bagian-bagian tertentu dari program. Variabel
global dapat dibuat dengan cara mendeklarasikannya di luar suatu blok
statement atau di luar fungsi-fungsi yang menggunakannya.
c. Variabel Statik
- variabel
yang tidak berubah nilai akhirnya bila suatu proses telah keluar dari suatu
blok ( fungsi ) yang mendeklarasikannya dan kemudian masuk kembali ke blok (
fungsi ) tersebut.