C++ Hakkında Bilgiler
Amaç ve Hedef
Bu yazı dizisi size C++ ile program yazmayı göstermek amacındadır. Ama yazı asla ve asla size bunu tam olarak gösterebileceğini garanti etmez. Öncelikle bunu iyice anlamalısınız. Buradaki bilgiler tecrube ile elde edilmiş ve kitap okumak ile elde edilmiş, harmanlanmış bilgilerdir. Bir kaynak ele alınmamıştır ve bu nedenle bilginin doğruluğundan söz edilemeyebilinir, sadece internette binlerce kaynakta bulunan C++ programlarından inceleme ve makale okumak ile elde edilmiş bu bilgiler size ilerki çalışmanıza ışık tutmak içindir. Bu kaynağı okuduktan sonra diğer konulara geçmenizin kolay olmasını ve diğer kaynak kodları okumanızın kolay olacağını umuyorum.
Bu klavuzu veya her ne diyorsanız onu okumak için öncelikle C dilini bilmek gerekecektir. Bu kaynakta sadece C ile C++ kıyaslanmış ve C++ dilinin artıları anlatılmıştır. C++ ile hangi sistemleri nasıl programlanacağı anlatılmamıştır. C++ dili ile yazacağınız programlar ile gerek UNIX türevi (Linux-FreeBSD,BSD) gerekse diğer işletim sistemlerini (MacOs, Windows) programlayabilirsiniz. Biz burada sadece C++ anlatıyoruz. Bu sistemlerde program yazmayı kendiniz başka kaynaklardan öğrenmelisiniz. Ayrıca bu kaynak asla Ekran manupule eden kütüphanelerden bahsetmez. Amacınız Linux sistemlerde bu tür programlar yazmaksa Linux ile ilgili program yazma kitapcıklarına (Bir tanesi Okan Akyüz tarafından yazılmaktadır. Bu klavuzun ana dağıtım web sayfasında blabilirsiniz.) ve QT veya GTK gibi pencere yönetim kütüphanelerinin dosyalarına bakmalısınız. Yazar size bu konuda QT ortamını tavsiye etmektedir.
Bilmeniz Gerekenler
Kesinlikle C dilini bilmeniz gerekmektedir. Bunun haricinde hangi derleyici ve editörü kullanıyorsanız onu da kullanmayı öğrenmelisiniz. Linux altında g++ kullanabilirsiniz. Derlemenizi.
1
g++ programim -o executeprogram
konutu ile halledebilirsiniz. Daha ayrıntılı bilgi için GCC klauzuna başvurabilirsiniz. Yazacağımız programlar şimdilik konsol programlarıdır. Programlarınızı kwrite programında yazabilirsiniz. Bu program hoş gruplama anahtarları oluşturmaktadır. Aynı işi KDevelop adlı programlada gerçekleştirebilirsiniz. Yanlız KDevelop klasik başlık sitilini kullanıyor olabilir. (Şu anki yani 2.1.5 sürümü için de dahil ilk projelerde <iostream.h>gibi başlık adları kullanıyor.) Bu durumda başlıkları burda verdiğimiz gibi yazabilirsiniz. Hiç bir problem yaşamayacaksınız.
C++ Nedir?
OOP (Object Orianted Programing = Nesne tabanlı Programlama) Kullanılan C dilinin gelişmiş bir sürümüdür denebilir. C Dilinin nesnel olanına Object C denmesine karşın C++ bundan çok daha fazlasını bizlere sunmaktadır. Başlangıçta C için yazılmış bir genişleme olan C++ özellikleri 80 li yıllarda kendini yeni bir dil olarak kabul ettirmiştir. C++ 80′li ve 90′lı yıllarda standartlara kavuşmuştur ve taşınabilir derleyici desteği ile her platformda derlenebilen tek nesne tabanlı dil olmuştur (Java dili yarım derlemelidir). Bunun haricinde C dilina ufak farklılıklarla tam destek sunar. Yani C programları C++ derleyicileri ile de derlenebilir.
C++ standartları bazen değişiklikler gösterir veya bazı hataları berteraf etmek için derleyicilerden derleyicilere farklılıklar gösterir ama ISO/ANSI standartlarına tüm C++ derleyicilerince uyulur.
C++ temelde bize şu yenilikleri getirmektedir:
Sınıf kavramı;
Genişletilmiş fonksiyonlar yaratabilme ortamı;
Dinamik belleği hazır kullanma;
Operatorleri yeniden yapılandırma;
Template Fonksiyonlar;
Hata denetimli yazılımı kolaylaştıran araçlar;
Tüm bunlar ışığında çok yapılı programlar;
C++ dili bir gurup yeni yapıları programlama dilinin içinde bulundurur. Bunların bir kısmını bu dökümanda yeri geldikçe göreceksiniz. Bir kısmı istenmeden atlanmış olabilir veya yazar da bunun nasıl olduğunu bilmediğinden değinmemiş olabilir.
C++ Programlamaya Kısa Giriş
C++ dilindeki başlık yapısına ve streaming kavramına kısa bir giriş yaparak bir sonraki programların anlaşılabilirliğini arttıralım;
Başlık dosyaları
C++ başlıkları tanımlanırken (streaming ve standart template library dosyaları).h ile dosya uzantısını vermenize gerek yoktur. Normal include komutunu kullanabilirsiniz.
1
2
# include iostream
using namespace std;
Burdaki namespace komutunu şimdilik böyle kabul edin. Namespace komutunu daha sonra açıklayacağım.
Klasik C başlıklarını da ekleyebilirsiniz. Bunun için başına c harfini koymanız yeterli;
1
# include cmath;
Programınızda klasik şekilde de başlık dosyası ekleyebilirsiniz.
1
#include "myprog/asd.h"
Streaming
C++ da pek çok başlık streaming diye bir olay kullanmaktadır. Örneğin iostream başlık dosyası bize ekrana erişim imkanı getirmektedir. Bu durumda iostream namespace satırıyla eklendikten sonra;
cin -giriş için
cout çıkış için
cerr - çıkış için
adlı objelere stream denen olay ile erişebilinir. Bu çok basittir. << çıkış içinve >> giriş için kullanarak veri okunur örneğin;
1
2
3
4
5
6
7
8
9
# include iostream
using namespace std;
int main(){
int x;
cout << "x için değer girin\n";
cin >> x;
cout >> x >> "\n";
}
görüldüğü gibi iostream kullanarak işimiz çok kolaylaşmış oldu. Aynı zamanda <stdio.h> fonksiyonlarından daha kolayca veri girişini x için sağladık.
Amaç ve Hedef
Bu yazı dizisi size C++ ile program yazmayı göstermek amacındadır. Ama yazı asla ve asla size bunu tam olarak gösterebileceğini garanti etmez. Öncelikle bunu iyice anlamalısınız. Buradaki bilgiler tecrube ile elde edilmiş ve kitap okumak ile elde edilmiş, harmanlanmış bilgilerdir. Bir kaynak ele alınmamıştır ve bu nedenle bilginin doğruluğundan söz edilemeyebilinir, sadece internette binlerce kaynakta bulunan C++ programlarından inceleme ve makale okumak ile elde edilmiş bu bilgiler size ilerki çalışmanıza ışık tutmak içindir. Bu kaynağı okuduktan sonra diğer konulara geçmenizin kolay olmasını ve diğer kaynak kodları okumanızın kolay olacağını umuyorum.
Bu klavuzu veya her ne diyorsanız onu okumak için öncelikle C dilini bilmek gerekecektir. Bu kaynakta sadece C ile C++ kıyaslanmış ve C++ dilinin artıları anlatılmıştır. C++ ile hangi sistemleri nasıl programlanacağı anlatılmamıştır. C++ dili ile yazacağınız programlar ile gerek UNIX türevi (Linux-FreeBSD,BSD) gerekse diğer işletim sistemlerini (MacOs, Windows) programlayabilirsiniz. Biz burada sadece C++ anlatıyoruz. Bu sistemlerde program yazmayı kendiniz başka kaynaklardan öğrenmelisiniz. Ayrıca bu kaynak asla Ekran manupule eden kütüphanelerden bahsetmez. Amacınız Linux sistemlerde bu tür programlar yazmaksa Linux ile ilgili program yazma kitapcıklarına (Bir tanesi Okan Akyüz tarafından yazılmaktadır. Bu klavuzun ana dağıtım web sayfasında blabilirsiniz.) ve QT veya GTK gibi pencere yönetim kütüphanelerinin dosyalarına bakmalısınız. Yazar size bu konuda QT ortamını tavsiye etmektedir.
Bilmeniz Gerekenler
Kesinlikle C dilini bilmeniz gerekmektedir. Bunun haricinde hangi derleyici ve editörü kullanıyorsanız onu da kullanmayı öğrenmelisiniz. Linux altında g++ kullanabilirsiniz. Derlemenizi.
1
g++ programim -o executeprogram
konutu ile halledebilirsiniz. Daha ayrıntılı bilgi için GCC klauzuna başvurabilirsiniz. Yazacağımız programlar şimdilik konsol programlarıdır. Programlarınızı kwrite programında yazabilirsiniz. Bu program hoş gruplama anahtarları oluşturmaktadır. Aynı işi KDevelop adlı programlada gerçekleştirebilirsiniz. Yanlız KDevelop klasik başlık sitilini kullanıyor olabilir. (Şu anki yani 2.1.5 sürümü için de dahil ilk projelerde <iostream.h>gibi başlık adları kullanıyor.) Bu durumda başlıkları burda verdiğimiz gibi yazabilirsiniz. Hiç bir problem yaşamayacaksınız.
C++ Nedir?
OOP (Object Orianted Programing = Nesne tabanlı Programlama) Kullanılan C dilinin gelişmiş bir sürümüdür denebilir. C Dilinin nesnel olanına Object C denmesine karşın C++ bundan çok daha fazlasını bizlere sunmaktadır. Başlangıçta C için yazılmış bir genişleme olan C++ özellikleri 80 li yıllarda kendini yeni bir dil olarak kabul ettirmiştir. C++ 80′li ve 90′lı yıllarda standartlara kavuşmuştur ve taşınabilir derleyici desteği ile her platformda derlenebilen tek nesne tabanlı dil olmuştur (Java dili yarım derlemelidir). Bunun haricinde C dilina ufak farklılıklarla tam destek sunar. Yani C programları C++ derleyicileri ile de derlenebilir.
C++ standartları bazen değişiklikler gösterir veya bazı hataları berteraf etmek için derleyicilerden derleyicilere farklılıklar gösterir ama ISO/ANSI standartlarına tüm C++ derleyicilerince uyulur.
C++ temelde bize şu yenilikleri getirmektedir:
Sınıf kavramı;
Genişletilmiş fonksiyonlar yaratabilme ortamı;
Dinamik belleği hazır kullanma;
Operatorleri yeniden yapılandırma;
Template Fonksiyonlar;
Hata denetimli yazılımı kolaylaştıran araçlar;
Tüm bunlar ışığında çok yapılı programlar;
C++ dili bir gurup yeni yapıları programlama dilinin içinde bulundurur. Bunların bir kısmını bu dökümanda yeri geldikçe göreceksiniz. Bir kısmı istenmeden atlanmış olabilir veya yazar da bunun nasıl olduğunu bilmediğinden değinmemiş olabilir.
C++ Programlamaya Kısa Giriş
C++ dilindeki başlık yapısına ve streaming kavramına kısa bir giriş yaparak bir sonraki programların anlaşılabilirliğini arttıralım;
Başlık dosyaları
C++ başlıkları tanımlanırken (streaming ve standart template library dosyaları).h ile dosya uzantısını vermenize gerek yoktur. Normal include komutunu kullanabilirsiniz.
1
2
# include iostream
using namespace std;
Burdaki namespace komutunu şimdilik böyle kabul edin. Namespace komutunu daha sonra açıklayacağım.
Klasik C başlıklarını da ekleyebilirsiniz. Bunun için başına c harfini koymanız yeterli;
1
# include cmath;
Programınızda klasik şekilde de başlık dosyası ekleyebilirsiniz.
1
#include "myprog/asd.h"
Streaming
C++ da pek çok başlık streaming diye bir olay kullanmaktadır. Örneğin iostream başlık dosyası bize ekrana erişim imkanı getirmektedir. Bu durumda iostream namespace satırıyla eklendikten sonra;
cin -giriş için
cout çıkış için
cerr - çıkış için
adlı objelere stream denen olay ile erişebilinir. Bu çok basittir. << çıkış içinve >> giriş için kullanarak veri okunur örneğin;
1
2
3
4
5
6
7
8
9
# include iostream
using namespace std;
int main(){
int x;
cout << "x için değer girin\n";
cin >> x;
cout >> x >> "\n";
}
görüldüğü gibi iostream kullanarak işimiz çok kolaylaşmış oldu. Aynı zamanda <stdio.h> fonksiyonlarından daha kolayca veri girişini x için sağladık.
Son düzenleme:

