BLM111 PROGRAMLAMA DLLER I Ders8 Deiken Tipleri ve
BLM-111 PROGRAMLAMA DİLLERİ I Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk. edu. tr http: //web. karabuk. edu. tr/umitatilla/
Temel Veri Tipleri • C dilinde kullanılacak değişkenler ve veri tipleri programda önceden bildirilmek zorundadır. • C de temel veri tipleri • int – tam sayılar • float – virgüllü sayılar • double – daha uzun ve çok hassas virgüllü sayılar • char - karakterler 2
Tam Sayılar (Integer) • int: Tam sayıları ifade eder. Pozitif veya negatif olabilirler. • Integer niteleyicileri: long, short, veya unsigned • Örnek: int toplam; /* işaretli tam sayı */ toplam = 60; /* positif olabilir */ toplam = -10; /* negatif olabilir */ int toplam = 8500; /* kodlama sırasında */ /* ilk değer verilebilir */ 3
Tam Sayılar (Integer) • int türünün hafızada kapladığı alan her sistemde aynı değildir. • Tamsayı türleri C'de donanıma bağlıdır. • Tamsayı türünün uzunluğu çalıştığınız sisteme ilişkin mikroişlemcinin bir kelimesi (Word) kadardır. • Örneğin, 16 bitlik bir mikroişlemciye sahip bir sistemde int türü 16 bit, 32 bit işlemcide ise 32 bit uzunluğundadır. 4
Tam Sayılar (Integer) • Tamsayı türleri için aralık değeri nasıl hesaplanır. • Örneğin 8 bit uzunluğunda işaretsiz bir değişken için • En küçük sayı 0000 0 • En büyük sayı 1111 255 • 8 bit uzunluğunda işaretli değişken olursa bu durumda en soldaki bit işaret biti olur. • İşaret biti 1 ise sayı negatif, 0 ise pozitif olur. 5
Tam Sayılar (Integer) • Bir sayının negatifini bulmak için önce 1'e tümleyeni bulunur sonra 1 eklenerek 2'ye tümleyeni bulunur. • Sayının 1'e tümleyeni 1'lerin 0, 0'ların 1 yapılmasıdır. • Örneğin işaretli bir değişken için • 000 1010 +10 • 1111 0110 -10 • 0001 1111 +31 • 1110 0001 -31 6
Tam Sayılar (Integer) • Dolayısıyla bir tamsayı türünde tutulabilecek en büyük ve en küçük sayı nasıl bulunur? • 8 bitlik işaretli tamsayı için • 0111 1111 +127 (en büyük pozitif sayı) • Sayının 2'ye tümleyeni 1000 0001 • 2'ye tümleyenden 1 çıkarılırsa • 1000 0000 -128 (en küçük negatif sayı) 7
Küsüratlı Sayılar (float) • Gerçek sayıları ifade eder (virgüllü kısmıyla) • Positif ve negatif olabilir • Örnek: float a; a = 0. 16; /* positif olabilir */ a = -146. 76; /* negatif olabilir */ float a = 8. 123; /* kodlama sırasında */ /* ilk değer verilebilir */ 8
Daha Hassas Küsüratlı Sayılar (double) • Pozitif ve negatif gerçek sayıları ifade etmek için kullanılır. • Float türünden 2 kat daha duyarlıklıdır. • Hemen her sistemde 64 bit = 8 byte yer kaplar. • long double ise 10 byte uzunluktadır ve double türünden daha duyarlıklıdır ancak her C derleyicisinde geçerliliği yoktur. double b; b = 4. 45 E+5; d = -73. 567; /* 445000. 0 */ /* negatif */ double b = 2. 345; /* ilk değer ataması */ 9
Karakter - char • Uzunluğu en kısa olan türdür. 8 bit yer kaplar. • C'de char türünün short, int ve long türünden farkı sadece uzunluğudur. • C'de char türü diğer türlerle aritmetik, mantıksal vs. işlemlere girebilir. • Türün isminin char olması bu türün uzunluğunun sistemlerde kullanılan karakter uzunluğuna eşit olmasındandır. • Karakter uzunluğu her sistemde 1 byte = 8 bittir. 10
Karakter - char • Karakterler • Alfabedeki büyük ve küçük harler • 0 dan 9 a kadarki 10 numara • Özel semboller örneğin +#@½%&$. *? !£‘=-: /*^(){}[]~; , <> char c; c = 'A'; c = ‘ 9’; /* A Harfi */ /* 9 rakamı*/ char c = ‘c’; /* ilk değer verme */ 11
Karakter - char • Karakterlerin (char değişkenleri) ASCII tablosundaki değerleri… 12
Temel Veri Tipleri Veri tipi Boyut(bit) Aralık [signed] char 8 [-128, +127] [signed] short [int] 16 [-32768, +32767] [signed] int 32 [-2147483648, +2147483647] long [int] 32 [-2147483648, +2147483647] unsigned char 8 [0, +255] unsigned short [int] 16 [0, +65535] unsigned [int] 32 [0, +4294967295] unsigned long [int] 32 [0, +4294967295] float 32 3. 4 E-38 to 3. 4 E+38 double 64 1. 7 E-308 to 1. 7 E+308 long double 80 3. 4 E-4932 to 1. 1 E+4932 13
C Dilinin Yapısı #include ………; Kütüphane çağırma #define ………; Eşdeğer ifade atama typedef ………; Yeni veri tipi tanımlama struct ………; Veri yapısı tanımlama const ………; Sabit tanımlama veri_tipi değişken adı; Değişken bildirimleri fonksiyon ………. . ; Alt program main () Ana program (ana fonksiyon) { } …………………. 14
C Dilinin Yapısı • Değişken, sabit ve fonksiyon adları anlamlı kelimelerden seçilip yeterince uzun olmalıdır. • Eğer bu isimler bir kaç kelimeden oluşacak ise, kelimeler alt çizgi ( _ ) ile ayrılmalıdır veya her kelime büyük harfle başlamalıdır. Örneğin: • int son_alinan_bit; • void Kesme. Sayisi(); • float Ortalama. Deger = 12. 7786; • Sabitlerin bütün harfleri büyük harfle yazılmalıdır • #define PI = 3. 14; • int STATUS 0 x 0379; 15
C Dilinin Anahtar Kelimeleri 16
C'de giriş/çıkış fonksiyonları • C'de tüm giriş/çıkış işlemleri bayt akışı anlamına gelen stream ile yapılır. • Giriş işlemlerinde bir cihazdan (örn. Klavye) hafızaya bayt transferi gerçekleşir. • Çıkış işlemlerinde hafızadan bir cihaza (örn. Ekran, yazıcı) bayt transferi gerçekleşir. • C programı çalıştığında otomatik olarak 3 stream programa bağlanır. • Standard input – klavye • Standard output – ekran • Standard error – ekran 17
C'de giriş/çıkış fonksiyonları • I/O fonksiyonları standart input/output C Kütüphanesinde tanımlanmış • stdio. h • En önemli giriş/çıkış fonksiyonları printf ve scanf fonksiyonlarıdır. • Bu fonksiyonlar standart input stream 'den veri alır (scanf) ve standart output stream'e veri gönderir (printf) • Diğer giriş/çıkış fonksiyonları • gets, puts, getchar ve putchar 18
printf fonksiyonu • printf • Ekrana veriyi biçimlendirerek yazabilen bir fonksiyondur. • Dönüşüm tanımlayıcıları: bayraklar, alan genişliği, hassasiyet. • Yuvarlama, sütunları hizalama, sağa/sola dayama, üssel gösterim, onaltılık gösterim, istenen genişlik ve hassasiyetle biçimleme printf( "biçim ifadesi", diğer argümanlar); 19
printf fonksiyonu • Biçim ifadesi : Çıkışın biçimini belirler. • Diğer argümanlar: Biçim ifadesinde yer alan her dönüşüm tanımlayıcısı ile ilişkili bir argüman yer alır. • Biçim ifadesinde, dönüşüm tanımlayıcıları, bayraklar, alan genişliği, hassasiyet bilgisi ve karakterler yer alır. • Dönüşüm tanımlayıcıları % işareti ile birlikte tanımlanırlar. 20
Tam sayıları biçimlendirme 21
Tam sayıları biçimlendirme NEDEN?
Kayan noktalı (floating point) sayıları biçimlendirme • Kayan noktalı sayıları 3 farklı dönüşüm tanımlayıcısı ile biçimlendirilir (e, f ve g) • E veya e ile biçimlendirme üssel gösterim kullanır. • 1. 504582 x 102 Bilimsel gösterim • 1. 504582 E+02 Bilgisayar sistemlerinde • f ile biçimlendirmede sabit noktalı gösterim kullanılır. • f ile formatlamada ön tanımlı olarak virgülden sonra 6 hane gösterilir. 23
Kayan noktalı (floating point) sayıları biçimlendirme • G veya g ile formatlamada sayı ya f'e göre ya da e ile formatlamaya göre formatlanır. • Eğer sayının üs değeri -4 ten küçük ise veya 6'ya eşit veya 6 dan büyük ise bu durumda üssel gösterim gerçekleştirir. • Diğer durumlarda f ile formatlama biçimini kullanır. • Aşağıdaki sayıları g ile formatlanırsa şu sonuçlar elde edilir: • • • 0. 0000875 8. 75 e-05 8750000. 0 8. 75 e+06 8. 75 87. 50 87. 5 875 • E, e veya g ile formatlamada sayı yuvarlanırken, f ile formatlamada yuvarlama yapılmaz. 24
Kayan noktalı (floating point) sayıları biçimlendirme 25
Kayan noktalı (floating point) sayıları biçimlendirme 26
Karakter ve string formatlama • Karakter yazdırmak için c, string yazdırmak için s dönüşüm tanımlayıcıları kullanılır. • s kullanıldığında null karaktere rastlayana kadar tüm karakterler ekrana basılır. • Karakterler tek tırnak arasında belirtilirken string ise çift tırnak arasında belirtilir ve son karakteri null '