Merhabalar;
Bu makalemde size program yazmanın olmazsa olmazı değişkenleri ve veri tiplerini anlatacağım. Şimdi sizden aklınızdan iki farklı sayı tutmanızı istesem ne yaparsınız? Şöyle bir düşünüp birinci sayı ... ikinci sayı ... diye iki faklı sayı tutarsınız. Bu sayılara 1 ekleyin desem, yine karıştırmadan ikisine de sırayla 1 eklersiniz. Bu sayıları ben istediğimde bana söyler, sayılarla işiniz bitince de unutursunuz. İşte program yazarken bilgisayarın bizim için tutmasını istediğimiz bu tip değerlere değişken diyoruz. Biz bu verileri aklımızın bir köşesinde tutup sonra unuttuğumuz gibi bilgisayar da bu verileri RAM üzerinde oluşturur ve işi bittikten sonra siler. Daha düzgün bir tanımla anlatacak olursak “Değişkenler” bilgisayarın geçici bellekte bizim için tuttuğu değerlerdir.
Bu makalemde size program yazmanın olmazsa olmazı değişkenleri ve veri tiplerini anlatacağım. Şimdi sizden aklınızdan iki farklı sayı tutmanızı istesem ne yaparsınız? Şöyle bir düşünüp birinci sayı ... ikinci sayı ... diye iki faklı sayı tutarsınız. Bu sayılara 1 ekleyin desem, yine karıştırmadan ikisine de sırayla 1 eklersiniz. Bu sayıları ben istediğimde bana söyler, sayılarla işiniz bitince de unutursunuz. İşte program yazarken bilgisayarın bizim için tutmasını istediğimiz bu tip değerlere değişken diyoruz. Biz bu verileri aklımızın bir köşesinde tutup sonra unuttuğumuz gibi bilgisayar da bu verileri RAM üzerinde oluşturur ve işi bittikten sonra siler. Daha düzgün bir tanımla anlatacak olursak “Değişkenler” bilgisayarın geçici bellekte bizim için tuttuğu değerlerdir.
Şimdi ben sizden aklınızdan bir isim ve bir tarih tutmanızı istersem siz yine sayı tuttuğunuz gibi bir değer tutacaksınız. Peki, fark nerede? Tuttuğumuz değişkenlerin türünde. Bilmiyorum fark ettiniz mi ama ben size tutmanızı istediğim her değişken için bir tip söylüyorum. Bir sayı, bir isim, bir tarih... Şu an aydınlandığınızı görebiliyor gibiyim. İşte tutmanız istediğim her değişken için bir tip söylüyorum. Bunlara da “Değişken Tipleri (Veri Tipleri)” diyoruz. Nasıl kendi aramızda konuşurken bu tipleri söylemeden değişken tutmanızın bir anlamı olmayacaksa, bilgisayara kod yazarken de anlamsız olacaktır. Bu nedenle C# ile kod yazarken C#’ta tanımlı olan değişkenleri kullanıyoruz.
Bir değişkeni kod yazarken nasıl tanımlıyoruz?
Bir değişkeni kod yazarken nasıl tanımlıyoruz?
Değişken Tipi Değişken Adı = Değeri ; ya da Değişken Tipi Değişken Adı ;
Örnek verecek olursak:
int a=5;
Bir değişkeni bu şekilde tanımlayabileceğimiz gibi aşağıdaki örneklerde de görüldüğü gibi tanımlayabiliriz:
Bir değişkeni bu şekilde tanımlayabileceğimiz gibi aşağıdaki örneklerde de görüldüğü gibi tanımlayabiliriz:
int b, c, d, e;
int f=10, g, m=70;
Veri Tipleri
C#’ta iki tür veri tipi vardır:
- Değer Tipleri (Value Type)
- Referans Tipleri (Reference Type)
Nedir farkları? Hemen anlatayım: RAM dediğimiz yapı genel anlamda iki ayrı bölgeden oluşur. Aşağıdaki resmi inceleyelim ve üzerine konuşmaya devam edelim.
Resimde de görüleceği üzere oluşturduğumuz bütün değişkenler stack bölgesinde tanımlanıyor. Bazı veri tipleri değerini yanında taşırken bazıları ise bir adresi işaret ediyor. İşte Değer tipleri değerini stack bölgesinde yanında taşırken, referans tipleri ise heap bölgesinde tanımlı olan bir yeri adres olarak gösterirler. Aşağıdaki tablolarda değer tiplerinin ve referans tiplerinin bütününü bir arada görme şansımız olacak.
Değer Tipleri (Value Type)
C# Adı
|
CTS Karşılığı
|
Açıklama
|
Boyut
|
Max ve Min aralık yada değeri
|
byte
|
System.Byte
|
8 bit işaretsiz tamsayı
|
1 Byte
|
0 : 255
|
sbyte
|
System.Byte
|
8 bit işaretli tamsayı
|
1 Byte
|
-128 : 127
|
short
|
System.Int16
|
16 bit işaretli tamsayı
|
2 Byte
|
-32.768 : 32.767
|
ushort
|
System.UInt16
|
16 bit işaretsiz tamsayı
|
2 Byte
|
0 : 65.535
|
int
|
System.Int32
|
32 bit işaretli tamsayı
|
4 Byte
|
-2.147.483.648 : 2.147.483.647
|
uint
|
System.UInt32
|
32 bit işaretsiz tamsayı
|
4 Byte
|
0 : 4.294.967.295
|
long
|
System.Int64
|
64 bit işaretli tamsayı
|
8 Byte
|
-9.223.372.036.854.775.808 : -9.223.372.036.854.775.807
|
ulong
|
System.UInt64
|
64 bit işaretsiz tamsayı
|
8 Byte
|
0 : 18.446.744.073.709.551.615
|
float
|
System.Single
|
32 bit tek kayan ondalıklı sayı
|
4 Byte
|
+yada - 1,5*10-45 : + ya da - 3,4*1038
|
double
|
Sytem.Double
|
64 bit çift kayan ondalıklı sayı
|
8 Byte
|
+yada - 5*10-324 : + ya da - 1,7*10308
|
decimal
|
System.Decimal
|
128 bit ondalıklı sayı
|
16 Byte
|
+yada - 1,5*10-28 : + ya da - 7,9*1028
|
bool
|
System.Boolean
|
Mantıksal değeri temsil eder
|
2 Byte
|
true ya da false
|
char
|
System.Char
|
Karakterleri temsil eder
|
2 Byte
|
16 Unicode karakterleri
|
Referans Tipleri (Reference Type)
C# Adı
|
CTS Karşılığı
|
Açıklama
|
Boyut
|
object
|
System.Object
|
Bütün veri türlerinin türediği kök eleman
|
∞
|
string
|
System.String
|
Unicode karakterlerinden oluşan string
|
∞
|
Şimdi değişken tanımının ve veri tipleri konusunun daha da iyi anladığımızı düşünüyorum. Yukarıdaki tablolarda bütün veri tipleri, açıklamaları, boyutları ve aralıklarını görebiliyoruz. Şimdi aklınıza birkaç soru gelebilir;
Birinci soru: CTS nedir?
CTS (Common Type System) yaygın tip sisteminin kısaltılmış halidir. Her dilde değişenler farklı tiplerde isimlendirilebilir. Bütün bu değişkenlerin hepsi program derlendiği zaman CTS karşılığına dönüştürülür. Yani ortak bir standarttır diyebiliriz.
İkinci soru: Neden bu kadar çok sayısal değişken tipi var? Ben hepsi için bir tek değişken tipi kullansam olmaz mı?
Sayısal değişken tiplerinin hepsi farklı bir aralıkta sayı tutar. Yani hepsinin bir ebatı vardır ve RAM’da bu tipler için o ebatta bir yer ayrılır. Mesela; int sayısal değişkeni 32-bit’lik bir alan tutar. Bu da 4-Byte genişliğinde bir alana denk gelir. long değişkeni ise 64-bitlik bir alan tutar ve 8-Byte bir alana denk gelir. int bir değişkende tutabileceğimiz veriyi long bir değişkenin içinde tutmak mümkün olduğu kadar gereksizdir. Program yazarken RAM üzerinde kullanacağımız alanı minimumda tutmaya özen göstermek bize performans olarak geri dönecektir.
Bu değişken tiplerini aşağıdaki resimde göreceğiniz bozuk para otomatlarına benzetilebilir. 50 Krş’luk bir madeni parayı 1 TL için ayrılan yere de takabiliriz ama 25 Krş’luk yere takamayız. Ayırca 1 TL için ayrılan yere takmamız çok gereksiz ve düzensiz olacaktır.
Üçüncü soru: String neden bir referans veri tipidir?
String değişkeni aslında bir char (karakterler) dizisidir. Yan yana eklenmiş karakterlerden (char dizisinden) oluşur ve RAM’de üzerinde dizinin uzunluğu kadar alan kaplar. Bunun için stack’ de değil heap alanında tutulur. Bu nedenle string değişkeni bir referans tipidir.
char a='g'; Bu örnekten de görüldüğü üzere char tek bir karakter tutuyor.
string b ="deneme"; Bu örneğe dikkatli bir şekilde bakacak olursak;
string b =’d’+’e’+’n’+’e’+’m’+’e’; şeklinde bir diziden oluştuğunu görebiliriz.
Ne demiştik? string bir char dizisidir. “Deneme” kelimesinin esas karşılığı ise şudur;
char[] c = { 'd', 'e', 'n', 'e', 'm', 'e' };
Sayısal ve Metinsel olmayan değişkenler
C# üzerinde hem sayısal hem de metinsel olmayan değişkenler de vardır. Mesela; sistem üzerinde bizim için doğru-yanlış değerini tutan bool değişkeni gibi.
Bool koşullu yapılarda kullanılır. "Doğru" ya da "Yanlış" değeri taşır.
bool b1=true;
bool b2=false;
bool b3=5>4; şeklinde sistem üzerinde tanımlanabilir.
Bir diğer esas değişkenimiz ise object’tir. Object, Nesne Yönelimli Programlamanın olmazsa olmazı bir değişken türüdür. Biz nerede kullanıyoruz bu nesneyi diye sorarsanız cevabım: "her yerde" olacaktır.
Öncelikle object bir değişken nasıl tanımlanır ona bakalım:
object a=5;
object b='k';
object c="metin";
object d=12.7f;
Gördüğünüz üzere object bir değişken her türlü veriyi üzerinde saklayabilir. Object kavramını daha derin bir şekilde araştırmanızı size tavsiye ediyorum.
Değişkenlere Adlandırma Kuralları
Şimdiye kadar değişkenlere a veya b gibi basit adlar verdik. Ancak aşağıdaki kuralları ihlal etmemek şartıyla değişkenlere istediğiniz adı verebilirsiniz.
§ Değişken adları boşluk, simge içeremez.
§ Değişkenler bir nümerik karakterle başlayamaz.
§ C#'ın diğer bütün komut, metot ve benzerlerinde olduğu gibi değişken adlarında büyük-küçük harf duyarlılığı vardır. Yani degisken isimli bir değişkenle Değisken isimli bir değişken birbirinden farklıdır.
§ Değişken adları Türkçe karakterlerden (ğ,ü,ş,ö,ç,ı) oluşabilir ama mümkün olduğunca kullanmamaya özen gösteriniz.
§ Değişkenlere C#’ın kendisi için ayırdığı kelimeleri kullanamayız. Örneğin:
int char = 0;
string decimal = “deneme”;
double in = 0.0; Bunların hepsi hatalı yazım olacaktır ve derleme anında hata verecektir.
string decimal = “deneme”;
double in = 0.0; Bunların hepsi hatalı yazım olacaktır ve derleme anında hata verecektir.
Değişkenleri ve veri tiplerini kod yazdığınız her an kullanacak ve kullandıkça kurallarını daha da iyi anlayacaksınız. Bu yazım ile sizin için iyi bir başlangıç oluşturabildiysem ne mutlu bana.
Hoşçakalın…


Hiç yorum yok:
Yorum Gönder