31 Aralık 2013 Salı

C dili Değişkenler ve Sabitler - Ders2

Ders2: Değişkenler ve Sabitler

Değişkenler bellekte bilginin saklandığı gözlere verilen sembolik adlardır. Her değişkenin tuttuğu değerin nasıl bir veri olduğunu gösteren bir tipi vardır. C dilinde temelde birkaç tane değişken tipi vardır. Bunlar Tablo 2.1 te listelenmiştir.
Tablo 2.1 : Değişken tipleri ve bellekte kapladıkları alanlar
Değişken tipi Açıklama Bellekte işgal ettiği boyut (byte)
char tek bir karakter için 1
int tamsayı için 2 yada 4
float tek duyarlı gerçel sayı için (6 basamak hassasiyet) 2 yada 4
double çift duyarlı gerçel sayı için (12 basamak hassasiyet) 4 yada 8
Fakat bazı özel niteleyiciler vardır ki bunlar yukarıdaki temel tiplerin önüne gelerek onların türevlerini oluşturur. Bunlar short, long, unsigned dır. Bu niteleyiciler sayesinde değişkenin bellekte kaplayacağı alan isteğe göre değiştirilebilir. Kısa (short), uzun (long), ve normal (int) tamsayı arasında yalnızca uzunluk farkı vardır. Eğer normal tamsayı 16 bit (2 byte) ise uzun tamsayı 32 bit uzunluğundadır. Kısa tamsayı 16 biti geçmeyecek uzunluktadır. Değişken tiplerinin bellekte kapladığı alan sizeof operatörü ile öğrenilebilir. Program 2.1 bu amaçla yazılmıştır.
Program 2.1 : Değişken tipleri ve türevlerinin bellekte kapladıkları alanlar
1:  /* sizeof operatörünün kullanımı */
2:  #include <stdio.h>
3:
4:  main()
5:  {
6:    printf( "\nchar           : %d byte", sizeof( char ));
7:    printf( "\nint            : %d byte", sizeof( int ));
8:    printf( "\nshort          : %d byte", sizeof( short ));
9:    printf( "\nlong           : %d byte", sizeof( long ));
10:   printf( "\nunsigned char  : %d byte", sizeof( unsigned char ));
11:   printf( "\nunsigned int   : %d byte", sizeof( unsigned int ));
12:   printf( "\nunsigned short : %d byte", sizeof( unsigned short ));
13:   printf( "\nunsigned long  : %d byte", sizeof( unsigned long ));
14:   printf( "\nfloat          : %d byte", sizeof( float ));
15:   printf( "\ndouble         : %d byte", sizeof( double ));
16:   printf( "\nlong double    : %d byte", sizeof( long double ));
17:
18: return 0;
19: }

Değişkenler ve Sabitlerin Bildirimi
Değişkenler ve Sabitler programın başında bulunmalıdır. Bazı uygulamalarda değişkenin bir başlangıç değerinin olması istenir. Böyle durumlarda değişken bildirilirken başlangıç değeri verilebilir. Örneğin:
      char isim='X', z;
      int  sayi=0, n=10;
      float toplam=0.0, sonuc=22.14;   
Sabit bildirimi, başlangıç değeri verilen değişken bildirimi gibi yapılır. Ancak; veri tipinin önüne const anahtar sözcüğü koyulmalıdır. Örneğin:
      const float   PI = 3.142857;
      const double  NOT= 12345.8596235489;
      const int     EOF= -1;
      const char[] = "devam etmek için bir tuşa basın...";
gibi sabit bildirimleri geçerli olup bunların içerikleri program boyunca değiştirilemez. Yalnızca kullanılabilir. Genellikle, sabit olarak bildirilen değişken isimleri büyük harflerle, diğer değişken isimlerinin ise küçük harflerle yazılması(gösterilmesi) C programcıları tarafından geleneksel hale getirilmiştir.
Birçok C programında sabitler #define önişlemci komutu ile de tanımlandığını görebilirsiniz. Bu komutla sabit bildirimi, bir program parçasına ve makro fonksiyon tanımlaması yapılabilir. Bir program geliştirilirken simgesel sabitlerin kullanılması programın okunurluğunu arttır ve bazen gerekli de olabilir. Aşağıda verilen simgesel sabit bildirimleri geçerlidir. #define önişlemcisi ile makro fonksiyon tanımlama işlemi Fonksiyonlar bölümünde anlatılacaktır.
  #define MAX 100
  #define DATA 0x0378
  #define YARICAP 14.22
Değişken Bildirim Yerleri ve Türleri
Yerel(local) Bildirim
Yerel değişkenler kullanıldığı fonksiyon içerisinde bildirilir. Yalnızca bildirildiği fonksiyon içerisinde tanınır ve kullanılabilir.
    int topla(int a,int b)
    {
    /* yerel (local) değişken c nin bildirimi */
    int c;
    c = a + b;
    return c;
   }
Genel(general) Bildirim
Genel değişkenler bütün fonksiyonların dışında bildirilir. Bir değişken program boyunca sürekli olarak kullanılıyorsa genel olarak bildirilmelidir.
   #include <stdio.h>

   void karesi();

   /* 
   ** m ve n global tip değişkendir. 
   ** bu iki değişken tüm program boyunca kullanılmaktadır
   */
   int m,n;  

   main(){
     m=7;
     karesi();
     printf("%d nin karesi %d dir",m,n);
   }

  void karesi()
  {
    n = m*m;
  }
Tip Dönüşümleri
Bir formül içerisinde bir çok değişken veya sabit olabilir. Bu değişken ve sabitler birbirinden farklı tipte olursa, hesap sonucunun hangi tipte olacağı önemlidir. Bir bağıntıda ,çeriği dönüşüme uğrayan değişkenler eski içeriklerini korurlar. Dönüştürme işlemi için geçiçi bellek alanı kullanılır; dönüştürülen değer kullanıldıktan sonra o alan serbest bırakılır.
  
  char kr;
  int tam;
  long int ltam;
  unsigned int utam;
  short int stam;
  float f;
  double d;
bildirimlerine göre:
  bağıntı      sonuç tipi
  -------      ----------
  kr+5         int
  kr+5.0       double
  d+tam        double
  f+d-2        double
  utam-tam     unsigned
  ltam*tam     long
  tam/2        int
  tam/2.0      double
bir değişkenin sabit değerin veya bağıntının önüne tür (cast) yazılarak sonucun hangi tip çıkması istendiği söylenebilir. Genel yazım biçimi:
      (tür tipi)  bağıntı;
örneğin x int, a ve b float tipinde iki değişken olsun:
      int x=3;
      float a,b;
      ...
      a = x/2;
      b = (float) x/2;
işleminin sonucunda a değişkenine 1.0, b değişkenine 1.5 değeri aktarılır. yani x/2 ile x/2.0 aynı anlamda değildir.

Hiç yorum yok:

Yorum Gönder