Değişken Kavramı

DeğişkenlerProgramlama ile ilgili giriş bilgilerine değindik. Yavaş yavaş programlama pratiklerine geçebiliriz. Ancak bir koda veya programlama diline değinmeden önce, programlama dillerinde ihtiyacımız olan bazı temel kavramlara değinmekte fayda var. İlk önce değişkenler kavramından başlayalım isterseniz.

Bazı temel kavramlar, hemen hemen tüm programlama dillerinde standarttır. Her programcının bu basit kavramlar hakkında bilgi sahibi olması gerekir. Önümüzdeki bir kaç yazıda biraz bunlara değineceğim. Gelin değişkenlerden başlayalım.

DeğişkenlerBu kavrama matematik derslerinden aşinayız. Meşhur “x değişkeni” ifadesindeki, X’i anlatmak istiyoruz. Yani bir başka bir şeyi ifade, sayı, vb’ni ifade eden sembollere değişken diyoruz. Örneğin bir matematik formülüne X = 5 ifadesiyle başlarsak, o formülün içinde X başka bir değer alana kadar 5’e temsil edecektir.

Programlamadaki değişkenler de aynen bu matematik formüllerindeki değişkenlere benzer. Tek farkı, matematik formüllerinde değişkenlere genelde sayıları atayabilirsiniz. Ancak programlama dillerinde bir değişkene sayıları, harfleri, cümleleri, dosyaları veya nesneleri atayabilirsiniz. Bu yüzden programlamada hem değişkenler, hem de “tipleri” önemlidir.

 

VERİ TİPLERİ

Veri tipleri, temsil edebileceği öğenin niteliğine ve niceliğine göre belirlenir. Her dilde bulunabilen temel değişken tipleri ise şunlardır:

veri tipleri
Bu resimde C dilindeki data tiplerini görüyorsunuz. Tipi, İçine atanabilecek değer aralığını ve bellekte kaç byte yer kapladığını tabloda göstermiş arkadaşlar.

TAM SAYI: Bir tamsayının yerine kullanabilecek değişkenler, tam sayı tipinde değişkenlerdir. Bunlar da kendi aralarında, saklayabilecekleri sayıların büyüklüğüne göre (yani bilgisayar belleğinde işgal edecekleri yere göre) ayrılırlar. Örneğin JAVA dilinde BYTE bir tam sayı değişken tipidir ve bellekte 8 bit yer kaplar. Yani 1 byte. Adını da buradan almıştır. Ayrıca – veya + değerler alabilir. Yani -128’den +127’ye kadar tam sayılar bu tipteki değişkenlere atanabilir. Daha büyük sayıları temsil edebilmesi içinse yine JAVA’da, SHORT diye bir veri tipi bulunmaktadır. Bu tipte tanımlanmış değişkenler bellekte 2 byte yer kaplar ve -32768 ile +32767 arasında tam sayılar yerine kullanılabilir. Aynı şekilde INT değişken tipi 4 byte, LONG değişken tipi de 8 byte yer kapladığı için çok daha büyük tam sayılar için kullanılırlar.

ONDALIKLI SAYI: Tam sayılara benzer bir durum söz konusudur. Ondalıklı sayılar saklayabilirler. Bellekte daha çok yer kaplarlar. Örneğin Java’da FLOAT 4 byte yer kaplarken, DOUBLE 8 byte yer kaplar. Yani ondalıklı sayımızın ondalık hanesinde bir kaç basamak bizim için yeterliyse float, çok yüksek hassasiyete ihtiyacımız varsa double tipinde değişkenler kullanabiliriz.

ALFANUMERİK TİPLER: İçinde sadece sayı değil, yazı da bulunabilen veri tiplerine alfanumerik tipler diyoruz. Genelde bunlar da büyüklüğüne göre sınıflandırılabilmekle birlikte, bazı dillerde tek bir tip haline gelmiştir. Örneğin JAVA’da ve C’de CHAR; C#, Visual Basic veya Delphi gibi dillerde STRING tipindeki değişkenlerde adımızı veya bir cümleyi saklayabiliriz.

MANTIKSAL TİP: Çoğu dilde boolean olarak geçen bu tip sadece doğru ve yanlış şeklinde iki sonucu saklayabilir. Bit olarak da ifade edilebilir. Sonuç 1 veya 0; ya da true ya da false şeklinde ifade edilir.

ÖZEL TİPLER: Yukarıda saydığımız basit veri tipleri dışında, değişkenlerde saklayabileceğimiz bir çok veri tipindeki içerik bulunmakta. Her dilde değişken olan bu tipler, içlerinde bir bilgisayar dosyasını, dilde oluşturduğumuz bir nesneyi veya kendi oluşturduğumuz başka tipleri içerebilir.

