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

  • 16-06-2020 05:43
  • 4725

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 ya da 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 bellek hücresine 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 adres de 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'de 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 konuyu 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.

C Programlama Dilinde Veri Tipleri

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'de 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.

Değişken Tanımlama Kuralları

  • Değişken isimleri harf ve rakam dışında yalnızca alt tire içerebilir.
  • Değişken isminde rakam kullanılabilir ama değişken ismi rakamla başlayamaz.
  • Değişken isimleri küçük büyük harfe duyarlıdır.
  • Aynı kapsam içinde aynı isimle yalnızca bir değişken tanımlanabilir.
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 if,for,while dışında 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 dikkate 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. 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.

int Veri Tipi

C'de int tipinde değişken tanımlama örnekleri. Bu örnekte int veri tipi yerine long veya short kullanabilirsiniz sonuç değişmeyecektir.

/*
Bu program, C programlama dilinde int veri tipi kullanımına örnek olarak yazılmıştır.
Program derlendiğinde çalıştırılabilir bir konsol uygulaması oluşturur.
https://notpast.com
*/

#include <stdio.h>

int main(void){

//Onluk sayı sisteminde 24 sayısı a değişkenine kaydediliyor.
int a=24;
//Onaltılı sayı sisteminde A74F sayısı b değişkenine kaydediliyor.
//Onaltılı sayılar '0X' ile başlar sonrasında bitişik şekilde sayı yazılır.
//Bütün değişken tiplere aynı şekilde atama yapılabilir.
int b=0XA74F;
//Negatif sayılarda pozitif sayılar gibi kaydedilir.
//c değişkenine -59 sayısı kaydediliyor.
int c=-59;
//İşaretsiz int tipindeki d değişkenine 753 sayısı kaydediliyor.
//İşaretsiz değişkenlerle işaretli olanlar arasında yapı olarak fark yoktur
//fark yorumlanışlarındadır.
unsigned int d=753;

//Tanımlanan değişkenler ekrana yazdırılıyor.
printf("int veri tipinde tanimlanan degiskenler.\n");
printf("a=%d \n",a);
printf("b=%X \n",b);
printf("c=%d \n",c);
printf("d=%d \n",d);


printf("\nProgramdan cikmak icin enter tusuna basin.\n");
//Program sonu enter tusuna basilana kadar bekler.
getchar();
return 0;
}
 

float Veri Tipi

float ondalıklı sayıların kaydedilebleceği bir veri tipidir. 1.2E-38 , 3.4E+38 aralığında sayılar kaydedilebilir.

C'de float tipinde değişken tanımlayıp yarıçapı 2 olan dairenin alanını hesaplayıp ekrana yazdıran örnek program.
 

/*
Bu program, C programlama dilinde float veri tipi kullanımına örnek olarak yazılmıştır. Program derlendiğinde çalıştırılabilir bir konsol uygulaması oluşturur. https://notpast.com */ #include <stdio.h> int main(void){ //float tipinde bir değişken tanımlanıyor ve 2 sayısı kaydediliyor. float r=2; //float tipinde bir değişken tanımlanıyor ve pi sayısı kaydediliyor. float pi=3.14159; //float tipinde değişken tanımlanıyor. float daire_alani; //yarıçapı r olan dairenin alanı hesaplanıyor. //Sonuç daire_alani değişkenine kaydediliyor. daire_alani=pi*r*r; //Tanımlanan değişkenler ekrana yazdırılıyor. printf("PI =%f \n",pi); printf("r =%f \n",r); printf("Alan=%f \n",daire_alani); printf("\nProgramdan cikmak icin enter tusuna basin.\n"); //Program sonu enter tusuna basilana kadar bekler. getchar(); return 0; }
 
 

double Veri Tipi

double veri tipi matematiksel hesaplamalarda kullanılır. C'de standart kitaplıkta bulunan matematiksel fonksiyonlar double veri tipinde argümanlar alır ve sonuçları da yine double veri tipindedir.


/*
Bu program, C programlama dilinde double veri tipi kullanımına örnek olarak yazılmıştır. Örnek dünyanın yoğunluğunu hesaplar. Program derlendiğinde çalıştırılabilir bir konsol uygulaması oluşturur. https://notpast.com */ #include <stdio.h> #include <math.h> int main(void){ //Dünya'nın kutlesi için double tipinde değişken tanımlanıyor ve //dünyanın kütlesi (gr) kaydediliyor. double kutle=5.97237e+27; //Dünya'nın hacmi için double tipinde değişken tanımlanıyor ve //dünyanın hacmi (cm^3) kaydediliyor. double hacim=1.08321e+27; //double tipinde değişken tanımlanıyor. double yogunluk; //Dünya'nın yoğunluğu hesaplanıyor. yogunluk=kutle/hacim; //Değerler ekrana yazdırılıyor. printf("Kutle =%g gr \n",kutle); printf("Hacim =%g cm^3 \n",hacim); printf("Yogunluk=%g gr/cm^3 \n",yogunluk); printf("\nProgramdan cikmak icin enter tusuna basin.\n"); //Program sonu enter tusuna basilana kadar bekler. getchar(); return 0; }

 

char Veri Tipi

C'de char veri tipi genel olarak string (karakter dizisi) tanımlamada kullanılır. Ayrıca dosyalardan okunan veriler de char veri tipindeki alanlara kaydedilir, bunun nedeni en küçük veri tipi olmasıdır. Aşağıdaki örnekte pointer kullanılmıştır buradaki konuyu dağıtmamak için burada açıklanmamıştır, konunun ayrıntılı açıklamasına  pointer  sayfasından ulaşabilirsiniz.


/*
Bu program, C programlama dilinde char veri tipi kullanımına örnek olarak yazılmıştır. Program derlendiğinde çalıştırılabilir bir konsol uygulaması oluşturur. https://notpast.com */ #include <stdio.h> #include <math.h> int main(void){ //a değişkenine bir karakter kaydediliyor. char a='R'; //b değişkenine 37 değeri kaydediliyor. char b=37; //s değişkeni pointer olarak tanımlanıyor ve //bir string kadediliyor. char *s="C'de string tanimlama."; //Değerler ekrana yazdırılıyor. printf("a =%c \n",a); printf("b =%d \n",b); printf("s =%s \n",s); printf("\nProgramdan cikmak icin enter tusuna basin.\n"); //Program sonu enter tusuna basilana kadar bekler. getchar(); return 0; }