C# Değişkenler (Veri Tipleri) isimli bu makalede aşağıdaki sorulara cevap verilmektedir;
- Değişken Nedir?
- Değişkenler neden farklı türlere ayrılmıştır?
- Değişken nasıl tanımlanır?
- Değişken tanımlama kuralları nelerdir?
C# Değişkenler (Veri Tipleri) ile ilgili konu anlatımı ve uygulamalı için SendeKodYaz Youtube kanalımızdaki videolara aşağıdaki oynatma penceresinden erişebilirsiniz.
C# DEĞİŞKENLER (VERİ TİPLERİ) NEDİR?
Değişken programlamanın temel yapı taşıdır. Programın yürütülmesi esnasında ihtiyaç duyulan bilgileri hafızada saklamak ve gerektiğinde geri çağırmak için kullanılan kavramlardır. Bir değişken tanımlandığında ve program yürütüldüğünde bellekte bir alan ayrılır. Bilindiği üzere bellek bir başka deyişle RAM bilgilerin geçici olarak depolanmasını sağlayan donanım birimidir.
C# Değişkenler Nasıl Tanımlanır?
C# değişkenler üç adet parametrenin bir araya gelmesi ile tanımlanır.
1-Tür : Saklanacak olan verinin hangi türde ve hangi aralıkta olacağını belirleyen kavramdır. Örneğin; 0-255 arasında pozitif tam sayı değerleri için BYTE türü kullanılmalıdır.
2-İsim : Basit tanımıyla verinin bellekte saklanacağı odacığın etiketi yani ismidir. Örneğin; bir hastanede her bir doktorun odasının kapısı üzerinde etiketi mevcuttur. Böylelikle biz aradığımız doktora bu etiket isimlerinden kolaylıkla ulaşabiliriz. Benzer şekilde bellekteki her verinin adresi mevcuttur. Bu adresleri kullanarak belleğe veri yazabilir yahut veriyi geri çağırıp kullanabiliriz.
3- Değer : Tür ve isim belirlendiğinde bellekte veri için uygun bir alan ayrılır. Bellekte ayrılan bu alana daha sonra bilgi yazılır. Değer verme işlemi tanımlama yapılan komut satırında gerçekleştirilebileceği gibi programın akışı esnasında sonradan belirlenebilir.
Örnek:
Tür İsim = Değer
sbyte sicaklik = -5
string tcno = “22554477881”
sbyte : -128 ile +127 arasında değer alan, bellekte 1 byte alan kaplayan tam sayı değişken türüdür.
string : 2 milyar karaktere kadar değer alır. Bellekte karakter sayısı x 2 byte alan kaplar.
Temsili Bellek Benzetişimi
int maas = 2500
C# Değişkenler neden farklı türlere ayrılmıştır?
Programlama mimarisinin oluşturulması esnasında farklı türlerin tasarlanmasındaki amaç belleğin en verimli şekilde kullanılmasını sağlamaktır. Bilindiği üzere RAM (Random Access Memory) bilgisayarın en pahalı donanım birimlerinden biridir. Hafıza alanının kapasitesi düşük olmasına rağmen fiyatı oldukça yüksektir. Şayet türlerin sayısı az olsaydı belleği istediğimiz şekilde dizayn etme şansımız olmazdı. Bu durumda bellek kapasitesini gereksiz yere işgal etmiş olurduk.
Şimdi sorumuzun cevabını aşağıdaki örnekle açıklayalım;
byte : 0-255 arasındaki pozitif tam sayı değerlerini alır. Bellekte 1 Byte alan kaplar.
ulong : 0 – 18.446.744.073.709.551.615 arasındaki tam sayı değerlerini alır. Bellekte 8 Byte alan kaplar.
Yazacağımız programda bir kişinin yaşı üzerinde işlem yapacak olalım. Bir kişinin yaşını saklamak için byte değişken türü yeterli olacaktır. Aynı zamanda int değişken türünden de faydalanılabilir. Ancak byte yerine int değişken türünü kullanmak bellekteki 7 byte boyutundaki alanın gereksiz yere kullanılması ile sonuçlanacaktır. Bu durumu aşağıdaki bellek benzetişimi ile daha net bir şekilde analiz edelim.
C# Değişkenler ve Veri Türleri
C# değişkenler türleri (veri tipleri) sayısal, metinsel (string) ve mantıksal (boolean) olmak üzere üç grupta incelenmektedir.
1-C# Sayısal Değişken Türleri
Sayısal türler 11 adet olup aşağıda listelenmiştir.
byte sbyte
short ushort
int uint
long ulong
float
double
decimal
ÖNEMLİ: sbyte değişken türü byte değişken türünün başına s harfi eklenerek oluşmuştur. ushort, uint ve ulong değişken türleri short, int ve long değişken türlerinin önüne u harf eklenerek oluşmuştur. Peki ya bu s ve u harflerinin anlamı nedir?
S: SIGNED: Türkçede işaretli anlamına gelir. Bilindiği üzere matematiksel işlemlerde pozitif tamsayıların önüne işaret konulmaz ancak negatif tamsayıların önüne – işareti konulur. Dolayısıyla başına s eklenen sbyte değişkeni pozitif değerler ile birlikte negatif değerleri de tutabilmektedir.
U:UNSIGNED: Türkçede işaretsiz anlamına gelir. U ile başlayan ushort, uint, ulong gibi değişken türleri yalnızca pozitif tam sayı değerlerini tutabilir.
Bellekte saklanacak olan sayısal verinin negatif ya da pozitif olup olmayacağı ve değer aralığına tür seçimi yapılmalıdır. Bazı sayısal tipler yalnızca pozitif değerler almakta iken bazıları hem negatif hem pozitif değerler alabilir. Yine bazı sayısal tipler yalnızca tam sayı değerleri almakta iken bazıları ondalıklı değerleri de saklayabilir. Bu hususlar nazara alınarak veri saklama ihtiyacını karşılayan ancak bellekte de en az yer kaplayan bir sayısal tipi seçilmelidir.
C# Tam Sayı Değişken Tipleri
|DEĞİŞKEN TÜRÜ||ALDIĞI DEĞER ARALIKLARI||BELLEKTE KAPLADIĞI BOYUT|
|Byte||0 ile255 arasında||1 Byte|
|sbyte||-128 ile 127 arasında||1 Byte|
|short||-32768 ile 32767 arasında||2 Byte|
|ushort||0 ile 65535 arasında||2 Byte|
|int||-2.147.483.648 ile 2.147.483.647 arasında||4 Byte|
|uint||0 ile 4.294.967.295 arasında||4 Byte|
|long||-9.223.372.036.854.775.808 ile 9.223.372.036.854.775.807 arasında||8 Byte|
|Ulong||0 ile 18.446.744.073.709.551.615 arasında değer alabilir.||8 Byte|
C# Ondalıklı Değişken Tipleri
|DEĞİŞKEN TÜRÜ||ALDIĞI DEĞER ARALIKLARI||BELLEKTE KAPLADIĞI BOYUT|
|float||±1.5×10-45 ile ±3.4×1038 arasında değer alabilir. Basamak hassasiyeti 7’dir. (Yazılan sayının sonuna f/F yazılmalı 3.12f)||4 Byte|
|double||±5.0×10-324 ile ±1.7×10308 arasında değer alabilir. Basamak hassasiyeti 16’dır.||8 Byte|
|decimal||29 basamaklı bir sayıyı tutabilir.


