Variabel Lokal dan Global
280
Direktorat Pembinaan SMK | 2008
void
anotherFunction {
int
num = 20
; variabel Local
cout Dalam
anotherFunction, num adalah: num endl;
} Keluaran Program adalah sebagai berikut:
Dalam program utatma,num adalah: 1
Dalam anotherFunction, num adalah: 20
Kembali dalam program utama, num masih 1
Meskipun terdapat dua variabel num, program ini hanya bisa
melihat salah satu dari mereka setiap saat. Ketika program
dijalankan dalam program utama, yang didefinisikan pada variabel num
akan terlihat pada program utama. Ketika anotherFunction disebut
sebagai variabel yang ditetapkan didalamnya akan terlihat, sehingga
dalam variabel num program utama tersembunyi. Perhatikan program
yang mengilustrasikan sifat tertutup dari dua fungsi, dimana bentuk kotak
mewakili lingkup variabel
Fungsi main
Int num = 1;
Variabel num hanya terlihat pada
program utama
Fungsi anotherFunction
int num = 20;
Variabel num hanya terlihat pada
anotherFunction Gambar 7.10. Dua Fungsi yang mempunyai sifat tertutup,
Sebuah Lokal variabel dapat dikatakan sebagai variable yang
aman dan tersembunyi dari fungsi lain, tetapi variable ini tidak
menyediakan cara yang mudah untuk berbagi data. Jika sejumlah besar
data harus dapat diakses oleh semua fungsi dalam program, variabel global
dapat digunakan sebagai alternatif mudah. Sebuah variabel global
merupakan variabel yang ditetapkan diluar oleh semua fungsi dalam
sebuah program. Program 7.16 menunjukkan dua buah fungsi utama
dan anotherFunction, dimana menggunakan akses yang sama
yaitu variabel global num.
2008 | Direktorat Pembinaan SMK
281 Program 7.16
include iostream
using
namespace std; void
anotherFunction; Fungsi prototipe
int
num = 2
; variabel Global
int
main {
cout dalam
program utama, num adalah num endl;
anotherFunction; cout
kembali dari program utama, num adalah
num endl;
return ;
}
void
anotherFunction {
cout dalam
fungsi anotherFunction, num adalah num endl;
num =
50 ;
cout tetapi,
sekarang telah diubah menjadi num endl;
} Dalam Program 7.16 diatas,
variabel num didefinisikan diluar semua fungsi. Karena muncul
sebelum definisi pada program utama dan anotherFunction, maka
keduanya memiliki akses ke fungsi tersebut.
Program 7.17 include
iostream using
namespace std; int
globalNum; variabel Global. Otomatis diatur ke null.
int
main {
cout globalNum
adalah globalNum endl;
return ;
}
282
Direktorat Pembinaan SMK | 2008
Jika sebuah fungsi memiliki variabel lokal dengan nama yang sama
sebagai variabel global, variabel lokal hanya dapat dilihat oleh fungsi. Hal
ini ditunjukkan oleh Program dibawah ini:
Program 7.18 include
iostream
using namespace std;
Funsi prototipe
void
texas;
void
arkansas;
int
cows = 10
; variabel
global
int
main {
cout Disana
banyak cows
cows di program utama.\n
; texas;
arkansas; cout
Kembali dalam program utama, disana banyak
cows cows.\n
;
return ;
}
void
texas {
int cows =
100 ;
variabel Local
cout disana
cows cows di texas.\n
; }
void
arkansas {
int cows =
50 ;
variabel Local cout
There are
cows cows in arkansas.\n
; }
Ketika program diatas sedang menjalankan fungsi utama, variabel
global cows akan terlihat. Dalam fungsi texas dan Arkansas, meskipun
ada variabel lokal dengan nama cows. Variabel global tidak terlihat
ketika program sedang menjalankan fungsi mereka. program dibawah
merupakan program untuk mendaftar dan program ini menggunakan
variabel global dan lokal. Fungsi ringUpSale menghitung dan
menampilkan harga, pajak penjualan, dan subtotal untuk setiap item yang
dibeli. Memiliki variabel lokal, pajak, yang memiliki nama yang sama
2008 | Direktorat Pembinaan SMK
283 seperti variabel global. Pajak pada
ringUpSale variabel yang digunakan untuk menghitung pajak penjualan
pada item, sementara global pajak variabel yang digunakan oleh
program utama untuk menghitung total pajak penjualan pada
pembelian. Supaya lebih jelas, perhatikan program dibawah ini:
Program 7.19 include
iostream include
iomanip
using namespace std;
Fungsi prototipe
void
ringUpSale; variabel Global
const double TAX_RATE =
0.06 ;
double
tax, sale, total;
int
main {
char
again; cout
fixed showpoint setprecision 2
;
do
{ ringUpSale;
cout Apakah
disana ada ada sesuatu yang dapat dijual? ;
cin again;
}
while
again == y || again == Y; tax
= sale TAX_RATE; total
= sale + tax; cout
\nPajak penjualannya adalah
tax endl; cout
Total Pembayaran adalah
total endl;
return ;
}
void
ringUpSale {
Variabel Local
int
qty;
double
unitPrice, tax, thisSale, subTotal; cout
\nJumlah: ;
284
Direktorat Pembinaan SMK | 2008
cin qty;
cout Harga
per satuan: ;
cin unitPrice;
thisSale = qty unitPrice;
total harga unit sale
+= thisSale; Update variabel global penjualan
tax = thisSale TAX_RATE;
pembayaran pajak untuk item subTotal
= thisSale + tax; subtotal untuk tiap item
cout harga
untuk tiap item: thisSale endl;
cout pajak
untuk tiap item: tax endl;
cout SubTotal
untuk tiap item: subTotal endl;
}