Page language

Senin, 09 April 2012

Fungsi


FUNGSI
A.    Definisi Fungsi dalam Bahasa C
Bagian dari program yang dimaksudkan untuk mengerjakan suatu tugas tertentu dan letaknya dipisahkan dari bagian program yang menggunakan.  Fungsi biasa disebut dengan Method, subroutine ataupun prosedur yang dapat dipanggil oleh fungsi lain.
Fungsi secara umum terdiri dari 2 buah komponen utama, yaitu definisi fungsi dan tubuh fungsi. Definisi fungsi berisi tipe dari fungsi, nama dan argument-argumentnya sedangkan tubuh dari fungsi berisi dengan statement-statement yang akan melakukan tugas yang diberikan kepada fungsi yang bersangkutan.
Contoh :
Tipe nama_fungsi(argument1, argument2){ //Definisi Fungsi
....                                 //Tubuh Fungsi
}

Penerapan :
int fungsi_Kalkulus(int a, int b){ //Definisi Fungsi
      if(a<b){
          printf(“nilai b lebih besar dari a”); //Tubuh Fungsi
}                                    
}

Tipe data void dapat dituliskan sebagai pengganti argumen untuk fungsi yang tidak menggunakan argumen. Argument yang ada di definisi fungsi ini disebut dengan argumen formal/formal argument.

B.     Manfaat Fungsi
a)      Menjadikan program C mempunyai struktur yang jelas. Fungsi main dapat dibuat lebih ringkas dan mudah dibaca karena beberapa instruksi menjadi fungsi-fungsi terpisah.
b)      Fungsi menghindarkan operasi/instruksi yang sama ditulis berulang kali. Hal ini merupakan fungsi dari fungsi yang dapat dipanggil oleh fungsi/method yang lain.

C.     Variabel Fungsi
Terdapat 3 variabel fungsi dalam bahasa C yaitu
a)      Variabel Lokal
Variabel yang didefinisikan dalam fungsi dan tidak dapat digunakan oleh fungsi yang lain
Contoh 1:
#include <stdio.h>
void printA();
void main(){
      int a = 5; //variabel didalam fungsi main()
      printf("nilai a pada fungsi main adalah %d \n", a);
      printA();
}
void printA(){
      int a = 9;
      printf("nilai a pada fungsi printA adalah %d \n", a);
}

Contoh 2 :
#include<stdio.h>
float Tambah(float A,float B);
main(){
      float C,Hasil;   // variabel lokal
      Hasil=Tambah(2,3);
      printf("tampilan pada fungsi main\n");
      printf("%f\n",C);
}
float Tambah(float A,float B){
      float C;     // variabel lokal
      C=A+B;
      printf("tampilan pada fungsi tambah\n");
      printf("%f\n",C);
      return(C);
}

b)      Variabel Global
Variabel yang didefinisikan diluar fungsi dan dapat digunakan oleh fungsi-fungsi yang memanggilnya.
Contoh 1 :
#include <stdio.h>
void printA();
int a; // variabel diluar fungsi
void main(){
      a = 5;
      printf("nilai a pada fungsi main adalah %d \n", a);
      printA();
}
void printA(){
      printf("nilai a pada fungsi printA adalah %d \n", a);
}
                        Contoh 2 :
#include<stdio.h>
float Tambah(float A,float B);
float C,Hasil;   //variabel Global
main(){
      Hasil=Tambah(2,3);
      printf("tampilan pada fungsi main\n");
      printf("%f\n",C);
}
float Tambah(float A,float B){
      C=A+B;
      printf("tampilan pada fungsi tambah\n");
      printf("%f\n",C);
      return(C);
}



c)      Variabel Statis
Deklarasi sama dengan variabel lokal akan tetapi dalam variabel statis variabelnya akan tetap ada dan nilainya tetap dipertahankan walaupun proses telah keluar dari bloknya, dengan kata lain suatu proses yang telah keluar dari suatu blok (fungsi) yang mendeklarasikan dan kemudian masuk kembali ke blok (fungsi) tersebut, maka nilai terakhir dari variabel statik masih tetap digunakan.
Contoh :
#include <stdio.h>
int incrementA();
void main(){
      int a; //variabel didalam fungsi main()
      a = incrementA();
      printf("nilai a pada fungsi main adalah %d \n", a);
      a = incrementA();
      printf("nilai a pada fungsi main adalah %d \n", a);
}
int incrementA(){
      static int a = 0;
      a++;
      return a;
}

D.    Pengiriman Parameter
Pengiriman parameter ke suatu fungsi dapat dilakukan dengan dua cara yaitu penerimaan secara nilai (by value) atau secara acuan (by reference).
·         Pengiriman secara nilai(by value)
Parameter ini yang dikirimkan ke fungsi adalah nilai dari datanya, bukan alamat memori letak dari datanya,
Contoh :
#include <stdio.h>
void tes(int x);
void main(){
  int a=4,b=6,c=7;
  tes(a+b-c);
}
void tes(int x){
  printf("%d",x);
}
·         Pengiriman secara acuan(by reference)
Parameter ini yang dikirimkan ke fungsi adalah alamat letak dari nilai datanya bukan dari nilai datanya.
Contoh :
#include <stdio.h>
void tes(int *x);
void main(){
  int a=4;
  tes(&a);
  printf("%d",  a);
}
void tes(int *x){
  *x=7;
}

E.     Array Sebagai Parameter
Argumen dari sebuah fungsi dapat berupa array, Array sebagai argumen fungsi dapat berupa array satu dimensi maupun multidimensi. Untuk array 1 dimensi, ukuran array tidak perlu dituliskan, sedangkan untuk array 2 dimensi, ukuran kedua harus dituliskan.
·         Pengiriman parameter berupa array dimensi satu
Merupakan pengiriman parameter secara acuan/by reference, karena yang dikirimkan adalah alamat dari elemen pertama array, bukan seluruh nilai-nilai elemennya. Alamat elemen pertama dari array dapat ditunjukan oleh nama arraynya yang tidak ditulis dengan indexnya. Bentuk tersebut akan tampak sebagai argumen di parameter nyata untuk bagian yang memanggil fungsi.
Contoh :
#include<stdio.h>
void Cetak_Mundur(char S[]);
void main(){
      char S[]="Ini Nilai String";
      Cetak_Mundur(S);
}
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");
}

·         Pengiriman parameter berupa array dimensi dua
Pengiriman parameter berupa array dimensi dua, untuk parameter nyatanya dapat dilakukan dengan cara yang sama dengan pengiriman parameter berupa larik dimensi satu yaitu dengan mengirimkan alamat elemen pertama dari array, perbedaanya adalah terletak diparameter formalnya, dimana jumlah dari maksimum kolom yang telah dideklarasikan dibagian program yang memanggil fungsi harus ikut disebutkan.
Contoh :
#include<stdio.h>
void printTable(int array[][5],int xlen,int ylen);
void main(){
      int arr[][5]={1,2,3,4,5,6,7,8,9,10};
      printTable(arr,2,5);
}
void printTable(int array[][5],int xlen,int ylen){
      int i,j;
      for(i=0;i<xlen;i++){
             for(j=0;j<ylen;j++)
                    printf("%d\t",array[i][j]);
                    printf("\n");
      }
}

F.       



0 komentar:

Posting Komentar

language

EnglishFrenchGermanSpainItalianDutchRussianPortugueseJapaneseKoreanArabicChinese Simplified