BAB VIII SUB PROGRAM : Fungsi Tanpa Pengembalian Nilai Pendahuluan Dalam bahasa pemrograman prosedural, program bisa terdiri dari beberapa sub program. Dengan membuat sub program, penulisan kode program yang sama berulangkali bisa dihindarkan, juga memudahkan menulis dan menemukan kesalahan program. Dalam Bahasa C++ terdapat sub program berupa fungsi tanpa pengembalian nilai (menggunakan void) dan fungsi yang mengembalikan nilai dengan tipe data tertentu. Sub program ini hanya perlu ditulis sekali, tetapi dapat dipanggil berkali-kali oleh program utama atau sub program lain. Penyajian 8.1 Pendeklarasian Fungsi tanpa pengembalian nilai Bentuk deklarasi fungsi tanpa pengembalian nilai (tanpa parameter) adalah : void NamaFungsi; Bagian_deklarasi; { Bagian pernyataan; } Contoh : void HitungLuasSegitiga(); float alas, tinggi, Luas; { cout<<“Masukkan panjang alas segi tiga :”; cin>>alas; cout<<“Masukkan tinggi segi tiga :”; cin>>tinggi; Luas=(1/2)*alas*tinggi; cout<<“Luas segi tiga = “<<Luas<<endl; } 8.2 Pemanggilan Fungsi tanpa pengembalian nilai Fungsi tanpa pengembalian nilai bukan program yang berdiri sendiri, jadi tidak bisa dieksekusi secara langsung. Fungsi baru dilaksanakan dengan cara memanggil namanya dari program utama atau sub program lain. Ketika nama fungsi dipangil, kendali program secara otomatis akan berpindah ke fungsi tersebut. Instruksi di dalam fungsi dilaksanakan. Setelah semua selesai, kendali program berpindah secara otomatis ke instruksi sesudah pemanggilan tersebut. Contoh program utama untuk memanggil prosedur HitungLuasSegitiga di atas : Int main(){ HitungLuasSegitiga(); } 8.3 Variabel Global dan Lokal Variabel yang dideklarasikan dalam prosedur hanya dikenal di badan sub program tersebut, sehingga disebut variabel Lokal. Sedangkan variabel yang dideklarasikan sebelum program utama(int main()) bersifat Global, karena dikenali di semua bagian program. //Program TukarNilai; #include<iostream> Using namespace std; int A, B; //A,B variabel global void Tukar(); int temp; //temp variabel lokal { temp= A; A= B; B=temp; } Int main() { cout<<“Masukkan nilai A = “<<endl;cin>>A; cout<<“Masukkan nilai B = “<<endl;cin>>B; Tukar(); cout<<“Nilai A sesudah ditukar = “<<A<<endl; cout<<“Nilai B sesudah ditukar = “<<B<<endl; } 8.4 Parameter Kebanyakan program memerlukan pertukaran informasi antara fungsi dengan pemanggilnya. Tiap item data ditransfer antara parameter aktual dan parameter formal yang bersesuaian. Parameter aktual adalah parameter yang disertakan waktu pemanggilan, sedangkan parameter formal adalah parameter yang dideklarasikan di dalam bagian Nama Fungsi. Berdasarkan maksud penggunaannya, terdapat tiga jenis parameter formal yang disertakan di dalam fungsi tanpa pengembalian nilai : 1. parameter masukan 2. parameter keluaran 3. parameter masukan/keluaran Parameter masukan adalah parameter yang nilainya berlaku sebagai masukan untuk prosedur. Pada bahasa pemrograman seperti C++, parameter masukan dinamakan parameter by value. Parameter keluaran adalah parameter yang menampung keluaran yang dihasilkan oleh prosedur. Pada bahasa pemrograman seperti C++, parameter keluaran dinamakan parameter by reference. Parameter masukan/keluaran adalah parameter yang berlaku sebagai masukan sekaligus keluaran bagi prosedur tersebut. Pada bahasa pemrograman seperti C++, parameter masukan/keluaran termask dalam parameter by reference. Pada C++, parameter formal by value tidak menggunakan karakter "&" dalam deklarasinya, sedangkan parameter by reference menggunakannya, tepat sebelum nama variabel. Bisa juga menggunakan tanda ‘*’ di depan nama parameter formal dan pada saat pemanggilan, di depan parameter aktual diberi tanda ‘&’. 1. Parameter Masukan (By value) Contoh program menggunakan parameter masukan dalam deklarasi fungsi tanpa pengembalian nilai: //Program SegitigaKarakter; #include<iostream> Using namespace std; int M; char K; void CetakSegitiga(char C; int N); { for(int i=1; i<=n; i++) { for(int j=1; j<=i; j++) cout<<C; cout<<endl; } } Int main() { cout<<“Masukkan karakter yang akan dicetak <<endl; cin>>K; cout<<“Masukkan tinggi segi tiga :”; cin>>M; CetakSegitiga(K,M); } 2. Parameter Keluaran (By reference) Bila fungsi tanpa pengembalian nilai menghasilkan satu atau lebih nilai yang digunakan oleh program pemanggil, maka nilai keluaran ditampung di dalam parameter keluaran. Bila fungsi tanpa pengembalian nilai yang mengandung parameter keluaran dipanggil, maka nama parameter aktual secara semu menggantikan nama parameter formal (berlawanan dengan parameter masukan, yang dalam hal ini, nilai parameter aktual yang di assign ke dalam parameter formal). Berikut contoh perbedaan parameter masukan dan keluran : //Program ABC; #include<iostream> Using namespace std; int A, B, C; Void XYZ(int X,Y; int &Z); //X dan Y parameter masukan, Z parameter keluaran} { X= X + 1; Y= Y + 1; Z = X + Y; } Int main() { A= 2; B= 5; XYZ(A,B,C); {Pemanggilan prosedur XYZ} Cout<<A<<“ “<< B<<“ “<<C); //Menampilkan nilai A, B, dan C setelah pemanggilan prosedur } Pada Program ABC di atas, X dan Y adalah parameter masukan, sedangkan Z adalah parameter keluaran. Ketika Prosedur XYZ dipanggil dengan parameter aktual A=2 dan B=5, maka nilai itu mengisi nilai parameter formal X dan Y. Sedangkan nama parameter aktual C secara semu menggantikan nama parameter formal C (bukan nilainya yang diisikan). Sehingga setelah pemanggilan, nilai variabel A dan B tetap, yaitu A=2 dan B =5. Sedangkan nilai variabel C berubah menjadi 9. 3. Parameter Masukan/Keluaran (By reference) Parameter masukan/keluaran berfungsi sebagai masukan untuk prosedur sekaligus menampung nilai keluaran prosedur. Sehingga bila keluarannya berbeda dengan masukannya, maka hasilnya mengikuti nilai keluarannya. Contoh Program TukarNilai berikut : 2 nilai integer A dan B merupakan parameter formal Prosedur Tukar. Setelah instruksi di dalam prosedur dilaksanakan, maka nilai keluaran A dan B berubah. Karena A dan B adalah parameter masukan/keluaran, maka nilai parameter aktual pemanggilnya juga berubah sesuai nilai keluaran yang dihasilkan prosedur. Program TukarNilai; #include<iostream> Using namespace std; Var X, Y : integer; Void Tukar (int &A; int &B); int temp; { temp = A; A = B; B=temp; } Int main() { X= 2; Y= 5; Tukar (X,Y); cout<<“Nilai X setelah ditukar = “<<X<<endl; cout<<“Nilai Y setelah ditukar = “<<Y<<endl; } Penutup Latihan Soal : 1. Buatlah prosedur mencari bilangan terbesar dari 3 bilangan integer A, B, dan C. 2.Buatlah prosedur menghitung nilai rata-rata dari N buah bilangan.