Anda di halaman 1dari 17

FUNGSI DALAM BAHASA “C”

KELOMPOK 4 :
ALIF FIRJATULLAH 30418528

DANDI TRI OKTABIAN 31418634

DWI RUDIANTORO 32418110

ILHAM RIZKIANSYAH 33418263

MOHAMMED KEVIN ALTALARIK 34418251

MUHAMMAD FADHLI ADZHANA


34418568
RAFSANJANI

MUHAMMAD LATHIF 34418744

35418578
PRANA FATHIN NURCAHYO

36418385
RUBBY DHARMAWAN

UNIVERSITAS GUNADARMA
2012
ii
FUNGSI DALAM BAHASA “C”

A. PENGERTIAN FUNGSI

Fungsi merupakan suatu bagian dari program yang dimaksudkan untuk mengerjakan suatu
tugas tertentu dan letaknya terpisah dari program yang memanggilnya. Fungsi merupakan elemen
utama dalam bahasa C karena bahasa C sendiri terbentuk dari kumpulan fungsi-fungsi. Dalam
setiap program bahasa C, minimal terdapat satu fungsi yaitu fungsi main(). Fungsi banyak
diterapkan dalam program-program C yang terstruktur. Keuntungan penggunaan fungsi dalam
program yaitu program akan memiliki struktur yang jelas (mempunyai readability yang tinggi) dan
juga akan menghindari penulisan bagian program yang sama. Dalam bahasa C fungsi dapat dibagi
menjadi dua, yaitu fungsi pustaka dan fungsi yang didefinisikan atau dibuat oleh programmer.

B. MENDEFINISIKAN FUNGSI

Suatu fungsi secara umum mempunyai dua buah komponen utama, yaitu definisi fungsi
dan tubuh fungsi. Definisi fungsi berisi dengan tipe dari fungsi, nama dari fungsi dan argumen-
argumennya jika digunakan. Tubuh fungsi berisi dengan statemen-statemen yang akan melakukan
tugas yang akan diberikan kepada fungsi yang bersangkutan.
Bentuk umum dari fungsi :
tipe_fungsi nama-fungsi(argumen1,argumen2,...) Definisi fungsi
{
..........................................................
.......................................................... Badan fungsi
..........................................................
}
Definisi fungsi ditulis sebelum tubuh fungsi tanpa diakhiri dengan titik koma. Tipe di
definisi fungsi menunjukkan tipe dari fungsi. Tipe dari fungsi tergantung dari tipe data hasil balik
yang akan diberikan oleh fungsi. Misalnya hasil balik dari fungsi berupa nilai numerik pecahan,
maka tipe dari fungsi dapat dibuat float atau double atau long double tergantung pada

1
ketepatan yang diinginkan. Jika fungsi tidak memberikan nilai balik, maka tipenya adalah void.
Tipe dari fungsi ini tidak dapat ditulis jika tipenya adalah char atau int. Jika suatu fungsi
didefinisikan tanpa menggunakan tipenya, maka akan dianggap bertipe integer.
Contoh definisi fungsi dengan menggunakan argumen atau parameter :
int Fungsi (float A, int B, char C)
Hal-hal yang perlu diperhatikan dalam penggunaan fungsi:
a) Kalau tipe fungsi tidak disebutkan, maka akan dianggap sebagai fungsi dengan nilai
keluaran bertipe integer.
b) Untuk fungsi yang memiliki keluaran bertipe bukan integer, maka diperlukan
pendefinisian penentu tipe fungsi.
c) Untuk fungsi yang tidak mempunyai nilai keluaran maka dimasukkan ke dalam tipe void
d) Pernyataan yang diberikan untuk memberikan nilai akhir fungsi berupa pernyataan
return.
e) Suatu fungsi dapat menghasilkan nilai balik bagi fungsi pemanggilnya.

C. DEKLARASI FUNGSI

Suatu fungsi yang memberikan hasil balik selain tipe integer perlu dideklarasikan
sebelum digunakan. Deklarasi fungsi ditulis sebelum fungsi tersebut digunakan.
Bentuk umum dari deklarasi fungsi :
tipe nama_fungsi( argumen1, argumen2, ... );
Jika bagian dari program yang menggunakan fungsi diletakkan sebelum definisi fungsi,
maka deklarasi fungsi diperlukan. Akan tetapi jika bagian program yang menggunakan fungsi
terletak setelah definisi dari fungsi, maka deklarasi fungsi boleh tidak dapat dituliskan. Jika suatu
fungsi memberikan hasil balik, maka nilai hasil balik yang diberikan oleh fungsi dapat dilakukan
oleh statement return yang diikuti oleh nilai hasil baliknya yang ditulis tanda kurung.
Contoh :
return(F);
Contoh program :
#include <stdio.h>
#include <conio.h>

