Parameter Fungsi (Function)

Fungsi (Function) 

Fungsi (Function)
¡  Fungsi
  Merupakan blok dari kode yang dirancang untuk melaksanakan tugas khusus.
  Berisi sejumlah pernyataan yang dikemas dalam sebuah nama.
  Tujuan:
  Memudahkan dalam mengembangkan program. (program dibagi menjadi beberapa modul kecil ).
  Menghemat ukuran program. (menghindari penulisan yang berulang – ulang).
  Memudahkan dalam maintenance program.
  Fungsi yang telah didefinisikan, dapat digunakan untuk program lain. (dapat dibuat sebuah library).
  Fungsi
  Cara definisi:
<tipedata> <namaFungsi>([parameter]){
                        [deklarasi lokal]
                        <statement>;
                        [return(ekspresi);]
}
¡  Prototipe Fungsi
¡  Digunakan untuk mendeklarasikan ke compiler mengenai:
§  Tipe data keluaran dari fungsi
§  Jumlah parameter yang digunakan
§  Tipe data dari masing – masing parameter yang digunakan
¡  Contoh Program tanpa Fungsi
#include <stdio.h>
#include <conio.h>
void main(){
            int bil1, bil2, bil3, bil4;
           
            printf("Program Mencari Penjumlahan dan Pengurangan\n");
            printf("dari 2 buah bilangan\n");
            printf("-------------------------------------------\n");
            printf("Nilai A : "); scanf("%d", &bil1);
            printf("Nilai B : "); scanf("%d", &bil2);
            bil3 = bil1 + bil2;
            bil4 = bil1 - bil2;
            printf("\n\nResult:\n");
            printf("\t%d + %d = %d\n", bil1, bil2, bil3);
            printf("\t%d - %d = %d\n", bil1, bil2, bil4);
            getch();
}
¡  Contoh program dengan fungsi tanpa prototipe
#include <stdio.h>
#include <conio.h>
void judul(){
            printf("Program Mencari Penjumlahan dan Pengurangan\n");
            printf("dari 2 buah bilangan\n");
            printf("-------------------------------------------\n");
}
int jumlah(int a, int b){
            return(a + b);
}
int selisih(int a , int b) {
            return(a - b);
}
¡  Contoh program dengan fungsi tanpa prototipe
void main(){
            int bil1, bil2, bil3, bil4;
           
            printf("Nilai A : "); scanf("%d", &bil1);
            printf("Nilai B : "); scanf("%d", &bil2);
            bil3 = jumlah(bil1, bil2);
            bil4 = selisih(bil1, bil2);
            printf("\n\nResult:\n");
            printf("\t%d + %d = %d\n", bil1, bil2, bil3);
            printf("\t%d - %d = %d\n", bil1, bil2, bil4);
            getch();
}
¡  Contoh program dengan prototipe fungsi
#include <stdio.h>
#include <conio.h>
void judul();
int jumlah(int a, int b);
int selisih(int, int);
void main(){
            int bil1, bil2, bil3, bil4;
           
            judul();
            printf("Nilai A : "); scanf("%d", &bil1);
            printf("Nilai B : "); scanf("%d", &bil2);
¡  Contoh program dengan prototipe fungsi
bil3 = jumlah(bil1, bil2);
            bil4 = selisih(bil1, bil2);
            printf("\n\nResult:\n");
            printf("\t%2d + %2d = %2d\n", bil1, bil2, bil3);
            printf("\t%2d - %2d = %2d\n", bil1, bil2, bil4);
            getch();
}
void judul(){
            printf("Program Mencari Penjumlahan dan Pengurangan\n");
            printf("dari 2 buah bilangan\n");
            printf("-------------------------------------------\n");
}
int jumlah(int a, int b){
            return(a + b);
}
int selisih(int a , int b) {
            return(a - b);
}
¡  Parameter Fungsi
¡  Terdapat 2 macam parameter fungsi, yaitu:
§  Parameter formal, merupakan variabel yang terdapat pada daftar parameter yang berada di dalam definisi fungsi.
§  Parameter aktual, merupakan variabel yang digunakan pada pemanggilan suatu fungsi.
¡  Cara melewatkan Parameter ke dalam fungsi
  Pemanggilan dengan Nilai (pass by value)
            pada pemanggilan jenis ini, nilai dari parameter aktual akan dimasukkan ke parameter formal. Dengan cara ini, nilai parameter aktual tidak akan berubah, walaupun nilai dari parameter formal berubah.
  Pemanggilan dengan Referensi (pass by reference)
            pemanggilan dengan referensi merupakan pemanggilan alamat suatu variabel di dalam fungsi. Cara ini dapat dipakai untuk mengubah isi suatu variabel yang ada di luar dari fungsi, yang dilakukan dengan mengubah nilai suatu variabel yang ada di dalam fungsi.
