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.


Read more »»  

Senin, 14 April 2014

Array

Bab 6.2-6.3
Pengertian Array

Array adalah data struktur yang merelasikan item data yang sama atau sejenis. Array dan struktur itu static, jadi tidak akan berubah selama program tereksekusi.

Sebuah array bertugas mengelompokkan item data/variabel yang bertipe sama dan bernama sama dan dapat secara individual dirujuk dengan menambahkan indeks pengenal unik. Misalnya, 10 tipe nilai integer dapat dideklarasikan sebagai sebuah array tanpa harus mendeklarasikan 10 variabel yang berbeda (masing-masing dengan identitas sendiri). Sebaliknya, menggunakan array, integer nilai 10 yang disimpan di lokasi memori yang berdekatan, dan semua dapat diakses menggunakan pengidentifikasi yang sama, dengan indeks yang benar. Array menempati ruang di memori. Anda tinggal tentukan jenis dari setiap elemen dan jumlah elemen yang dibutuhkan oleh setiap array sehingga komputer dapat menyisakan jumlah yang sesuai dengan kapasitas memori. Array juga bisa berisi jenis data lainnya. Sebagai contoh, array jenis char dapat digunakan untuk menyimpan karakter string. Value yang berada didalam [ ] dinamakan index.
Sayangnya array cuma bisa mengerti huruf abjad, angka dan underscore (_). Suatu array dimulai dari hitungan [0] (nol), yang disebut zeroth element. Kemudian baru elemen kedua [1] elemen ketiga [2] dst. Nama array tidak bisa dimulai dengan angka atau digit. Untuk contoh ada di post berikut: Klik Disini
Operator dalam Array :
Operator Asosiasi Fungsi/Tipe


Read more »»  

Minggu, 13 April 2014

Contoh - contoh Array dan cara membuat fungsi dengan array

array dideklarsaikan dengan contoh berikut nama_variabel[ a ]; angka didalam tanda [ ] menunjukan total tempat yang bisa ditampung untuk array tersebut. khusus untuk array bertipe char / string jumlahnya harus a+1, hal ini untuk meanmpung karakter null. conohnya: kota[8] = {'m', 'a', 'l', 'a', 'n', 'g', '\0'} karakter null sendiri adalah tanda batas akhir di sebuah array char atau string.

nilai pada array bisa langsung dimasukan secara langsung dengan cara berikut:

contoh: n[10] = {32, 27, 64, 18,...37} , dengan demikian array n[0] (dimulai dari  0) akan bernilai 32, array n[1]  bernilai 27 dan seterusnya.


Pengertian define

dari contoh diatas (line 2) terdapat pernyataan #define SIZE 10. pernyataan ini akan menyuruh preprosesor untuk memasukan nilai variabel SIZE menjadi 10 secara tetap sehingga saat di compile variabel bernama "SIZE" akan secara otomatis diubah dengan nilai 10.

Membuat Fungsi dengan Array

penulisan fungsi menggunakan array adalah dari:

menjadi bentuk:


 fungsi bentuk array juga memili parameter yang digunakan untukkomunikasi antara fungsi dan pemanggilnya.


contoh untuk lebih detailnya seperti berikut:


Read more »»  

Multiple Subscripted Arrays

6.9 Multiple Subscripted Arrays

Array dalam C bisa saja memiliki subscript lebih dari 1. Array dengan lebih dari 1 subscript disebut dengan Multidimensional array. Array dengan 2 subscript memiliki baris dan kolom yang dapat membentuk suatu tabel. Subcript pertama biasanya dianggap sebagai baris dan subscript kedua dianggap sebagai kolom.



array int a[2] [2] bisa didefinisikan seperti contoh di bawah ini:

int a[ 2 ][ 2 ] = { { 1, 2 }, { 3, 4 } };
kurung kurawal pertama mendefinisikan nilai array mulai dari baris pertama, yaitu index baris ke 0. Kurung kurawal kedua menunjukan pendefinisian nilai array pada index berikutnya, yaitu index baris ke 1. Sehingga hasil yang diinputkan ke array tersebut adalah:
a[0][0] = 1 (index baris ke 0, index kolom ke 0)
a[0][1] = 2 (index baris ke 0, index kolom ke 1)
a[1][0] = 3 (index baris ke 1, index kolom ke 0)
a[1][1] = 4 (index baris ke 1, index kolom ke 1)
Bila nilai yang dituliskan kurang dari jumlah index yang disediakan, maka sisa elemen yang tidak memiliki nilai tersebut akan menjadi 0. Seperti misalnya:
int a[ 2 ][ 2 ] = { { 1 }, { 3, 4 } };
Maka elemen index yang tidak dituliskan tersebut akan bernilai 0.
a[0][0] = 1
a[0][1] = 0
a[1][0] = 3
a[1][1] = 4

berikut adalah contoh program untuk menggambarkan pendefinisian array:

/* Fig. 6.21: fig06_21.c
Initializing multidimensional arrays */
#include <stdio.h>

