Temel Bilgiler
C++ bilindiği gibi programlama dunyasında en cok ilgi goren C dilinden turemiştir. C++'ı klasik C dilinden farklı yapan yanı; Nesne Yonelimli Programlamayı da ( Object Oriented Programming) C'nin sozdizimi kurallarıyla birlikte desteklemesidir. Normalde C ile sadece yapısal programlama yaparken C++ dili ile hem yapısal hem de nesne yonelimli programlar yazabilirisiniz. C++ diline başlarken once dilin C'den gelen ve temel olan ozelliklerini oğrenmek gerekir. Orneğin değişken tanımlama atama ve diğer basit aritmektik işlemler kontrol yapıları ve donguler gibi.
Teknolojinin ulaştığı son noktadaki programlama dillerinden olan C ve C++ bir cok yeni ve guclu ozellikleri icerir. Derslerimiz devam ettikce bunların teker teker icine gireceğiz. C dilinin ozelliklerinin %80 i C++'da da mevcuttur (bu karşılaştırma şahsi goruşumdur). Zaten C++ C'nin ust gurubudur. Bunu şoyle sıralayabiliriz. C C++ ve C# dır.
C dilinin avantajları az komut kumesinden oluşması ve bu komutların diğer yuksek seviyeli dillere nazaran daha hızlı calışmasıdır. Ayrıca C deki kutuphaneler sayesinde fonksiyon tanımlamanıza gerek kalmadan işlemlerinizi yapmak mumkun olacaktır. Bu konuda cok detaya inmeden programlamaya gecmek istiyorum. Cunkuprogramlamaya başladığımızda her ornekten sonra o an kullandığımız programın icinde gecen fonksiyon hatadeğişken belirleyiciler kısıtlamalar notasyonlar v.s gibi bilgilerden ara ara bahsedeceğim. Yalnız cok onemli olan bir konuya burada değinmek istiyorum. C nin avantajlarını programlamayla birlikte gormek guzel ama C nin dezavantajlarını programlamadan once bilmeliyiz ki bunlardan sakınalım. Oncelikle Tanımlayıcılardan bahsetmek istiyorum. Her derleyici ve assmbley icin değişkenleri sabitleri etiketleri ve fonksiyon adlarını tanımlama kuralları vardır. Bu notasyonlara tanımlayıcı denir. C++ da tum tanımlayıcılar a . . . z - A . . . Z harfleri ile ya da alt cizgi "_" ile başlar. Bundan sonra rakam harf ya da alt cizgi kullanılabilir. ANCI C uyumlu derleyiciler 31 karaktere kadar tanımlayıcı kabul ederler fakat tanımlayıcının ilk sekiz karakterini kullanmayı kendimize alışkanlık etmeliyiz. Dikkat etmemiz gereken ozelliklerden biri de kullandığımız ifadelerdeki buyuk kucuk harflerdir. C ve C++ buyuk ve kucuk harf duyarlılığına sahiptir. Kullandığımız ifadeleri birbirinden farklı ve aynı ifade olarak kullanıyorsak programımız hata verecektir. Bunu bir ornekle anlatayım:
Program
PROGRAM
progRAM
ProgRam Bu şekilde tanımlarsak hepsi birbirinden farklı ifadeler olarak C++ da okunacaktır. Biz Şunu alışkanlık edinmeliyiz; tanımlayıcılarımızın baş harfi buyuk olacak. Buyuk ve kucuk harf kombinasyonlarının kullanılması ile onceden yapılan tanımlamalar bazen işi zorlaştırabilir. Eğer bu değişkenlerden birini kullanmak isterseniz bu zamana kadar nasıl tanımladığınızı bilmeniz gerekir. Orneğin printf()`in PRINTF() olarak cağrılması durumunda " bilinmeyen tanımlayıcı " (Unknown identifier) hata mesajı vererek sizi uyarır. Buna benzer olarak %f ve %F kullanımı hata verdirecektir. Programlamayı yaparken bunlara dikkat etmemiz gerekecek. Cunku bir değişkeni veya tanımlayıcıyı başta nasıl kullandıysanız uc dort sayfa kod yazdıktan sonrada aynı şekliyle kullanmak zorundasınızdır. İşte burada en buyuk handikap yaşanacaktır. Cunku C/C++ derleyicileri her zaman hatanın nerde olduğunu gostermez. Bunu programcı kendisi satır satır takip ederek bulacaktır. Bundan dolayı bu soylediklerime baştan dikkat etmemiz gerekiyor.
Tavsiyeler:

İyi bir programlama yapabilmek icin benim size olan tavsiyelerim; daha az kod kullanarak daha cok işlem yapabilme. Gerci bunu yapsak zaten profesyonel oluruz . Zaten C++ `ın paradigması da buradan geliyor. Aslında C++ da yapabileceğimiz tum programları C de yapma olanağımız var ama bu bize hem fazla kod yazmayı gerektirecek hem de zaman kaybetmemize sebep olacak. Zaten bunlardan kacındığımız icin C++ diyoruz. Elimizde nesneye yonelik bir dil varken ve kullanacağımız fonksiyonlar icinde hazır olarak mevcutsa tabi bize de bunun keyfini surmek kalıyor. Tavsiyelerimden biride derslerde verdiğimiz orneklerin dışında aynı algoritmaya benzer farklı ornekler yapın. Oğrenmenin en iyi yolu yanlış yapmaktır. Bunu şoyle izah edeyim: eğer yanlış yapıyorsanız ve de o yanlışın kaynağını bulup duzeltebiliyorsanız o an onu oğrenmişsiniz demektir. Tabi ornekler sizin icin alıştırma olacaktır ve hafızanızda kalıcı bir yer tutacaktır. Bunca kodu başka turlu hafızada tutamayız. İlk başlarda sık sık not alınızmumkun olduğunca da bol ornek yapınız. Orneklerinizi de kendiniz duşunup kendi hayal gucunuzle oluşturursanız eminim bu işi başaracaksınızdır. Başta cok zor gelebilir ama başarı ter dokulmeden olmaz. Bu kısmı fazla uzatıp sizi daha başlamadan C/C++ dan uzaklaştırmak istemiyorum.
C++ İle Programlamaya Giriş

