Selasa, 22 April 2014

Function Definition and Function Prototype

5.5 Function Definition

Berikut adalah contoh dari pendefinisian function (fungsi):

/* Fig. 5.3: fig05_03.c
Creating and using a programmer-defined function */
#include <stdio.h>
int square( int y ); /* function prototype */
/* function main begins program execution */
int main( void )
 {
int x; /* counter */
 /* loop 10 times and calculate and output square of x each time */
 for ( x = 1; x <= 10; x++ ) {
      printf( "%d  ", square(x)  ); /* function call */
   } /* end for */
   printf( "\n" );
getch();
   return 0; /* indicates successful termination */
 } /* end main */
/* square function definition returns square of parameter */
int square( int y ) /* y is a copy of argument to function */
{                                                            
return y * y; /* returns square of y as an int */      
} /* end function square */



Fungsi dalam contoh di atas didefinisikan:
int square( int y ); /* function prototype */
Sedangkan dalam main, fungsi dipanggil dengan printf:
printf( "%d  ", square( x ) ); /* function call */
Ini berarti bahwa fungsi mendapatkan salinan dari nilai x untuk digunakan dalam parameter 'int y'. Setelah fungsi mendapatkan nilai dari y yang berasal dari nilai x, maka fungsi akan dijalankan dengan menghitung nilai y*y. Hasil itu kemudian dikembalikan ke dalam printf yang memanggil fungsi tersebut. Dengan kata lain, nilai yang dikembalikan tersebut, akan menjadi nilai dari fungsi yang selanjutnya di tampilkan hasilnya dengan printf. Proses ini diulang sebanyak 10 kali dengan repetition statement.

Format untuk pendefinisian fungsi adalah sebagai berikut:
return-value-type function-name( parameter-list )
{
definitions
statements
}

return-value-type: tipe data dari nilai yang akan dikembalikan (return)
function-name: Nama fungsi
parameter-list: Menjabarkan parameter-parameter yang digunakan dalam fungsi ketika fungsi dipanggil

ada 3 cara untuk mengembalikan kontrol fungsi ke tempat dimana fungsi tersebut dipanggil. Bila fungsi tidak mengembalikan hasil apapun, maka kontrol fungsi akan berakhir secara otomatis ketika kurung kurawal penutup fungsi dicapai. Bisa juga dengan menuliskan statement:
return;
Jika fungsi mengembalikan hasil tertentu, maka dapat ditulis:
return expression;
Dimana expression adalah nilai yang dikembalikan ke pemanggil.

Berikut adalah contoh lain dari penggunaan fungsi untuk mencari nilai maksimum dari 3 integer:

/* Fig. 5.4: fig05_04.c
   Finding the maximum of three integers */
 #include <stdio.h>
int maximum( int x, int y, int z ); /* function prototype */
/* function main begins program execution */
 int main( void )
 {
   int number1; /* first integer */
   int number2; /* second integer */
   int number3; /* third integer */

   printf( "Enter three integers: " );
   scanf( "%d%d%d", &number1, &number2, &number3 );
 
   /* number1, number2 and number3 are arguments
      to the maximum function call */
   printf( "Maximum is: %d\n", maximum(number1, number2, number3);
getch();
   return 0; /* indicates successful termination */
 } /* end main */

/* Function maximum definition */                                
/* x, y and z are parameters */                                  
int maximum( int x, int y, int z )                                
{                                                                    
int max = x; /* assume x is largest */                                                                                            
if ( y > max ) { /* if y is larger than max, assign y to max */      
max = y;                                                      
} /* end if */                                                                                                                        
if ( z > max ) { /* if z is larger than max, assign z to max */      
max = z;                                                      
} /* end if */                                                                                                                        
return max; /* max is largest value */                    
} /* end function maximum */



5.6 Function Prototype

Function prototype (prototype fungsi) memberitahu compiler tipe data yang akan dikembalikan oleh fungsi, jumlah parameter yang diterima oleh fungsi, type parameter, dan urutan parameter-parameter yang akan digunakan.
prototype fungsi untuk contoh program maximum di atas adalah:
int maximum( int x, int y, int z ); /* function prototype */
prototype fungsi menyatakan bahwa fungsi maximum menggunakan 3 parameter bertipe int dan memunculkan hasil bertipe data int.
pemanggilan fungsi yang tidak sesuai dengan prototype fungsi akan menghasilkan error. Seperti misalnya, bila prototype fungsi bertipe data void, kemudian fungsi itu menuliskan return bertipe data int yang seharusnya mengembalikan hasil integer, maka akan terjadi error.
Prototype fungsi juga dapat mengubah tipe data seperti contoh:
printf( "%.3f\n", sqrt( 4 ) );
fungsi math library sqrt bisa dipanggil dengan tipe data integer walaupun fungsi tersebut dispesifikan untuk tipe data double. Fungsi tersebut masih dapat berjalan dengan baik.
Namun bila tipe data double diubah ke tipe data integer oleh fungsi, maka akan muncul hasil yang salah. Tipe data yang bisa diubah dengan baik hanyalah tipe data rendah yang diubah ke tipe data yang lebih tinggi. Berikut adalah penjabaran tipe data mulai dari yang tinggi ke yang rendah.


Tidak ada komentar:

Posting Komentar