Programlama ile alakalı öğrenmeniz gereken bilgiler kaynağı

29.03.2016

Global ve Local Değişkenler

2 yorum :
Global ve Local

C++ Değişkenlerin Etkili Olduğu Alanlar

Global ve local değişkenlerin kullanıldığı etki alanı vardır. Bir değişkeni kendi etki alanı altında kullanmalıyız. Bir yerde değişken tanımlayıp diğer farklı yerde kullanmaya çalışırsak program derleme hatası verir. Örneğin for içinde tanımladığımız değişkenleri for un dışında kullanamayız. While, if ve fonksiyonlarda da bu böyledir.

Etki alanlarını iki grupta toplayabiliriz:

Blok tanınabilirlik alanı. (Block scope): Bir değişkenin tanımlandıktan sonra, derleyici tarafından, yalnızca belirli bir blok içinde tanınabilmesidir.
Dosya tanınabilirlik alanı (File scope) : Bir değişkenin tanımlandıktan sonra tüm kaynak dosya içinde, yani tanımlanan tüm fonksiyonların hepsinin içerisinde tanınabilmesidir.


Değişkenleri de tanınabilirlik alanlarına göre ikiye ayırabiliriz :



Yerel değişkenler (local variables)
Global değişkenler (global variables)


Yerel Değişkenler (Local Variables)

Fonksiyonların içinde tanımlanan değişkenlere yerel değişkenler denir. Yerel değişkenlere sadece içinde olduğu fonsiyonlardan erişilir. Kısacası süslü parantezler ( {} ) içerisinde tanımlanan değişkenler yine o parantezler içerisinde geçerlidir. For gibi operatörlerde tek satırla yazılan kodlarda süslü parantez yoktur. Ama biz onu süslü parantez içinde olduğunu düşüneceğiz. Yani tek satırlık for, if, while gibi operatörlerde tanımlanan değişkenleri o operatörün dışında kullanamayız.

Operatör içinde operatör olan durumlar da vardır. Bu durumlarda kullanılan bir yerel değişken o operatördeki tanımlanmış bir değişkeni ifade edebilir veya kullanıldığı operatörü içine alan bir operatörde tanımlanmış bir değişkeni ifade eder. 

Aynı isimli değişkenler aynı operatörlerde tanımlanamaz ama iç içe tanımlanmış operatörlerde tanımlanabilir. Bu durumda x isminde tanımlanmış bir değişken en son tanımlanmış x ismindeki değişkeni ifade eder.

Örnek 

int main() {
    
    {
        int sonuc = 10;
        cout << sonuc;
        {
            int sonuc = 20;
            cout << sonuc;
        }
    }
    
}
Burada iki tane sonuc yerel değişkeni tanımladık. İlk sonuc değişkeni birinci ve ikinci parantezde kullanılabilir, ikinci sonuc değişkeni ise ikinci parantezde kullanılabilir.

Yerel değişkenlerin tanımlandığı yerleri daha iyi anlamak için doğru ve yanlış kullanımlarıyla ilgili örnek verelim.

Yanlış Kullanım

int main() {
    
    int x = 5;
    if (x==5) {
        int dogru = 1;
    }
    else int dogru = 0;
    cout << dogru;
    
}
dogru değişkenini if içinde tanımladıysak if içinde kullanmak zorundayız. Yukarıda olduğu gibi cout << dogru yazarak if dışında kullanırsak derleme hatası verir. Peki bu kodun doğrusu nasıl yazılır?

Doğru Kullanım

int main() {
    
    int x = 5;
    int dogru;
    if (x==5) {
        dogru = 1;
    }
    else dogru = 0;
    cout << dogru;
    
}

dogru değişkenini main fonksiyonunda kullanılabilir olarak tanımladık. Böylelikle if ve else içinde de kullanılabilir oldu. 


Tanımlanmış bir yerel değişkeni ondan önce kullanamayız.

Örnekler

int main() {
    
    int a;
    float a;
    
}

Aynı etki alanda iki tane aynı isimli değişken tanımlanmıştır. Yanlış kullanım

Etki Alanları Örnek

int main() {
    
    // a nın etki alanı değil
    
    int a;
    
    // a nın etki alanı
    
    {
        // a nın etki alanı
        // b nin etki alanı değil

        int b;
        
        // a nın etki alanı
        // b nin etki alanı
        
        {
            // a nın etki alanı
            // b nin etki alanı
            // c nin etki alanı değil
            
            int c;
            
            // a nın etki alanı
            // b nin etki alanı
            // c nin etki alanı

        }
    }
}

Farklı void, int vb. fonksiyonlarda aynı isimli yerel değişkenler tanımlanabilir ama tanımlanan değişkenler kendi fonksiyonundan çağrılabilir.

void ornek()
{
    int  k;

}

void ornek1()
{
    int  k;
    
}

void ornek2()
{
    int  k;
    
}

Global Değişkenler (Global Variables)

Tüm fonksiyonların dışında tanımlanan değişkenlere global değişkenler denir. Bu tür değişkenler tanımlandıktan sonraki her yerde kullanılabilir.

Örnek

#include <iostream>

using namespace std;

// global değişken burada tanımlanabilir

int a;

void ornek()
{
    // a burada kullanılabilir
    // b burada kullanılamaz

}

// global değişken burada tanımlanabilir

void ornek1()
{
    // a burada kullanılabilir
    // b burada kullanılamaz

}

// global değişken burada tanımlanabilir

int b;

void ornek2()
{
    // a burada kullanılabilir
    // b burada kullanılabilir

    
}

// global değişken burada tanımlanabilir

int main() {
    
    // a burada kullanılabilir
    // b burada kullanılabilir

}

Not : Yerel değişkenler etki alanı olarak global değişkenlerden büyüktür. Yani aynı isimli değişken hem global hem de yerel olarak tanımlanmış ise yerel olanın olduğu operatörde yerel olanın etkisi olacaktır. Tabiki yerel değişkenin altında olan yer o yerel değişkenin etki alanına dahildir. Bir operatörde yerel değişkenden önce o isimde bir değişken kullanılırsa global değişkenin etki alanına girer.


2 yorum :

  1. Çok teşekkür ederim.
    Buradaki bilgiler yardımıyla istediğimi yapabildim.

    YanıtlaSil
  2. peki "::değişken;" tipini nasıl kullanabiliriz

    YanıtlaSil