2
int faktorial (int N); /*prototype fungsi*/
int main()
{
int N;
int fak;
printf ("berapa faktorial ? ");scanf ("%d", &N);
fak = faktorial (N);
printf ("%d faktorial = %d\n", N, fak);
getch();
}

int faktorial (int N) /*definisi fungsi*/


{
int I;
int F=1;
if (N<=0)
return (0);
for (I=2;I<=N;I++)
F *= I;
return(F);
}
Output :

3
D. PROTOTIPE FUNGSI
Prototipe fungsi merupakan model dari sebuah fungsi yang berguna untuk mendeklarsian
ciri-ciri fungsi, meliputi :
1. Nama fungsi
2. Tipe nilai balik fungsi
3. Jumlah dan tipe argument

Bentuk umum : jenis_data nama fungsi (jenis_data, jenis_data,…);


Prototipe fungsi tidak perlu dituliskan bila suatu fungsi terletak di atas fungsi yang
memanggilnya.
Contoh : long kuadra(long);
Int maks(int a, int b);
Void garis ();
Long nilai(int,int);
E. REKURSI

Recursion merupakan salah satu metode pemecahan masalah dimana sebuah solusi pada
masalah tersebut bergantung pada solusi dari masalah yang lebih kecil yang merupakan bagian dari
masalah tersebut. Recursion adalah salah satu hal yang paling penting di bidang Computer Science
dan sebaiknya dikuasai oleh mereka yang bergelut di bidangtersebut.

Bahasa pemrograman biasanya mengimplementasikan recursion ini dengan mengijinkan sebuah


fungsi untuk memanggil dirinya sendiri. Pada pembentukan fungsi dengan recursion atau lebih
dikenal dengan recursive function,terdapat dua hal yang penting, yakni penentuan: base case dan step
reduction.

Secara umum, base case merupakan kondisi dimana fungsi akan berhenti (tidak lagi berulang) dan
step reduction adalah bagaimana agar fungsi tersebut kembali memanggil dirinya sendiri dengan
tahapan hingga mencapai base case.

Sebagai contoh, pada operasi perhitungan factorial, dimana kita ketahui bahwa factorial merupakan
hasil yang didapatkan dengan mengalikan angka yang ada hingga mencapai nilai 1.

Contoh: Faktorial dari 5 adalah 5 * 4 * 3 * 2 * 1 = 120.

Dengan demikian kita ketahui bahwa:

5! = 5 * 4 * 3 * 2 * 1

4! = 4 * 3 * 2 * 1
4
3! = 3 * 2 * 1
1! = 1
0! = 1
Secara tidak langsung artinya:
5! = 5 * 4!
4! = 4 * 3!
3! = 3 * 2!
2! = 2 * 1!
1! = 1
0! = 1
Bila kita definisikan dalam bentuk recursive function, maka kita dapatkan bahwa bila nilai akan berhenti
pada saat bertemu 0 atau 1. Hal inilah yang disebut dengan base case.
Sedangkan dapat kita lihat bahwa hasil factorial kita dapatkan dengan mereduksi nilai sebanyak 1 (contoh 5!
Adalah 5 * 4! =>dari 5 ke 4).
Dengan demikian, step reductionnya adalah:

N! = N * (N-1)!
Atau bila kita terjemahkan: factorial(N) = N * factorial (N-1).

Fungsi factorial yang dibahas ini dapat didefinisikan sebagai berikut:

Pada program di atas bila: factorial(5) dipanggil akan menghasilkan instruksi sebagai berikut:

5
Sehingga di dapatkan bahwa factorial 5 adalah 5 * 4 * 3 * 2 * 1 = 120.

6
Contoh program :
#include < stdio.h >
long int Fak_Rekursif ( int N );/* prototype fungsi */
main()
{
int N ;
N = 5;
printf(“%d faktorial = %ld\n”, N, Fak_Rekursif(N));
}

long int Fak_Rekursif ( int N )/* definisi fungsi */


{
long int F;
if ( N <= 1 ) return( 1 ) ;
else
{
F = N * Fak_Rekursif( N – 1);
return(F);
}
}

7
Output :
5 faktorial = 120
Penjelasan :
 Fungsi utama memanggil fungsi Fak_Rekursif dengan mengirimkan nilai 5 untuk
parameter nyata N, yang maksudnya akan dilakukan perhitungan sebanyak 5 faktorial.
 Jika nilai dari N pertama kali yang diberikan oleh fungsi utama bernilai kurang atau sama
dengan satu, maka hasil faktorial yang akan diberikan adalah bernilai 1.
 Jika N pertama kali yang diberikan oleh fungsi utama lebih besar dari 1,maka proses rekursi
