Veri Tipi ve Değişken Nedir? – Giriş…
En basit tanımı ile “veri tipi”; Değişkenleri geçici olarak saklayacağımız alanlardır. Bu veri tipleri metinsel veya rakamsal olabilir. Veri tipleri ve alacağı değerler sabit iken, değişkenler ise kendimiz isimlendirdiği ve belirli bir veri tipine ait olan yapılardır. Program üzerinde bir değişken tanımladığınız anda, o değişkene ait bellekte bir alan ayrılır ve geçici olarak orada saklanır. Kullanacağımız her değişkenin kesinlikle tipini belirtmemiz lazım.
Orta halli basit bir program bile yapıyor olsanız, program içerisinde onlarca belki yüzlerce farklı değişken tanımlamanız gerekebilir. Bundan dolayı veri tipleri ve değişkenleri iyi olarak anlamanız ve çok sayıda örnek yapmanızı tavsiye ederim.
C# Dilinde 2 türde değişkenler vardır. Bunlar Değer Tipli Değişkenler ve Referans Tipli Değişkenlerdir.
Değer Tipli Değişkenler: Taşıdıkları ve atandıkları değerlere göre belleğin ‘stack’ bölgesinde yer alırlar. Adında da anlaşılacağı üzere alabildiği değer aralığı sabittir. Örnek: “int”, “long”, “float”, “double”, “decimal”, “char”, “bool”, “byte”, “short”, “struct”, “enum”
Referans Tipli Değişkenler: Alacağı değer aralığı belli olmayan ve belleğin ‘heap’ bölgesinde saklanan değişkenlerdir. Örnek: “string” ve “object”
Konuyu daha iyi anlamak için aşağıda ki örnekleri inceleyebilirsiniz.
Değişen Tanımlarken Dikkat Edilmesi Gereken Hususlar :
- Değişken isimleri rakam veya özel karakterler ile başlamaz!
- Değişken isimlerin de ‘boşluk’ veya ‘Türkçe’ karakter kullanılmaz!
- Class, namespace ve kontrol isimleri gibi program tarafından kullanılan isimler verilemez.
- Aynı kod bloğu içerisinde aynı isimden birden fazla değişken tanımlanamaz.
- Değişken isimleri büyük ve küçük harfe duyarlıdır (Örnek: ‘Ad’ & ‘ad’ yazımları aynı bile olsa birbirinden farklı değişkenlerdir. )
- Değişken ismi maksimum 255 karakterli olmalıdır.
- Bunların dışında değişkenlere dilediğiniz ismi verebilirsiniz.
En Çok Kullanılan Veri Tipleri ve Özellikleri :
1- Integer Veri Tipi (int) :
Integer veri tiplerini rakamsal ifadeler için kullanırız. Ondalıklı veya kesirli sayıları kabul etmez ve yalnızca tam sayı değeri girmeniz gerekmektedir.
Değer Aralığı : -2147483648 ile +2147483647 arasında değer almaktadır. Bellek üzerinde kapladığı alan “4 Bayt” dır.
Örnek Kod Kullanımı :
/// Örnek bir Integer Tanımlayalım (2 farklı şekilde) //// int sayi = 10; // Bu değişkeni aşağıda ki şekilde de uzun yolla tanımlayabiliriz. int sayi; sayi = 10; /// YANLIŞ İŞLEMLER & YANLIŞ TANIMLAMA ŞEKİLLERİ //// int = sayi; //bu değişkenin ismi yoktur. İsim eşittir den önce yazılmalıdır. (hata verir) int = 1; //burada da değer var ama isim yok (hata verir) int i = 1 //noktalı virgül yok (hata verir) int 5 = 10; //Veri tipi sayı ile başlayamaz (hata verir) /// Birden Fazla Değişkeni Aynı Anda Tanımlama //// int rakam1 ,rakam2 ,rakam3; int sayi1 =10, sayi2 = 15;
2- String Veri Tipi :
Metinsel ifadeler için kullanılır. Genellikle uzun metinler, cümleler, veya belirli bir açıklama yapmak istediğimizde seçeceğimiz veri tipi “string” türünden olmalıdır. String bir değişken tanımlarken dikkat etmeniz gereken hususi, tanımlanan değişken her zaman çift tırnaklar içerisin de yazılmalıdır. Integer değişkenler de buna ihtiyaç duymamıştık… ‘String’ veri tipi referans türlü bir değişken olduğu için herhangi bir tanım veya değer aralığı yoktur. Bundan dolayı yazdığınız metinin uzunluğuna göre bellekte yer ayrılmaktadır.
Örnek Kod Kullanımı :
string isim = "Şahin Sezgin"; // Tek satırda string tanımlama. string soyisim; // iki satırda string tanımlama. soyisim = "ÖZDEMİR"; string adi, soyadi, adres; // Birden fazla string tipini aynı satırda tanımlama. Console.WriteLine(isim); // Bu kod çalıştığında daha önce 'isim' değişkenin atadığınız değer yani "Şahin Sezgin" ekrana yazdırılır. Console.WriteLine(isim + soyisim) // Bu kod çalıştığında ekrana direk "ŞahinSezginÖZDEMİR" ifadesi yazdırılmaktadır. Console.WriteLine(isim + " " + soyisim); // Değişkelerin arasında boşluk bırakmak için bu örneği inceleyebilirsiniz.
3 – Byte Veri Tipi :
Integer ile benzer bir yapıya sahiptir ve yalnızca tam sayı değerlerini almaktadır. Integer dan farklı olarak bellekte çok daha az yer kaplamaktadır. Çok büyük olmayan rakamsal veriler için tercih edilebilir. Örnek olarak; yaş, hava durumu, v.s v.s
Değer Aralığı : 0 ile 255 arasında ki değerleri alır. Eksi (negatif) bir sayı değeri alamaz. Bellek üzerinde kapladığı alan “1 Bayt” dır.
Örnek Kod Kullanımı :
byte havaDurumu; byte yas = 26; byte dersNotu = 85 byte arabaSayisi = 500; // Hata verir çünkü byte'ın alacağı max değer 255'dir. byte havaDurumu = -8; // Hata verir çünkü byte'in alacağı min değer 0'dır.
4 – Long Veri Tipi :
Integer ile benzer yapıya sahiptir. Yalnızca rakamsal ve tam sayı değerlerini içinde saklayabilir. Integer’dan farklı olarak tanımlanabilecek değer aralığı çok daha büyüktür. Örneğin iş yerinde çalışanların T.C Kimlik numaralarını ‘integer’ bir veri tipinde saklayamazsınız çünkü değer aralığı buna uygun değildir. Bu gibi durumlarda ‘long’ veri tipini rahatlıkla kullanabilirsiniz. Bbununda karşılığı olarak integer veri tipine göre bellekte çok daha fazla yer kaplamaktadır (2 katı daha fazla yer kaplar). Bundan dolayı gerek duyulmadığı sürece ‘long’ veri tipini kullanmamalısınız.
Değer Aralığı : (-)9.223.372.036.854.775.808 ile (+)9.223.372.036.854.775.808 arasında ki değerleri almaktadır. Bellekte kapladığı alan 8 Byte’dır.
Örnek Kod Kullanımı :
long tcKimlik; tcKimlik = 54878569854; long tcNo = "15454154151"; // Hata verir çünkü çift tırnak yalnızca string ifadeler // için kullanılmaktadır. Yukarıda ki gibi olmalıdır.
5- Char Veri Tipi:
Character kelimenin kısaltılmış halidir. Türkçe anlamı ise ‘Karakter’ dir. İsminden de anlaşıldığı üzere içerisine yalnızca tek bir değer alır. Bu değer harf veya rakam olabilir. Bunun dışında özel karakter veya tüm dillerin alfabesinden herhangi bir harf alabilir. Örnek olarak Char veri tipine Japonca, Çince, ibranice veya Türkçe, kısaca her alfabeden dilediğiniz harfi veya karakteri atayabilirsiniz ve biz C# dilinde buna “Unicode” adını vermekteyiz. Not: Char veri tiplerine atanacak değerler her daim ‘tek tırnaklar’ içerisine yazılmalıdır.
Değer Aralığı : Tüm unicode karakterleri barındılabilir. Bellekte kapladığı alan 2 Byte’dır.
Örnek Kod Kullanımı :
char karakter = 'a'; char test = "a"; // Hata verir çünkü yalnızca tek tırnaklar içerisine yazılabilir. char sayi; sayi = '1'; char rakam = '12'; // Hata verir çünkü içerisine yalnızca tek bir rakam alabilir. // 0-1-2-3-4-5-6-7-8-9 .. bunun dışında değer alamaz. char deneme = 'AB' // Hata verir çünkü içerisine yalnızca tek bir harf alabilir.
6- Double, Float ve Decimal Veri Tipleri :
Sayısal veri tiplerini üst kısımda sizlere anlattım (int, byte, long v.s) fakat dikkat ettiyseniz bu sayısal veri tiplerinin hiç birisi ondalıklı yani kesirli sayıları içerisinde barındıramaz! Örnek olarak KDV hesaplayan bir program yapmak istediğiniz de kdv değeri olan 0,18 değerini bir ‘int’ veya ‘long’ değerine atayamazsınız program hata verecektir. Bu gibi durumlar da Double, Float ve Decimal gibi veri tiplerini kullanarak işlemimize devam edebiliriz. Peki bu üç veri tipinin birbirinden farkı nedir ? Hangi durumlarda hangisi tercih edilmelidir kısaca açıklayalım.
Double: Özel veya aksi bir durum belirtmediğiniz sürece, C# üzerinde tanımladığınız her kesirli sayı birer ‘Double’ veri tipi olarak algılanır. ‘Double’ olarak tanımladığınız veri tiplerinin sonuna “D” veya küçük “d” koyabilirsiniz. Fakat bu zorunlu bir kural değildir! Veri tipinin ‘double’ olduğunu belirtmek için bu yol kullanılır. Bellekte 8 Bayt yer kaplar ve alacağı maksimum basamak sayısı 16‘dır.
Float: Kullanım ve yapı bakımından ‘double’ veri tipi ile aynı özellikleri sahiptir. Aralarında ki tek fark ise ‘float’ 7 haneli sayılara kadar izin verir ve bellekte kapladığı alan ‘double’ veri tipinin yarısı kadar yani 4 Bayt‘dır. Float olarak tanımlanan bir veri tipinin sonuna “F” veya “f” harfini koymanız gerekmektedir.
Decimal: Ondalıklı veri tiplerinin en büyüğü ve bellekte en çok yer kaplayandır. Mantığında double ve float gibi kesirli sayıları barındırmak için kullanılır fakat asıl kullanım alanları finans sektörü ve parasal değer hesaplamalarıdır. Bunun sebebi ise ‘decimal’ veri tipi kesin sonuçlar elde etmek istediğiniz kullanılır. Float ve Double veri tiplerinde ondalıklı sayılar ile işlem yaparken yazdığının veri tipinin son hanesi “5” den küçükse bunu ekrana yazdırmaz ama decimal’de bu durum söz konusu değildir. Veriyi net ve tam olarak hesaplar herhangi bir yuvarlama işlemi yapmaz. Bu nedenle parasal hesaplamalar yaparken her daim decimal kullanılır! Bellekte 16 Bayt yer kaplar ve 29 haneye kadar destekler.
Double, Float, Decimal Arasında ki Temel Farklar: Üç veri tipinin arasında ki en temel fark double ve float ile %100 kesin sonuçlar alamazsınız ondalıklı sayının son hanesine göre yuvarlama işlemi yapabilir fakat Decimal her zaman kesin ve tam sonuçları size gösterir. Bunun yanı sıra 3 veri tipinin de bellekte kapladığı alanlar birbirinden çok farklı ve aynı şekilde alabileceği maksimum basamak sayısı da (kaç haneli) farklıdır. Yapacağınız ve tutacağınız veri tipine göre iyi bir seçim yapmanız gerekmektedir. Örneğin doğa olaylarını hesaplarken kesin sonuçlara ihtiyacınız yoktur ve zaten doğa olaylarında (deprem tahmini, hava durumu vs) kesin sonuc alamazsınız bundan dolayı Float veya Double kullanabilirsiniz. Ama Finansal veya kesin sonuca dayalı bir işlem olacaksa kesinlikle seçmeniz gereken veri tipi Decimal olmalıdır.
Örnek Kod Kullanımı :
// Double Veri Tipi Örnekleri // double KDV = 0.18D; // Doğru bir kullanım, sonuna "D" eklenerek kullanılmıştır. double KDV = 0.18; // Doğru bir kullanım, çünkü double veri tipi, // sonuna hiç bir ifade belirtmeden de yazılabilir. // Float Veri Tipi Örnekleri // float test= 25.48F; // floatta sonunda F olur. // Decimal Veri Tipi Örnekleri // decimal d = 0.145M; // decimal veri tipi tanımlanırken M kullanılır. decimal d1 = 1; // Doğru bir kullanım çünkü, // normal bir sayısal değer atanırken M harfi kullanılmaz, // ama ondalıklı atama olurken M kullanılır.
7- Diğer Veri Tipleri ve Aldığı Değerler :
Yukarıda sizlere 6 maddede en çok kullanılan veri tiplerini açıkladım ve kullanıldıkları alanları size anlatmaya çalıştım. Bunun yanında detaylı olarak açıklamadığım fakat yeri geldiğin de (çok fazla olmasa da) kullanabileceğiniz diğer veri tipleri ve bu veri tiplerinin alacağı değerler aşağıda ki tabloda yer almaktadır.
Rakamsal Veri Tipleri:
Tür | Boyut | Kapasite | Örnek |
---|---|---|---|
byte | 1 bayt | 0, …, 255 (tam sayı) | byte a=6; |
sbyte | 1 bayt | -128, …, 127 (tam sayı) | sbyte a=5; |
short | 2 bayt | -32768, …, 32767 (tam sayı) | short a=5; |
ushort | 2 bayt | 0, …, 65535 (tam sayı) | ushort a=5; |
int | 4 bayt | -2147483648, …, 2147483647 (tam sayı) | int a=5; |
uint | 4 bayt | 0, …, 4294967295 (tam sayı) | uint a=5; |
long | 8 bayt | -9223372036854775808, …, 9223372036854775807 (tam sayı) | long a=5; |
ulong | 8 bayt | 0, …, 18446744073709551615 (tam sayı) | ulong a=5; |
float | 4 bayt | ±1.5*10-45, …, ±3.4*1038 (reel sayı) | float a=5F; veya float a=5f; |
double | 8 bayt | ±5.0*10-324, …, ±1.7*10308 (reel sayı) | double a=5; veya double a=5d; veya double a=5D; |
decimal | 16 bayt | ±1.5*10-28, …, ±7.9*1028 (reel sayı) | decimal a=5M; veya decimal a=5m; |
Metinsel Veri Tipleri:
Tür | Boyut | Açıklama | Örnek |
---|---|---|---|
char | 2 bayt | Tek bir karakteri tutar. | char harf ='h'; |
string | Sınırsız | Metin tutar. | string site="www.kariyeryaz.com"; |
Tarih ve Zaman Tutabilen Veri Tipleri:
Tür | Boyut | Açıklama | Örnek |
DateTime | 8 byte | Tarih ve Zaman Tutar | Datetime zaman = Datetime.now; |
7 Yorum
çok yararlı olmuş :)) kalan değişkenleride tanımlayabilir misiniz ??
teşekkür ederim, bence bu kadar bilgiden sonra kalan değişkenleri kendiniz de çok rahat anlayabilirsiniz diye düşünüyorum 🙂
tebrikler gercekten guzel anlatmissiniz basarilar dilerimm
teşekkür ederim iyi çalışmalar.
Ellerine sağlık admin,dolu bi içerik yapmışsın,mükemmel olmuş bence ;))
Çok faydalı bilgilendirme olmuş çok teşekkürler.
çok güzel bilgiler .:)