Jumat, Juli 31, 2015

Programming in C - Part 16: Fungsi dalam bahasa C

Fungsi adalah blok perintah yang digunakan untuk melakukan pekerjaan tertentu, baik yang menghasilkan nilai balik ataupun tidak, yang diletakkan diluar prosedur utama. Blok perintah ini dapat digunakan berulang kali dengan memanggil namanya dan parameter yang dibutuhkan. Penggunaan fungsi dalam sebuah program daopat mempermudah dalam hal maintaing program sekaligus mempermudah tracking jika terdapat kesalahan.Fungsi dapat diletakkan sebelum atau sesudah prosedur utama (main). Jika fungsi diletakkan setelah fungsi utama, maka anda harus 'memberitahukan' kepada program mengenai nama fungsi serta jenis data yang digunakan dalam fungsi tersebut. Fungsi juga dapat diletakkan pada file terpisah yang dapat dicompile sehingga menjadi seperti sebuah 'perpustakaan' yang dapat digunakan oleh semua program yang dibuat.

/* =======================================
 * Contoh Penggunaan Fungsi
 * Created by: Sastrawan
 * Topik : menggunakan fungsi
 * file : fungsiAritmatik.c
 * ========================================
 */

 #include<stdio.h>
 void tampilkanHasil(int, int) ;
 void tampilkanArray(int namaArray[], int panjang);
 int jumlah(int,int) ;
 int sum(int deretAngka[], int panjang) ;
 int main( int argc, char *argv[])
 {
   int hasilTambah = 120000 ;
   int angka[]={100,20,10,5,10};
  tampilkanArray(angka, sizeof(angka)/4) ;

  tampilkanHasil(100,20);
 
  printf("\n\njumlah yang dihasilkan dari fungsi jumlah adalah adalah : %d \n\n",jumlah(100,20));
  printf("\n\njumlah yang dihasilkan dari fungsi sum adalah adalah : %d \n\n",sum(angka,sizeof(angka)/4));
  printf("\n\nSekedar demo variabel hasilTambah sebagai var global tidak berubah %d",hasilTambah);
  return 0;

 }

 void tampilkanHasil(int a, int b) {         // hanya menampilkan
    int hasilTambah, hasilKurang, sisaBagi,hasilKali;
    double hasilBagi ;
  
    hasilTambah = a + b ;  
    hasilKurang    = a - b ;
    sisaBagi    = a % b ;
    hasilBagi    = (double)a/b ;
    hasilKali    = a * b ;
  
    printf("\n\nIni adalah hasil dari fungsi tampilkanHasil \n\n") ;
    printf("Operasi Aritmatika a = %d, dan b = %d \n", a,b);
    printf("Hasil penjumlahan a + b = %d \n", hasilTambah);
    printf("Hasil pengurangan a - b = %d \n", hasilKurang);
    printf("Hasil sisa pembagian a  b = %d \n", sisaBagi);
    printf("Hasil Pembagian a / b = %.2f \n", hasilBagi);
    printf("Hasil perkalian a * b = %d \n", hasilKali);
 }

void tampilkanArray(int namaArray[], int panjang) {       //hanya menampilkan array int
  
    printf ("Isi dari array : ") ;

    int i ;
    for (i=0 ; i<panjang ; i++)
    {
      printf("%d  ",namaArray[i]);
    }
}
    

int jumlah(int a, int b) {          //menjumlahkan dua angka integer
    return a+b;
    }
  

int sum(int deretAngka[], int panjang) {       //menjumlahkan integer array
    int i ;
    int hasilSum =0  ;
    for(i = 0 ; i < panjang ; i++)
    {
        hasilSum += deretAngka[i] ;
    }
  
    return hasilSum ;
  
  
    }

  
Jika dijalankan akan menghasilkan output sbb:

Isi dari array : 100  20  10  5  10

Ini adalah hasil dari fungsi tampilkanHasil

