Jump to content

Değişken Nedir?


Doğuhan ELMA

241 views

Değişken Nedir?

Değişken kelimesini göz önünde bulundurursanız, değişen bir şeyi tanımladığı açık olmalıdır. Ama değişen tam olarak nedir? Çoğu programcı için cevap açık görünecektir: programın yürütülmesi sırasında değişebilen değerdir. Aslında değişebilen birkaç şey vardır, bu nedenle bir değişkenin ne olduğunu açıklamaya çalışmadan önce, değişkenlerin (ve diğer nesnelerin) sahip olabileceği bazı nitelikleri tartışmak muhtemelen iyi bir fikirdir. Bunu yapmak için önce özniteliği(attribute), bağlamayı(binding), statik nesneleri(static objects), dinamik nesneleri(dynamic objects), kapsamı(scope) ve yaşam süresini(lifetime) tanımlamalıyım.

 

1.       Öznitelik(Attributes):

Nitelik, bir nesneyle ilişkili bazı özelliklerdir. Örneğin, bir değişkenin ortak öznitelikleri, o değişkenin adını, bellek adresini, çalışma zamanı değerini, bu değerle ilişkilendirilmiş bir veri türünü ve o değişkenin boyutunu (bayt olarak) içerir. Farklı nesnelerin farklı nitelik kümeleri olabilir. Örneğin, bir veri türü, ad ve boyut gibi özniteliklere sahip bir nesnedir, ancak genellikle onunla ilişkili bir değere veya bellek konumuna sahip olmaz. Bir sabit, değer ve veri türü gibi özniteliklere sahip olabilir, ancak bir bellek konumuna ve bir isme sahip olmayabilir (örneğin, değişmez bir sabitse). Bir değişken bu özelliklerin hepsine sahip olabilir. Aslında öznitelik listesi genellikle bir nesnenin sabit mi, veri tipi mi, değişken mi yoksa başka bir şey mi olduğunu belirler.

 

2.       Bağlama(Binding):

Bağlama, bir özniteliği bir nesneyle ilişkilendirme işlemidir. Örneğin, bir değişkene bir değer atandığında, değer, atama noktasında o değişkene bağlanır. Değer, başka bir değer kendisine bağlanana kadar (başka bir atama işlemi aracılığıyla) değişkene bağlı kalır. Aynı şekilde program çalışırken bir değişkene bellek ayırırsanız, değişken o noktada bellek adresine bağlanır. Siz değişkenle farklı bir adres ilişkilendirene kadar değişken ve adres birbirine bağlıdır. Bağlamanın çalışma zamanında gerçekleşmesi gerekmez. Örneğin, değerler derleme sırasında sabit nesnelere bağlanır ve bu tür bağlamalar program çalışırken değişemez.

Benzer şekilde, bazı değişkenlerin adresleri derleme zamanında kendilerine bağlı olabilir ve bellek adresi program yürütülürken değişemez.

 

3.       Statik Nesneler(Static Objects):

Statik nesnelerin, uygulamanın yürütülmesinden önce kendilerine bağlı bir özniteliği vardır. Sabitler, statik nesnelerin iyi örnekleridir; uygulamanın yürütülmesi boyunca kendilerine bağlı aynı değere sahiptirler. Python, C/C++ ve Ada gibi programlama dillerindeki genel (program düzeyinde) değişkenler de programın ömrü boyunca kendilerine bağlı aynı bellek adresine sahip oldukları için statik nesnelere örnektir. Sistem, program yürütülmeye başlamadan önce öznitelikleri statik bir nesneye bağlar (genellikle derleme sırasında veya bağlama aşamasında, ancak değerleri daha erken bağlamak da mümkündür).

 

4.       Dinamik Nesneler(Dynamic Objects)

Dinamik nesneler, program yürütme sırasında kendilerine bağlı bazı özniteliklere sahiptir. Program çalışırken bu özelliği (dinamik olarak) değiştirmeyi seçebilir. Dinamik nitelikler genellikle derleme zamanında belirlenemez. Dinamik öznitelik örnekleri, çalışma zamanında değişkenlere bağlı değerleri ve çalışma zamanında belirli değişkenlere bağlı bellek adreslerini içerir (ör. bir malloc veya başka bir bellek ayırma işlevi çağrısı aracılığıyla).

 

5.       Kapsam(Scope):

