C Programlama Dilinde Veri Tipleri ve Değişken Kavramı

  • 12-04-2018 12:16
  • 15

Bilgisayarın çalışması basitçe bellekteki veriler arası aritmetik ve mantıksal işlemler yapıp sonuçları yine belleğe aktarmaktır. Bilgisayara bağlı tüm arabirimlerin ekran, klavye gibi bellek adresleri vardır bu adresleri bu arabirimlere erişmek için kullanır ve bizde bu sayede sonuçları ekranda görebiliriz. Çok karmaşık gibi görünen bu yapı aslında basit temeller üzerine kuruludur. Birçok basit bileşen birleşerek çok karmaşık bir yapı oluşturur. Biz de öğrenmeye bu yapının temelleri ile başlayacağız.

Bilgisayar programları çalışırken kullandığı verileri bilgisayarda bulunan belleğe kaydederler, bu belleğe RAM adı verilir. Bellek birçok bellek hücresinin bir araya gelmesi ile oluşur. Her hücre 8 bitten oluşur. Bit ise 0 yada 1 olabilen ikilik sayı sisteminde tek haneyi tutabilin elektronik bir yapıdır, 8 bite 1 bayt denir ve adreslenebilen en küçük bellek birimidir. Herhangi bir hücreye erişebilmek için o hücreye ait adrese ihtiyacımız vardır. Belleği bir matris olarak düşünürsek ki gerçekte de böyledir bu adreste belleğin fiziksel olarak satır numarası ve sütun numarasından oluşur. Bu iki sayının bir araya gelmesi ile her hücrenin kendine ait eşsiz bir adresi oluşur. Bilgisayar işlemcisi bu adresi kullanarak bu adresteki veriye ulaşır. C dilinde tanımladığımız her değişkenin eşsiz bir bellek adresi vardır. İstersek bu adresi bir fonksiyon ile görebiliriz. C dilini iyi öğrenebilmek için bellek yapısını ve adres ilişkisini iyi öğrenmek gerekiyor. Bu konuda aklınızda soru işareti kalmayacak şekilde öğrenmenizde büyük fayda var.

Değişken kavramı tüm programlama dillerinde kullanılır. İçine veri kaydedilebilen bellek hücresi ya da hücre topluluğu anlamına gelir. Program içinde basitce bir isim verilerek tanımlanır ve o isimle veriye erişilir ya da yeni veri kaydedilir. C dilindeki temel veri tipleri aşağıda sıralanmıştır. Veri tiplerinin uzunlukları çalışma ortamına göre değişir aşağıdaki veri tipleri  32 bitlik bir sisteme göre verilmiştir.

Veri TipiUzunlukLimit
char  1 bayt  -127 , +127
unsigned char 1 bayt 0 , 255
short 2 bayt −32767 , +32767
unsigned short 2 bayt 0 , 65535
int 4 bayt −2147483647 , +2147483647
unsigned int 4 bayt 0 , 4294967295
long 4 bayt −2147483647 , +2147483647
unsigned long 4 bayt 0 , 4294967295
float 4 bayt 1.2E-38 , 3.4E+38
double 8 bayt 2.3E-308 , 1.7E+308
long double 10 bayt 3.4E-4932 , 1.1E+4932


Yukarıda yazılı olan bütün veri tipleri aynı zamanda c dilinde birer anahtar kelimedir. C dilinde değişken tanımlanırken önce veri tipi daha sonra değişken ismi yazılır. Unsigned ön eki ise değişkenin sadece pozitif sayılar için kullanılabileceğini ifade eder. Yazılmadığı taktirde değişkenin hem pozitif hemde negatif sayılarda kullanılabileceği anlamına gelir.

int sayac;         //Sayac değişkeni

Yukarıdaki satırda sayac isminde ve int türünde bir değişken tanımladık bunun anlamı sayac değişkenine −2147483647 , +2147483647 aralığında bir sayı kaydedebiliriz. C dilinde her ifadeden sonra noktalı virgül konur. Daha sonraki çift slaş ise açıklama satırı anlamına gelir ve bu satıra yazdıklarınız derlemede dikate alınmaz. Bilgilendirme amaçlıdır. Çok satırlı açıklamalar ise /* ile başlar ve */ ile biter bunlar arasına yazılan herşey açıklama olarak değerlendirilir.

Şimdi oluşturduğumuz değişkene bir sayı kaydedelim.

sayac=95;

Artık değişkenin gösterdiği bellek hücresine 95 sayısı kaydedildi. Buradaki eşittir işareti atama anlamına gelir sağındaki değer solundaki değişkene aktarılır. Örneğin 6=7; gibi bir ifade kullanamayız 6'nın yerinde bir değişken ismi olmalı. C dilinde atama işlem sırası sağdan sola doğrudur. Aritmetik mantıksal işlemlerde sıralama işleme göre değişir. Bu atamayı tanımlama yaparken de verebiliriz.

int sayac=95;         //Sayac değişkeni

Yukardaki tüm veri tiplerinde değişkenleri bu şekilde tanımlayabiliriz. Aşağıda değişkenlerle çarpma işlemi yapılıyor.

int sonuc=0;  //Sonuc değerini tutacak değişken
int a=7;        //a değişkeni
int b=9;        //b değişkeni
sonuc=a*b;   //Değişkenler arası çarpma işlemi souc değişkeninin değeri 7*9=63 tür

sounuc=a=b;

Bunun gibi bir ifade kullanırsak işlem sırasına göre b'nin içeriği a'ya aktarılır a'nın içeriğide sonuc değişkenine aktarılır. Sonucta bütün değişkenlere b'nin içeriği olan 9 kaydedilir.

C dilinin C ile özdeşleşmiş standart bir kitaplığı vardır. Bu kitaplık içindeki birçok fonksiyon diğer programlama dillerine de geçmiştir. En sık kullanılan fonksiyon ekrana bir şey yazmak için kullanılan "printf" fonksiyonudur. Standart kitaplık  C'nin ayrılmaz bir parçasıdır. İlerleyen bölümlerde kitaplık fonksiyonlarını sıkça kullanacağız.

C dilinde yazılan programlar ana fonksiyon olan main fonksiyonu ile başlar. Şimdi ilk çalışan programımızı yazalım.

#include  < stdio.h>  //Standart giriş çıkış dosyası

int main(){

int sonuc=0;  //Sonuc değerini tutacak değişken
int a=7;      //a değişkeni
int b=9;      //b değişkeni
sonuc=a*b;    //Değişkenler arası çarpma işlemi

printf("sonuc=%d",sonuc); //Sonuc değişkenini ekrana yaz

getchar(); //Enter tuşuna basılana kadar bekle

return 0;  //Programdan çık

}

 

C'de her değişken tipinin genel bir kullanım alanı vardır. Örneğin char string için kullanılır. C dilinde string '0' ile biten karakter dizisi anlamına gelir.

Short değişkeni pek sık kullanılmaz bellek sıkıntısı olan sistemlerde limitleri yeterli olduğu durumlarda int tipi yerine kullanılır.

int en sık kullanılan veri tipidir, döngülerde fonksiyon parametrelerinde, 32 bitlik sistemlerde adres de 32 bitlik olduğu için pointer olarak kullanılırlar.

long tipide int ile aynı duyarlılıkta olduğu sistemlerde int kullanılacağı için pek kullanılmaz. Ama teorik olarak int yerine kullanılabilirler.

float tipi ondalık sayılarda limitleri ölçüsünde kullanılır.

double ise daha çok yüksek duyarlılıklı bilimsel hesaplamalarda kullanılır.