void printArray( const int a[][ 3 ] ); /* function prototype */

/* function main begins program execution */
int main( void )
{
/* initialize array1, array2, array3 */
int array1[ 2 ][ 3 ] = { { 1, 2, 3 }, { 4, 5, 6 } };
int array2[ 2 ][ 3 ] = { 1, 2, 3, 4, 5 };
int array3[ 2 ][ 3 ] = { { 1, 2 }, { 4 } };

printf( "Values in array1 by row are:\n" );
printArray( array1 );

printf( "Values in array2 by row are:\n" );
printArray( array2 );

printf( "Values in array3 by row are:\n" );
printArray( array3 );
getch();
return 0; /* indicates successful termination */
} /* end main */

/* function to output array with two rows and three columns */
void printArray( const int a[][ 3 ] )
{
int i; /* row counter */
int j; /* column counter */

/* loop through rows */
for ( i = 0; i <= 1; i++ ) {
/* output column values */
for ( j = 0; j <= 2; j++ ) {
printf( "%d ", a[ i ][ j ] );
} /* end inner for */
printf( "\n" ); /* start new line of output */
} /* end outer for */

} /* end function printArray */

Hasil output:



Array 3 baris 4 kolom juga bisa diterapkan seperti misalnya dalam memanipulasi data nilai siswa. 
Berikut contoh programnya:

/* Fig. 6.22: fig06_22.c
Double-subscripted array example */
#include <stdio.h>
#define STUDENTS 3
#define EXAMS 4

/* function prototypes */
int minimum( const int grades[][ EXAMS ], int pupils, int tests );
int maximum( const int grades[][ EXAMS ], int pupils, int tests );
double average( const int setOfGrades[], int tests );
void printArray( const int grades[][ EXAMS ], int pupils, int tests );

/* function main begins program execution */
int main( void )
{
int student; /* student counter */

/* initialize student grades for three students (rows) */
const int studentGrades[ STUDENTS ][ EXAMS ] =
{ { 77, 68, 86, 73 },
{ 96, 87, 89, 78 },
{ 70, 90, 86, 81 } };

/* output array studentGrades */
printf( "The array is:\n" );
printArray( studentGrades, STUDENTS, EXAMS );

/* determine smallest and largest grade values */
printf( "\n\nLowest grade: %d\nHighest grade: %d\n",
minimum( studentGrades, STUDENTS, EXAMS ),
maximum( studentGrades, STUDENTS, EXAMS ) );

/* calculate average grade for each student */
for ( student = 0; student < STUDENTS; student++ ) {
printf( "The average grade for student %d is %.2f\n",

student, average( studentGrades[ student ], EXAMS ) );

} /* end for */

getch();
return 0; /* indicates successful termination */
} /* end main */

/* Find the minimum grade */
int minimum( const int grades[][ EXAMS ], int pupils, int tests )
{
int i; /* student counter */
int j; /* exam counter */
int lowGrade = 100; /* initialize to highest possible grade */

/* loop through rows of grades */
for ( i = 0; i < pupils; i++ ) {

/* loop through columns of grades */
for ( j = 0; j < tests; j++ ) {

if ( grades[ i ][ j ] < lowGrade ) {
lowGrade = grades[ i ][ j ];
} /* end if */
} /* end inner for */
} /* end outer for */

return lowGrade; /* return minimum grade */
} /* end function minimum */

/* Find the maximum grade */
int maximum( const int grades[][ EXAMS ], int pupils, int tests )
{
int i; /* student counter */
int j; /* exam counter */
int highGrade = 0; /* initialize to lowest possible grade */

/* loop through rows of grades */
for ( i = 0; i < pupils; i++ ) {

/* loop through columns of grades */
for ( j = 0; j < tests; j++ ) {

if ( grades[ i ][ j ] > highGrade ) {
highGrade = grades[ i ][ j ];
} /* end if */
} /* end inner for */
} /* end outer for */

return highGrade; /* return maximum grade */
} /* end function maximum */

/* Determine the average grade for a particular student */
double average( const int setOfGrades[], int tests )
{
int i; /* exam counter */
int total = 0; /* sum of test grades */
/* total all grades for one student */
for ( i = 0; i < tests; i++ ) {
total += setOfGrades[ i ];
} /* end for */
return ( double ) total / tests; /* average */
} /* end function average */

/* Print the array */
void printArray( const int grades[][ EXAMS ], int pupils, int tests )
{
int i; /* student counter */
int j; /* exam counter */

/* output column heads */
printf( "\t\t[0]  [1]  [2]  [3]" );

/* output grades in tabular format */
for ( i = 0; i < pupils; i++ ) {

/* output label for row */
printf( "\nstudentGrades[%d] ", i );

/* output grades for one student */
for ( j = 0; j < tests; j++ ) {
printf( "%-5d", grades[ i ][ j ] );
} /* end inner for */
} /* end outer for */
} /* end function printArray */

Hasil output:


Read more »»