İlk programımız!

// ilk1.cpp
// Ekrana "Bu benim ilk programım" yazdırıyoruz
#include

int main()
Şimdi Yazdığımız programı inceleyelim:
"//" işaretini acıklama satırlarında kullanıyoruz. C++ derleyicisi bu notasyonla başlayan satırı okumaz. Bununla birlikte daha uzun cumlelerimiz olursa bunları da " /* */ " notasyonunun icinde yazıcağız. Bu ozellik de C den bize kalma. Demiştik zaten C `nin tum ozelliklerini C++ icerir. Fakat biz genelde " // " yi kullanacağız.
#include : Bu bizim C++ da bulunan kutuphane dosyamızı cağırmaya yarıyor. Ben size şoyle tarif edeyim. iostream.h kutuphanesindeki hazır olan " cout " fonksiyonunu cağırıyor. Yani buda bizim fazla kod yazmamıza engel oluyor. .h ile biten dosyalar kutuphane dosyalarıdır. Bunu şuna da benzetebiliriz. Farz edelim ki elimizde bir alet cantası var icinden tornavidayı cağırdığımızda vida sıkacağızdır. Bu da ona benziyor. C++ da ki hazır kutuphanelerde bir cok hazır fonksiyonlar vardır. İlerde Bu hazır fonksiyonlar işimizi gormemeye başlayınca kendi kutuphanemizi yapmaya başlayacağız. Tabi bu seviyeye geldiğimizde olayı hemen hemen kavramış olacağıztabi neden olmasın oyle değil mi?
Daha sonraki satır her C++ programında mutlaka bulunması gereken bir satırdır. Her C++ programında main() fonksiyonu olmak zorundadır; bu fonksiyonumuzun onunde ise o fonksiyonun donderdiği değişkenin veri tipi olmalıdır. Tabi ki C++ fonksiyonlar ve onların donderdikleri değerler konusunu da ileride işleyeceğiz.
Bir sonraki satırda ise; C++ fonksiyonlar ve kod blokları " " parantezleri arasında bulunmalıdır. main de bir fonksiyon ise onun icindeki kodlar doğal olarak parantezleri arasındadır.
Program derlenip calıştırıldığında ise ( Turbo C++ 3.1 kullanıyorsanız ctrl+f9 kısa yoluyla programı calıştırabilirsiniz (Run) ) karşımıza "Bu benim ilk programım" yazısı cıkacaktır. İşte bu yazıyı ekrana veren komut da iostream.h kutuphanesindeki cout fonksiyonudur.
Onemli bir nokta ise C++ dilinde her satır ifadenin sonuna " ; " koymak zorundayız. Bundan farklı olarak #include satırlarının ve bir kac farklı satırın arkasına " ; " gelmez. Bunları ileride goreceğiz.
Return 0 : programımızın (aynı zamanda main fonksiyonumuzun) cıkış noktasıdır. Eğer return ile 0 değeri donderirsek programımızın guvenle cıktığını işletim sistemine bildirmiş oluruz. Bu sayede guvenle programımızın calıştığını goreceğiz.
Şimdi size bir ornek daha vereceğim bununla da aynı cıktıyı elde edeceğiz. Arasındaki farkları eminim basit olarak sizlerde goreceksinizdir.
// ilk2.cpp
// Ekrana "Bu benim ilk programım" yazdırıyoruz
#include
main()
Evet şimdi burada cok fark varmış gibi gozukuyor aslında ama oyle değil. Sadece kutuphanemiz stdio.h oldu ve ekrana yazdır fonksiyonumuzda printf oldu. Bu ozellik C den kalma. Bunlar diğer program ile aynı işlevi goruyor. Buradaki fark " \n " notasyonu. Bu noptasyon bir sonraki satıra gecmek icin kullanılır. Bu notasyonlara Escape dizileri denir. Tablo olarak bunları size veriyorum. Son yazdığımız ilk2.cpp de yerlerine koyarsanız calışacaktır.
[IMG]http://img48.**************/img48/4218/c13nu.jpg[/IMG]

Değişkenler

Şimdi bize yine cok lazım olacak bir ozellik de değişken tanımlamak ve atama yapmaktır. Bunu bir ornek uzerinde anlatmak istiyorum. Orneğimiz;
// degisken.cpp
// Burda değişken tanımlamayı goreceğiz.
// Aynı zamanda verilen bir sayıyı kendisi ile carpma 2.2=4 gibi

#include
#include // kutuphane dosyamız
main()
Burada bundan once yaptığımız programlardan farklı olarak int i kullandık yani değişken tanımladık.
Değişken Nasıl Tanımlanır?

Değişkenleri tanımlamak icin aşağıdaki şema kullanılır.
[Veri Tipi] [Değişken Adı];
Orneğin
int sayi;
Şimdi degisken.cpp orneğindeki int i; kısmını anlamışsınızdır. Burada değişkenlere değinmek istiyorum. Biz yukarda İcinde sayı tutan bir değişkeni tanımladık. Benzer olarak aşağıdaki tanımlamalar da vardır.
char c;
int i;
float f;
double d;
unsigned int ui;
Burada [Veri Tipi] [Değişken Adı]; bu kalıba gore tanımlama yaptığımız icin once Veri Tiplerini inceleyelim.

Veri Tipleri

1) İnt tip.

Integer = Tamsayı

Tamsayıları icerir. Bellekte 2 Byte tutar. DOS'ta ve Win3.1'de 16 bit uzunlugunda ama Windows9x WinNT Win200 ve WinXP 32 bit uzunluğundadır.
Değer aralıkları Short ve long icin değişir.
Ornek: 5 -20 1 gibi.

2) Sort tip.

Tam sayıları icerir. 16 bit uzunluğundadır.
signed: -32768 ile +32767 arasinda değer alır unsigned: 0 ile 65535 arasinda değer alır.
3) Long tip.

Tam sayılar icerir. 32 bit uzunluğundadır.
signed: -2147483648 ile +2177483647 arasinda değer alır unsigned: 0 ile 65535 arasinda değer alır.
4) Gercel Tipler (Float Double Long double)

Gercel sayıları icerirler.
float : Bellekte 4 Byte yer tutar. 3.4E-38 ile 3.4E+38 aralığında değer alır. Hassasiyet 7-8 basamaktır.
double : Bellekte 8 Byte ter tutar. 1.7E-308 ile 1.7E308 aralığında değer alır. Hassasiyet 15-16 basamaktır.
long double : doublenin tipinin daha genişidir.1.2E-4932 ile 1.2E-4932 aralığında değer alır. Hassasiyet 19-20 basamak.
5) Char Tip

Char : Karakter
Alfanumerik karakterleri icerir. Ve ya 8 bit uzunluğunda tamsayı.
signed: -128 ile 127 arasinda değer alır unsigned: 0 ile 255 arasında değer alır.
Orneğin: ' 01234567... ' ' *-+... ' 'abc....ABCD '

6) Bool tip.

true(dogru) = 1 veya false(yanlis) = 0 değerini alır. Eski derleyiciler bu turu desteklemeyebilir. Yeni ANSI C++ standardında eklenmiştir. Bu soyut matematik gorduyseniz. "p V q" ya benzer ( matematikciyiz konuşturalım azıcık). Değer aralığı ise ya 1 dir (doğru) yada 0 dır (yanlış).
7) Enum tip.

enum sıralanmış değerleri tutar. Short int ile aynı değeri taşır.
Başta Fazla Detaya inip sizi bunaltmak istemiyorum. Cunku C++ dili başlarda karmaşık gelen bir dildir. Bu da zaten kendisini yuksek seviyeli bir dil yapıyor . Ben size Bu dilin temel ozelliklerini anlatarak basit programlar yapmayı gostereceğim.
Bu temel bilgileri aldıktan sonra programlamaya gecebiliriz. Derleyici Olarak ben Turbo C++ 3.1 i tavsiye ederim. Şu an bununla başlar iseniz işiniz daha kolay olacaktır (bence). İlerde Borland a gececeğiz.
Değişken tanımlama konusunda bir konuya daha değinmek istiyorum. Değişkenlere değer atama ve aynı anda bir cok değişken tanımlamamız C++ da mumkundur.
char c = 'c';
int i = 5;
Daha sonradan değer atama:
char c;
int i;
c = 'c ';
i = 5;
Bir de aynı anda bir cok değişken tanımlayalım.
Orneğin:
int x y z;
x = y = z = 5;
xyz' nın değeri 5 oldu
Bir sonraki derste ise değişkenlerle birlikte bir de Operatorleri ele alacağız.


Operatorler I

Operator ve Operand nedir?

Bunu bir ornek uzerinde anlatmak istiyorum. Orneğin; x + y 'de x ve y operand + ise operatordur. Bu bir aritmetiksel operatordur. Matematikte işlemler operatorler ve operandlar ile anlatılır.
Operatorleri oncelikle turlerine gore ayıralım:
1) Aritmetiksel operatorler + - * / % ++ --
2) Karşılaştırma operatorleri < > = == !=
3) Eşitleme operatorleri = += -= *= /= %= >= &= != ^=
4) Mantıksal Operatorler ! || &&
5) Bit bazında işlem yapan operatorler & ! ^ ~
Aritmetiksel (Matematiksel) Operatorler:
Matematiksel ifadeleri gunluk hayattaki bicimde bilgisayarda yazamadığımız icin belli kurallara uymamız gerekir. Bu kısım onemli olduğu icin biraz geniş yer vereceğim. Kullandığımız matematiksel işlemler ve anlamları şoyledir:
[IMG]http://img232.**************/img232/404/c26qr.jpg[/IMG]

Bu operatorle verilen iki veya daha fazla operand toplanabilir. Yazılış şekli Aşağıdaki gibidir.
değişken1 + değişken2
Eğer bu iki değişkeni Sonuc gibi başka bir değişkene atarsak eşitleme operatoruyle aşağıdaki gibi yaparız.
Sonuc = değişken1 + değişken2
Buna bir ornek verelim.
// toplama.cpp
//Vize ve final notlarinindan gecme notunu hesaplama

#include
#include

main()
Burada carpma operatorunu de kullandık sanırım artık diğerlerinin de ne olduğunu kavramış oldunuz. Bir ornekte işi ucuza getirdim . Fakat bir artma ve bir azalmaya ornek verelim. Bu bana cok lazım olmuştu.
Burada dikkat etmemiz gereken olay " ++ " operatorunu değişkenin onune yazmanız gerektiğidir. Bu sayede değişken bir arttırılarak işleme konur. Arkasına konursa değişken işlenir sonra bir arttırılır. " -- " operatorunde ise aynı şekilde de bir azaltma yapılır.
// carpim.cpp
// x i bir arttırıp y yi bir azaltıp carptık.

#include

main()
İşte bir fark daha yakaladık bunu da hemen ornek uzerinde anlatalım. Sanırım buraya kadar geldiğimiz yerlerde int i carpma işlemini bir arttırıp azaltmayı gorduk ama diyeceksiniz ki " endl " ne oluyor? Hemen acıklayayım; Satır sonunu belirterek yeni satıra gecmemizi sağlar bir nevi " \n " Escape operatoru gibi bir işleve sahiptir.

---------------------Ekleme------------------------
Operatorler II


Karşılaştırma Operatorleri:
[IMG]http://img218.**************/img218/4940/c38jw.jpg[/IMG]

Bunların teker teker ne olduğunu soylemeye gerek yok. İfadeler gayet basittir. Burada dikkat etmemiz gereken onemli bir şey var: " >=