Skip to content
12 Februari 2008 / Jeffrey Hermanto Halimsetiawan

Fungsi dalam Bahasa C


 

FUNGSI

Fungsi :

Bagian dari program yang dimaksudkan untuk mengerjakan suatu tugas tertentu dan letaknya dipisahkan dari program yang menggunakannya. Program dari bahasa C dibentuk dari kumpulan-kumpulan fungsi, mulai dari fungsi utama, fungsi pustka, maupun fungsi yang dibuat oleh pemrogram.

Manfaat fungsi :

Fungsi menjadikan program C memiliki struktur yang jelas. Dengan memisahkan langkah-langkah detil ke satu atau lebih fungsi, maka fungsi utama (main( )) akan menjadi lebih pendek, jelas dan mudah dimengerti.

Fungsi-fungsi dapat dijinkan untuk menghindari penulisan yang sama berulang-ulang. Langkah-langkah program yang sama dan sering digunakan berulang-ulang dapat ditulis sekali saja secara terpisah dalam bentuk fungsi-fungsi, selanjutnya bagian program yang membutuhkan langkah-langkah ini cukup memanggil fungsi-fungsi tersebut.

Nilai akhir dari suatu fungsi adalah nilai yang dikembalikan oleh fungsi berdasarkan input parameter-parameter yang dimasukkan.

Flowchart Fungsi

Contoh fungsi:

int rata(int x, int y, int z)

{

int ave;

ave = (x + y + z)/3;

return(ave);

}

Di dalam fungsi dikenal istilah Parameter Formal dan Parameter Aktual :

a. Parameter formal adalah parameter yang terdapat pada pendefinisian sebuah fungsi.

b. Parameter aktual adalah parameter yang terdapat pada saat pemanggilan fungsi.

Cara melewatkan parameter ke dalam suatu fungsi dapat dilakukan melalui dua cara yaitu:

a. Pelewatan parameter melalui nilai (call by value) :

pelewatan parameter ke dalam fungsi dengan menyalin nilai dari suatu variabel aktualnya. Maksudnya adalah fungsi menerima masukan berupa nilai, bukan alamat memori letak dari datanya dan nilai tersebut disimpan di alamat memori yang terpisah dari nilai aslinya yang digunakan oleh bagian program yang memanggil fungsi.

Contoh :

#include <stdio.h>

#include <conio.h>

int kali(int a,int b, int c) //parameter formal

{

int x;

x = a * b * c;

return(x);

}

int main()

{

int a,b,c;

printf(“Masukkan angka 1 : “);

scanf(“%d”,&a);

printf(“Masukkan angka 2 : “);

scanf(“%d”,&b);

printf(“Masukkan angka 3 : “);

scanf(“%d”,&c);

printf(“Hasil perkalian ketiga bilangan adalah %d”,kali(a,b,c)); //parameter aktual

getch();

return(0);

}

b. Pelewatan parameter melalui acuan/referensi (call by reference) :

pelewatan parameter ke dalam fungsi dengan menyalin alamat dari suatu variabel aktualnya. Fungsi yang menerima kiriman alamat ini akan menggunakan alamat yang sama untuk mendapatkan nilai datanya. Hal ini dilakukan dengan menggunakan pointer. Pointer adalah variabel yang merujuk pada alamat lokasi suatu memori tertentu, variable pointer dapat dideklarasikan dengan menuliskan nama variabelnya diawali dengan asterisk (‘*’). Perubahan yang terjadi pada variabel asal akan mengakibatkan perubahan pada variabel pointernya dan sebaliknya.

Contoh :

#include <stdio.h>

#include <conio.h>

void desc_sort(int *bil1,int *bil2) //parameter formal

{

if(*bil1<*bil2)

{

*bil1 = *bil1 + *bil2;

*bil2 = *bil1 – *bil2;

*bil1 = *bil1 – *bil2;

}

}

int main()

{

int a,b,c;

printf(“Masukkan angka 1 : “);

scanf(“%d”,&a);

printf(“Masukkan angka 2 : “);

scanf(“%d”,&b);

printf(“Masukkan angka 3 : “);

scanf(“%d”,&c);

desc_sort(&a,&b); //parameter aktual

desc_sort(&a,&c); //parameter aktual

desc_sort(&b,&c); //parameter aktual

printf(“Hasil descending sort adalah %2d %2d %2d”,a,b,c);

getch();

return(0);

}

