Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 3. Bölüm Veri Tipleri ve Değişkenler
C Programlama Dr. Serkan DİŞLİTAŞ 3.1. Sabitler Sabitler, tanımlanmasıyla birlikte program içerisinde sürekli aynı değeri ifade eden bildirimlerdir. (01) Sabitler r yarıçap uzunluğu girilen dairenin çevre uzunluğunu bulan C# programı. (Programda Pi = 3.14 değeri sabit olarak tanımlanacaktır.) 26
3. Bölüm: Veri Tipleri ve DeğiĢkenler 3.2. Değişkenler Bilgisayar programları veriyi iģler ve bellekte depolar. Bellek bilgisayar sistemlerinde veri depolama amacıyla kullanılan en önemli birimlerden birimidir. Her bir bellek hücresinin ayrı bir adresi vardır. DeğiĢkenler, verinin bellekte depolanması amacıyla kullanılan ve program içerisinde değerleri değiģebilen veri yapılarıdır. DeğiĢkenler bir ada ve veri tipine sahiptirler. DeğiĢkenler tanımlanma durumuna göre bellekte belirli bir yer adreslerler. DeğiĢkenlerin ne Ģekilde bir veriyi bellekte tutacağı ve sahip olacağı bellek büyüklüğü tanımlandığı veri tipine bağlı olarak değiģebilmektedir. Kısaca değiģken, verinin bellekte yer aldığı baģlangıç adresini tutarken; değiģkenin veri tipi ile de baģlangıç adresinden itibaren kaç byte daha hücrenin bu veriye ait olduğu belirlenmektedir. Sembolik Bellek x y z 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 FF CD AB 04 03 02 01 1 Byte Yukarıda bellek sembolize edilmiģtir. Her bir gözün bir adresi ve eģit büyüklükte (1Byte) kapasitesi vardır. DeğiĢkenin veri tipine bağlı olarak bellekte kapladığı Byte büyüklüğü değiģmektedir. Belleğe yazma ve okumada düģük seviyeli kısım düģük adrese, yüksek seviyeli kısım da yüksek adrese gelecek Ģekilde bir veri transferi yapılır. Tip Tanımlama sbyte x; short y; int z; (a) DeğiĢken Tanımlama Değer Atama x=0xff; y=0xabcd; z=0x01020304; (b) Değer Atama Şekil 3.1. DeğiĢken Tanımı ve Değer Atama 27
C Programlama Dr. Serkan DİŞLİTAŞ Değişken Adlandırma Değişkenlerin tanımlanması ve kullanımında dikkat edilmesi gereken durumlar şunlardır: Bir değiģken kullanılmadan önce mutlaka uygun bir veri tipi ile tanımlanmalıdır. DeğiĢkenler tanımlanma yeri ve Ģekline göre Lokal ve Global olarak tanımlanabilmektedir. Lokal değiģkenler sadece tanımlandıkları metot veya blok içerisinde geçerlidirler. Bir kod bloğu içerisinde, aynı değiģken ismi birden fazla kullanılamaz. Değişken ve diğer yapılara isim verilirken dikkat edilmesi gereken birtakım kurallar mevcuttur: Ġsimlendirmeler Ġngilizce küçük-büyük harfler (a-z, A-Z), rakamlar (0-9) ve altçizgi _ karakterinin bir araya gelmesiyle 255 karakter uzunluğunda olabilir. DeğiĢken adlandırma iģleminde boģluk, Türkçe karakterler (ç, ğ, Ğ, ı, Ġ, ö, Ö, ü, Ü, Ģ, ġ ) ve diğer özel karakterlerin (+, -, *, /, @, & vb.) kullanılmasına izin verilmemektedir. Bir tanımlamanın harf veya altçizgi karakteri ile baģlaması gerekir. Ġsimlendirmede ilk karakter hiçbir zaman rakam olmamalıdır. DeğiĢken adları programlama dilinde özel kullanımı olan bir rezerv kelime (if, for, main double, switch vb.) olamaz. Ġsimlendirmede Büyük Küçük harf duyarlılığı vardır. Ġsimlendirmede Toplam ve TOPLAM birbirinden farklı olarak kabul edilir. İyi bir programlama açısından değişken adları verilirken aşağıdaki önerilere uyulmalıdır: DeğiĢken adları bir veya daha fazla kelimeden oluģabilir. xmax, EnBuyukSayi, en_buyuk_sayi, En_Buyuk_Sayi, ToplamTutar, Toplam_Tutar, btntamam, cboxogrencilistesi vb. Anlamsız isimler kullanılmamalıdır. (ab12, xyz14) Koordinatlar için x, y, z ve indeksler için i, j, k gibi özel kullanımlar harcinde tek karakterli isimlendirmelerden kaçınılmalıdır. 28
3. Bölüm: Veri Tipleri ve DeğiĢkenler 3.3. Veri Tipleri C# dilinde değer ve referans olmak üzere iki kategoride sınıflandırılan veri tipleri ve özellikleri Tablo 3.1 de görülmektedir. Tablo 3.1. C# dili temel veri tipleri Kategori Değer Tipleri Veri Tipleri Tamsayı Kesirli Sayı Anahtar Kelime Boyut Değer Aralığı byte 0.. 2 8-1 0.. 255 100 1 byte sbyte -2 7 +2 7-1 -128... +127-19, +100 ushort 0.. 2 16-1 0.. 65535 1000 2 byte short -2 15 +2 15-1 -32768.. +32767-2000, +12500 uint 0.. 2 32-1 4 byte int -2 31 +2 31-1 ulong 0.. 2 64-1 8 byte long -2 63 +2 63-1 float 4 byte 1.5x10-45 3.4x10 +38-0.00001, 0.123, 9.17 double 8 byte 5x10-324 1.7x10 +308 decimal 16 byte 1.5x10-28 7.9x10 +28 Mantıksal bool true / false true Karakter char 2 byte \u0000..\uffff arası Unicode karakter H, Ġ, T, Ġ, T Referans Tipleri Nesne object - Tüm veri türlerinin türediği kök eleman 19, h, HĠTĠT Metin string - Unicode String HĠTĠT Not: u öneki unsigned (ĠĢaretsiz) Değer Tipleri Değer tipleri; verinin büyüklüğüne göre belleğin Stack bölümünde tutulan veri tipidir. Değer tipleri hızlı çalışır ve bellekte az yer kaplar. Referans Tipleri Referans veri tiplerinde, bellek bölgesinde veri yerine verinin adresi tutulur ve iģlemler veri adresi üzerinden yapılır. Referans tiplerde veri ise belleğin Heap bölümünde tutulmaktadır. 29
C Programlama Dr. Serkan DİŞLİTAŞ 3.4. Değişkenlerin Tanımı, Geçerlilik Alanı ve Süresi C# dilinde bir değiģkenlerin kullanılmadan önce mutlaka tanımlanmaları gerekmektedir. DeğiĢkenler tanımlandıkları bellek yeri ve Ģekline göre; Lokal Global olmak üzere iki farklı sınıfa ayrılmaktadırlar ve buna bağlı olarak da geçerlilik alan ve süreleri de değiģmektedir. Tablo 3.2 de lokal ve global değiģkenlere ait özellikler verilmektedir. Bir değiģken geçerlilik alanı dıģında kullanılamaz ve tanımı yapılmamıģ olarak kabul edilir. Tablo 3.2. Lokal ve Global DeğiĢken Özellikleri Değişken Türü Geçerlilik Alanı Tanımlanma Yeri Geçerlilik Süresi Genel (Global) Tüm Programlar Sınıf (class) Her Zaman Yerel (Lokal) Sadece Tanımlanan Blok Metotlar Bloklar Ġlgili Metot icrasında Ġlgili Blok Ġcrasında Genel (Global) Değişkenler Global değiģken, sınıf yapısı içerisinde tanımlanır ve sınıfın her yerinde geçerlilik kazanır. Global değiģkenler otomatik olarak oluģturulup, program sonlanıncaya kadar bellekte kalırlar. Global değiģken tanımında static kelimesi kullanılır. static <değiģken tipi> <değiģken adı> Yerel (Local) Değişkenler Tanımlandığı blok içerisinde geçerlilik alanına sahip değiģken tanımlarıdır. Yerel değiģkenler, tanımlandığı blok sonlandığında bellekten çıkartılır. Bu özellikten dolayı bellek kullanımı daha verimli olmaktadır. 30
3. Bölüm: Veri Tipleri ve DeğiĢkenler (02) Değişkenler (Lokal) (Lokal DeğiĢken Tanımı ve Kullanımı) 31
C Programlama Dr. Serkan DİŞLİTAŞ (03) Değişkenler (Lokal) Klavyeden girilen 2 sayının toplamının bulunup, ekrana verilmesi 32
3. Bölüm: Veri Tipleri ve DeğiĢkenler (04) Değişkenler ve Veri Tipleri DeğiĢken Tanımları 33
C Programlama (05) Değişkenler ve Veri Tipleri DeğiĢken Tanımları Dr. Serkan DİŞLİTAŞ ( kodlama devam ediyor.) 34
3. Bölüm: Veri Tipleri ve DeğiĢkenler ( kodlama devam ediyor.) 35
C Programlama (06) Değişkenler Genel ve Yerel DeğiĢken Tanımları Dr. Serkan DİŞLİTAŞ 36
3. Bölüm: Veri Tipleri ve DeğiĢkenler (07) Değişkenler Genel ve Yerel DeğiĢken Tanımları 37
C Programlama (08) Değişkenler (Değer Tipli DeğiĢkenler) Dr. Serkan DİŞLİTAŞ 38
3. Bölüm: Veri Tipleri ve DeğiĢkenler (09) Değişkenler (Referans Tipli DeğiĢkenler) 39
C Programlama Dr. Serkan DİŞLİTAŞ (10) Değişkenler (BOXING) 40
3. Bölüm: Veri Tipleri ve DeğiĢkenler 3.5. Tip Dönüşümleri Programlamada sayısal veya metinsel bir veri tipindeki değerin baģka bir veri tipine dönüģtürülemesine ihtiyaç duyulabilmektedir. Sayısal Sayısal Tipi DönüĢümü Sayısal Metinsel Tip DönüĢümleri Metinsel Sayısal Tip DönüĢümleri Tip Uyuşmazlığı Atama ifadesinde değiģkenlerinin tiplerinin ve büyüklüklerinin birbiri ile uyumlu olmadığı durumdur (ġekil 3.2.). DeğiĢkenlerin aynı tipte oldukları durumda; atama yapılan değiģkenin tip büyüklüğü en az atama yapan değiģkeninin tip büyüklüğü kadar olmalıdır. byte x = 255; short y = 1000; float f = 123.56; string str = HİTÜ ; // Tip Uyuşmazlıkları ------------ x = f; y = str; str = x; Şekil 3.2. Tip UyuĢmazlığı 41
C Programlama (11) Tip Dönüşümleri ve Dr. Serkan DİŞLİTAŞ 42
3. Bölüm: Veri Tipleri ve DeğiĢkenler 3.6. Enumerations & Structures (12) Enumerations (Numaralandırmalar) enum 43
C Programlama Dr. Serkan DİŞLİTAŞ (13) Structures (Yapılar) Structure -1 44
3. Bölüm: Veri Tipleri ve DeğiĢkenler (14) Structures (Yapılar) Structure -2 45
C Programlama Dr. Serkan DİŞLİTAŞ 46