Fungsi adalah sebuah blok intruksi yang dieksekusi dan dipanggil dari bagian tubuh program, intinya fungsi berguna untuk :
· Mengurangi pengulangan penulisan program yang berulangan atau sama,
· Dapat melakukan pendekatan top-down dan divide and conquer,
· Program besar dapat dipisahkan menjadi program-program kecil,
· Program menjadi terstruktur, sehingga mudah dipahami dan dapat dikembangkan,
· Kemudahan dalam mencari kesalahan-kesalahan karena alur logika jelas dan kesalahan dapat dilokalisasi dalam suatu modul tertentu saja,
· Modifikasi program dapat dilakukan pada suatu modul tertentu saja tanpa mengganggu keseluruhan program,
· Mempermudah dokumentasi,
· Reusability adalah suatu fungsi yang dapat digunakan kembali oleh program atau fungsi lainnya.
Kategori Fungsi Dalam C/C++
Standard Library Function
Yaitu fungsi-fungsi yang telah disediakan oleh C/C++ di dalam file-file header atau librarynya. Misalnya: clrscr(), printf(), getch() untuk function ini kita harus mendeklarasikan terlebih dahulu library yang akan digunakan yaitu dengan menggunakan preprosesor direktif.
Programmer-Defined Function
Adalah fungsi yang dibuat oleh programmer sendiri. Fungsi ini memiliki nama tertentu yang unik, letaknya terpisah dan program utama, juga bisa dijadikan satu ke dalam suatu library yang dibuat programmer itu sendiri yang kemudian diincludekan untuk penggunanya.
Pendeklarasian Fungsi Tanpa Tipe (menggunakan void)
Terkadang ada fungsi yang tanpa memerukan pengembalian nilai. Misalkan sebuah fungsi yang hanya mencetak kalimat ke layar monitor tanpa memerlukan adanya pertakaran parameter. Dalam kondisi ini dipergunakan kata kunci void. Pemanggilan fungsi harus disertai dengan tanda ().
Cara Pelewatan Argumen Fungsi
a. Pass by value
Pemanggilan adalah cara yang dipakai untuk seluruh fungsi buatan. Pada pemanggilan dengan nilai, nilai dan parementer aktual akan ditulis ke parementer normal berubah. Dengan cara ini parementer aktual tidak bisa berubah walaupun parementer normal berubah.
b. Pass by reference
Pemanggilan dengan cara reference merupakan cara untuk melewatkan alamat atau variabel kedalam fungsi. Cara ini dapat dipakai untuk mengubah isi suatu variabel diluar fungsi dengan melakanakan pengubahan didalam fungsi.
Nilai default dalam argument
Ketika mendeklarasikan fungsi maka setiap paremeter yang dideklarasikan dapat diberikan sebuah nilai default. Nilai default ini akan digunakan bila dalam pemanggilan fungsi tidak diberikan kepada paremeter.
Fungsi Rekursif
Fungsi rekursif adalah suatu fungsi yang memanggil dirinya sendiri. Artinya fungsi tersebut dipanggil dalam fungsi tubuhnya sendiri. Fungsi ini sangat berguna bila diimplementasikan untuk pekerjaan pengurutan data atau menghitung nilai factorial suatu bilangan.
Prototype fungsi
Sampai saat ini setiap dideklarasikan fungsi baru diletakkan diatas fungsi main (). Namun ada alternative lain didalam pendeklarasian fungsi baru yaitu dideklarasikan dibawah fungsi main menggunakan prototype fungsi.
Keuntungan memakai prototype yaitu compiler akan melakukan konversi seandainya antara type parementer dalam definisi dan parementer saat pemanggilan fungsi tidak sama atau akan menunjukkan kesalahan apabila jumlah parementer dalam definisi dan pemanggilan berbeda.
Sintak prototype:
Tipe nama (argumen1, argumen2,..);
Sama seperti pendeklarasian judul fungsi,kecuali :
1. Tidak memiliki baris pernyataan (tubuh fungsi) yang ditandai dengan { dan }
2. Diakhiri dengan tanda ;
3. Dalam pendeklarasian argumennya cukup mendeklarasikan tipe datanya saja. Walaupun sangat dianjrkan untuk menyertakan argument lengkap.
Contoh program :
Program coding menghitung luas persegi panjang
#include <stdio.h>
typedef int angka;
void main()
{
angka p,l,L;
printf(“masukkan panjangnya : “);
scanf(“%d”,&p);
printf(“masukkan lebarnya : “);
scanf(“%d”,&l);
L=p*l;
printf(“luasnya adalah %d”,L);
getch();
}
Program coding flowchart hasiltambah,kurang,kali,bagi
#include <stdio.h>
typedef int angka;
void main()
{
angka bil1,bil2,hasiltambah,hasilkurang,hasilkali,hasilbagi;
printf(“masukkan bilangan 1 : “);scanf(“%d”,&bil1);
printf(“masukkan bilangan 2 : “);scanf(“%d”,&bil2);
hasiltambah = bil1+bil2;
hasilkurang = bil1-bil2;
hasilkali = bil1*bil2;
hasilbagi = bil1/bil2;
printf(“hasil tambahnya : %d “,hasiltambah);
printf(“nhasil kurangnya : %d “,hasilkurang);
printf(“nhasil kalinya : %d “,hasilkali);
printf(“nhasil baginya : %d “,hasilbagi);
getch();
}