FUNGSI II Variabel Statis Sifat variabel statis: Variabel hanya dapat diakses pada fungsi yang mendefinisikannya Variabel tidak hilang setelah eksekusi berakhir. Nilainya akan tetap dipertahankan sehingga akan dikenali pada pemanggilan fungsi untuk tahap berikutnya Inisialisasi oleh pemrogram hanya dilakukan sekali saja selama program dijalankan. Jika tidak ada inisialisasi secara eksplisit, maka variabel diisi dengan nilai nol Sintaks: static tipe_data nama_variabel; Contoh: static int angka; 1 Contoh - 73 Fungsi …….. Contoh 73 PSEUDOCODE : Algoritma fungsi variabel Global KAMUS/DEKLARASI VARIABEL FUNCTION x,y : int FUNCTION Percobaan3 static x=22 y=66 x ++ y++ print(x) print(y) KAMUS/DEKLARASI VARIABEL ALGORITMA/DESKRIPSI Percobaan3() ; Percobaan3() ; Percobaan3() 2 Contoh : 73 - Algoritma 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Membuat function Percobaan3() Static x 22 y 66 x++ y++ Mencetak/menampilkan nilai x Mencetak/menampilkan nilai y Memanggil function Percobaan3() Memanggil function Percobaan3() Memanggil function Percobaan3() Selesai Nilai Bawaan Argumen Fungsi Fungsi yang mempunyai nilai bawaan (default) dapat dipanggil tanpa menyertakan argumen Nilai argumen akan diambil dari nilai bawaan Inisialisasi nilai bawaan dilakukan pada prototipe fungsi Contoh: void garis(char karakter = ‘-’, int jumlah = 30); Pada definisi fungsi tidak perlu mencantumkan nilai bawaan Contoh: void garis(char karakter, int jumlah) { … } 3 Nilai Bawaan Argumen Fungsi Pemanggilan: Garis(); Garis(‘+’); Garis(‘-’,15); Garis(‘+’,15); Aturan: Argumen-argumen yang terletak disebelah kanan argumen yang diberi nilai bawan harus juga mempunyai nilai bawaan Sehingga pernyataan berikut ini akan menyebabkan kesalahan : void garis(char karakter = ‘-’, int jumlah); Contoh - 74 4 Fungsi …….. Contoh 74 PSEUDOCODE : Algoritma fungsi dengan nilai argumen bawaan KAMUS/DEKLARASI VARIABEL FUNCTION x,y, jumlah : int karakter : char FUNCTION Grafik for(i=1; ijumlah; i++) print(karakter) KAMUS/DEKLARASI VARIABEL ALGORITMA/DESKRIPSI Grafik() ; Grafik(‘+’) ; Grafik(‘-’,15) ; Grafik(‘+’,15) ; Grafik() Algoritma .....????? 5 Passing Parameter Parameter formal dan parameter aktual void contoh(int x); void main() { int y = 10; contoh(y); --- parameter aktual getch(); } void contoh(int x) --- parameter formal { cout << x; } Passing Parameter by Value Yang dikirimkan adalah nilai parameter Lokasi memori antara parameter aktual dan parameter formal berbeda Dideklarasikan tanpa tanda ‘&’ didepan parameter Saat parameter dikirimkan, yang terjadi adalah pengkopian nilai parameter aktual ke parameter formal Perubahan pada parameter formal tidak akan mempengaruhi parameter aktual 6 Passing Parameter by Reference Yang dikirimkan adalah alamat memori Lokasi memori antara parameter aktual dan parameter formal sama Dideklarasikan dengan tanda ‘&’ didepan parameter Setelah parameter dikirimkan, yang terjadi adalah parameter aktual dan parameter formal menunjuk ke lokasi memori yang sama Perubahan pada parameter formal akan mempengaruhi parameter aktual Contoh -75 7 Algoritma .....????? Pseudocode ...????? Function Overloading Beberapa fungsi dengan nama sama yang mempunyai jumlah dan tipe argumen yang berbeda serta nilai balik yang berbeda pula Contoh: int kuadrat(int i) {return(i * i);} long kuadrat(long l) {return(l * l);} double kuadrat(double d) {return(d * d);} C++ akan memilih fungsi yang tepat dengan memeriksa tipe argumen Pembedaan fungsi dalam overloading jangan hanya menggunakan tipe nilai balik saja karena akan menimbulkan kerancuan 8 Rekursi Rekursi berarti fungsi yang memanggil dirinya sendiri Contoh yang umum dari fungsi rekursi adalah fungsi faktorial 0! = 1 1! = 1 x 0! 2! = 2 x 1! 3! = 3 x 2 x 1! 4! = 4 x 3 x 2 x 1! … n! = n x (n-1)! Contoh - 76 9 Algoritma .....????? Pseudocode ...????? Contoh - 77 10 Algoritma .....????? Pseudocode ...????? Array Sebagai Argumen Fungsi Penulisan array dimensi 1 sebagai parameter - void isi_array(int array[10], int &jumlah); - void isi_array(int array[], int &jumlah); Penulisan array dimensi 2 sebagai parameter - void isi_matrik(int matrik[10][10], int &bar, int &kol); - void isi_matrik(int matrik[][10], int &bar, int &kol); 11 String Sebagai Argumen Fungsi Argumen string dinyatakan sebagai pointer yang menunjuk ke tipe char Akan dibahas pada bagian pointer Latihan 1. 2. 3. 4. 5. 6. Buatlah program untuk merubah sudut derajat menjadi sudut radian dengan tipe nilai balik float Buatlah program untuk menghitung jarak peluru yang ditembakkan dari suatu lokasi dengan sudut penembakan (θ) dan kecepatan (V). Rumus : X = 2 x V02 x sin(θ) x cos(θ) /g. Tipe nilai balik float Buatlah program untuk menghitung luas dan keliling lingkaran dengan tipe nilai balik float Buatlah program yang berisi menu-menu untuk menghitung luas dan keliling dari berbagai bangun lainnya Buatlah program untuk menghitung akar suatu bilangan dengan tipe nilai balik float dan menghitung pangkat suatu bilangan dengan tipe nilai balik double Buatlah program gabungan macam-macam operasi matematika seperti penjumlahan, pengurangan, dsb 12 Latihan 7. 8. 9. 10. Buatlah program menebak angka dimana angka yang akan ditebak di acak terlebih dulu. Setelah user menebak maka program kemudian menentukan apakah tebakan benar atau salah Buatlah program untuk mencari pangkat sebuah bilangan dengan rekursi Buatlah program untuk menampilkan bilangan fibonacci dengan rekursi Buatlah program untuk menampilkan bilangan fibonacci dengan iterasi biasa 13