FUNGSI
Bentuk umum :
tipe nama_function (deklarasi parameter)
{
pernyataan;
pernyataan;
{
Tipe nilai yang dihasilkan oleh function. Jika tidak dinyatakan, hasil function dianggap bilangan bulat (int)
deklarasi parameter
Daftar tipe dan nama variabel yang akan menerima nilai pada saat function tersebut dipanggil. Setiap parameter dipisahkan oleh tanda koma. Jika function tidak mempunyai parameter daftar ini akan kosong. Jadi hanya tanda kurung saja.
int a,b,c;
Tetapi pada deklarasi parameter Anda harus menyatakan setiap tipe dari parameter.
Bentuk umum :
f (tipe nama_var1, tipe nama_var2, …, tipe nama_varn);
Pernyataan return menyatakan dua hal :
1. Return mengakhiri jalannya function dan kembali ke program pemanggil
2. Menghasilkan sebuah nilai
1. Pada saat pernyataan terakhir dari function dijumpai (dijumpai tanda akhir function “}” )
Contoh :
main()
{
clrscr();
hai();
}
hai()
{
printf("Hai.. Apa kabar..?");
getch();
}
Contoh :
main()
{
clrscr();
hai();
}
hai()
{
printf("Hai.. Apa kabar..?");
return;
printf("\nBaik-baik saja kannn..?");
getch();
}
Function hai() pada program di atas hanya dapat mencetak Hai.. Apa kabar..?. Jika kita menginginkan function tersebut dapat mencetak pesan yang berlainan, kita harus mengubahnya menjadi seperti berikut :
main()
{
clrscr();
hai("Haloo...!");
hai("Siapa nama kamu..?");
}
hai(char pesan[20])
{
printf("%s \n",pesan);
getch();
}
Pada contoh di atas pemanggilan function hai() menggunakan argumen, yaitu Haloo...! dan Siapa nama kamu..?. Di dalam function hai() harus ada variabel yang menerima argumen tersebut. Dalam hal ini adalah pesan (dinamakan parameter). Sifat-sifat parameter sama seperti variabel lokal yang ada di dalam function. Tipe parameter harus sama dengan tipe argumen.
Contoh :
main()
{
int a,b,c;
clrscr();
printf("Masukkan nilai A : "); scanf("%d",&a);
printf("Masukkan nilai B : "); scanf("%d",&b);
c=jumlah(a,b);
printf("\n\nJumlah kedua bilangan tersebut adalah %4d",c);
getch();
}
jumlah(int x, int y)
{
return x+y;
}
Function jumlah() pada program di atas mempunyai 2 parameter yaitu :
· jumlah(a,b)
· jumlah(int x, int y)
c=jumlah(a,b)
return x+y
1. Function harus diberi tipe secara eksplisit
2. Sebelum function dipanggil untuk pertama kali, compiler harus diberitahu tipe function tersebut.
Cara mendeklarasikan function dengan suatu tipe, sama dengan deklarasi variabel, yaitu tipe mendahului nama function.
Contoh :
float jumlah(float x, float y);
main()
{
float a,b,c;
clrscr();
printf("Masukkan nilai A : "); scanf("%f",&a);
printf("Masukkan nilai B : "); scanf("%f",&b);
c=jumlah(a,b);
printf("\n\nJumlah kedua bilangan tersebut adalah %4.1f",c);
getch();
}
float jumlah(float x, float y)
{
return x+y;
}
PROTOTIPE FUNCTION
Prototipe function menyatakan 2 hal :
1. Tipe dari nilai yang dihasilkan function, agar compiler dapat menghasilkan kode yang benar untuk tipe nilai yang dihasilkan
2. Tipe dan banyaknya argumen yang dipakai oleh function.
Tipe nama_function(daftar parameter)
Function yang tidak menghasilkan nilai dapat dideklarasikan sebagai tipe void. Hal ini dapat mencegah kesalahan yang tidak disengaja.
void hai();
main()
{
clrscr();
hai();
getch();
}
void hai()
{
printf("Hai... Apa kabar?");
}
Jika Anda tidak menyatakan tipe void, Turbo C++ menganggap function tersebut menghasilkan nilai bilangan bulat.
Variabel yang dideklarasikan di dalam function dinamakan variabel lokal. Di dalam Turbo C++, sebuah variabel bersifat lokal terhadap sebuah blok, jadi lebih sempit dibandingkan dengan sebuah function. Sebenarnya sebuah function juga merupakan sebuah blok dan blok tersebut dapat memiliki blok yang lebih kecil lagi.
#include
float akar (float x);
main()
{
float a,b;
clrscr();
printf("Masukkan sebuah bilangan : "); scanf("%f",&a);
b=akar(a);
printf("\n\nAkar dari bilangan tersebut adalah %6.2f",b);
getch();
}
float akar(float x)
{
float y;
if (x>=0)
{
y=sqrt(x);
return y;
}
else return 0;
}
VARIABEL GLOBAL
Variabel global dikenal di setiap bagian program. Variabel global akan menyimpan nilai yang ada di dalamnya, selama program dijalankan. Variabel global di deklarasikan di luar semua function.
#include
int a;
void f1(void);
main()
{
clrscr();
printf("Masukkan nilai A adalah "); scanf("%d",&a);
f1();
printf("\n\nNilai A sesudah pemanggilan function adalah %3d",a);
getch();
}
void f1(void)
{
printf("\n\nNilai A di dalam function sebelum dijumlah adalah %3d",a);
a+=5;
printf("\n\nNilai A di dalam function sesudah dijumlah adalah %3d",a);
}
perhatikan baris 2, variabel a di deklarasikan sebelum function main(). Sebenarnya variabel global boleh diletakkan disetiap tempat, sebelum pemakainnya yang pertama. Variabel global sebaiknya diletakkan di awal program.
Fungsi dalam Bahasa C dapat dipakai secara rekursi, dalam artian suatu fungsi dapat memanggil dirinya sendiri. Rekursi jarang dipakai, diantaranya disebabkan :
· Membuat fungsi sulit untuk dipahami
· Hanya cocok untuk persoalan tertentu saja
· Memerlukan stack dengan ukuran yang lebih besar.
#include
int faktorial(int);
main()
{
clrscr();
int x;
puts("Mencari Nilai Faktorial");
printf("Masukkan sebuah bilangan bulat positif : ");
scanf("%d",&x);
printf("Nilai faktorial dari %d = %d\n", x, faktorial (x));
getch();
}
int faktorial(int m)
{
if (m==1)
return(1);
else
return(m*faktorial(m-1));
}
1. . Buat program untuk menghitung gaji harian PT. JAYA dengan ketentuan :
§ Gaji pokok karyawan Rp. 2000/jam
§ Bila karyawan bekerja lebih dari 7 jam/hari maka kelebihannya dihitung lembur yang besarnya 1.5 dari gaji pokok
§ Untuk karyawan yang bekerja 8 jam/hari atau lebih akan mendapat tambahan uang makan sebesar Rp. 3500
§ Karyawan yang bekerja 9 jam/hari atau lebih akan mendapat uang transport lembur sebesar Rp. 4000
Output : NIP, Nama, Gaji pokok, Lembur, Uang makan, Transport lembur