Pemrograman Terstruktur
Oleh : Sudirman S.Kom
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. Contoh : // * ----------------------------------------------------------------------------------------* // * varlokal.cpp * // * * // * Contoh untuk memperlihatkan efek variabel otomatis atau lokal * // * ----------------------------------------------------------------------------------------* #include
void alpha();
// Prototipe fungsi alpha()
void main() { // 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 << “ y = “ << y <<endl; alpha; cout << Pada main() : x = << x << “ y = “ << y <<endl; } // 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 << “ y = “ << y <<endl; }
Pemrograman Terstruktur
Oleh : Sudirman S.Kom
Jika program diatas di run, hasilnya sbb : 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. Contoh : // * ----------------------------------------------------------------------------------------* // * varglobal.cpp * // * * // * Contoh untuk memperlihatkan efek variabel eksternal atau global * // * ----------------------------------------------------------------------------------------* #include int oblada = 550; void tambah();
// Prototipe fungsi garis()
void main() { cout << oblada << endl; tambah(); cout << oblada << endl; tambah(); cout << oblada << endl; }
// Panggil fungsi tambah() // Panggil fungsi tambah()
Pemrograman Terstruktur
Oleh : Sudirman S.Kom
void tambah() { oblada++; }
Jika program diatas di run, hasilnya sbb :
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 dapat diperoleh dengan menambahkan kata kunci static di depan tipe variable. Contoh : // * ----------------------------------------------------------------------------------------* // * statis.cpp * // * * // * Contoh untuk memperlihatkan efek variabel statis * // * ----------------------------------------------------------------------------------------* #include void saya_ingat(); // Prototipe fungsi void main() { int mamamia = 50; saya_ingat(); saya_ingat(); saya_ingat(); cout << "main() }
: mamamia = " << mamamia << endl;
Pemrograman Terstruktur
Oleh : Sudirman S.Kom
void saya_ingat() { static int mamamia = 77; // variable statis mamamia++; cout << "saya_ingat() : mamamia = " << mamamia << endl; } Jika program diatas di run, hasilnya sbb : 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); void main() { // 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); }
Pemrograman Terstruktur
CONTOH SOAL : /* Menghitung luas segiempat dengan fungsi */ #include // variable global float PI=3.14; /* prototype fungsi luas lingkaran*/ float luas_lingk(float jari); void main() { // 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); }
Oleh : Sudirman S.Kom