Herhangi bir programlama dilinde değişkenlerin çok önemli bir rolü vardır. Değişkenler kapsamlarına göre Global değişkenler ve Yerel değişkenler olarak sınıflandırılır. Global ve yerel değişkenler arasındaki temel fark, global değişkenlere programın tamamından global olarak erişilebilmesi, yerel değişkenlere ise yalnızca tanımlandıkları fonksiyon veya blok içinden erişilebilmesidir. Bu başlıkta öncelikle değişkenlerin ne olduğunu, kapsamını, yerel değişkenleri, global değişkenleri ve ardından her iki değişken arasındaki farkları anlayacağız.
Değişken Nedir?
Değişken, bir bilgisayar programındaki değerlerin saklandığı bellek konumuna verilen addır. Bir programda başvurulabilecek ve değiştirilebilecek bilgileri depolamak için kullanılır.
Değişken için herhangi bir isim seçebiliriz ancak programlama semantiğine uyması gerekir. Olabildiğince , a, b, x, y, z, alt, böl, toplam, ort, vb. .
Diyelim ki programımızda saklamak ve kullanmak istediğimiz 10 ve 20 olmak üzere iki değer var. Bunun için bir değişken kullanmamız gerekiyor ve aşağıdaki adımları uygulayacağız:
- Öncelikle uygun isimle bir değişken yaratacağız veya bildireceğiz.
- Bu değerleri saklamak için değişkenlere atayın.
- Bu değerler saklandıktan sonra programımızda bu değişkenleri isimleriyle kullanabiliriz.
Yukarıdaki görselde de görüldüğü gibi 001 ve 002 olmak üzere iki adet hafıza slotu var ve bu konumlara A ve B olarak isim verdik. A 10, B ise 20 içeriyor.
Farklı programlama dillerinin değişkeni bildirmenin farklı yolları vardır. Örneğin C dilinde değişkeni şu şekilde bildirebiliriz:
Sözdizimi: (C dilinde değişken bildirimi sözdizimi)
datatype v1, v2, v3,....;
Örnek:
#include void main(){ int a; int b; int sum; }
Değişkenin Kapsamı
Her değişken tanımlanır ve kendi kapsamı dahilinde kullanılabilir ve bu değişkenin programın neresinde kullanılabileceğini belirler. Kapsam, o değişkenin ömrü anlamına gelir. Bu, değişkene yalnızca kendi kapsamı dahilinde erişilebileceği veya görülebileceği anlamına gelir.
Değişkenlerin kapsamı bildirimleriyle tanımlanabilir ve değişkenler temel olarak iki şekilde bildirilir:
Küresel Değişken Nedir?
- Global değişkenler, tüm fonksiyonların veya blokların dışında bildirilen ve bir programda global olarak erişilebilen değişkenlerdir.
- Programda bulunan herhangi bir fonksiyonla erişilebilir.
- Bir global değişken tanımladığımızda, değeri farklı işlevlerle kullanıldığı şekilde değiştirilebilir.
- Global değişkenin ömrü program yürütülene kadar mevcuttur. Bu değişkenler derleyici tarafından verilen sabit bellek konumlarında saklanır ve otomatik olarak temizlenmez.
- Global değişkenler çoğunlukla programlamada kullanılır ve tüm fonksiyonların aynı verilere erişmesi gereken durumlarda kullanışlıdır.
Örnek:
#include int a=50, b=40; void main() { printf('a = %d and b=%d',a,b); }
Yukarıdaki örnekte a ve b global değişkenlerdir.
Global Değişkenin Avantajları
- Global değişkenlere programdaki tüm işlevler tarafından erişilebilir.
- Yalnızca tek bir beyan gereklidir.
- Tüm işlevler aynı verilere erişiyorsa çok kullanışlıdır.
Küresel Değişkenin Dezavantajları
- Global bir değişkenin değeri, programdaki herhangi bir fonksiyon tarafından kullanılabileceği için yanlışlıkla değiştirilebilir.
- Çok sayıda global değişken kullanırsak programda hata oluşma olasılığı yüksektir.
Yerel Değişken Nedir?
- Bu değişkenlere yalnızca tanımlandıkları fonksiyon içinden erişilebilir.
- Yerel değişkenin ömrü yalnızca kendi işlevi dahilindedir; bu, değişkenin işlev yürütülene kadar var olduğu anlamına gelir. Fonksiyonun yürütülmesi tamamlandığında, yerel değişkenler yok edilir ve artık fonksiyonun dışında mevcut değildir.
- Yerel değişkenlerin kapsamının sınırlı olmasının nedeni, yerel değişkenlerin doğası gereği dinamik olan ve içinde saklanan verileri otomatik olarak temizleyen yığında saklanmasıdır.
- Ancak değişkeni 'statik' anahtar kelimeyle statik hale getirerek yerel değişkenin değerini koruyabiliriz.
Örnek:
#include void main() { int x=50, y=40; printf('x = %d and y=%d',x, y); }
Yukarıdaki örnekte, ana fonksiyon içerisinde x ve y iki değişkeni tanımladık. Dolayısıyla bunlar yerel değişkenlerdir.
Yerel Değişkenin Avantajları
- Bir yerel değişkenin aynı adı, yalnızca bildirildiği işlev tarafından tanındığından farklı işlevlerde kullanılabilir.
- Yerel değişkenler belleği yalnızca işlev yürütüldüğünde sınırlı bir süre boyunca kullanır; bundan sonra aynı hafıza konumu yeniden kullanılabilir.
Yerel Değişkenlerin Dezavantajları
- Yerel değişkenin kapsamı yalnızca işleviyle sınırlıdır ve diğer işlevler tarafından kullanılamaz.
- Yerel değişken tarafından veri paylaşımına izin verilmez.
Küresel Değişken ile Yerel Değişken Arasındaki Karşılaştırma Tablosu
Küresel değişken | Yerel değişken |
---|---|
Global değişkenler tüm fonksiyon bloklarının dışında bildirilir. | Yerel Değişkenler bir fonksiyon bloğu içinde bildirilir. |
Kapsam program boyunca kalır. | Kapsam sınırlıdır ve yalnızca bildirildikleri işlevin içinde kalır. |
Global değişkendeki herhangi bir değişiklik, nerede kullanılıyorsa kullanılsın programın tamamını etkiler. | Yerel değişkende yapılacak herhangi bir değişiklik programın diğer fonksiyonlarını etkilemez. |
Programın yürütüldüğü süre boyunca programda global bir değişken bulunur. | İşlev yürütüldüğünde yerel bir değişken oluşturulur ve yürütme bittiğinde değişken yok edilir. |
Program boyunca, programda bulunan tüm işlevlerle erişilebilir. | Yalnızca bildirildiği işlev ifadeleriyle erişilebilir, diğer işlevler tarafından erişilemez. |
Global değişken başlatılmamışsa varsayılan olarak sıfır alır. | Yerel değişken başlatılmamışsa, varsayılan olarak çöp değerini alır. |
Global değişkenler belleğin veri bölümünde saklanır. | Yerel değişkenler bellekteki bir yığında saklanır. |
Aynı isimde çok sayıda değişken tanımlayamayız. | Aynı isimde fakat farklı fonksiyonlarda çeşitli değişkenler tanımlayabiliriz. |
Yerel ve Global Değişken arasındaki farkları anlamaya yönelik örnekler
Şimdi yerel ve global değişkenler arasındaki farkı daha iyi anlamak için farklı programlama dillerindeki örnekleri anlayalım.
C'de Yerel ve Küresel
Örnek 1:
java dizesine int
#include // Global variables int a; int b; int Add() { return a + b; } int Mul() { int c=10; //Local Variable int d=20; ////Local Variable return c*d; } void main() { int Ans1, Ans2, c=30;// Local variable a = 50; b = 70; Ans1 = Add(); Ans2= Mul(); printf('The addition result is: %d ',Ans1); printf('The Multiplication result is: %d ',Ans2); printf('%d ', c); }
Çıktı:
The addition result is: 120 The Multiplication result is: 200 30
Yukarıdaki programda gördüğümüz gibi, A Ve B Add() ve main() gibi farklı işlevlerde erişilen global değişkenler. Oysa c, d, Ans1 ve Ans2 gibi yalnızca tanımlandıkları işlevler tarafından erişilen yerel değişkenler de vardır.
Mul() fonksiyonu dışında c ve d değişkenlerini kullanmaya çalışırsak, bunlar yeni değişkenler olarak kullanılacaktır. Main() fonksiyonunda c'yi alarak da gösterdiğimiz gibi, yeni bir değişken olarak ele alınır.
Yerel Vs. Python'da küresel
Örnek 1:
v1 = 'Hey, I am Global Variable!, I can be used everywhere in the program.' #globalvariable def func1(): v2='Hey, I am Local Variable!, I can be used within this block only in the program.' #localvariable print(v2) func1() #calling func1 def func2(): print(v1) func2() #callin func2
Çıktı:
Hey, I am a Local Variable!, I can be used within this block only in the program. Hey, I am Global Variable!, I can be used everywhere in the program.
Yukarıdaki programda bir global değişken v1 ve bir yerel değişken v2 aldık. v1 global olduğundan herhangi bir işlevden kolayca erişilebilir ve v2 yereldir; yalnızca beyan edilen işlevi dahilinde kullanılır. Fakat func1'de v1'i kullanmaya çalışırsak hata verecektir. Aşağıdaki örneği görelim:
Örnek-2
v1 = 'Hey, I am Global Variable!, I can be used everywhere in the program.' #globalvariable def func1(): v2='Hey, I am Local Variable!, I can be used within this block only in the program.' #localvariable print(v2) print(v1) func1() #calling func1 def func2(): print(v1) print(v2) func2() #callin func2
V1'e erişmeyi denersek fun1 ve func2'den kolaylıkla erişilebilir. Fakat v2'ye kendi fonksiyonu dışında yani func2'de erişmeye çalışırsak çalışma zamanı hatası verecektir. Yukarıdaki kodu çalıştırdıktan sonra aşağıdaki çıktıyı elde edeceğiz:
Çalışma hatası:
NameError: global name 'v2' is not defined
Çıktı:
Hey, I am Local Variable!, I can be used within this block only in the program. Hey, I am Global Variable!, I can be used everywhere in the program. Hey, I am Global Variable!, I can be used everywhere in the program.
Yerel Vs. Java'da Global Değişken
Java'da global değişken kavramı yoktur; Java Nesneye yönelik bir programlama dili olduğundan her şey Sınıfın bir parçasıdır. Ancak bir değişkeni global olarak erişilebilir hale getirmek istiyorsak, onu bir değişken kullanarak statik hale getirebiliriz. statik Anahtar kelime.
class Demo { // static variable static int a = 10; // non-static or local variable int b = 20; } public class Main { public static void main(String[] args) { Demo obj = new Demo(); // accessing the non-static variable System.out.println('Value of non-static variable is: ' + (obj.b)); // accessing the static variable System.out.println('Value of static variable is:' + (Demo.a)); } }
Çıktı:
Value of non-static variable is: 20 Value of static variable is:10
Yukarıdaki programda bir yerel değişken veya statik olmayan değişken ve bir statik değişken kullandık. Yerel değişkene Demo sınıfının nesnesi kullanılarak erişilebilirken, statik değişkene sınıfın adı kullanılarak erişilebilir.