Operasi Aritmatika a = 100, dan b = 20
Hasil penjumlahan a + b = 120
Hasil pengurangan a - b = 80
Hasil sisa pembagian a  b = 0
Hasil Pembagian a / b = 5.00
Hasil perkalian a * b = 2000

jumlah yang dihasilkan dari fungsi jumlah adalah adalah : 120

jumlah yang dihasilkan dari fungsi sum adalah adalah : 145

Penjelasan :

dalam program ini terdapat 4 fungsi yang masing-masing memiliki tugas tertentu. Keempat nama fungsi tersebut di "umumkan" pada awal program yaitu pada baris :

 void tampilkanHasil(int, int) ;
 void tampilkanArray(int namaArray[], int panjang);
 int jumlah(int,int) ;
 int sum(int deretAngka[], int panjang) ;


Adapun listing atau isi dari fungsi tersebut dibuat di akhir prosedur utama 
Jika diperhatikan terlihat bahwa nama variabel boleh tidak disebutkan dalam parameter atau OPTIONAL. Tetapi jenis data masukan dan keluaran harus disebutkan. Pada contoh diatas, baris pertama (fungsi tampilkan hasil) hanya menyebutkan tipe data, sedangkan fungsi tampilkanArray menyebutkan tipe data dan nama variabel. Kedua cara ini menghasilkan outcome yang sama.  Deklarasi ini memberitahukan kepada program bagaimana menggunakan fungsi fungsi tersebut. tanpa adanya deklarasi ini maka akan terjadi  pesan kesalahan pada saat menjalankan program

Fungsi tampilkanHasil bertugas untuk menampilkan hasil perhitungan artimatika dua angka yang diberikan sebagai parameter.  Perhitungan meliputi kali, bagi, tambah kurang, sisa bagi dst (lihat listing program)
Fungsi tampilkanArray bertugas menampilkan array (deretan)angka integer sebanyak bilangan tertentu.
Kedua fungsi ini tidak memiliki nilai luaran. Oleh karena itu diberikan tipe data luaran VOID.

fungsi tampilkanHasil dipanggil dari program utama dengan cara :
tampilkanHasil(100,20);
angka yang ada dalam tanda kurung ini disebut dengan parameter. Jadi parameter pada fungsi diatas terdiri dari dua bilangan tipe integer. Ini harus sesuai dengan parameter fungsi pada definisinya.
Perhatikan definisi fungsi di luar prosedur utama

void tampilkanHasil(int a, int b)
dengan demikian a akan diganti dengan 100 dan b diganti 20

Selanjutnya nilai inilah yang diolah di dalam fungsi. Jika di dalam fungsi terdapat perintah :

a + b, maka akan diganti dengan 100 + 2 ;

Fungsi jumlah dan fungsi sum
Kedua fungsi ini menghasilkan luaran berupa integer.

int jumlah(int a, int b)
int sum(int deretAngka[], int panjang)


Fungsi jumlah memiliki 2 parameter yaitu a dan b yang keduanya bertipe integer.fungsi ini menjumlahkan kedua angka yang diberikan sebagai parameter tersebut. Untuk mendapatkan luaran, maka fungsi menggunakan perintah

return a + b ;

jadi jumlah(4,2) akan menghasilkan 4+2 = 6;

Kelemahan dari fungsi jumlah ini adalah bahwa ia hanya dapat digunakan untuk menjumlahkan dua angka saja. Untuk menjumlahkan deretan angka diperlukan fungsi baru yaitu Fungsi sum. Fungsi sum menggunakan array of integer dan banyaknya elemen array sebagai parameter. Selanjutnya fungsi mulai membaca isi array dan menjumlahkannya satu persatu sampai selesai untuk kemudian memberikan hasil perhitungannya kepada program pemanggil.

   int angka[]={100,20,10,5,10};

Pada contoh di atas, array diberi nama angka dan berisi hanya 5 angka. Jika ingin menjumlahkan angka angka tersebut maka dapat menggunakan fungsi sum dengan cara sbb

sum(angka,5)
ini akan menghasilkan 100+20+10+5+10 = 250

0 comments:

Posting Komentar

Write your comment here