Ya arkadaşlar, biz geçen derste “int” mint bişiler kullanmıştık ya hani. Ben “int”e tamsayı demiştim. Şimdi bu “int” ve kardeşleri nedir ona bakacaz. Bi de fonksiyon oluşturmayı öğrenecez.
Başlamadan önce hatırlatiyim. RAM’de bilgi saklarken, en küçük birimimiz bit. 1 bit. Ama RAM’i bit bit ayırmak mantıksız (makinenin hızını azaltır). Biz de 8 bit’e 1 byte demişiz. RAM byte byte ayrılmıştır. Yani RAM’de “abi, bi bite bakıp çıkıcam” diye bi hakkımız yok. Baktın mı en az 1 byte.
Veri Türleri
Gençlik yıllarımıza
dönelim. Hepimizin bir numarası vardı, dimi? Koyun sayar gibi yoklama yaparlardı
Şimdi düşünelim. Hepimizin en az bir ismi, ve bir de soyismi var. Numaralar niye?
Bize aşağılık kompleksi yaşatmak için tabi ki. Bi de daha kolay okunuyo: “Serkan Mustafa RAMAZAN” yerine “Otuz altı” gibi. Ama ikisi de aynı kapıya çıkıyo: Koyun gibi sayıyolar bizi!
Şimdi, 36 ve “Serkan Mustafa RAMAZAN” (aranızda böyle birisi varsa şimdiden özür dilerim =), ama örneğimiz bu olacak ) programcı açısından birer veri. Biri “tam sayı”, diğeri “karakter dizisi”. Türleri farklı. C dilinde her değişkenin, fonksiyonun, sabitin bir türü vardır. Ya da özel tür: “void” ‘dir. “void”, “türü yok” türüdür. Yani, türümüz yoksa bile vardır(bkz:”yok yok ise vardır”). Garip bi durum. Ama alışınca güzel oluyo.
Veri türlerini inceleyelim:
1.) int
Gün gelecek, “Hay, Allah belasını versin bu int’in!” diyceksiniz
. Demiyosanız sorun var demektir.
“int”, en çok kullanılan değişken türüdür. Misal: “Hilmi abi, MSN hackleyen fonksiyon yazdım, dönüş türünü ne seçiyim?”, “int yap, int. int iyidir.” . Evet, int iyidir. Çünkü, işlemcinizin özelliklerine cuk diye oturur ( Bunu açıklamam için makine yapısına girmem lazım. Sizin iyiliğiniz için girmiyorum =) ).
Evet arkadaşlar, acı gerçek: derleyiciler de birer programdır. Bunu niye söylüyorum? Şimdi, 64-Bit bi işlemciniz var diyelim. Buna 32-Bit Windows ya da (küçük bi ihtimal) Linux kurdunuz diyelim. 64-Bit olmanın getirdiği hiç bi ayrıcalık kalmadı. Niye? Çünkü, yüklediğiniz yazılım 32-Bit için derlenmiş. Yani, hangi işlemcide olduğunuz kadar, kodun hangi işlemci için derlendiği de önemli.
İşte bu yüzden, Hem MSVC, hem CB, ayarlarında, kaç bitlik kod yaratılacağını seçmenizi sağlıyo. Biz, 32-Bit’lik bir sistemde olduğunuzu(ben öyleyim şu an) varsayıyoruz. C dili değişmiyo. Ama bi kod beklediğinizden faklı çalışırsa ( 4294967295 + 1 dediğinizde “0″ değil de “4294967296″ alırsanız misal ) bunun nedeni, 32-bit - 64-bit yüzünden olabilir. Ama biz, bilgilerimizi, 32-bite göre verecez.
Bu kadar taksim yeter. Esas bilgiye geçelim. int, tamsayı tipini anlatır ( 3, 5, 45250545, -1, -112233 gibi ) . Arkadaşlar, int, uzunluk olarak, işlemcinin bit sayısına eşittir. Yani 32 bit. 8 bit=1byte. Burdan bir int RAM’de 4 byte kaplar.
int, işaretli ya da işaretsiz olabilir. Bu konuda bilgiyi “long” ve “short” kısmında bulabilirsiniz.
Yapısal olarak bir int 2^32 ( 2 üzeri 32 - yani 4294967296 ) farklı değer alabilir. Bu değerler şu şekilde dağılır:
| Tür -Değer | Alt Sınır | Üst Sınır |
| İşaretli | -2 147 483 648 | 2 147 483 647 |
| İşaretsiz | 0 | 4 294 967 296 |
Tablo yapmak kasıyo( WP saolsun, işimizi kolaylaştırmıyo hiç ). Fark ettiyseniz, işaretli int’te alt sınır daha geniş. Nedeni x86 ( bildiğin masaüstü, laptop ) mimarisiyle(işlemcinin devreleri) ilgili. Normalde 2 tane 0 gösterebiliyoz ( +0, -0). E bunlar birbirine eşit, o yüzden, birini eksilere verelim demişler.
Unutmadan. C dili int’i çok sever. Bu yüzden, eğer bişey tanımlarken tür vermezseniz “int” varsayar. Hemde işaretli int. Tanımlama yapmaya 3. bölümde geçicez. Biraz beklemeniz gerekcek.
2.) char
char türü, boyutu belli olan tek türdür. char kesinlikle 1 byte olmalıdır. Ama işaretli mi, işaretsiz mi olacağı belli değildir ( MSVC ve CB işaretli kullanıyo ) . Karakter tutmak için düşünülmüştür, tek bi karakter. Artık o tek karakteri ne yapacağınız size kalmış.
| Tür -Değer | Alt Sınır | Üst Sınır |
| İşaretli | -128 | 127 |
| İşaretsiz | 0 | 255 |
Evet, yukarıda da veri tipinin limitlerini görmekteyiz. Ama sakın bu tabloya bakıp, “Ben bu veri tipini harf tutmaktan başka ne için kullaniyi ki”demeyin
Bilgisayarda renkler ya da programın ürettiği veriler genellikle işaretsiz char olarak tanımlanır.
3.) float
Güzel isim di mi? “float”, “floating point”in kısaltması gibi bişey. “floating point” ise, “kayan nokta” demek. Evet, sayımızda bi nokta var. Yani, ondalık sayıları tutuyoruz. “kayan” olayı ise sayının bilgisayarda nasıl tutulduğuyla ilgili. Bi ara sırf bu konuda bi yazı yazıcaz ama, hadi hayırlısı. Siz sadece, bu türde ondalık sayıların, belirli bir kesinlike tutulduğunu(yani hesaplarda ufak kaymalar olabileceğini) bilin. Alt ve üst limitleri vermiycem çünkü ben de bilmiyom. Ve google’da aratmayacak kadar yorgunum şu an(saat 01:37). Bu sefer siz bulun. “36 Serkan Mustafa RAMAZAN. Senin ödevin. Bi dahaki derse bul, getir.”
Not: float 32-bit, 4 byte’tır.
4.) double
“float” iyi, ama küçük geldi bea. Bunun bi büyüğü var mı? diyenlere cevaptır. Kesinliği, float’ın 2 katıdır
O yüzden double diyolar zaten. “double precision”, yani çift kesinlik(float’a da “single precision”, “tek kesinlik” derler). float yetmezse double kullanırız. Ya da sadece daha kesin sonuçlar almak için. Bu arada unutmadan, double 64-bit, 8 byte’tır. C dili ondalık sayılarda double’ı kayırır. nerede “1.0″, “127.8″ görse, tür olarak double seçer. Yok “ben float olsun istiyom” diyosan, sayının sonuna bi “f” ekliyosun. Misal: “896413.25f”
Bu ders bu kadar. Gelecek bölümde türlerin özelliklerini hafif değiştiran anahtar kelimelere bakcaz. Şimdi örnek olarak aşağıdakilerin türlerini, işaretli mi, işaretsiz türde mi yazılmaları gerektiğini bulun. KOPYA ÇEKMEK YOK. ÇEKENİ ATARIM BLOGDAN
127 // char olsun bu 112 12.777 3333333333 2377.6456f 1111111111 -0.000001f 200 // char olsun 33.0 -1 // char olsun 300 |


