C++ proqramlaşdırma dili
hm d Sadıxov
Ə
ə
3 – cü buraxılış
10.02.2013
Önsöz
C++ proqramlaşdırma dili kitabının 3-cü buraxılışında hamınızı xoş gördük. Bu d rslik C+
ə
+ proqramlaşdırma dilini tam başlanğıcdan, heç bir proqramlaşdırma biliyi olmayan
s viyy d n orta t crüb li s viyy y q d r s rb st örg n nl r üçün n z rd tutulub. 3
ə
ə ə
ə
ə
ə
ə ə ə ə ə ə
ə ə ə
ə ə ə
-cü buraxılış vv lki buraxılışlardan m zmun, struktur v.b. m s l l r gör ciddi
ə ə
ə
ə ə ə ə ə
ə
f rql nir. Bir çox başlıqlar dem k olar ki, t mamil yenid n işl nib.
ə ə
ə
ə
ə
ə
ə
C++ dilinin örg nilm sini ç tinl şdir n n sas amil göst ricil rdir. Dig r C++
ə
ə
ə
ə
ə ə ə
ə
ə
ə
d rslikl rind v bu d rsliyin vv lki buraxılışlarında göst ricil r mövzusu d rsliyin
ə
ə
ə ə
ə
ə ə
ə
ə
ə
vv l rind daxil olunur v d rslik boyu göst ricil rin dig r proqramlaşdırma elementl ri
ə ə ə
ə
ə ə
ə
ə
ə
ə
il laq si paralel izah olunur. Bütün bu is yeni başlayanlar üçün ciddi ç tinlikl r yaradır.
ə ə
ə
ə
ə
ə
Bunları n z r alıb d rsliyin hazırkı braxlışında aşağıdakı d yişiklikl ri etdik.
ə ə ə
ə
ə
ə
Göst ricil rl bağlı bütün m s l l r d rsliyin sas bölm l rind n t mamil yığışdırıldı.
ə
ə ə
ə ə ə ə ə
ə
ə ə
ə ə
ə
Bu mövqenin yeni başlayanlar üçün ilkin proqramlaşdırma t crüb si toplamaqda
ə
ə
göst ricil rin yaratdığı mane ni aradan qaldırdığı q na tind yik.
ə
ə
ə
ə ə
ə
İlkin proqramlaşdırma t crüb si dedikd d yiş nl r, operatorlar, c rg l r, s tirl r, strukt
ə
ə
ə ə
ə ə
ə ə ə
ə ə
tipl r v sinifl r n z rd tutulur. Bütün bu anlayışlarla iş t crüb si topldıqdan sonra artıq
ə ə
ə ə ə ə
ə
ə
orta s viyy li proqramçı öz proqramlaşdırma t crüb sini PHP, JAVA v dig r bu tipli
ə
ə
ə
ə
ə
ə
göst rici t l b etm y n dill r istiqam tind inkişaf etdir bil r.
ə
ə ə
ə ə
ə
ə
ə
ə
ə
Göst ricil rl bağlı bütün m s l l r 9 – cu paraqrafda daxil edilir. Burada göst ricil r,
ə
ə ə
ə ə ə ə
ə
ə
onların dig r proqramlaşdırma elementl ri il laq si, göst ricil r üz rind hesab
ə
ə
ə ə
ə
ə
ə
ə
ə
m ll ri, göst ricil rin funksiyalarla lq si v.s. m s l l r tam traflı izah olunur. Etiraf
ə ə ə
ə
ə
ə ə
ə ə ə ə
ə
etm liy m ki, göst ricil r hal-hazırda istifad çi proqramlaşdırmasında(m lumatlar bazası,
ə ə
ə
ə
ə
ə
web v.s.) dem k olar ki istifad olunmur v göst ricil r mövzusunu örg nm k bu halda
ə
ə
ə
ə
ə
ə
ə
siz sad c proqramın yaddaşı il bağlı mü yy n q d r t crüb qazandıracaq. Lakin
ə
ə ə
ə
ə ə
ə ə ə
ə
g l c kd Unix sisteml rin keçm k ist y n proqramçılar(sistem proqramlaşdırma) üçün
ə ə ə ə
ə ə
ə
ə ə
göst ricil ri örg nm k mütl q vacibdir.
ə
ə
ə
ə
ə
Bu buraxılışda dig r bir yenilik is Buta_PM proqramlaşdırma mühitinin hazırlanması
ə
ə
oldu. C++ v dig r dill ri örg nm k ist y nl rin n başlanğıcda qarşılaşdıqları problem
ə
ə
ə
ə
ə
ə ə ə
ə
düzgün kompilyatorun seçilm si, quraşdırılması v istifad si problemidir. Bir qayda olaraq
ə
ə
ə
yeni başlayan proqramçılar bu m rh l d t crüb , dil, v.s. probleml r s b bind n hal-
ə ə ə ə ə
ə
ə ə ə
ə
hazırda geniş istifad olunan v daha çox peş kar proqramçılar üçün n z rd tutulmuş
ə
ə
ə
ə ə ə
kompilyatorların quraşdırılmasında ç tinlik ç kirl r. Bunları n z r alıb biz yeni
ə
ə
ə
ə ə ə
başlayanlar üçün Az rbaycan dilind olan, çox asanlıqla quraşdırılan v olduqca sad
ə
ə
ə
ə
istifad çi interfeysin malik Buta_PM C++ proqramlaşdırma mühitini t rtib etdik. Buta_PM
ə
ə
ə
proqramlaşdırma mühitini
asadikhov.net
s hif sind n yükl y bil rsiniz.
ə ə
ə
ə ə
ə
Mü llif hüquqları:
ə
Kitabda daxil olunan materialın v proqram nümun l rinin sizin hansısa işiniz
ə
ə ə
ə
yarayacağına mü llif t r find n heç bir t minat verilmir. Bu proqramlardan istifad
ə
ə ə
ə
ə
ə
n tic sind yaranan ist nil n ziyana gör m suliyy ti oxucu özü daşıyır, mü llif heç bir
ə ə
ə
ə ə
ə ə
ə
ə
m suliyy t daşımır.
ə
ə
Siz bu kitabda daxil olunan material, proqram nümun l ri v ş kill ri çap etm k, başqa
ə ə
ə ə ə
ə
ş xs ötürm k, öz saytınızda yerl şdirm k kimi hüquqlara sahibsiniz.
ə ə
ə
ə
ə
Kitabda veril n m lumatlardan istifad üçün mü llif istinad verm k z ruri deyil.
ə
ə
ə
ə ə
ə
ə
g r sizin C++ proqralaşdırma t crüb niz varsa v kitabın g l c k versiyalarının
Ə ə
ə
ə
ə
ə ə ə
hazırlanmasında köm klik göst rm k ist yirsinizs mü llifl aşağıdakı ünvandan laq
ə
ə ə
ə
ə
ə ə
ə
ə
saxlaya bil rsiniz.
ə
ahmed.sadikhov@gmail.com
Münd ricat
ə
1 Giriş….............................................................................. 5
2 D yiş nl r….................................................................... 17
ə
ə ə
3 Operatorlar….................................................................... 28
4 Funksiyalar….................................................................... 39
5 C rg l r…......................................................................... 45
ə ə ə
6 S tirl r…........................................................................... 49
ə ə
7 Strukt tipl r….................................................................... 53
ə
8 Sinifl r…........................................................................... 55
ə
9 Göst ricil r........................................................................63
ə
ə
10 Makroslar v başlıq fayllar …......................................... 72
ə
lav l r…............................................................................ 74
Ə
ə ə
$1 Giriş.
Bu m tnd C++ dilind proqram t rtibind n b hs olunur. Bu m tnd n istifad ed bilm k
ə
ə
ə
ə
ə
ə
ə
ə
ə
ə
ə
üçün ilkin olaraq heç bir proqramlaşdırma dilini bilm k t l b olunmur.
ə ə ə
H r bir paraqrafın sonunda verilmiş çalışmalar mütl q yerin yetirilm lidir. Bu siz
ə
ə
ə
ə
ə
materialı daha da aydın başa düşm y köm k etm kl yanaşı, sizd g l c k inkişaf
ə ə
ə
ə ə
ə ə ə ə
üçün v zedilm z olan proqramlaşdırma t crüb si yaradacaq v artıracaq.
ə ə
ə
ə
ə
ə
Yadda saxlayın ki, proqramlaşdırmanı örg nm nin yegan yolu ancaq v ancaq s rb st
ə
ə
ə
ə
ə ə
proqram yazmaqdır.
Ç tinliyi artırılmış m s l l r * simvolu il qeyd edilir.
ə
ə ə ə ə
ə
G l c kd Unix sistem proqramlaşdırmanı örg nm k ist y nl r $9 – Göst ricil r
ə ə ə ə
ə
ə
ə ə ə
ə
ə
bölm sin xüsusi il diqq t yetirm lidirl r.
ə
ə
ə
ə
ə
ə
1.1 Ümumi m nz r y baxış.
ə ə ə ə
C++ dilinin öyr nilm sin keçm d n önc vv lc ist rdim ki, kompüter ,proqram,
ə
ə
ə
ə ə
ə ə ə ə
ə
proqramlaşdırma dili kimi m s l l r bir balaca aydınlıq g tir k. Bugünkü günümüzd
ə ə ə ə ə
ə ə
ə
kompüterl rin h yatımıza inteqrasiyasının getdikc daha da gücl ndiyini hiss edirik.
ə
ə
ə
ə
Kompüterl r dem k olar ki, bizi h r t r fd n hat edir.
ə
ə
ə ə ə ə ə
ə
Kompüterl r sas n idar etm işl rind istifad olunur. Son d r c d qiq, s hvsiz v
ə ə
ə
ə
ə
ə
ə
ə
ə ə ə ə
ə
ə
h dd n artıq sür tli olmaları onların bütün keçmiş r qibl rini durmadan sıxışdırmaqdadır.
ə ə
ə
ə
ə
n maraqlı m qam is bu q d r müxt lif işl ri gör n kompüterin sas istifad
Ə
ə
ə
ə ə
ə
ə
ə
ə
ə
predmetinin m lumat olmasıdır. Kompüterin h r-hansı bir işi görm si üçün ona lazım olan
ə
ə
ə
n sas şey m lumatdır.
ə ə
ə
M lumatsız kompüter heç-bir işi yerin yetir bilm z. Kompüter bütün işl rini m lumat
ə
ə
ə
ə
ə
ə
vast sil h yata keçirir. Bundan lav günümüzd biz xidm t ed n kompüterl r
ə ə ə
ə
ə
ə
ə
ə
ə
ə
t kbaşına deyil, ş b k halında f aliyy t göst rirl r. V bel halda m lumat n inki h r-
ə
ə ə ə
ə
ə
ə ə
ə
ə
ə
ə
ə
hansı kompüterin bu v ya dig r işi yerin yetirm sini h md , kompüterl rin ş b k
ə
ə
ə
ə
ə
ə
ə
ə ə ə
vast sil laq qurmasını t min edir.
ə ə ə
ə
ə
Kompüterin m lumat üz rind gördüyü işl rin son n tic sinin kifay t q d r r ngar ng bir
ə
ə
ə
ə
ə ə
ə ə ə ə
ə
spektr hat etm sin baxmayaraq , ümumi halda kompüter m lumat üz rind aşağıdakı
ə
ə
ə
ə
ə
ə
ə
işl ri h yata keçirir, bunu h r bir proqramçı zb r bilm lidir:
ə
ə
ə
ə ə
ə
1) Kompüter m lumatı q bul edir. Kompüter m lumatı istifad çid n, h r-hansı qurğudan
ə
ə
ə
ə
ə
ə
v ya ş b k d ki dig r kompüterd n q bul ed bil r.
ə
ə ə ə ə
ə
ə
ə
ə
ə
2) Kompüter m lumatı emal edir. Kompüter m lumat üz rind müxt lif çevrilm , axtarış
ə
ə
ə
ə
ə
ə
v.s. m liyyatları apara bil r.
ə ə
ə
3) Kompüter m lumatı ötürür. Kompüter m lumatı istifad çiy , h r-hansı qurğuya v ya
ə
ə
ə
ə ə
ə
ş b k vast sil başqa bir kompüter ötür bil r.
ə ə ə
ə ə
ə
ə
ə
4) Kompüter m lumatı yadda saxlayır.
ə
Bütün bu deyil nl rd n is m ntiqi olaraq aşağıdakı sual yaranır: B s kompüter h r-
ə ə ə
ə ə
ə
ə
hansısa bir m lumat üz rind , konkret hansı m liyyatın aparılmalı oluğunu nec
ə
ə
ə
ə ə
ə
mü yy n edir?
ə ə
lb td ki, heç bir kompüter, heç-bir m lumat üz rind nec g ldi, hansısa m liyyat
Ə ə ə
ə
ə
ə
ə ə
ə ə
apara bilm z. Bütün bunlar vv lc d n d qiq ölçülüb-biçilmiş, düşünülmüş, d f l rl test
ə
ə ə ə ə
ə
ə ə ə ə
edilmiş instruksiyalar ardıcıllığı vast sil h yata keçirilir.
ə ə ə
Bu instruksiyalar ardıcıllığı adlanır PROQRAM v ya PROQRAM T MİNATI.
ə
Ə
Kompüterin h r-hansı bir işin görülm si üçün t l b olunan instruksiyalar ardıcıllığını t rtib
ə
ə
ə ə
ə
etm k is adlanır proqramlaşdırma.
ə
ə
Biz dedik ki, kompüterin h r-hansı işi görm si üçün t l b olunan n sas şey m lumatdır.
ə
ə
ə ə
ə ə
ə
Proqram t minatı da istisna deyil. Y ni proqram t minatı da, başqa sözl kompüterin
ə
ə
ə
ə
m lumat üz rind icra etdiyi instruksiyalar ardıcıllığı da öz növb sind kompüter üçün bir
ə
ə
ə
ə
ə
m lumatdır, kompüter hansı işl ri görm li olduğunu bildirir. Bu nöqteyi n z rd n biz
ə
ə
ə
ə
ə ə ə
m lumatları iki tip ayıra bil rik : kompüter instruksiyaları v istifad çi m lumatları.
ə
ə
ə
ə
ə
ə
1.2 M lumatın ifad olunma formaları
ə
ə
Tipind n, növünd n, t yinatından asılı olmayaraq kompüter bütün m lumatları yalnız bir
ə
ə
ə
ə
gözl görür - 0 v 1 -l r ardıcıllığı ş klind . Misal üçün 011010101011 kimi verilmiş
ə
ə
ə
ə
ə
m lumat kompüter üçün h r-hansı d d, h rif, toplama m liyyatı, h r-hansı ş klin
ə
ə
ə ə
ə
ə ə
ə
ə
hansısa bir nöqt sinin r ngi v.s. ola bil r. Başqa sözl h m kompüter proqramları, h m
ə
ə
ə
ə ə
ə
d istifad çi m lumatları kompüterin yaddaşında 0 v 1 -l r ardıcıllığı ş klind verilir.
ə
ə
ə
ə
ə
ə
ə
Müasir kompüterd iki d din c mini hesablayan proqramın bir hiss sin n z r salaq:
ə
ə ə
ə
ə
ə ə ə
01110100 11001110 10011110 10110110
00101110 10000110 01000110 00000000
01110100 11001110 00101110 01001110
00101110 10000110 01000110 00000000
01110100 11001110 00010110 11001110
00101110 01001110 00101110 10000110
01000110 00000000 01110100 00101110
10100110 00011110 00101110 00000000
01110100 00100110 10000110 00101110
Bu 0 v 1 -l r kompüter prosessoru instruksiyalarının ikili ifad sidir. İlkin vaxtlarda
ə
ə
ə
kompüter proqramları bu qayda il t rtib olunurdu. Bu zaman proqramçı kompüterin
ə ə
m rk zi prosessorunun bütün instruksiyalarının ikili ifad sini zb rd n bilm li idi.
ə ə
ə
ə ə ə
ə
lb ttd görüntüd n d aydın olduğu kimi bu iş olduqca mür kk b bir prosesdir. S hv
Ə ə ə
ə
ə
ə ə
ə
etm ehtimalı h dd n artıq çox olması, proqramın gördüyü işi anlamağın ç tinliyi v.s.
ə
ə ə
ə
proqramçıları daha asan v t kmil yollar axarmağa vadar edir. N tic d proqramçılar
ə ə
ə ə ə
kompüter instruksiyalarının ikili formalarının özl rinin nisb t n asan başa düşdükl ri
ə
ə ə
ə
formasından istifad etm y başlayırlar. H min forma adlanır assembler.
ə
ə ə
ə
Misal üçün yuxarıdakı proqramın assembler kodunun bir hiss si aşağıdakı kimi olar:
ə
movl x, %eax
movl y, %ebx
addl %eax, %ebx
movl %ebx, z
Bu forma proqramçılar üçün ikili formaya nisb t n daha anlaşılan variantdır. Bu zaman
ə ə
proqramlar assembler dilind yazılır v daha sonra xüsusi assemblyasiya proqramları
ə
ə
vast sil proqram assembler variantından ikili formaya çevrilir. Proqramın icraolunması
ə ə
üçün onun ikili formaya çevrilm si mütl qdir, çünki yalnız ikili formada prosessor onu
ə
ə
başa düş bil r, assembler forması yalnız proqramçıların özl ri üçündür.
ə
ə
ə
Bir müdd t sonra is artıq assembler dili d proqramçılar üçün ç tin g lm y başladı v
ə
ə
ə
ə
ə ə ə
ə
proqramçılar 3-cü n sil dil adlandırılan proqramlaşdırma dill rini işl yib hazırladılar.
ə
ə
ə
Bunlara misal olaraq Paskal, C, C++ v.s. proqramlaşdırma dill rini göst r bil rik. C
ə
ə ə
ə
dilind iki d din c mi proqramı aşağıdakı kimi olar:
ə
ə ə
ə
int
main(){
int
x,y,z;
x=
10
;
y=
15
;
z=x+y;
}
Göründüyü kimi bu daha başadüşül n formadır. Proqramların m tni bu cür dill rd
ə
ə
ə ə
yığıldıqdan sonra kompilyator adlandırılan xüsusi proqramlar vast sil vv lc müvafiq
ə ə ə ə ə
assembler formasına, daha sonra is ikili formaya çevrilirl r. Bir daha qeyd edim ki, hansı
ə
ə
dild t rtib olunmasından asılı olmayaraq proqramın kompüter t r find n icra edil
ə ə
ə ə
ə
ə
bilm si üçün onun ikili formaya çevrilm si mütl qdir.
ə
ə
ə
Ümumi olaraq proqramın kompüter t r find n icra olunan formasına ikili kod,
ə ə
ə
icraolunabil n kod v ya obyekt kod deyirl r. Proqramçılar t r find n t rtib v istifad
ə
ə
ə
ə ə
ə ə
ə
ə
olunan yüks k s viyy li dild olan formasına is proqramın m nb kodu deyirl r. Biz bu
ə
ə
ə
ə
ə
ə ə
ə
kitabda yüks k s viyy li dill rd n biri olan v 3-cü n sil proqramlaşdırma dill ri arasında
ə
ə
ə
ə ə
ə
ə
ə
reytinqi daima yüks kd olan C++ dili il tanış olacayıq.
ə ə
ə
1.3 C++ dili il ilk tanışlıq.
ə
G lin C++ dilind ilk sad proqram nümun si il tanış olaq:
ə
ə
ə
ə
ə
int
main ()
{
}
Gördüyünüz bu 3 s tird n ibar t sad kod bitkin bir kompüter proqram kodudur. Bu
ə
ə
ə
ə
proqram icra olunduqda heç bir iş görmur, sad c proqram icraya başlayır v d rhal başa
ə ə
ə ə
çatır.
İndi is ikinci proqram nümun si il tanış olaq. El proqram t rtib ed k ki, icra olunduqda
ə
ə
ə
ə
ə
ə
n s bir iş görsün, misal üçün ekranda “Salam Dunya” s trini çap etsin:
ə ə
ə
#include
int
main ()
{
std::cout<<
"Salam dunya
\n
"
;
}
1.3.1 C++ proqramlarının strukturu
C++ dilind t rtib olunmuş proqramlar müxt lif funksiyalardan, qarışıq kodlardan, müxt lif
ə ə
ə
ə
m nb fayllarında yerl ş n kodlardan, h tta ayrı kompilyasiya olunmuş ikili fayllarda
ə ə
ə ə
ə
yerl ş n funksiyalardan ibar t olur. Bütün bunlarla biz g l c kd m şğul olacayıq.
ə ə
ə
ə ə ə ə ə
H l lik is (funksiyaları örg n n kimi) bizim baxacağımız proqramların hamısı aşağıdakı
ə ə
ə
ə ə ə
strukturdan ibar t olacaq:
ə
1) #include
2) int
main(){
3) PROQRAM KODU HİSSƏSİ:
4) }
1) #include
s tri daxiletm direktividir(direktivl ri (10 Makroslar )bölm sind
ə
ə
ə
ə
ə
örg n c yik). Onun vast sil proqrama iostream faylı lav olunur harada ki, yalnız b zi
ə ə ə
ə ə
ə
ə
ə
standart funksiyaların elanı yerl şir. Burada icra olunan heç bir kod yerl şdirilm diyind n
ə
ə
ə
ə
h l lik bizim üçün maraqlı deyil.
ə ə
2) int main (){
s tri proqramın icraya başalama yeridir. C++ dilind t rtib olunmuş bütün
ə
ə ə
proqramlar bu yerd n icra olunmağa başlayır.
ə
3)
Proqram Kodu Hiss sind biz operatorların v d yiş nl rin köm yi il proqramın
ə
ə
ə ə
ə ə
ə
ə
görm li olduğu işi kodlaşdırırıq. Bura ist diyimiz q d r proqram kodu yerl şdir bil rik v
ə
ə
ə ə
ə
ə
ə
ə
h min kod vv ld n sona doğru icra olunacaq.
ə
ə ə ə
4) }
möt riz si proqram kodu hiss sinin sonunu bildirir.
ə ə
ə
1.3.2 C++ proqramlarının icrası
Bizim C++ dilind t rtib etdiyimiz kod, misal üçün
ə ə
#include
int
main (){
std::cout<<
"Salam dunya
\n
"
;
}
kodu proqramın m nb kodu adlanır. Bu m nb kodu C++ dilinin sintaksis t l bl rin
ə ə
ə ə
ə ə ə ə
uyğun yazılmış adi m tndir v o icra oluna bilm z. Lakin xüsisu sistem proqramlar
ə
ə
ə
vast sil biz bu m tnd n icra oluna bil n proqram kodu alırıq. H min xüsusi sistem
ə ə
ə
ə
ə
ə
proqramlar adlanır kompilyator. Proqramın m nb kodundan icraolunabil n proqram
ə ə
ə
kodunun alınması prosesin is deyirl r kompilyasiya v ya proqramın kompilyasiyası.
ə ə
ə
ə
Dem li biz C++ dilind t rtib etdiyimiz proqram kodunu icra etm k üçün vv lc onu
ə
ə ə
ə
ə ə ə
kompilyator vast sil kompilyasiya edib ondan icraolunabil n proqram kodu almalıyıq.
ə ə
ə
Daha sonra artıq icraoluna bil n proqram kodunu adi proqramları icra etdiyimiz kimi icra
ə
ed bil rik (üstünd 2 d f klik etm kl v ya proqramın adını terminaldan daxil
ə
ə
ə
ə ə
ə ə ə
etm kl ).
ə ə
Dostları ilə paylaş: |