Örnek bir kod yazalım Java’dan:

public class KesirliSayı01 {
public static void Main()
{
int x = 3; //x adıyla tam sayı bir değişken tanımladık ve içine 3 sayısını atadık.
float y = 4.5f; //y adıyla bir ondalıklı sayı değişken tanımladık ve içine 4.5 sayısını atadık, Java’da float değişkenlerin sonuna “f” harfi koyulmalı
short z = 5; //z adıyla bir tam sayı değişkeni kullanıp içine 5 değerini atadık.
System.out.println(“x=”+x + “;  y=”+y +”; + z=”+z+ “;  x*y/z=” + x*y/z);   //Ekrana değişkenleri ve basit bir işlemi yazdırdık
}
}

 

TANIMLAMA BİÇİMLERİ

Veri tipleri dışında çoğu dilde değişkenlerin sınıflandırma yöntemleri de vardır. Örneğin programın tamamını etkileyen değişkenlere Global Değişken (Global Variables) denirken, sadece kendi tanımlandığı bölümde kullanılabilen değişkenlere ise Lokal Değişken (Local Variables) denmekte.

Genelde çoğu programlama dilinde, bir değişkeni programın üst bölümünde tanımlarsanız global olduğu anlamına gelir. Programınız çalıştığı sürece bu değişken için ayrılan bellek bölümü tutulur. Program kapanana kadar da değişkendeki değer değişmez. Program kodunun iç taraflarındaki, alt programlarda tanımladığınız değişkenler ise lokal kabul edilir ve alt programınız işini bitirene kadar bellekte saklanır. Alt programınız sona erdiğinde bellekten silinir. Alt programınız tekrar çalıştığında, bir önceki çalışmadaki değer unutulur.

Diziler başlığı altında diziler ve değişkenleri daha iyi anlayabileceğiniz bir örnek hazırladım. Orada global ve lokal değişkenler de kullandım.

 

DİZİLER

Bir diğer konu ise, bir çok dilin desteklediği dizi (array) değişkenler. Bu tipte değişkenlerin içine çok sayıda değer atayabiliyoruz. Örneğin C#’da double[] dizideg = new double[10]; yazdığımız zaman dizideg isimli değişkenin içine 10 tane farklı double tipinde sayı atayabiliriz. Başka bir satırda dizideg[0] = 4.5 dediğimizde dizideki ilk elemanın değeri 4.5, dizideg[1] = 2.5 dediğimizde dizideki ikinci elemanın değeri ise 2.5 olmakta.

Örneğin sınıfımızda 45 öğrenci var ve biz bunların notlarını programımız içinde saklamak ve kullanmak istiyoruz. 45 tane öğrenci için, 45 değişken açmak yerine; 45 elemanlı bir dizi açıp notları bunun içinde saklayabiliriz. Örnek olarak C# dilinde; double[] notlar = new double[45]; yazdığımızda 45 elemanlı bir dizi açılmış oluyor. Öğrencilerimizin notlarını alfabetik sırayla; notlar[0] = 4.5 gibi atamalarla atayıp, daha sonra bunları bir döngü vasıtasıyla toplatalım. Bunun için örnek programlardan faydalanalalım.

 

ÖRNEK C# PROGRAMI

Ben bu örnek için C#’da basit bir program hazırladım. Çalıştırdım ve sizlerle paylaşıyorum.

Öncelikle bir form application oluşturdum. Formun üzerine bir label, bir textbox ve bir button kontrolü ekledim. Ardından kod bölümüne aşağıdaki kodları yazdım:

Örnek C# programı

Program kodunun içine oldukça bol açıklama yaptım. Burada da kısaca değinmek gerekirse, notlar diye 45 elemanlık bir dizi tanımlıyoruz. Bu dizi tanımı Form1 class’ının en başında. Yani Form1 varolduğu sürece, bu değişkenin içindeki değerler bellekte tutulmaya devam edecek. Kullanıcı formu kapatırsa; yeniden açtığında içindeki her şey otomatik silinecek ve her şey baştan başlayacak. Bu durumda notlar değişkeni için Form1’de global diyebiliriz. Yani Form1 class’ının içine yazdığımız bütün alt programlarda kullanılabilir ve değerini hep muhafaza eder.