Bir tanımlayıcının kapsamı, programın, tanımlayıcı adının nesneye bağlı olduğu bölümüdür. Çoğu derlenmiş dildeki adlar yalnızca derleme sırasında bulunduğundan, kapsam genellikle statik bir özniteliktir (ancak bazı dillerde kapsamın dinamik bir öznitelik olması mümkündür). Bir adın bir nesneye nerede bağlı olduğunu kontrol ederek, bu adı programın başka bir yerinde yeniden kullanmak mümkündür. Çoğu modern zorunlu programlama dili (örneğin, C/C++/C#, Java, Pascal ve Python) yerel ve küresel değişkenler kavramını destekler. Bir yerel değişkenin adı, yalnızca bir programın belirli bir bölümünde (örneğin, belirli bir işlev içinde) belirli bir nesneye bağlıdır. Bu nesnenin kapsamı dışında, ad farklı bir nesneye bağlanabilir. Bu, global ve yerel bir nesnenin herhangi bir belirsizlik olmadan aynı adı paylaşmasına izin verir. Bu potansiyel olarak kafa karıştırıcı görünebilir, ancak i veya j gibi değişken adlarını bir proje boyunca yeniden kullanabilmek, programcıyı döngü dizinleri ve programdaki diğer kullanımlar için eşit derecede anlamsız benzersiz değişken adları hayal etmekten kurtarabilir. Nesne bildiriminin kapsamı, adın belirli bir nesne için nerede geçerli olduğunu belirler. Yorumlayıcının program yürütme sırasında tanımlayıcı adlarını koruduğu yorumlayıcı dillerde, kapsam dinamik bir öznitelik olabilir. Örneğin, BASIC programlama dilinin çeşitli sürümlerinde dim deyimi yürütülebilir bir deyimdir. dim yürütülmeden önce, tanımladığınız ad, dim yürütüldükten sonra olduğundan tamamen farklı bir anlama sahip olabilir. SNOBOL4, dinamik kapsamı destekleyen başka bir dildir. Genel olarak, çoğu programlama dili dinamik kapsamdan kaçınır çünkü onu kullanmak anlaşılması zor programlarla sonuçlanabilir; ancak çoğu dilin dinamik kapsamdan kaçınması, onun var olmadığı anlamına gelmez. Genel olarak kapsam, yalnızca adlara değil, herhangi bir özniteliğe uygulanabilir.

 

6.       Yaşam Süresi(Lifetime):

Bir özniteliğin ömrü, bir özniteliği bir nesneye ilk kez bağladığınız andan, belki de nesneye farklı bir öznitelik bağlayarak bu bağı kopardığınız noktaya kadar uzanır. Program bir özniteliği bir nesneyle ilişkilendirir ve bu bağı asla bozmazsa, özniteliğin ömrü, ilişkilendirme noktasından programın sona erdiği noktaya kadardır. Örneğin, bir değişkenin ömrü, değişken için belleği ilk ayırdığınız andan o değişkenin deposunu serbest bıraktığınız ana kadardır. Bir program yürütülmeden önce statik nesneleri bağladığından (ve bu tür öznitelikler program yürütülürken değişmez), statik bir nesnenin ömrü, programın yürütülmeye başladığı andan uygulamanın sonlandırıldığı ana kadar uzar.

 

Peki Değişken Nedir?

Değişken, kendisine dinamik olarak bağlı bir değere sahip olabilen bir nesnedir. Yani program, çalışma zamanında değişkenin değer özniteliğini değiştirebilir. İşlemsel sözcüğün değiştirilebilir olduğuna dikkat edin. Yalnızca programın çalışma zamanında bir değişkenin değerini değiştirebilmesi gerekir; nesneyi bir değişken olarak kabul etmek için birden çok değeri bağlamak zorunda değildir. Bir değerin bir nesneye dinamik olarak bağlanması, bir değişkenin tanımlayıcı niteliğidir, ancak diğer nitelikler dinamik veya statik olabilir. Örneğin, bir değişkenin bellek adresi, değişkene derleme zamanında statik olarak veya çalışma zamanında dinamik olarak bağlanabilir. Benzer şekilde, bazı dillerdeki değişkenler, program yürütülürken değişen dinamik türlere sahipken, diğer değişkenler, belirli bir programın yürütülmesi sırasında sabit kalan statik türlere sahiptir. Yalnızca değerin bağlanması, nesnenin bir değişken mi yoksa başka bir şey mi (sabit gibi) olduğunu belirler.

0 Comments


Recommended Comments

There are no comments to display.

Guest
Add a comment...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...