¡  Contoh pass by value
#include <stdio.h>
#include <conio.h>
void tambah(int, int);
void main(){
            int a = 10, b = 20;
           
            printf("Nilai Sebelum Fungsi dipanggil\n");
            printf("A = %d ; B = %d\n", a, b);
            tambah(a, b);
            printf("Nilai Setelah Fungsi dipanggil\n");
            printf("A = %d ; B = %d\n", a, b);
            getch();
}
¡  Contoh pass by value
void tambah(int a, int b){
            a += 5;
            b++;
            printf("\nNilai di dalam Fungsi\n");
            printf("A = %d ; B = %d\n\n", a, b);
}
¡  Contoh pass by reference dengan pointer
#include <stdio.h>
#include <conio.h>
void tambah(int *, int *);
void main(){
            int a = 10, b = 20;
           
            printf("Nilai Sebelum Fungsi dipanggil\n");
            printf("A = %d ; B = %d\n", a, b);
            tambah(&a, &b);
            printf("Nilai Setelah Fungsi dipanggil\n");
            printf("A = %d ; B = %d\n", a, b);
            getch();
}
¡  Contoh pass by reference dengan pointer
void tambah(int *a, int *b){
            *a += 7;
            *b += 2;
            printf("\nNilai di dalam Fungsi\n");
            printf("A = %d ; B = %d\n\n", *a, *b);
}
¡  Reference
  Pada C++, Digunakan untuk memberikan nama alias dari variabel.
  Deklarasi : <tipedata> &ref = nama_variabel;
  Pengubahan nilai terhadap nama_variabel dapat dilakukan melalui nama_variabel itu sendiri ataupun melalui referensi ref.
  Contoh potongan program:
void main() {
int i;
int &r = i;
i = 10;
cout << “i = “<< i << “r = “<< r << endl;
r = 20;
cout << “i = “<< i << “r = “<< r << endl;
}
¡  Contoh pass by reference
#include <iostream.h>
#include <conio.h>
void tukar(int &a, int &b);
void main(){
            int a, b;
           
            a = 2; b = 10;
            cout << "A = " << a      << " B = " << b << endl;
            tukar(a, b);
            cout << "A = " << a      << " B = " << b << endl;
            getch();
}
void tukar(int &a, int &b){
            int temp; temp = a; a = b; b = temp;
}
¡  Function Overloading
¡  Boleh membuat lebih dari satu fungsi dengan nama sama, dengan salah satu syarat harus dipenuhi:
§  Jumlah parameter input berbeda
§  Tipe data parameter input berbeda
§  Urutan tipe data parameter input berbeda
¡  Memungkinkan sebuah fungsi dapat menerima bermacam-macam tipe dan memberikan nilai balik yang bervariasi.
¡  Function Overloading
¡  Boleh membuat lebih dari satu fungsi dengan nama sama, dengan salah satu syarat harus dipenuhi:
§  Jumlah parameter input berbeda
§  Tipe data parameter input berbeda
§  Urutan tipe data parameter input berbeda
¡  Memungkinkan sebuah fungsi dapat menerima bermacam-macam tipe dan memberikan nilai balik yang bervariasi.
¡  Contoh function overloading
#include <iostream.h>
#include <conio.h>
int kuadrat(int i);
double kuadrat(double d);
void main()
{
            int x = 2;
            double y = 2.5;
           
            cout << "kuadrat " << x << " adalah " << kuadrat(x) << endl;
            cout << "kuadrat " << y << " adalah " << kuadrat(y) << endl;
            getch();
}
int kuadrat(int i){ return(i * i); }
double kuadrat(double d) { return (d * d);}
¡  Rekursif
¡  Fungsi yang dapat memanggil dirinya sendiri.
¡  Contoh tanpa rekursif
#include <stdio.h>
#include <conio.h>
long faktorial(int);
void main(){
            int n;
           
            printf("Program Faktorial:\n");
            printf("------------------\n");
            printf("N = "); scanf("%d", &n);
            printf("Result: ");
            printf("%d! = %ld\n", n, faktorial(n));
            getch();
}
¡  Contoh tanpa rekursif
long faktorial(int n){
            long fak = 1;
            int i;
            for(i = 2; i <= n; i++)
                        fak *= i;
            return(fak);
}
¡  Contoh dengan rekursif
#include <stdio.h>
#include <conio.h>
long faktorial(int);
void main(){
            int n;
           
            printf("Program Faktorial:\n");
            printf("------------------\n");
            printf("N = "); scanf("%d", &n);
            printf("Result: ");
            printf("%d! = %ld\n", n, faktorial(n));
            getch();
}
¡  Contoh dengan rekursif
long faktorial(int n){
            if(n == 0)
                        return(1);
            else
                        return(n * faktorial(n-1));
}
¡  Array dan Fungsi
#include <iostream.h>
// mendefinisikan fungsi untuk proses input array
void InputArray(int A[], int N) {
   for (int C=0; C<N; C++) {
      cout<<" Masukkan nilai A[" <<C<< "] : "; cin>>A[C];
   }
}
// mendefinisikan fungsi untuk menghitung jumlah elemen array
long Jumlah(int A[ ], int N) {
long jml=0;
   for(int C=0; C<N; C++) {
     jml += A[C];
   }
  return jml;
}
¡  Array dan Fungsi
// Fungsi utama
int main ( ) {
  int X[100];
   int BanyakElemen;
   long HASIL;
   cout<<"Masukkan banyaknya elemenyang diinginkan : " ;
   cin>>BanyakElemen;
   cout<<endl;
// memanggil fungsi InputArray
InputArray(X, BanyakElemen);
// memanggil fungsi jumlah dan menampung hasilnya ke variabel HASIL
HASIL = Jumlah (X, BanyakElemen);
// Menampilkan hasil
cout<<"Hasilnya = "<<HASIL;
return 0;
}

Komentar