Tipe_Keluaran_Fungsi Nama_Fungsi(Daftar
Parameter)
{
statement-1;
statement-2;
...
}
Terdapat beberapa hal yang harus diperhatikan berkaitan dengan pembuatan
sebuah fungsi :
1. Jika Tipe_Keluaran_Fungsi tidak disebutkan, maka akan dianggap sebagai
fungsi dengan tipe int. Jika memiliki Tipe_keluaran_Fungsi selain int, maka
harus didefinisikan dengan menyebutkan tipe fungsinya.
2. Untuk fungsi yang tidak mempunyai Tipe_Keluaran_Fungsi, maka
te0072masuk tipe void.
3. Nilai akhir sebuah fungsi dinyatakan dengan memberikan pernyataan
return.
4. Fungsi dapat diberikan ke dalam sebuah variabel, dioperasikan dalam
sebuah ungkapan maupun dicetak langsung ke layar monitor.
5. Posisi/letak suatu fungsi dapat diletakan sebelum atau sesudah fungsi utama
yaitu fungsi main().
main()
{
int x,y;
clrscr();
printf("Masukan bilangan pertama : ");
scanf("%d",&x); fflush(stdin);
printf("Masukan bilangan kedua : ");
scanf("%d",&y); fflush(stdin);
printf("%d + %d = %d",x,y,jumlah(x,y));
printf(“\n“); x=3; y=7;
printf("%d + %d = %d",x,y,jumlah(x,y));
getch();
}
/*definisi fungsi*/
int jumlah(int a, int b)
{
return(a+b); /*pemberian nilai akhir ke fungsi*/
}
#include <stdio.h> /*contoh program 9.2*/
#include “conio.h“
int jumlah(int a, int b); /*deklarasi fungsi*/
main()
{
int x,y, jumlah;
clrscr();
printf("Masukan bilangan pertama : ");
scanf("%d",&x); fflush(stdin);
printf("Masukan bilangan kedua : ");
scanf("%d",&y); fflush(stdin);
/*definisi fungsi*/
int jumlah(int a, int b)
{
int c; c=a+b;
return(c);/*cara lain pemberian nilai akhir ke fungsi*/
}
Contoh program yang memiliki fungsi tapi fungsi tersebut tidak memiliki tipe
keluaran fungsi :
#include <stdio.h> /*contoh program 9.3*/
#include <conio.h>
void tampilkan(void); /*deklarasi fungsi*/
main()
{
int x,y, jumlah;
clrscr();
tampilkan();
getch();
}
/*definisi fungsi*/
void tampilkan(void)
{ puts(“UNIVERSITAS KOMPUTER INDONESIA“); }
//definisi fungsi
int jumlah(int a, int b)
{ ... }
main()
{
int x=5,y=10;
clrscr();
printf("nilai sebelum tukar() dipanggil x=%d y=%d\n",x,y);
tukar(x,y);
printf("nilai setelah tukar() dipanggil x=%d y=%d\n",x,y);
getch();
}
clrscr();
printf("nilai sebelum tukar() dipanggil x=%d y=%d\n",x,y);
tukar(&x,&y);
printf("nilai setelah tukar() dipanggil x=%d y=%d\n",x,y);
getch();
}
Contoh output
nilai sebelum tukar() dipanggil x=5 y=10
nilai di dalam tukar() a=10 y=5
nilai setelah tukar() dipanggil x=10 y=5
Perhatikan contoh di bawah ini untuk menjelaskan variabel lokal dan global :
#include <stdio.h> /*contoh program 9.5 */
#include <conio.h>
main()
{
clrscr();
printf(”nilai i sebelum satu() dipanggil = %d\n”,i);
satu(); i=i+3;
printf(”nilai i setelah satu() dipanggil = %d ”,i); getch();
}
void satu(void) /* definisi fungsi*/
{
int i; /* deklarasi var. Lokal */
i=5;
printf(”nilai i dalam satu()= %d\n”,i);
}
Contoh Output
nilai i sebelum satu() dipanggil = 10
nilai i dalam satu() = 5
nilai i setelah satu() dipanggil = 13
3. Variabel STATIS
Adalah variabel yang nilainya tetap dan dapat berupa variabel Lokal dan
Global dengan sifat-sifat sbb :
o Jika bersifat internal/lokal, maka :
variabel hanya dikenal oleh fungsi tempat variabel
dideklarasikan.
Nilainya tidak akan hilang setelah keluar dari fungsi (akan tetap
diingat) walaupun eksekusi terhadap fungsi telah berakhir
o Jika bersifat eksternal/global, maka variabel dikenal oleh semua fungsi
yang ada dalam program yang sama.
o Inisialisasi dilakukan hanya sekali yaitu pada saat fungsi pertama kali
dipanggil.
o Jika tidak diberi inisialisasi, maka secara otomatis bernilai ’nol’.
o Dapat dideklarasikan secara optional dengan menambahkan kata
”static”.
main()
{
clrscr();
printf(”nilai i sebelum satu() dipanggil = %d\n”,i);
satu();
printf(”nilai i setelah satu() dipanggil = %d ”,i+3);
satu();
getch();
}
i+=3;
printf(”nilai i dalam satu()= %d\n”,i);
}
Contoh Output
nilai i sebelum satu() dipanggil = 10
nilai i dalam satu() = 8
nilai i setelah satu() dipanggil = 13
nilai i dalam satu() = 11
4. Variabel REGISTER
Adalah variabel yang nilainya disimpan dalam register dan bukan dalam
memori dengan sifat-sifat sbb :
o Hanya dapat diterapkan pada varaibel Lokal.
o Digunakan untuk mengendalikan proses perulangan. Dengan demikian
proses perulangan akan lebih cepat karena variabel register memiliki
kecepatan yang lebih tinggi dibandingkan variabel biasa.
o Dapat dideklarasikan secara optional dengan menambahkan kata
”register”.
6.5 Rekursif
Fungsi yang bersifat rekursif adalah fungsi yang memangil dirinya sendiri.
Perhatikan contoh kasus di bawah ini :
#include <stdio.h> /*contoh program 9.7 */
#include <conio.h>
int jumlahnya(int a);
main()
{
int bil;
clrscr();
printf(”masukan sebuah bilangan bulat positif : ”);
scanf(”%d”,&bil);
printf(”jumlah semua bilangan dari 1-%d = %d”,bil, jumlahnya(bil));
getch();
}
Contoh Output
masukan sebuah bilangan bulat positif : 5 [enter]
jumlah semua bilangan dari 1-5 = 15_
void satu(void)
{ puts(“isi fungsi satu()“); }
void dua(void)
{ puts(“isi fungsi dua()“); }
main()
{
clrscr();
puts(”isi fungsi main()”);
satu();
dua();
getch();
}
Outputnya
isi fungsi main()
isi fungsi satu()
isi fungsi dua()
void satu(void)
{
puts(“isi fungsi satu()“);
dua();
}
void dua(void)
{
puts(“isi fungsi dua()“);
satu();
}
main()
{
clrscr();
puts(”isi fungsi main()”);
satu();
getch();
}
void satu(void)
{
puts(“isi fungsi satu()“); dua();
}
void dua(void)
{
x++; puts(“isi fungsi dua()“);
if (x<=5) satu();
else exit();
}
main()
{
clrscr();
puts(”isi fungsi main()”);
satu();
getch();
}
TUGAS/LATIHAN
1. Buatlah program secara modular (dibuat ke dalam beberapa fungsi) untuk
membuat 3 buah bidang geometri dengan contoh output sbb :
MENGHITUNG LUAS BIDANG GEOMETRI
1. SEGITIGA
2. PERSEGI PANJANG
3. LINGKARAN
PILIH [1/2/3 ] : 3 [enter]
Panjang Jari-jari : 4 [enter]
Luas Lingkaran : 50.24
main()
{
int x=5;
printf(”x=%d\n”,x);
satu();
printf(”nilai x sekarang =%d\n”,x);
}
void satu(void)
{
static x=1;
3. Buatlah program secara rekursif untuk membagi dua buah bilangan bulat positif
dengan menggunakan konsep penjumlahan ! Dengan syarat jika bilangan yang
akan dibagi di mod kan dengan bilangan pembaginya menghasilkan nol. Jika tidak
demikian, maka program akan mengulang kembali menginputkan 2 buah bilangan
kembali hingga syarat di atas dipenuhi.
4. Buatlah sebuah program secara rekursif untuk mengalikan 2 buah bilangan bulat
dengan menggunakan konsep penjumlahan. Contoh :
2 x 3 = 6, 6 didapat dengan cara 2 + 2 + 2 atau 3 + 3
5. Bagaimana bentuk output dari program di bawah ini :
#include <stdio.h>
int tukar(int a, int *b);
main()
{
int a=1,b=2;
Contoh Output
Nama Saudara ? asepberlian
11
#include <stdio.h>
#include <conio.h>
#include <string.h>
main()
{
char n1[20]=”Uni”, n2[20]=”Kom”;
clrscr();
strcat(n1,n2);
printf("Hasil penggabungannya menjadi %s ",n1);
Contoh Output
Hasil penggabungannya menjadi UniKom
Diubah ke huruf kapital UNIKOM
Diubah ke huruf kecil unikom
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
main()
{
char kar;
clrscr();
if (isupper(kar))
{
puts("adalah huruf besar");
printf("huruf kecilnya adalah : %c",tolower(kar));
}
else
{
puts("adalah huruf kecil");
printf("huruf besarnya adalah : %c",toupper(kar));
}
getch();
}
Contoh Output
masukan sebuah karakter : A
adalah huruf besar
huruf kecilnya adalah : a
clrscr();
getch();
}
Contoh Output
masukan bilangan pertama : 2
masukan bilangan kedua : 3
2 pangkat 3 = 8.00
#include <stdio.h>
#include <conio.h>
#include <math.h>
main()
{
float sudut;
clrscr();
getch();
}
Contoh Output
masukan besar sudut : 20
nilai sinus 20.00 adalah 0.91
nilai cosinus 20.00 adalah 0.41
nilai tangens 20.00 adalah 2.24