☰ Dersleri Göster

Kullanılan değişken tipleri ve RAM'de kapladıkları alanlar

Bu derste sadece C programlamada değil çoğu programlama dillerinde kullanılan değişken tiplerini göreceğiz. Değişken ve karakter dizisi mantığını anladığınızda artık yola çıkmaya hazırsınız demektir.

Kursa 27.99 TL'ye kayıt olmak için TIKLAYINIZ.

Değişkenler ve Karakter Dizisi Mantığı

Değişkenler RAM'de yani hafızada tutmak istediğimiz verilerin tutulduğu yerdir. Bu sayede biz sayısal işlem yaparken tam sayı, kesirli sayı gibi sayıları hafızada tutabiliyoruz. Bazı durumlarda çok büyük bir sayı ile işlem yapmak durumunda kalabiliyoruz. Bunun için double diye bir veri tipi ortaya çıkmıştır ve böylece int ve float'a göre çok daha büyük sayıları double sayesinde hafızada tutabilir hale geldik. Tabii ki dünyadaki veri tipleri sadece sayılardan ibaret değil. Günlük hayatımızda sıkça kullandığımız cümleler, kelimeler ve harflerin de bir oluşum şekli var. İşte bir her bir harfe karakter diyoruz. C programlamada da 1 harfi oluşturmak oldukça kolayken bazen bir sürü harfin yan yana gelmesiyle olan ifadeleri oluştururken özellikle C programlamaya başlarken aklınız karışabiliyor ama hiç karışmasın çünkü bunu anlamak oldukça kolay. 

RAM ( Random Access Memory) (Rastgele erişilebilir bellek)

Kısaca RAM nedir diye anlatacak olursam;

Nasıl ki insanda beyin var ve bazen beynimizde geçici bilgileri tuttuktan sonra onları hatırlamıyoruz. İşte RAM'i de böyle düşünebilirsiniz. RAM bir C programı çalıştıktan sonra hafızasında sizin belirtmiş olduğunuz değişkenler ve karakter dizileri için kendinde belli bir yer ayırır ve sizin bu verileri program açık kaldığı sürece kullanmanızı sağlar.

Neden karakter dizilerinde 1 byte fazla yer ayırmak durumundayız?

Önce RAM'de hafızada 1 karakter tutalım;

char karakter = 'K' ;   // 1byte yer kaplar

char isim[5] = "Kaan"; //5 byte yer kaplar

Gördüğünüz gibi 1 karakter için 1 byte yer direkt "char" anahtar kelimesini kullandığımızda RAM tarafından 1 byte yer ayrılıyor. 

Fakat 4 karakter için neden 4 byte değil de 5 byte yer ayırmak durumundayız?

Çünkü C programı esnasında derleyicinin bu veriyi okuma şekli RAM'de göz gözdür. Mesela "Kaan" karakter dizisi RAM'de

K   A   A   N   \0 şeklinde tutulur.

    K
    A
    A
    N
    \0

 

Böyle tutulduğu için eğer ki biz bu karakter dizisini %s ile konsola yazdırmak istediğimiz aslında derleyici arka planda bu harflerin hepsini \0 karakterini görene kadar ekrana yazar. Bu sebeple Her karakter dizisinin sonunda o karakter dizisinin bittiği anlaşılsın diye \0 karakteri otomatik olarak eklenir. Bir karakter dizisini sorunsuzca oluşturmak için yapmamız gereken tek şey o karakter dizisine yazdırmak istediğimiz ifadenin 1 fazlası kadar RAM'de yer ayırmamız. Örneğin biz "Academy" kelimesini karakter dizisi olarak tutmak istiyoruz;

"Academy" karakter dizisi 7 karakterden oluştuğu için bir de sonuna otomatik olarak \0 karakteri de eklensin diye RAM'de 8 byte yer ayırıyoruz. Karakter dizisi mantığı bundan ibaret.

char karakterDizisi[8] = "Academy"; 

 

AÇIKLAMA

Aşağıdaki C programlama kodu örneğinde tam sayı,kesirli sayı, karakter ve karakter dizisi örnekleri verilmiştir. Ve bunları  C programlama kullanarak nasıl konsolda görüntüleyebileceğiniz anlatılmıştır.

 

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
/* burası yorum satırıdır buraya yazdiginiz ifadeler derleyici tarafindan okunmaz */
// Program ilk başladığında main fonksiyonu çalışır. /* Tek satır yorum yazacaksanız // işaretini kullanabilirsiniz. */
int main()
{
    setlocale(LC_ALL,"Turkish");

    int tamSayi = 6;  /* RAM'de 4 byte yer kaplar */
    float kesirliSayi = 9.2; /* RAM'de 4 byte yer kaplar */
    double buyukYerKaplayanKesirliSayi = 7.2;    /* RAM'de 8 byte yer kaplar */

    char karakter = 'K' ;    /* RAM'de 1 byte yer kaplar */
    char karakterDizisiOrnegi1[14] = "Kaan Academy"; /* RAM'de 14 byte yer ayrılır fakat 13 byte yer kaplar */
    char karakterDizisiOrnegi2[13] = {'K','a','a','n',' ','A','c','a','d','e','m','y'};/* RAM'de 13 byte yer ayrılır ve 13 byte yer kaplar */

    printf("%d integer yani bir tam sayi RAM'de %d byte yer kaplar\n",tamSayi,sizeof(int));

    printf("%f float yani bir kesirli sayi RAM'de %d byte yer kaplar\n",kesirliSayi,sizeof(float));
    /* .1f yazmamızın sebebi virgülden sonra sadece 1 basamak göstermek */
    printf("%.1f float yani bir kesirli sayi RAM'de %d byte yer kaplar\n",kesirliSayi,sizeof(float));

    printf("%lf  double yani buyuk yer kaplayan kesirli sayilar RAM'de %d byte yer kaplar\n",buyukYerKaplayanKesirliSayi,sizeof(double));
    /* .1f yazmamızın sebebi virgülden sonra sadece 1 basamak göstermek */
    printf("%.1lf double yani buyuk yer kaplayan kesirli sayilar RAM'de %d byte yer kaplar\n",buyukYerKaplayanKesirliSayi);
    printf("%c char yani karakterlerin her biri RAM'de %d byte yer kaplar\n",karakter,sizeof(char));

    /* Karakterlerden oluşan topluluklara biz karakter dizisi diyoruz. */
    /* Karakter dizilerinin kaç tane karakter olduğunu ilerleyen derslerimizde göreceğiz. */
    printf("%s\n",karakterDizisiOrnegi1);
    printf("%s\n",karakterDizisiOrnegi2);

    return 0;
}

 

Veri Tipleri             Tanımlama

Konsolda bastırmak için kullanılan işaret

int    integer (tam sayı)  int tamSayi = 6; %d

float

kesirli sayı

float kesirliSayi = 9.2; %f
double 

double buyukKesirliSayi = 7.2;

%lf
char char karakter = 'K' ; %c
char array karakter dizisi char karakterDizisiOrnegi[14] = "Kaan Academy"; %s

 

Bir kaç değişken tipi daha var fakat bunlar bizim için fazlasıyla yeterlidir.