akan dilakukan. Misalnya nilai N adalah 5, maka proses rekursi yang pertama adalah :
F=5*Fak_Rekursif(4); Proses ini akan memanggil kembali fungsi dirinya sendiri dengan
mengirimkan nilai 4 sebagai nilai N yang baru. Karena nilai N masih lebih besar dari 1,
maka proses rekursi yang kedua akan dilakukan dengan hasil adalah 4*Fak_Rekursif(3).
Begitu selanjutnya sampai nilai N adalah 1. Untuk nilai N =1 ini, statemen return(1) akan
mengembalikan proses ke bagian yang memanggilnya, yaitu statemen setelah statemen
F=5*Fak_Rekursif(N-1). Statemen return(F) kemudian baru akan mengembalikan proses
ke fungsi utama.

8
F. CONTOH PROGRAM FUNCTION
Contoh Program ke-1 :
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int jumlah;
void bakso()
{
int b;
printf("masukkan jumlah pesanan anda : ");scanf("%d",&b);
jumlah = b*7000;
printf("total harga bakso pesanan anda = %d ", jumlah);
}
void mie_ayam()
{
int my;
printf("masukkan jumlah pesanan anda : ");scanf("%d",&my);
jumlah = my*6000;
printf("total harga mie ayam pesanan anda = %d ", jumlah);
}
void soto_ayam()
{
int soto;
printf("masukkan jumlah pesanan anda : ");scanf("%d",&soto);
jumlah = soto*8000;
printf("total harga soto ayam pesanan anda = %d ", jumlah);
}
void menu_makan()
{
int x;
printf("Pilih Makanan\n");

9
printf(" 1. BAKSO\n 2. MIE AYAM\n 3. SOTO AYAM\n");
printf("Masukkan Pilihan Anda : "); scanf("%d", &x);
if (x==1){bakso();}
else if (x==2) {mie_ayam();}
else if (x==3) {soto_ayam();}
else {printf("Anda memasukkan yg tidak ada di pilihan");}
}
void estehmanis();
void jusjeruk();
void jusalpukat();
void menu_minum()
{
int y;
printf("\n\nPilih Minuman\n");
printf(" 1. ES TEH MANIS\n 2. JUS JERUK\n 3. JUS ALPUKAT\n");
printf("Masukkan Pilihan Anda : "); scanf("%d", &y);
if (y==1){estehmanis();}
else if (y==2) {jusjeruk();}
else if (y==3) {jusalpukat();}
else {printf("Anda memasukkan yang tidak ada di pilihan");}
}
void estehmanis()
{
int stm;
printf("masukkan jumlah pesanan anda : ");scanf("%d",&stm);
jumlah = stm*2000;
printf("total harga es teh manis pesanan anda = %d ", jumlah);
}
void jusjeruk()
{
int jusjer;

10
printf("masukkan jumlah pesanan anda : ");scanf("%d",&jusjer);
jumlah = jusjer*3000;
printf("total harga jus jeruk pesanan anda = %d ", jumlah);
}
void jusalpukat()
{
int alpukat;
printf("masukkan jumlah pesanan anda : ");scanf("%d",&alpukat);
jumlah = alpukat*5000;
printf("total harga jus alpukat pesanan anda = %d ", jumlah);
}
main()
{
menu_makan();
menu_minum();
getch();
}

Output

11
Contoh Program ke-2 :
#include "stdio.h"
#include "conio.h"
long int Fak_Rekursif ( int N )/* definisi fungsi */
{ long int F;
if ( N <= 1 ) return( 1 ) ;
else
{ F = N * Fak_Rekursif( N - 1);
return(F); }
}
int dectobin(int n){
if (n>0){
dectobin(n/2);
printf("%d", n & 1);
} return n; }
void Cetak_Mundur(char S[])
{ int I,N;
for(N=0; S[N];N++);
for (I=N-1;I>=0;I--) printf("%c",S[I]);
printf("\n"); }
int pil; int N; int fak; int n;
char S[40]; char x;
void main()
{ x='y';
do {
clrscr();
printf ("======== Menu =========\n");
printf ("1. Faktorial\n");
printf ("2. Konversi Desimal Ke Biner\n");
printf ("3. String Terbalik\n");

12
printf ("Masukkan pilihan Anda : "); scanf ("%d",&pil);
switch (pil)
{ case 1:
{
printf ("\nMasukkan nilai N : "); scanf ("%d", &N);
fak = Fak_Rekursif(N);
printf("\n%d faktorial = %ld\n", N, fak);}
printf ("\nIngin kembali ke menu awal (y/t)?");
x = getch();
break;
case 2:
{
printf ("\nMasukkan bilangan desimal : "); scanf ("%d", &n);
printf ("\nBiner dari %d adalah ",n);
dectobin(n); }
printf ("\n\nIngin kembali ke menu awal (y/t)?");
x = getch();
break;
case 3:
{
printf ("\nMasukkan Nilai String : "); scanf ("%s",&S);
printf ("\nString terbalik dari %s adalah ",S);
Cetak_Mundur(S); }
printf ("\nIngin kembali ke menu awal (y/t)?");
x = getch();
break;
}
}
while(x=='y');
}

13
Output

14
15

Anda mungkin juga menyukai