8 yorum var.
Zafi
Cevabı buraya yazıyomuyuz ?
Ağu 2nd, 2008
r-G0ne
hayır
uygun bir zamanda sayfayı testler bölümüne taşıycam
Ağu 3rd, 2008
Zafi
Bu dersin ikinci bölümü kayboldu…
Ağu 6th, 2008
r-G0ne
ikinci bölümü gerekli düzenlemelerden sonra(yarın ya da ertesi gün) yayınlıyorum. Fonksiyon tanımlama konusunda, türlerin özelliklerini hafiften değiştiren anahtar kelimeler(t.ö.h.d.a.k diyelim), isimlendirme ve printf konsunda kısa ve öz bir ders olacak inşallah
Ağu 9th, 2008
zafer
Hocam alt programlamada sorun yaşıyorumda.Nasıl sorucam ?
Ağu 9th, 2008
r-G0ne
buraya sor direkt. yorum olarak kalması daha iyi
Ağu 9th, 2008
zafer
Ya şimdi değerleri normal main fonksiyonunda giriyorum ama alt programa sadece bir değer (değişken yada herneyse) aktarabiliyorum.Mesela a,b değişkenleri main fonksiyonun da tanımlanmış.Ama işlemin alt programda(fonksiyon yada herneyse) olmasını istiyorum.İki yada daha fazla değer çağırmanın yöntemi nedir.Örnekle gösterirsen sevinirim. (Çömüz daha programlamada :masumsimili:)
Ağu 9th, 2008
r-G0ne
değişkenler, şu an uyguladığımız öğrenim sisteminde çok ilerde kalıyor(daha en az 2-3 ders var). kullandığım sistem daha önceden denendiğini görmediğim bir yöntem.(ama odtü buna benzer bişey uyguluyor). o yüzden soruyu özelden cevaplandıracağım(yorumdaki mail üzerinden) yarın da son iki yorumu siliyorum
kafaları karıştırabilir
Ağu 9th, 2008
“C Dili: Ders 2 - Veri Türleri ve Fonksiyonlar (I)” yazısına yorum yapın.