PERTEMUAN XII Lingkup Variabel Lingkup variable menentukan keberadaan suatu variable tertentu di dalam fungsi. Ada 5 jenis variable berdasarkan kelas penyimpanannya (keberadaannya) : 1. Variabel otomatis atau variable lokal 2. Variabel eksternal atau variable global 3. Variabel statis Variabel otomatis atau variable lokal Adalah variable yang didefinisikan di dalam suatu fungsi. // * varlokal.cpp * // * Contoh untuk memperlihatkan efek variabel otomatis atau lokal * void alpha(); // Prototipe fungsi alpha() // variabel otomatis atau lokal pada main() int x = 22; // dapat ditulis dgn auto int x = 22; double y = 2.22; // dapat ditulis dgn auto double y = 2.22; cout << Pada main() : x = << x alpha; cout << Pada main() : x = << x // Definisi fungsi alpha void alpha() // variabel otomatis atau lokal pada alpha() int x = 20; // dapat ditulis dgn auto int x = 20; double y = 3.14; // dapat ditulis dgn auto double y = 3.14; cout << Pada alpha() : x = << x
Pada main() : x = 22 y = 2.22 Pada alpha() : x = 20 y = 3.14 Pada main() : x = 22 y = 2.22 Variabel eksternal atau variable global Adalah variable yang didefinisikan di luar fungsi manapun (kebalikan dari variable otomatis atau lokal). Tujuan dari variable global : Agar variable yang berisi data-data yang diperlukan dapat diakses di banyak fungsi. Akan tetapi var. global tidak disarankan, karena var. global mensharing data dan dapat diubah secara tidak sengaja oleh sebuah fungsi, sehingga nantinya data tsb dapat berubah nilainya, yang akan mempengaruhi seluruh jalannya program. Dan dapat menjadikan suatu kesalahan yang akan sangat sulit dideteksi. // * varglobal.cpp * // * Contoh untuk memperlihatkan efek variabel eksternal atau global * int oblada = 550; void tambah(); // Prototipe fungsi garis() tambah(); tambah(); // Panggil fungsi tambah() // Panggil fungsi tambah()
void tambah() oblada++; Dapat juga ditulis seperti ini : void tambah() extern oblada; oblada++; 550 551 552 Variabel statis Variabel otomatis maupun variabel eksternal dapat berkedudukan sebagai variable statis. Variable statis mempunyai sifat : 1. Variable tetap hanya dapat diakses pada fungsi yang mendefinisikannya. 2. Variable tidak hilang saat eksekusi fungsi berakhir (dalam memori). 3. Inisialisasi oleh pemrogram akan dilakukan sekali saja selama program dijalankan. Jika tidak ada inisialisasi, variable diisi dengan nol. Varibel statis tipe variable. dapat diperoleh dengan menambahkan kata kunci static di depan // * statis.cpp * // * Contoh untuk memperlihatkan efek variabel statis * void // Prototipe fungsi int mamamia = 50; cout << "main() : mamamia = " << mamamia << endl;
void saya_ingat() static int mamamia = 77; // variable statis mamamia++; cout << "saya_ingat() : mamamia = " << mamamia << endl; saya_ingat() : mamamia = 78 saya_ingat() : mamamia = 79 saya_ingat() : mamamia = 80 main() : mamamia = 50 CONTOH SOAL : // Menghitung jumlah pembayaran dan discount dengan fungsi #include <stdio.h> /* prototype fungsi discount */ float discount(float belanja, float pctdisc); // Var. Lokal pd main() float jml_belanja, prsdisc, hrg_discount, jml_bayar; printf( \nbesarnya Belanja : ); scanf( %f,&jml_belanja); printf( \nbesarnya Discount [contoh : 1,5,10] : ); scanf( %f,&prsdisc); hrg_discount = discount(jml_belanja, prsdisc); jml_bayar = jml_belanja hrg_discount printf( \ndiscount : %10.2f,hrg_discount); printf( \nuang Pembayaran : %10.2f,jml_bayar); /* definisi fungsi discount */ float discount(float belanja, float pctdisc) // Var. Lokal pd fungsi discount() float disc; if (belanja >= 100000) disc = (pctdisc/100) * belanja; return(disc);
CONTOH SOAL : /* Menghitung luas segiempat dengan fungsi */ // variable global float PI=3.14; /* prototype fungsi luas lingkaran*/ float luas_lingk(float jari); // variable local jari pada fungsi main() float luas, jari; cout << Jari-jari : ); cin >> jari; luas = luas_lingk(jari); cout << \nluas Lingkaran : << luas; /* definisi fungsi lingkaran */ float luas_lingk(float jari); return(pi * jari * jari);