Yine AktifNo adında bir değişkende kullanıcının kaçıncı öğrencinin notunu girdiğini sakladım. İlk başta 0’dan başlıyor. Çünkü diziler genelde 1. elemandan değil, 0. elemandan başlar. Çoğu programlama dilinde böyledir. Yani girilen ilk not dizinin 1. notu değil, 0. notu kabul edilir. O yüzden aktif numaramız sıfırdan başladı. Kullanıcı her not girdiğinde bu AktifNo değişkenini 1 arttırdım. Bu şekilde hangi notu girmekte olduğunu buldum. Bu değişkenin global olmasından dolayı, Form1 kapanana kadar silinmeyecek ve hafızada kalacaktır. Form1 kapatılıp tekrar açıldığında, yine 0’dan başlayacaktır.

Program yazı kutusuna her değer girip EKLE tuşuna bastığında yazdığı yazıyı sayıya çevirip notlar dizimin aktif elemanına atadım. Aktif eleman numarasını 1 arttırdım. Sonra o güne kadar girilmiş elemanlar arasında döngüye girip bütün değerleri Toplam değişkeninde topladım. Döngüden çıktıktan sonra yazı kutusunu boşaltıp, o ana kadar girilenlerin ortalamasını kullanıcıya gösterdim.

Gelin adım adım çalıştıralım. Programı çalıştırdım ve karşıma şöyle bir pencere çıktı. Bu pencereyi form tasarımında ben tasarlamıştım zaten:

Not kutusuna 3 yazıyorum:

Ekle tuşuna basınca bana şöyle bir mesaj çıkarıyor. Henüz 1 adet not girdik ve ortalaması haliyle girdiğimiz rakam oldu.

Kutuya 6 yazıp tekrar EKLE tuşuna bastım. Bu kez hesaplayıp 4.5 buldu ve kullanıcıya gösterdi.

Kutuya bu kez 7 yazıp EKLE butonuna tıkladım. Ve yeni ortalamımızı ekrana gösterdi.

 

Gelin şimdi bu güzel örneği yaptıktan sonra, çılgınca bir şey daha yapalım. Aynı örneği başka bir programlama dilinde daha hazırlayalım. Ne güzel olur… Programla Dilleri yazısında bir çok dilden bahsetmiş ve aralarındaki farklardan söz etmiştik. Örneğin yukarıdaki programın %100 aynısını Delphi programlama dilinde yapmak güzel olmaz mı? Değişken isimleri aynı. İşlemler aynı. Sonuç aynı. Bu şekilde sizler de iki programlama dili arasındaki farkı görmüş olursunuz. Bu şekilde programlama dili mantığını daha iyi kavrayabilir, programlama dilinin esasında ne olduğunu daha güzel idrak edebilirsiniz.

 

ÖRNEK DELPHI PROGRAMI

Delphi editöründe File>New>VCL Forms Application deyip yeni bir windows form projesi oluşturdum. Yine C#’da yaptığım gibi formuma bir label, bir textbox (Delphi’deki adı edit) ve bir buton ekledim. Ve aşağıdaki kodları yazdım:

Şimdi yukarıdaki C# örneği ile, bu Delphi örneğini birlikte açıp karşılaştırın. Bu iki kod; size programlama dillerinin ne olduğunu, neden farklı farklı diller olduğunu ve aralarındaki farkları 100 satır yazıdan çok daha güzel anlatacaktır. Sonuçta elimizde bir iş var. Algoritmamızı biliyoruz. C# ve Delphi’nin farkı, aynı şeyi iki farklı şekilde anlatmamız. Hem her şey birbirine ne kadar benziyor, hem de ne kadar farklı.

Programcılığın ne olduğunu 2. programı açtıktan sonra daha iyi anlayacağız. Yukarıdaki adımları tek tek bu programda da uyguladım. Ve aşağıdaki sonuçlarla karşılaştım. Amacınızı bildikten ve algoritmanız hazır olduktan sonra iki farklı dilde de istediğiniz sonuca %100 aynı oranda ulaşabiliyorsunuz. Aralarındaki fark bir kaç kelimeden ve bir kaç görüntü farkından ibaret.

Bu yazıda değişken kullanımının bir kaç farklı dilde kullanımını gördük. Aynı zamanda C# ve Delphi ile aynı programı yazıp sonuçlarını karşılaştırdık. Oldukça güzel bir çalışma oldu. Belki de sadece değişkenler hakkında bir yazı değil, Hangi Programlama Dilinden Başlamalıyız? yazısına tamamlayıcı bir döküman da oldu.

Evet değişkenler hakkında yüzeysel bilgiler verdim ve güzel bir örnekle bunu uygulamada görmüş olduk. Toparlarsak, değişkenler programcı için her şey demektir. Nerede, nasıl tanımladığımız ve nasıl kullandığımız ilk programımızdan itibaren çok önemli bir konu olarak karşımıza çıkacak.

2 thoughts on “Değişken Kavramı

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir