C++ Dersleri
Önsöz:
"Bir düşünceyi anlatmak için neden sayfalarca roman yazayım
?"(L.Borges)
Araçlar:
* MS Visual C++ v.6 (MFC kullanılmayacaktır)
Programlamaya Giriş:
"Program yazamak" için öncelikle "Program"'ı anlamak gerekir.
Hepinizin programın ne olduğunu bildiğinizi biliyorum. Ancak
"bilmek" ve "kavramak" farklı şeylerdir.
Sorulması gereken soru şu:"Bir program nasıl çalışır ?". Bunun
cevabını vermek için önce ünlü "çift tıklama" olayını açıklayalım.
Bir program çalıştırılmak istendiğinde ms win. Çok Kabaca şu
olayları gerçekleştirir.
1. Hedef dosyayı oku , dosyada belirtilen miktar kadar bir bellek
bölümü ayır ve içine programın kodlarını (dosyanın tamamını değil!)
kopyala.
2. Programın ihtiyaç duyduğu ek dosyları(ör: win.
Kitaplıkları(kernel32.dll,user32dll vb...)) yine aynı bölgeye
kopyala
3. Yine dosyada belirlen program başlama noktasından itibaren
programı başlat.
Burdan çıkartacağınız ders şu: siz bir *.exe dosyasını herhangi bir
editör ile açtığınızda karşınıza çıkan şey program kodları değil,
program bilgileri+program kodları
Artık çalışan bir programımız var....
Fakat prog."Bir Mesaj kutusu göstermek yada dosya işlemi yapmak
isterse ne yapar ?"
Kritik Nokta:
Prog. Windows'un konu ile ilgili fonksiyonunu(ki genel adı
WinAPI'dir.) çağırır.(Yani siz ister VisualBasic kullanın, ister
Delphi kullanın en son derlediğiniz program mutkla windows'un
fonksiyonlarını kullanacaktır.)
Not: WinAPI'lerle ilgili detaylı bilgi ve kullanımlarının
örneklerini http://msdn.microsoft.com/library/ adresinde
bulabilirsiniz.
C Ailesine Giriş:
C soyunun amacı program yazarken sık sık kullanılan rutinlerden
kurtulmaktır. Peki onu diğer rakiplerinden ayıran özellik nedir. C++
komut bazı değil hafıza yönetimini bazlı bir dildir.(Ör: VisualBasic
komut bazılıdır.) C++'da dosya açma komutu yoktur.(Özellikle bunu
bazı tutorial'lerin de dosya işlemi komutları veren kişilere
söylüyorum!)
Örnek:
Bir kağıda "Ali Veli Deli" yazdınız ve birine sadece "Veli"
kısmını okutmak istiyorsunuz ne yaparsınız ? "5.harften itibaren
kelime sonuna kadar(veya 4 harf) oku". İşte C++'ın yaptığı şey bu,
sizin yüzlerce defa "5.harften itibaren kelime sonuna kadar(veya 4
harf) oku" komutu tekrarlama zorunluluğunuzu kaldırıyor. Sizin
yerinize bu yönetimi o yapıyor.
Değişkenler:
C++ her ne kadar gelişmiş bir dil de olsa da daha telepatik
değil. Bu yüzden sizin "Ali Veli Deli" ile ne anlatmak istediğinizi
ona söylemelisiniz. Belki "Ali" gerçekten bir yazı, belki de ascii
kodları bir sayının basamaklarını temsil ediyor. C++ aradaki ayrımı
yapabilmek için bu referansı sizden istiyor.
Temel Değişkenler
"char"(8-bit)
bir byte(karakter=max 0-255 aralığını alabilen) büyüklüğündeki
sayıyı temsil eder.
-127 ile 127 aralığını alabilir.(işaretlidir !)
"unsigned char"(8-bit)
char'ın işaretsiz(pozitif tam sayı) olanıdır(0-255 aralığını
alabilir.)
"int"(veya long)(32-bit)
bir DoubleWord(dword=4 karater=0-4294967295)
uzunluğundadır,işaretlidir.
-2,147,483,648 to 2,147,483,647 aralığını alabilir.
"unsigned int"(32-bit)
"unsigned char"'a bakıp tahmin edin... "unsigned" parametresi bir
değişkenin önüne gelirse onu pozitif tam sayı halinde tanımlanmasına
neden olur. Böyle bir değişkenin pozitif tavanı yükselir.
Ör: unsigned int'in pozitif tabanın hesaplamak isterseniz. win.
hesap makinesibi açın. Bilimsel moda getirin, Bin tabanına alıp 32
tane 1 yazın ve Dec'e tabana alıp ondalık değeri görün...
"float"(!)
3.4*10^-38 ile 3.4*10^+38 arasında değer alır.
"dobule"(!)
1.7*10^-308 ile 1.7*10^+308 arasında değer alır.
"long double"(!)
3.4*10^-4932 to 1.1*10^+4932 arasında değer alır.
|