Tam sayılar için: ±184.108.40.2064.264.337.593.543.950.335
Ondalık Say. için:±7.9228162514264337593543950335
|16 Byte|
Bir sayısal değişkene değer aktarımı yapılırken = atama operatöründen sonra veri yalın halde yazılır. Metinsel türlerde olduğu gibi veri tek tırnak veya çift tırnak işaretleri arasına yazılmaz. Aşağıda buna ilişkin örnek tanımlamalar görülmektedir.
int agirlik = 83
double maas = 2580,75
byte sicaklik = -8
Önemli Not: Yukarıdaki tablodan da anlaşılacağı üzere float değişken türüne değer verildikten sonra sonuna büyük yada küçük f harfi eklenmelidir. Aksi takdirde programın yürütülmesi esnasında hata oluşacaktır.
float agirlik = 5,75f
float maas = 1740,68F
2-C# Metinsel Değişken Türleri
Metinsel değişken türleri string ve char olmak üzere ikiye ayrılır.
String : 2 milyar karaktere kadar değer alabilen ve her bir karekter için bellekte 2 byte alan kaplayan veri tipidir. Üzerinde sayısal işlem yapılmayacak olan ve bir karakter boyutunu geçen metinsel veriler için kullanılır. TC Kimlik No, Ad, Soyad gibi veriler için kullanılabileceği gibi özgeçmiş gibi uzun metinler için de kullanılabilir. String bir değişkene değer verilerken veri çift tırnak içerisine yazılmalıdır. Aksi takdirde ilgili kod satırında hata oluşur.
string tcno = “11122233312”
string ozgeçmis = “1982 yılında Kütahya ilinin Domaniç ilçesinde dünyaya geldi. İlkokulu Domaniç Cumhuriyet İlköğretim Okulu’nda tamamladı. Ortaokulu 29 Ekim Cumhuriyet Ortaokulu’nda okudu. Daha sonra Konya Meram Fen Lisesi’ni kazanarak büyük bir başarıya imza attı. Lisans eğitimini İTÜ Makine Mühendisliğinde başarı ile bitirdi.”
Char: Character kelimesinin ilk dört harfinden oluşur. İsminden de anlaşılacağı üzere tek bir karakterlik veriyi saklayabilir. Bellekte 2 byte boyutunda bir hacim kaplar. Bir soruya verilecek olumlu ve olumsuz karakter sonuçlarını saklamak için kullanılabilir. Örneğin; Evli: E Bekar:B veya Evet:E Hayır:H gibi klavyeden girilebilecek tek karakterlik veriler için kullanılabilir. Benzer şekilde bir menü seçiminde de char veri tipinden faydalanılabilir. Örneğin; 1-Toplama 2-Çıkarma 3-Bölme 4-Çarpma işlemi gibi menü seçiminde kullanılabilir. Char veri tipine değer aktarımı gerçekleştirilirken veri tek tırnak içerisine yazılmalıdır.
char cinsiyet = ‘E’
char menu = ‘2’
3-C# Mantıksal Değişken Türü
Programlamada mantıksal değişken türü olarak bool tipi kullanılır. İngilizce boolean kelimesinin ilk dört harfinden oluşmaktadır. Bu veri tipi yalnızca true (doğru) ve false (yanlış) değeri alabilir ve bellekte 2 byte yer kaplar. İki seçenekten ibaret olan bir veri üzerinde işlem yapılması istenildiğinde kullanılabilir.
bool sonuc = true
bool cevap = false
C# DEĞİŞKENLER ve TANIMLAMA KURALLARI
C# değişkenler tanımlanırken; değişken tanımlama kurallarına uyan, uygun değişken türünü seçen, değişkene anlaşılır isim veren bir c# programcısı emniyet kemerini takan sürücüye benzer.
C# değişkenler tanımlanmadan önce hangi türden bilgi içereceğinin bilinmesi gerekmektedir. Bu karar verildikten sonra uygun bir tür seçilerek bellek en verimli şekilde kullanılmalıdır. Bellekte saklanacak olan verinin sayısal veya metinsel bir veri olduğuna karar verilmelidir. Üzerinde matematiksel işlem veya mantıksal kıyaslama yapılması gereken ders notu, maaş gibi veriler için sayısal türler kullanılır. Ancak TC kimlik numarası, ad, soyad gibi veriler için metinsel tür kullanılır. Bir verinin yalnızca rakamlardan oluşuyor olması, o verinin sayısal türlerden birinde saklanacağı anlamına gelmez. Burada dikkat edeceğimiz husus üzerinden matematiksel işlem yapılıp yapılmayacağı ile ilgilidir. Örneğin; TC kimlik numarası rakamlardan ibarettir ancak bu veri üzerinden matematiksel işlem veya mantıksal kıyaslama yapılmayacağı için sayısal türler ile tanımlanması yanlış olacaktır.
C# değişkenler için tanımlama yapılırken önce tür, daha sonra boşluk karakterinden sonra değişken ismi yazılır. Eğer değişkene tanımlandığı satırda değer aktarılacaksa = operatörü, ardından uygun bir değer yazılır. Değer aktarılması işlemi programın akışı sırasında her hangi bir komut satırı ile doğrudan veya klavyeden de yapılabilir.
Örnek:
byte sicaklik ;
string tcno = ”22255566678” ;
int stokadeti = 486 ;
C# Değişkenler Nasıl İsimlendirilir?
Bellekte tutulacak değere göre tür belirlendikten sonra isim tanımlaması yapılmalıdır. C# değişkenler için verilecek isim ile saklanacak veri bir biri ile ilişkili olmalıdır. Bu şekildeki kullanım programın anlaşılırlığını kolaylaştırır. Anlaşılır isimlerin kullanılmaması ilerleyen zamanlarda oluşabilecek hataların çözümünü ve yapılacak düzenlemeleri zorlaştırır.
Örneğin; maaş verisi için double m=2560 yerine double maas=2560 şeklinde tanımlama yapılması daha doğru olur.
ÖNEMLİ NOT: C# programlama dili Türkçe karakter desteklemesine rağmen, isimlendirme yapılırken Türkçe karakterler yerine İngilizce karakterlerin kullanılması daha yerinde olacaktır. Her ne kadar C# programlama dili Türkçe karakter desteği sunuyor olsa da bazı programlama dilleri buna izin vermez. Programlamaya yeni başlayanların bu tavsiyeme uymalarını öneririm. Zira ilerleyen zamanlarda farklı programlama dillerine yönelebilir ve alışkanlıklarınızı terk etmekte güçlük çekebilirsiniz.
KURALLAR:
1-C# değişkenler isimlendirilirken bir harf ile başlamalıdır, bir rakam veya özel karakterle başlayamaz.
Örnekler:
|Değişken İsmi||Doğru / Yanlış|
|1yazili||Yanlış|
|yazili1||Doğru|
Kural 2: C# değişkenler isimlendirilirken boşluk bırakılamaz, bunun yerine alt çizgi karakteri kullanılabilir.
Örnekler:
|Değişken İsmi||Doğru / Yanlış|
|adi soyadi||Yanlış|
|adisoyadi||Doğru|
Kural 3: C# değişkenler isimlendirilirken sadece harfler, rakamlar ve alt çizgi karakteri kullanılabilir.
|Değişken İsmi||Doğru / Yanlış|
|adi+soyadi||Yanlış|
|adi_soyadi||Doğru|
Kural 4: C# değişkenler isimlendirilirken C# komutları kullanılmaz.
Örnekler:
|Değişken İsmi||Doğru / Yanlış|
|true||Yanlış|
|public||Yanlış|
Kural 5: C# değişkenler 255 karakterden daha uzun isim alamaz.
Örnekler:
|Değişken İsmi||Doğru / Yanlış|
|ogrencinin_annesinin_kizlik_soyadi||Doğru|
NOT:
Aynı türden olan birden fazla değişken tanımını tek satırda araya virgül koyarak yapabiliriz.
Örnekler:
|int kenar1,kenar2,kenar3|
|string adi,soyadi,telno,adresi|
C# DEĞİŞKENLER VE TANIMLAMA ÖRNEKLERİ
|Değişken Tanımı ve Değer Atama||Durum|
|byte sicaklik = -8||byte değişken türü 0-255 arası pozitif sayıları tutabilir. sicaklik değişken tanımlama kurallarına uygundur ancak -8 değerini byte değişken türü tutamaz, sbyte değişken türü kullanılmalıydı.|
|string adi soyadi = “Mehmet Can”||adi soyadi değişken isminde boşluk bırakıldığı için değişken tanımlama kurallarına uymaz.|
|char secim = a1||Değişken ismi uygun ancak char değişken türü yalnızca tek bir karakteri tutabilir, aynı zamanda değer tek tırnak için yazılmalıdır. char secim = ‘x’ şeklinde kullanılabilir.|
|int maas = 2500,85||Değişken ismi uygun ancak int değişken türü ondalıklı sayıları tutamaz. double maas = 2500,85 şeklinde kullanılabilir.|
C# DEĞİŞKEN ÖRNEKLERİ SORULAR:
|Değişken Tanımı||Değişken Adı||Değişken Değeri||Sonuç|
|byte sicaklik=-5|
|sbyte sicaklik=-21|
|short 2yazili=74|
|ushort yazili2=74|
|int maas=2750|
|uint sicaklik=-8|
|long agirlik=1500.86|
|ulong arac fiyati=25600|
|float pirlanta_agirlik =15.684|
|double pirlanta_agirlik=15.684|
|decimal pirlanta+agirlik=15.684|
|bool cevap=true|
|char menu=1|
|char menu=’a1′|
|string tcno=12345678901|
|string ikametadresi=”İsmail Bey Mah. Bahçelievler İstanbul”|
C# DEĞİŞKEN ÖRNEKLERİ CEVAPLAR:
|Değişken Tanımı||Değişken Adı||Değişken Değeri||Sonuç|
|byte sicaklik=-5||Doğru||Yanlış, byte değişken türü 0-255 arası değer alabilir||Yanlış|
|sbyte sicaklik=-21||Doğru||Doğru, sbyte -128 ile +127 arasında değer alabilir||Doğru|
|short 2yazili=74||Yanlış, değişken adı rakamla veya özel karakterle başlayamaz||Doğru, short -32768 ile +32767 arasında değer alabilir||Yanlış|
|ushort yazili2=74||Doğru||Doğru, ushort 0 ile 65535 arasında değer alabilir||Doğru|
|int maas=2750||Doğru||Doğru, int -2.147.483.648 ile 2.147.483.647 arasında değer alabilir||Doğru|
|uint sicaklik=-8||Yanlış||Yanlış, uint 0-4.294.967.295 arasında değer alabilir||Yanlış|
|long agirlik=1500.86||Doğru||Yanlış, ulong tamsayı dışında ondalıklı değer alamaz||Yanlış|
|ulong arac fiyati=25600||Yanlış, değişken isminde boşluk olmaz.||Doğru||Yanlış|
|float pirlanta_agirlik =15.684||Doğru||Doğru, float ondalıklı değerleri alabilir. Ancak değerin sonuna f harfi konulmalı||Yanlış|
|double pirlanta_agirlik=15.684||Doğru||Doğru, double ondalıklı değerleri alabilir||Doğru|
|decimal pirlanta+agirlik=15.684||Yanlış, değişken isminde Özel karakter kullanılamaz.||Doğru decimal ondalıklı değerleri alabilir.||Yanlış|
|bool cevap=true||Doğru||Doğru, bool true ve false değerleri alabilir.||Doğru|
|char menu=1||Doğru||Doğru, char değişkenine tek karakterler veri aktarılabilir. Ancak değer tek tırnak içinde yazılmalı||Yanlış|
|char menu=’a1′||Doğru||Yanlış, char birden fazla karakter içeren veriyi tutamaz||Yanlış|
|string tcno=12345678901||Doğru||Doğru, 2 milyar karaktere kadar veriyi tutabilir. Ancak değer çift tırnak içinde yazılmalı||Yanlış|
|string ikametadresi=”İsmail Bey Mah. Bahçelievler İstanbul”||Doğru||Doğru||Doğru|
C# Form Dersleri ile ilgili makalelerimizi incelemek için tıklayınız.
SendeKodYaz Youtube kanalımızı incelemek ve abone olmak için tıklayınız.