Variabel merupakan sebuah “wadah” yang digunakan untuk menampung data/nilai dengan tipe data tertentu. Jika dianalogikan, variabel dapat dianggap sebagai sebuah gelas. Gelas tersebut ditujukan untuk menampung benda cair. Variabel kurang leih seperti gelas tadi. Lebih spesifiknya, variabel adalah penamaan terhadap lokasi memori (Random Access Memory) untuk menyimpan nilai sementara di dalamnya.
Membahas mengenai variabel, pada dasarnya terdapat 3 tempat dimana kita dapat mendeklarasikan variabel, yaitu:
- Di dalam fungsi atau blok yang disebut variabel lokal.
- Dalam definisi parameter fungsi yang disebut parameter formal.
- Di luar semua fungsi yang disebut variabel global.
Teman-teman yang masih baru dalam pemrograman mungkin bertanya-tanya mengenai perbedaan dari variabel lokal, formal, dan global. Serta, bagaimana mengimplementasikannya dalam C++.
Pada postingan ini kita akan fokus dulu kepada pembahasan mengenai variabel lokal dan global. Sebelum melangkah lebih jauh pastikan teman-teman sudah memahami bagaimana pendeklarasian sebuah variabel. Jika belum, kalian dapat membaca penjelasaannya pada tautan berikut ini.
Jenis Variabel Berdasarkan Ruang Lingkupnya
Berdasarkan ruang lingkupnya, variabel dibedakan menjadi dua yaitu variabel lokal dan variabel global. Penentuan variabel untuk dijadikan sebagai variabel global atau lokal tentu akan tergantung dari penempatannya dalam program.
Variabel Lokal
Variabel lokal adalah variable yang dideklarasikan dalam suatu blok fungsi atau method.
Variabel tersebut hanya akan terlihat dan hanya dapat digunakan di dalam blok fungsi/method dimana variabel tersebut dideklarasikan. Variabel lokal akan dibuat pada saat compiler melawati deklarasi yang ada di dalam suatu scope fungsi/method. Kemudaian variabel tersebut dihancurkan setelah compiler keluar dari scope tersebut.
Berikut ini sifat dari suatu variabel lokal:
- Segala sesuatu yang berada di dalam ‘{‘ dan ‘}’ berarti berada di dalam blok fungsi.
- Variabel lokal berada di dalam blok suatu fungsi.
- Variabel lokal tidak dapat diakses atau digunakan di luar blok.
- Variabel lokal hanya bisa digunakan oleh statement yang ada di dalam fungsi/blok.
Variabel lokal pada sebuah fungsi
Berikut contoh program yang menggunakan variabel lokal:
#include <iostream>
using namespace std;
int penjumlahan(int a, int b){
int c = a + b;
return c;
}
int main(){
cout<<penjumlahan(4,5)<<endl;
return 0;
}
Berdasarkan program sederhana pada contoh 1 di atas. Dapat diketahui bahwa terdapat fungsi utama yaitu fungsi main()
yang area “kekuasaannya” terbentang dari baris 9 hingga 12. Selain itu juga terdapat fungsi lain diluar fungsi main()
yaitu fungsi penjumlahan()
. Fungsi penjumlahan()
memiliki area “kekuasaan” yang terbentang dari baris 4 hingga 7.
Pada fungsi penjumlahan()
terdapat parameter a
dan b
yang bertipe integer
. Parameter ini akan menerima nilai dari pemanggilan fungsinya yang berada pada perintah baris 10 yaitu cout<<"Hasil penjumlahan 4 dan 5 adalah: "<<penjumlahan(4,5)<<endl;
. Nilai 4 akan masuk ke variabel a
dan 5 masuk ke variabel b
. Fungsi ini memiliki nilai balik bertipe integer
seperti terlihat pada int penjumlahan(int a, int b)
di baris 4. Pada badan fungsi penjumlahan()
isi variabel a
dan b
dijumlahkan lalu disimpan ke dalam variabel c
seperti ditunjukkan pada perintah int c = a + b;
di baris 5. Kemudian nilai yang tersimpan pada variabel c
akan dikembalikan ke fungsi pemanggilnya melalui perintah return c;
di baris 6. Sehingga ketika perintah baris 10 pada fungsi main()
dieksekusi, penjumlahan(4,5)
akan menampilkan nilai 9 yang diperoleh dari pengembalian nilai tadi yaitu return c;
.
Lalu yang manakah yang dimaksud variabel lokal pada contoh program di atas? Perhatikan gambar 1.
Perhatikan fungsi penjumlahan()
. Pada fungsi tersebut terdapat 3 variabel yang dideklarasikan yakni variabel a
, b
, dan c
yang bertipe integer. Karena variabel ini dideklarasikan secara lokal pada fungsi penjumlahan()
maka variabel tersebut tidak dapat diakses dari fungsi main()
.
Variabel lokal pada beberapa fungsi
Hampir sama dengan program pada contoh 1, berikut contoh fungsi dengan variabel lokalnya masing-masing. Perhatikan gambar 2.
Pada gambar 2 kita dapat melihat bahwa pada terdapat variabel lokal pada setiap fungsi yang ada. Fungsi penjumlahan()
memiliki variabel lokal a
, b
, dan c
sedangkan fungsi main() memiliki variabel lokal d
.
Variabel Global
Variabel global adalah variabel yang memiliki ruang lingkup file. Variabel global dideklarasikan di luar fungsi apapun dalam file.
Berdasarkan konvensi, variabel global dideklarasikan di bagian atas file, di bawah keyword include dan di atas kode apapun. Dengan begitu variabel global dapat:
- Diakses dari titik awal hingga akhir file di mana variabel tersebut dideklarasikan.
- Digunakan di mana saja di dalam file dimana variabel tersebut dideklarasikan
- Dianggap sebagai namespace global
Seperti yang kita ketahui bahwa program dalam C++ selalu terdapat fungsi utama dengan nama main(). Apabila kita mendeklarasikan sebuah variable diluar fungsi main(), dan fungsi lainnya, maka dengan sendirinya compiler akan menganggap variabel tersebut sebagai variable global.
Kemudian, karena dideklarasikan di awal file maka variabel global dibuat saat program dimulai, dan dimusnahkan ketika program berakhir. Ini disebut durasi statis.
Berikut contoh program penggunaan variabel global:
#include <iostream>
using namespace std;
int c;
int a=10;
int penjumlahan(int b){
c = a + b;
return c;
}
int main(){
int d = penjumlahan(5);
cout<<"a = "<< a <<endl;
cout<<"a + d = "<< d <<endl;
return 0;
}
Agar lebih jelas berikut kami berikan penjelasan disertai gambar ilustrasi mengenai variabel global. Perhatikan gambar 3.
Pada program sederhana yang kita lihat pada contoh program 2 dan gambar 3 di atas dapat diketahui bahwa terdapat dua fungsi yakni fungsi main()
dan fungsi penjumlahan()
. Mirip dengan program contoh 1, namun pada program ini kita menjadikan variabel c
, dan a
sebagai variabel global. Pada program di atas variabel c
, dan a
dideklarasikan pada baris 3 dan 4. Itu berarti bahwa variabel c
, dan a
dideklarasikan diluar area “kekuasaan” fungsi main()
dan penjumlahan()
. Selain itu pendeklarasiannya diletakkan di atas semu fungsi yang ada. Maka dari itu, variabel c
, dan a
dapat diakses dari manapun pada bagian program, baik itu dari badan fungsi main()
maupun penjumlahan()
.
Pada fungsi main()
kita lihat variabel global a
diakses untuk ditampilkan isinya melalui perintah baris 12. Sedangkan pada fungsi penjumlahan()
variabel global c
dan a
dipanggil melalui perintah baris 6. Kedua variabel tersebut diakses pada proses penjumlahan antara variabel a
dan b
. Hasil penjumlahannya disimpan di variabel c
.
Persamaan yang dapat kita lihat pada variabel c dan a adalah bahwa keduanya dapat langsung diakses pada fungsi manapun. Kedua variabel tersebut tidak perlu dideklarasikan terlebih dahulu pada blook fungsi. Hal tersebut berarti bahwa variabel yang diakses adalah variabel global c
, dan a
.
Mendeklarasikan nama variabel lokal dan global yang sama
Apa yang terjadi jika misalnya kita mendeklarasikan variabel lokal dengan nama yang sama dengan variabel global pada badan fungsi penjumlahan()
? Perhatikan contoh program berikut.
#include <iostream>
using namespace std;
int a=4;
int b=5;
int c;
int penjumlahan(){
int c = a + b;
return c;
}
int main(){
cout<<"Hasil penjumlahan 4 dan 5 adalah: "<<penjumlahan()<<endl;
cout<<"Nilai variabel a adalah: "<<a<<endl;
cout<<"Nilai variabel b adalah: "<<b<<endl;
cout<<"Nilai variabel c adalah: "<<c<<endl;
return 0;
}
Perhatikan variabel c
pada contoh di atas.Dapat kita lihat bahwa variabel c
dideklarasikan dua kali yaitu pada baris 5 dan 8. Pada saat perintah baris 16 dieksekusi untuk menampilkan isi dari variabel c
maka nilai yang ditampilkan adalah 0.
Kenapa seperti itu?
Pertama, compiler menganggap bahwa variabel c
yang dideklarasikan pada baris 5 dan variabel c
yang dideklarasikan pada baris 8 adalah dua variabel yang berbeda walaupun namanya sama. Variabel c
pada baris 8 adalah variabel lokal yang berarti berbeda dengan variabel c
baris 5 yang merupakan variabel global. Karena variabel c
global tidak pernah diisi dengan nilai apapun, maka nilai yang ditampilkan adalah 0.
Adapun variabel c
lokal, nilainya dikirim ke fungsi pemanggilnya pada perintah cout<<"Hasil penjumlahan 4 dan 5 adalah: "<<penjumlahan()<<endl;
di baris 13. Inilah yang menyebabkan nilai 9 ditampilkan saat pengeksekusian baris perintah ini yang berarti bahwa nilai sembilan bukan dari variabel c
global tetapi dari nilai balik dari fungsi penjumlahan()
.
Kedua, variabel c
lokal yang dideklarasikan di dalam fungsi penjumlahan()
dihancurkan setelah compiler keluar dari area fungsi tersebut.
Kesalahan dalam mengakses variabel lokal
Jika anda mencoba mengakses variabel b
melalui fungsi main()
seperti contoh di bawah ini. Maka, dapat dipastikan akan terjadi error pada baris 12.
#include <iostream>
using namespace std;
int c;
int a = 10;
int penjumlahan(int b){
c = a + b;
return c;
}
int main(){
int d = penjumlahan(5);
cout<<"b = "<< b <<endl;
cout<<"a + d = "<< d <<endl;
return 0;
}
Berikut penjelasannya disertai gambar ilustrasi. Perhatikan gambar 4.
Berdasarkan contoh program 4 dan gambar 4 dapat diketahui bahwa pengaksesan variabel b
pada fungsi main()
menimbulkan error. Hal itu disebabkan karena variabel b
adalah variabel lokal yang dideklarasikan pada fungsi penjumlahan()
. Sehingga variabel b
hanya dikenali di wilayah “kekuasaan” fungsi penjumlahan()
. Variabel b
tidak dikenali pada fungsi main()
. Dengan kata lain, fungsi main()
menganggap bahwa tidak ada variabel b
di wilayahnya.
Kesalahan dalam penempatan pendeklarasian variabel global
Jika anda mencoba mengakses variabel a
dan c
melalui fungsi penjumlahan()
seperti contoh di bawah ini. Maka, dapat dipastikan akan terjadi error pada baris 5
.
#include <iostream>
using namespace std;
int penjumlahan(int b){
c = a + b;
return c;
}
int c;
int a=10;
int main(){
int d = penjumlahan(5);
cout<<"a = "<< a <<endl;
cout<<"a + d = "<< d <<endl;
return 0;
}
Berikut penjelasannya disertai gambar ilustrasi. Perhatikan gambar 5.
Berdasarkan contoh program 5 dan gambar 5 dapat diketahui bahwa pengaksesan variabel a dan c pada fungsi penjumlahan()
menimbulkan error. Hal itu disebabkan karena variabel global a
dan c
dideklarasikan di bawah fungsi penjumlahan()
. Sehingga variabel a
dan c
hanya dikenali di wilayah “kekuasaan” fungsi main()
. Variabel a
dan c
tidak dikenali pada fungsi penjumlahan()
. Dengan kata lain, fungsi penjumlahan()
menganggap bahwa tidak ada variabel a
dan c
di “wilayah”nya.
Jadi, solusi untuk mengatasi masalah di atas adalah pindahkan pendeklarasian variabel a
dan c
di atas variabel fungsi penjumlahan()
. Sehingga variabel a
dan c
dapat diakses tidak hanya di fungsi main()
namun juga di fungsi penjumlahan()
.
Itulah hal yang bisa kami jelaskan mengenai variabel lokal dan global. Semoga dapat menambah wawasan teman-teman yang masih baru dalam dunia pemrograman. Semoga bermanfaat.
Jika ingin mendengarkan penjelasan secara lisan, jangan sungkan untuk mengunjungi channel youtube kami “PAKKODING“.
Oh iya, share halaman ini agar orang-orang yang baru belajar pemrograman dapat terbantu.
Terima kasih.
13,940 total views, 3 views today