Di dalam penggunaan fungsi-fungsi dalam program kita mengenal adanya istilah variable local dan variable global :

a. Variabel lokal :

Variabel yang nama dan nilainya hanya dikenal di suatu blok statement tertentu saja atau di dalam suatu fungsi. Variabel lokal harus dideklarasikan di dalam blok bersangkutan. Variabel lokal akan dihapus dari memori jika proses sudah meninggalkan blok statement letak variable lokalnya.

b. Variabel global :

Variabel yang dikenal di semua bagian-bagian tertentu dari program. Variabel global dapat dibuat dengan cara mendeklarasikannya di luar suatu blok statement atau di luar fungsi-fungsi yang menggunakannya.

  1. fadli / Jul 9 2008 11:54

    kita lagi bingung masalah bahasa c untuk program IRISread
    kita rus modifikasi untuk inputan yang jenis datanya berdeba

    • Jeffrey Hermanto / Jun 13 2009 10:29

      waduh..
      maaf..
      saya kurang tahu mksdnya program IRISread??

      • Echa M.U.M.M.E.T / Des 14 2010 15:22

        g’ dong aquw

      • Jeffrey Hermanto / Des 16 2010 22:54

        ya silahkan dibaca kembali😀

        semoga bermanfaat

      • Reinaldo Fernandy / Des 14 2010 17:35

        saya dapet tugas buat cari potongan kata dari 1 kalimat… misal :input : reinaldo fernandi.. output : menemukan sebuah kata “rei” ,”aldo”,dan”andi” pada huruf ke-1, ke-5, dan ke-13.. tolong di bales ya.. dah deadline nie… T_T

      • Jeffrey Hermanto / Jan 2 2011 14:33

        ya tinggal lakukan looping kata-kata yang dicari, kemudian lakukan looping mulai dari indeks ke-0 input sampai dengan indeks ke- (length input – length kata) dari situ bisa digunakan fungsi strcmp.

        semoga bermanfaat😀

  2. phi-thoeng at Batavia / Jun 9 2009 15:07

    gimana caranye kalu mo bikin program (dgn FUNGSI) yang hasilnye sbb:
    Menu Menghitung Luas:
    1> Segitiga
    2> Bujursangkar
    3> Persegipanjang

    dan
    Menu Gaji Karyawan:
    1> Input Nama
    2> Input Gaji
    3> Input Bonus

    Mksudnye adlah jika program tersebut dijalankan misl “Menu Menghitung Luas”, maka user diminta memilih apakh 1, 2, or 3. Jika pilihannye 2, maka program menghitung Luas Bujursangkar dijalankan utk menrima input, lalu menampilkan hasilnye, dan program jg akan menanyakan user apa msh mau itung lg or tdk… kira2 spt itu…
    Kedua program tersebut hrs dibuat dgn menggunakan FUNGSI.
    mhn pencerahannye, aye msh awam bngt nh…
    trimakasih sebanyak-banyaknye…

    • Jeffrey Hermanto / Jun 13 2009 10:35

      kalo untuk program seperti itu mudah kq..
      contohnya :

      
      #include 
      
      int main(){
          int pilihan;
          do {
              printf("1. Segitiga\n");
              printf("2. Bujursangkar\n");
              printf("3. Persegi Panjang\n");
              printf("Pilihan : ");
              scanf("%d",&pilihan);
              fflush(stdin);
              switch (pilihan){
                    case 1 :
                           //program untuk menghitung luas segitiga
                          break;
                    case 2 :
                          //program untuk menghitung luas bujursangkar
                          break;
                    case 3 :
                           //program untuk menghitung luas persegi panjang
                          break;
              }
          }
          while (pilihan != 0);
          return 0;
      }
      
      • phi-thoeng at Batavia / Jun 15 2009 11:29

        bukan yg gitu, (but mksh bwt infonye jg)
        tp yg gni: ada fungsi menghitung LuasSegitiga, fungsi menghitung LuasBujursangkar, dan ada juga fungsi menghitung LuasPersegipanjang… Masing2 pk fungsi….
        Duuhhh bingung nh…
        (maksh)

      • Jeffrey Hermanto / Jun 16 2009 10:57

        o0ooo..gk paham sama mksdnya itu yg dl..😀

        jadi kan tinggal dbuat fungsi aja,

        
        double hitungLuasPersegi(double s)
        {
            return s*s;
        }
        
        double hitungLuasPersegiPanjang(double p, double l)
        {
            return p*l;
        }
        
        double hitungLuasSegitiga(double a, double t)
        {
            return a * t * 0.5;
        }
        

        jadi kalo d contoh sblmnya, yg di case 1 itu kira2 isinya ky gini.

        
        switch (pilihan)
        {
             case 1 :
                 double a,t,L;
                 printf("Input alas dan tinggi segitiga : ");
                 scanf("%lf %lf",&a,&t);
                 L = hitungLuasSegitiga(a,t);
                 printf("Luas Segitiga : %.2lf\n",L);
                 break;
        }
        

        kira2 seperti contoh di atas..
        semoga bermanfaat..😀

  3. phi-thoeng at Batavia / Jun 22 2009 15:26

    waaahh, kyanye aye lebih cocok yg atas tuh, krn penulisannye pk Fungsi…😉
    makasih banyak bang…… ni bermanfaat bnget bwt aye n tmn2 yg emang baru bljr bhs C….
    Kpn2 kalu aye ksh prtanyaan lg msh blh kan?… msh diterima kan?… n (yg pnting) dbls kan?…😀

    • Jeffrey Hermanto / Jun 28 2009 14:10

      y silahkan, akan coba saya bantu klo memang ada waktu..
      semoga bermanfaat😀

  4. herman / Des 13 2009 15:25

    bagai mana program mencari data mahasiswa

    • Jeffrey Hermanto / Des 13 2009 20:16

      data mahasiswa apa dan dari mana mksdnya? krg jelas mksdnya ???

  5. Fania / Jan 20 2010 20:47

    tulung dun.. kl soal yg ini gimana y? pk fungsi..
    /*3. menghitung jarak maksimum(xmax) dan ketinggian maksimum (hmax) dr sebuah peluru yg ditembakkan dgn sudut elevasi A [g=10m/s2, gunakan sin() dan cos()]*/

    makaci..

    • Jeffrey Hermanto / Jan 22 2010 23:03

      klo untuk perhitungan xMax dan yMax seperti itu tinggal dbentuk ke dalam rumusnya itu..
      tetapi untuk fungsi sin() dan cos() nya bukan dalam bentuk sudut tp radian

      semoga bermanfaat😀

  6. Ermaliza Defi / Jun 22 2010 20:33

    bagus infonya

    By: [ Ermaliza Defi]
    ada di Kampus [ Univ. Andalas ]
    pada – Fakultas Teknik
    jurusan <Teknik Elektro>

    • Jeffrey Hermanto / Agu 15 2010 12:09

      Terima Kasih.
      Semoga bermanfaat😀

    • Jeffrey Hermanto / Sep 9 2010 18:48

      terima kasih
      semoga bermanfaat😀

  7. Reinaldo Fernandy / Des 13 2010 14:46

    kaks bantu saya tulis syntax buat cari penggalan nama dari string . . . misalnya “reinaldo” input kata yang ingin di cari “rei” , “aldo”…
    outputnya :
    jumlah penemuan : 2
    lokasi penemuan 2 : huruf ke-1 dan huruf ke-5…

    saya dah puyeng nie… tolong di bantu ya… thx

  8. Mas Ikun / Des 17 2010 07:50

    yanggg program ke duaa kok erooosss yaa,????
    “non digit in number and hexadecimal”

    • Jeffrey Hermanto / Des 19 2010 13:52

      yang mana ya?

  9. ufik / Jan 18 2011 11:23

    mas kalo buat fungsi kali di mna parameter yang di gunakan adalah a dan n, adapun proses a*n adalah di wujudkan a di jumlahkan sebanyak n kali?

    tolong ya mas!!

    • Jeffrey Hermanto / Jan 24 2011 19:22

      bukannya mudah sekali
      int Kali (int a, int n)
      {
      return a*n;
      }

      semoga bermanfaat😀

  10. rara / Mei 22 2011 20:38

    ajarin dunkz k…….

  11. zanuar / Nov 24 2011 14:05

    sangat bermanfaat ni !!!😀

    terimakasih

    • Jeffrey Hermanto Halimsetiawan / Des 1 2011 22:20

      terima kasih, semoga bermanfaat🙂

Trackbacks

  1. 2010 in review « Tutorial Pemrograman Komputer Sederhana

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: