PROPIL

Jumat, 31 Mei 2013

FUNGSI / FUNCTION


                                                 
A.  Tujuan
1.      Mahasiswa mengenal function dalam bahasa C / C++.
2.      Mahasiswa bisa membuat program procedural denga bahasa C / C++.

B.  Dasar Teori
Fungsi
Pada pemrograman C++ selalu terdapat sebuah fungsi utama atau sub-program yakni “void main()” penamaan modul memiliki karakteristik yang sama dengan penamaan variable, dengan fungsi program akan menjadi lebih efisien dan fleksibel.
Pada umumnya fungsi memerlukan masukan yang di namakan argument atau parameter. Hasil akhir  dari fungsi akan berupa sebuah nilai.

Fungsi main()

Fungsi a()

Fungsi b()

Fungsi c()

Fungsi c1()

Fungsi c2()

Berikut sintaks dari suatu fungsi :

Penentuan-tipe nama_fungsi (daftar parameter)
Deklarasi parameter
{
Isi fungsi
}
Setiap fungsi yang dipanggil di dalam program harus di definisikan.letaknya bisa dimana saja. Khusus untuk fungsi yang di sediakan disystem, definisinya sebenarnya ada dalam pustaka, yang kan di gabungkan dengan program sewaktu proses linking.
Deklarasi Fungsi
Deklarasai fungsi atau sering disebut dengan prototype fungsi dimaksudkan untuk mendeklarasikan fungsi agar dapat di panggil. Deklarasi fungsi berupa :
1)   Nama fungsi
2)   Tipe nilai balik
3)   Jumlah dan tipe argument
Dan diakhiri dengan titik koma, sebagaimana pendeklarasian variable. Sebagai contoh :
·       Long  kuadrat(long );
Pada contoh ini  fungsi kuadrat() mempunyai argument bertipe long  dan nilai balik bertipe long .
·       Int maks(int a,intb);
Pada contoh ini fungsi maks() mempunyai dua argument bertipe integer  dan nilai balik bertipe integer  juga.
·       Void garis();
Pada contoh ini fungsi garis() tidak memiliki argument dan nilai baliknnya tidak ada (void).
Manfaat dari deklarasi fungsi adalah untuk menjamin tipe argument yang di lewatkan pada pemanggilan fungsi benar-benar sesuai.

Penggolongan Variable
Variable local atau Local variable adalah sebuah variable sederhana yang dideklarasikan di dalam sebuah blok program. Ini bisa diakses hanya dari dalam blok itu sendiri. Karena bagian dari fungsi itu sendiri adalah blok, variable dideklarasikan ke dalam sebuah fungsi  yang local di fungsi itu. Mereka ada hanya ketika fungsi itu sedang dieksekusi. Sebuah formal parameter (argument) dari fungsi akan menjadi local di fungsi itu.
Contoh fungsi factorial  
Factorial dari bilangan n bertipe integer positif dilambangkan n! hasilnya didapatkan dengan mengalikan bilangan n dengan semua bilangan bertipe integer  postif yang lebih kecil dengan n.
Berikut ini adalah contoh fungsi untuk mencari nilai n!:

int factorial (int n)
{
if (n < 0) return 0;
int f = 1;
while (n > 1)
f *= n--;
return f;
Fungsi ini memiliki 2 variable local yaitu f dan n. Parameter n adalah local karena dia dideklarasikan di dalam daftar parameter dari fungsi ini. Variable f local karena dia dideklarasikan di dalam bagian dari fungsi ini.
Variable Global  memiliki ruang lingkup sepanjang semua program dijalankan maka variable Global  akan tetap dikenali di manapun bagian atau blok dalam kode program dijalankan. Contoh :

Int f, n;
int factorial ()
{
if (n < 0) return 0;
f = 1;
while (n > 1)
f *= n--;
return f;
   
 Parameter
Parameter fungsi digunakan untuk megnirimkan parameter (nilai) ke suatu fungsi. Pengiriman parameter dapat dilakukan dengan dua cara, yaitu :
1.    Pengiriman Parameter Secara Nilai (By Value)
Parameter yang diberikan ke fungsi adalah ‘Nilainya’, tidak pernah menspesifikasikan variabelnya. Bila ada perubahan pada parameter formal,tidak akan mempengaruhi nilai pada parameter actual.
Pengiriman parameter secara nilai mempunyai karakteristik sbb :
·      Nilai parameter yang dikirim ke fungsi tidak mempengaruhi nilai parametere pada bagian program yang memanggil fungsi tersebut.
·      Pengiriman parameter secara nilai adalah pengiriman searah, yaitu dari bagian program yang memanggil fungsi ke fungsi yang dipanggil.
·      Pengiriman parameter secara nilai dapat dilakukan untuk suatu ungkapan, variable, elemen array atau konstanta.
·      Yang dikirimkan ke fungsi adalah nilai, bukan alamat memori letak dari data.
·      Fungsi yang menerima kiriman nilai ini akan menyimpannya di alamat terpisah dari nilai aslinya yang digunakan oleh program yang memanggil fungsi tersebut
·      Karena itulah pengubahan nilai di dalam fungsi tidak akan berpengaruh pada nilai asli di program yang memanggil fungsi walaupun keduanya menggunakan nama variabel yang sama
  
2.    Pengiriman Parameter Secara Acuan (By Reference)
Memanipulasi nilai dari dalam fungsi. Setiap perubahan terhadap parameter formal akan memepengaruhi nilai pada parameter actual. Parameter formal diberi symbol ‘&’. Cara ini adalah cara efektif yang memungkinkan sebuah fungsi mengembalikan lebih dari satu nilai.
Pengiriman parameter secara acuan sbb:
·      Nilai yang dikirim ke fungsi akan merubah nilai asli pada bagian program yang memanggil fungsi tersebut.
·      Pengiriman parameter secara acuan adalah pengiriman dua arah, yaitu bagian program yang memanggil fungsi ke fungsi yang dipanggil dan sebaliknya.
·      Pengiriman parameter secara acuan tidak dapat dilakukan untuk suatu ungkapan, hanya untuk sebuah variable, array  atau konstanta saja.
·      Yang dikirimkan adalah alamat memori letak dari nilai data, bukan nilai data.
·      Fungsi yang menerima parameter ini akan menggunakan alamat yang sama dengan alamat nilai datanya
·      Karena itulah pengubahan nilai di fungsi akan mengubah juga nilai asli di program pemanggil fungsi tersebut
·      Pengiriman parameter by reference adalah pengiriman dua arah, yaitu dari program pemanggil fungsi ke fungsi dan sebaliknya dari fungsi ke program pemanggilnya
·      Pengiriman parameter by reference tidak dapat digunakan untuk suatu ungkapan, hanya bisa untuk variabel, konstanta atau elemen array saja

C.  PERMASALAHAN
Buatlah program menghitung luas persegi panjang dan volume balok.
Syarat:
1.       luas mengunakan pass by value.
2 .  di dalam fungsi pass by value terdapat fungsi pass by refrence. Untuk menghitung volume.
     Dari permasalahan di atas dapat dipecahkan seperti berikut :

#include <iostream>
#include <conio>
void vol(int &x){
int t;
cout<<"\nmasukkan nilai tinggi bangunan : ";
cin>>t;
x=x*t;
}
int luas (int a, int b){
int L;
L=a*b;
cout<<"luas bangun= "<<L;
vol(L);
return L;
}
void main(){
int p,l,x;
cout<<"masukkan nilai panjang: ";
cin>>p;
cout<<"masukkan nilai lebar: ";
cin>>l;
x=luas(p,l);
cout<<"Volume bangun: "<<x;
getch();
}









Tidak ada komentar:

Posting Komentar