SL 1201 Materi tentang Fungsi Program merupakan kumpulan dari fungsi-fungsi baik yang didefinisikan langsung maupun yang disimpan dalam file header. Dalam program C++ selalu terdapat fungsi utama yang disebut fungsi main ( ) Kompiler akan menjalankan perintah yang terdapat dalam fungsi main ( ) ini. Ilustrasi keberadaan fungsi dalam sebuah program:
Program Int main ( ) { ….. Fungsi1( ); statement1; ….. Fungsi2( ); statement2; … return0; }
Fungsi1 ….. return Fungsi2 ….. return
Fungsi3 ….. return
Fungsi tanpa nilai umpan balik Suatu proses yang tidak mengembalikan nilai, untuk itu fungsi yang dibuat bertipe void yang berarti tidak mempunyai nilai balik (RETURN VALUE) Adapun bentuk umumnya adalah: void nama_fungsi (parameter1, parameter2, …..) { statement_ yang_akan_dilakukan; ……... } Bentuk umum untuk pemanggilan: nama_fungsi(nilai_parameter1, nilai_parameter2, ….);
Contoh Program: #include
using namespace std; //membuat fungsi dengan nama Tulis10kali void Tulis10kali ( ) { for (int c=0; c<10; c++) { cout<<“ Aku menyukai C++”<<endl; } } // Fungsi utama dalam program c++ int main ( ) { // Memanggil fungsi Tulis10kali untuk dieksekusi Tulis10kali ( ); return 0; }
Fungsi dengan nilai balik Fungsi ini melakukan proses yang dapat mengembalikan sebuah nilai. Definisikan tipe p data dari nilai yyang g akan dikembalikan terlebih dulu. Bentuk umum fungsi ini: Tipe_data nama_fungsi (parameter1, parameter2, …) { statement_yang_akan_dilakukan ; ….. Return nilai_yang_akan_dikembalikan; }
Contoh fungsi yang mengembalikan tipe string # include using namespace std; // membuat fungsi sederhana mengembalikan string char* TestFungsiString ( ) { return “ini adalah nilai dari fungsi”; }
// fungsi utama int main ( ) { // memanggil dan menampilkan hasil fungsi cout<
Contoh fungsi yang mengembalikan tipe bilangan # include using namespace std; // membuat b t fungsi f i sederhana d h mengembalikan b lik bilangan bil double TestFungsiBilangan ( ) { return (3.14*2); }
// fungsi utama iintt main i (){ // memanggil dan menampilkan hasil fungsi cout<<“ Nilai yang terdapat dalam fungsi : “; cout<
Fungsi dengan Parameter Hasil yang diperoleh bersifat dinamis tergantung dari nilai parameter yang dimasukkan
Jenis parameter a. Parameter masukan Paremeter ini akan dipergunakan sebagai masukan dalam sebuah fungsi b. Parameter keluaran Parameter ini dipergunakan untuk menampung nilai yang dihasilkan dari proses didalam fungsi Digunakan didalam fungsi void Berguna sebagai nilai keluaran sebuah fungsi Dilewatkan berdasarkan alamat atau referensinya c. Parameter masukan/keluaran Digunakan sebagai masukan dan keluaran artinya mula-mula mula mula sebagai masukan kemudian diolah dalam fungsi dan hasilnya sebagai nilai keluaran.
Contoh fungsi g dengan g p parameter bertype yp masukan #include using namespace std; // Membuat fungsi dengan parameter bertipe masukan int TambahSatu (int X) { int hasil;; hasil=X+1; return hasil; } int main ( ) { int Bilangan, HASIL; cout<<“ Masukkan sebuah bilangan bulat : “<<endl; cin<
Contoh fungsi dengan parameter bertipe keluaran #include using namespace std; // parameter X sbg masukan // parameter hasil sbg keluaran void TambahSatu (int X, int *hasil) { *hasil=X+1; } int main ( ) { int Bilangan, HASIL; cout<<“ Masukkan sebuah bilangan bulat : “; cin<
Contoh fungsi f ngsi dengan parameter bertipe masukan/keluaran mas kan/kel aran #include using namespace std; // parameter X sbg masukan dan juga sbg keluaran void TambahSatu (int X) { *X=*X+1; } int main ( ) { int Bilangan; cout<<“ Masukkan sebuah bilangan bulat : “; cin<
Melewatkan Parameter Berdasarkan Nilai (pass by value) #include using namespace std; // membuat fungsi g dengan g melewatkan nilai X didalamnya y void Kali2 (int X) { X=X*2; cout<<“ Nilai didalam fungsi : “<<X<<endl; } // Fungsi utama int main ( ) { int Bilangan; cout<<“ Masukkan sebuah bilangan bulat : “; cin<
Hasil dari program tersebut: Memasukkan sebuah bilangan bulat : 10 Nilai awal : 10 Nilai didalam fungsi : 20 Nilai akhir : 10
Contoh pengiriman parameter dengan berdasarkan nilai (menukar dua buah bilangan) #include using namespace std; // mendefinisikan fungsi menukar bilangan void TukarBilangan (int X, int Y) { int Z=X; X=Y; Y=Z; // Menampilkan bilangan yg terdpt di dlm fungsi cout<<“ Di dalam fungsi “<<endl; cout<<“ Bilangan ke 1 : “<<X<<endl; cout<<“ Bilangan ke 2 : “<
// Fungsi utama int main ( ) { int Bilangan1, Bilangan2; cout<<“ Masukkan bilangan pertama : “ ; cin>>Bilangan1; cout<<“ Masukkan bilangan kedua cout<< : “ ; cin>>Bilangan2; // menampilkan nilai awal cout<<“ Keadaan awal”<<endl; cout<<“ Bilangan ke 1 : “<
Melewatkan Parameter Berdasarkan Alamat (Pass by Reference) adalah melewatkan parameter sebuah fungsi berdasarkan alamatnya. Jika kita membuat alias dari sebuah variabel, alamat dari variabel dan alias tersebut adalah sama.
Contoh Program pelewatan parameter berdasarkan alamat (pass by reference) #include use namespace std; // mendefinisikan ffungsi ngsi yang ang mele melewatkan atkan parametern parameternyaa berdasarkan alamat void Kali2(int& X){ X=X*2 cout<<“ Nilai di dlm fungsi : “<<X<<endl; } int main( ) { int Bilangan; cout<<” Masukkan sebuah bilangan bulat : “; cin>>Bilangan; cout<<endl; // Menampilkan nilai awal cout<<“Nilai awal : “<
Masukkan sebuah bilangan bulat : 10 Nilai awal : 10 Nilai di dalam fungsi : 20 Nilai akhir : 20
Contoh Program g yangg menggambarkan y gg penggunaan p gg p pass by y reference #include using namespace std; // mendefinisikan d fi i ik fungsi f i menukar k bilangan bil void TukarBilangan(int& X,int& Y) { int Z=X; X=Y;; Y=Z; // Menampilkan bilangan yg terdpt di dlm fungsi cout<<“ Di dalam fungsi “<<endl; co t<<“ Bilangan ke I : “<<X<<endl; cout<<“ cout<<“ Bilangan ke 2 : “<
// Fungsi utama int main ( ) { int Bilangan1, Bilangan2; cout<<“ Masukkan bilangan pertama : “ ; cin>>Bilangan1; cout<<“ Masukkan bilangan kedua : “ ; cin>>Bilangan2; // menampilkan nilai awal cout<<“ Keadaan awal”<<endl; cout<<“ Bilangan ke 1 : “<
#include void main() { int i,j,k; for(i=1;i<=5;i++) { for(j=1;j<6-i;j++) cout<<" t<<" "; " for(k=1;k<2*i;k++) cout<
Melewatkan Parameter Bertipe Array Contoh Program dg parameter bertipe array #include #i l d t > using namespace std; // mendefinisikan fungsi untuk proses input array y A[], int N) { void InputArray(int for (int C=0; C>A[C]; } } // mendefinisikan fungsi untuk menghitung jumlah elemen array long Jumlah(int A[ ], int N) { long jml=0; for(int C=0; C
// Fungsi utama int main ( ) { int X[100]; int BanyakElemen; long HASIL; cout<<“Masukkan banyaknya elemen array yang 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 t<<“H il = “<
Melewatkan parameter konstan include using i namespace std; td // mendefinisikan fungsi untuk menghitung keliling lingkaran double KelilingLingkaran(const float PI, int jari_jari) { return (2*PI*jari_jari); } // fungsi utama int main ( ) { int R; double HASIL; cout<<“Masukkan panjang jari-jari : “; cin>>R; // memanggil fungsi keilling lingkaran HASIL=KelilingLingkaran(3.14, R); cout<<“Kelilingnya = “<
Mengeset Parameter dengan Nilai Default Nilai parameter dalam sebuah fungsi dapat diset dengan nilai default default. Artinya Artinya, jika kita tidak mendefinisikan pd saat pemanggilan, nilai yang akan digunakan adalah nilai default. Bentuk umum:
Tipe_data nama_fungsi ( tipe_data parameter1 = nilai_default, …..) { ........ return nilai_kembalian; nilai kembalian; }
Contoh fungsi dengan nilai default #include using namespace std; // mendefinisikan fungsi menghitung volum balok long VolumeBalok(int panjang, int lebar=20, int tinggi=5) { return (panjang * lebar * tinggi); } int main ( ) { int P=50; int L L=10; 10; int T=2; long HASIL; // memanggil fungsi dengan 3 parameter HASIL=VolumeBalok(P,L,T); cout<<“Volume t “V l Balok B l k = “<
Hasilnya y adalah: Volume Balok = 1000 Volume Balok = 2500 Volume Balok = 5000
Penimpaan Fungsi (Function Overloading) Fungsi overload adalah fungsi dengan nama sama tetapi memiliki parameter t berbeda b b d bbaik ik ti tipe maupun jjumlahnya l h atau t keduanya. k d Pada saat fungsi tersebut dipanggil, kompiler akan memilih fungsi yang parameter aktualnya sama dengan parameter formalnya.
Contoh Program penggunaan fungsi Overload dg jumlah parameter berbeda #include using namespace std; // mendefinisikan fungsi tulis dg satu parameter void Tulis (char* S) { cout<<S<<endl; } // mendefinisikan fungsi tulis dg dua parameter void Tulis (char* S1, char* S2) { cout<<S1<<“ “<<S2<<endl; } // mendefinisikan fungsi tulis dg tiga parameter void Tulis (char* (char S1, S1 char* char S2, S2 char* char S3) { cout<<S1<<“ “<<S2<<“ “<<S3<<endl; } // fungsi utama int main ( ) { // Melakukan l k k pemanggilan il fungsi f i Tulis li Tulis(“Budi”); Tulis(“Penerbit”,”INFORMATIKA”); Tulis(“Mengungkap”,”Rahasia”,”C++”); return 0;; }
Hasilnya: Budi Penerbit INFORMATIKA Mengungkap Rahasia C++
Contoh Program penggunaan fungsi Overload dg tipe parameter berbeda #include using namespace std; // mendefinisikan fungsi tulis dg parameter bertipe char* void Tulis (char* X) { cout<<X<<endl; } // mendefinisikan fungsi tulis dg parameter bertipe int void Tulis (int X) { cout<<X<<endl; } // mendefinisikan fungsi tulis dg parameter bertipe double void Tulis (double X) { cout<<X<<endl; } // fungsi utama int main ( ) { // Melakukan l k k pemanggilan il fungsi f i Tulis li Tulis(“C++”); Tulis(100); Tulis(3.14); return 0;; }
Hasilnya: C++ 100 3.14
Membuat prototype fungsi Fungsi-fungsi F if i dapat d t dideklarasikan didekl ik terlebih te lebih dahulu, d h l kemudian ke di didefinisikan didefi i ik setelah etel h fungsi f i utama t Bentuk umum dari pembuatan prototype fungsi adalah: tipe_data nama_fungsi ( parameter1, parameter2, . . . . .);
Contoh program dengan prototype fungsi #include using namespace std; // membuat prototype (pendeklarasian fungsi) int Kali ( int X, int Y )// Mendeklarasikan fungsi Kali void Tulis (int S) // Mendeklarasikan fungsi Tulis // Fungsi utama int main ( ) { int Bilangan1, Bilangan2, HASIL; cout<<“Masukkan bilangan pertama : “;cin>>Bilangan1; cout<<“Masukkan bilangan kedua : “;cin>>Bilangan2; cout<<endl; // menggunakan fungsi Kali HASIL=Kali(Bilangan1,Bilangan2); //menggunakan fungsi tulis Tulis(HASIL); return 0; } NEXT . . . . .
Contin ed Continued // mendefinisikan fungsi Kali int Kali ( int X, int Y) { return (X * Y ); } // mendefinisikan fungsi Tulis void Tulis ( int S ) { cout<<S<<endl; }
Hasilnya: Masukkan bilangan pertama : 10 Masukkan bilangan kedua : 25 250
Fungsi Inline Dengan adanya D d Fungsi eksekusi Fungsi, k k i program akan k bolak b l k balik b lik antara t fungsi f i utama t dengan fungsi yang dipanggil. Untuk meningkatkan efisiensi, C++ menyediakan fitur yang disebut dengan fungsi inline dengan kata kunci inline Contoh program dengan fungsi inline #include using namespace std; inline int Kali2(int X) { return (X*2); } // Fungsi Utama int main ( ) { int HASIL; HASIL = Kali2 (10); cout<<“Hasil : “<
Hasil = 20 Hasil = 40 H il = 60 Hasil
Rekursi adalah fungsi yang pendefinisiannya memanggil dirinya sendiri untuk melakukan proses didalamnya. Contoh perhitungan faktorial ! Contoh program mempergunakan fungsi rekursi #include #i l d i t using namespace std; //Mendefinisikan fungsi faktorial int Faktorial ((int X)) { if ( X = = 1 ) return (1); return X * Faktorial (X-1) ; }
// memanggil dirinya sendiri
Masukkan bilangan yang akan dihitung : 5 // Fungsi utama 5! = 120 int main ( ) { int Bilangan, HASIL; cout<<“Masukkan bilangan yang akan dihitung : “; cin>>Bilangan; // memanggil fungsi faktorial HASIL = Faktorial ( Bilangan) ; // menampilkan hasil cout<
Jika ik fungsi f i di muka k ditulis di li dalam d l bentuk b k fungsi f i non-rekursi, k i bentuknya dapat seperti berikut : int Faktorial(int X) { hasil = 1 for (int C=1; C<=X; C++) { hasil = hasil * C; } return hasil; }