Şərt operatorunun sintaksisi aşağıdakı kimidir:
if (şərt)
{ yerinə yetirilməli əməliyatlar }
else
{ digər əməliyatlar }
Qeyd edək ki, əgər cəmi bir əməliyyat yerinə yetirilirsə onda { } mötərizələrinə ehtiyac
yoxdur.
Izahı:
Əvvəlcə şərt yoxlanılır , əgər doğrudursa onda { } arasında olan əməliyatlar yerinə yetirilir əks halda else – dən sonrakı { } mötərizələri arasında olan əməliyatlar yerinə yetirilir.
Digər misal:
int x;
if (x<5)
std::cout<
else
std::cout<
Əgər verilmiş kod hissəsinin icra olunması üçün bir deyil bir neçə şərt ödənməlidirsə onda biz bu şərtlərin hamısını və (&&) operatoru ilə birləşdirə bilərik.
Aşağıdakı kimi:
if ((şərt1) && (şərt2) && (şərt3))
{
emel1;
emel2;
...
}
Əgər yuxarıdakı kod hissəsinin icra olunması üçün şərt1, şərt2, şərt3 -dən heç olmasa birinin ödənməsi kifayətdirsə onda biz bu şərtlərin hamısını və ya (||) operatoru ilə birləşdirə bilərik.
Aşağıdakı kimi:
if ((ş ərt1) || (şərt2) || (şərt3))
{
emel1;
emel2;
...
}
Qeyd edək ki, if operatorunun { } mötərəzələri arasında olan kod hissəsi ancaq və ancaq şərt ödəndiyi halda icra olunur. Lakin bir çox hallarda bizə lazım olur ki, bu şərtin əksi olan halda da hansısa əməliyyatları icra edək. Bu zaman biz else -dən istifadə edirik. else -dən proqramda sərbəst şəkildə istifadə edə bilmərik, else mütləq if -ə bitişik olmalıdır.
Şərt operatoruna aid proqram nümunələri:
//prg_3_1.cpp
#include
int main(){
int x;
std::cout<<"zehmet olmasa x-in qiymetini daxil edin\n";
std::cin>>x;
if (x<5)
std::cout<
else
std::cout<
return 0;
}
Proqramı kompilyasiya edək və hər dəfə müxtəlif qiymətlər daxil etməklə bir neçə dəfə
yerinə yetirək.
C:\cpp\prog2\Debug>prog2.exe
zehmet olmasa x-in qiymetini daxil edin
66
5 -den boyukdur
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>prog2.exe
zehmet olmasa x-in qiymetini daxil edin
44
5 -den kichikdir
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>
Müqaisə əməlləri
C++ dilində iki ifadənin qiymətini müqaisə etmək üçün aşağıdakı müqaisə əməllərdən
istifadə olunur:
== bərabərdir
!= fərqlidir
> böyükdür
< kiçikdir
<= kiçikdir bərabərdir
>= böyükdür bərabərdir
Misal üçün əgər mən x və y dəyişənlərinin qiymətlərinin bərabər olduğunu yoxlamaq
istəsəm onda aşağıdakı şərtdən istifadə edərəm:
if (x==y) {…}
3.2.dövr operatorları
for, while, do while
Dövr operatorları müəyən əməliyyatların bir neçə dəfə təkrar yerinə yetirilməsinə imkan
verir. Bu operatorlardan proqramlaşdırmada çox geniş istifadə olunur.
for operatoru
for operatorunun sintakisisi aşagıdakı kimidir:
for (sayğacın ilkin qiyməti; dövrün başa çatma şərti; sayğacın dəyişmə qaydası)
{ əməliyyatlar;}
Nümunə proqram:
10 dəfə salam dünya kəlməsini çap edən proqram qurun.
//prg_3_2.cpp
#include
int main(int argc, char *argv[]){
int k;
for (k=0; k<10; k=k+1)
{ std::cout<<"salam dünya\n";
}
return 0;
}
programı kompilyasiya edib yerinə yetirək.
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>prog2.exe
salam dunya
salam dunya
salam dunya
salam dunya
salam dunya
salam dunya
salam dunya
salam dunya
salam dunya
salam dunya
C:\cpp\prog2\Debug>
+Tapşırıq:
Yuxarıdakı proqramda for (k=0; k<10; k=k+1) şərtini 1.for (k=5; k<10; k=k+1) 2.,for (k=0; k<3; k=k+1),3.for (k=0; k<10; k=k+7), 4.for (k=0; k<10; k=2) sətirləri ilə əvəz edib proqramı icra edin. Hər dəfə müxtəlif nəticələr alacağıq. Sonuncu halda isə ekranda Salam dunya ifadəsi sonsuz çap olunacaq(proqramın icrasını dayandırmaq üçün CTRL + Z düyməsini daxil edin).
Birinci halı təhlil edək.
1.for (k=0; k<10; k=k+1)
Sayğac olaraq k dəyişənindən istifadə olunur və ona başlanğıc qiymət olaraq 0 mənimsədilir: ( k=0;).
Dövrün sona çatması şərti kimi k<10; göstərilib. Bu o deməkdir ki, nə qədər ki, k < 10 şərti
ödənir dövrdə verilmiş əməliyyatlar təkrar icra olunacaq. Sayğacın qiymətinin dəyişmə
qaydası kimi k=k+1 (! Sonda ; simvolunun yoxluğuna diqqət yetirin) göstərilib, yəni dövr hər dəfə təkrar olunduqda sayğacın qiyməti 1 vahid artır.
Proses aşağıdakı şəkildə baş verir: Əvvəlcə k dəyişəni 0 qiyməti alır. Sonra dərhal k<10 şərti yoxlanılır. Şərt ödənir, belə ki, 0 < 10 ifadəsi doğrudur və avtomatik olaraq dövr opratorunun əməliyatları icra olunur(ekranda “salam dunya” sətri çap olunur). Daha sonra növbə sayğacın qiymətinin dəyişməsinə gəlir. Bunun üçün biz for -da k = k + 1; yazmışıq. Bu əməliyyat k –nın əvvəlki qiyməti nə idisə onu 1 vahid artırır. Baxdığımız hal üçün ( k -nın qiyməti 0 olan hal ) k-nın yeni qiyməti 1 olur. Şərt yoxlanılır. Bu proses k <10 qiyməti alana kimi davam edir. Bu zaman k < 10 şərti ödənmir və for operatoru sona çatır.
3.3 while operatoru
for operatorunda biz sayğac təyin etdik, dövrün başa çatması şərtini və sayğacın dəyişmə qaydasını verdik. Bəzən isə elə olur ki, dövrün başa çatması şərtinin nə vaxt ödənəcəyi əvvəlcədən bilinmir. Bu zaman while operatorundan istifadə olunur.
while operatorunun sintaksisi aşağıdakı kimidr.
while(şərt){
əməliyatlar; }
Nümunə:
char x;
x='b';
while (x!='a'){
std::cout<<"Salam dunya\n";
std::cout<<" yeni simvol daxil edin\n";
std::cin>>x;
}
Bu kod icra olunduqda ekranda Salam dünya sətri çap olunacaq və proqram isitfadəçinin hər hansı simvol daxil etməsini gözləyəcək. Əgər bu simvol 'a' -dırsa dövr sona çatacaq əks halda dövr təkrar olunacaq .
+Tapşırıq :
Bu kodu yoxlamaq üçün proqram tərtib edib, icra edin.
while dövr operatorunun digər forması do while operatorudur. do while operatorunun
sintaksisi belədir:
do{
əməliyyatlar;
} while(şərt);
Bu operatorun while opratorundan yeganə fərqi odur ki, bu halda şərtin nə zaman
ödənməsindən asılı olmayaraq əməliyyatlar ən azı 1 dəfə yerinə yetiriləcək.
3.3 switch operatoru
Əgər müəyyən halda proqramın icra istiqaməti bir neçə şərtdən asılıdırsa bu zaman if
opratoru ilə bu şərtlərin mürəkkəb konfiqurasiyasından istifadə etmək əvəzinə switch
operatorundan istifadə edirlər.
switch operatorunun sintaksisi aşağıdakı kimidir:
switch ( dəyişən ) {
case qiymət1:
/* əgər dəyişənin qiyməti == qiymət1 */
yerinə yetirilməli proqram hissəsi
break;
case qiymət2:
/* əgər dəyişənin qiyməti == qiymət2 */
yerin yetirilməli proqram hissəsi
break;
...
default:
/* yuxardakı şərtlərin hec biri odənmədikdə */
yerinə yetirilməli proqram hissəsi
}
switch opratoru dəyişənin qiymətini yuxarıdan aşağı case ifadəsinin qarşısında dayanan
qiymətlə yoxlayır və bərabər olarsa onda iki nöqtə(:) - dən sonra gələn bütün operatorları yerinə yetirir. break rast gəlinən yerdə switch opratoru işini dayandırır və proqramda switch-dən sonra gələn oprator yerinə yetirilir. switch operatoru ilə bağlı mühüm məqamlardan biri də odur ki, case ifadələrində qiymət kimi ancaq tam tipli dəyişənlərdən istifadə etmək olar.
(int) . default seçimindən istifadə etmək vacib deyil. Əgər qiymətlərdən heç biri ödənməsə onda default: seçimində göstərilən operatorlar yerinə yetiriləcək.
nümunə proqram:
//prg_3_3.cpp
#include
int main()
{ int color =0;
std::cout<<"Her hansi reng sechin(qirmizi=1,yashil=2,qara=3):\n";
std::cin>>color;
switch(color){
case 1: std::cout<<"siz qirmizi rengi secdiniz\n";
break;
case 2: std::cout<<"siz yasıl rengi secdiniz\n";
break;
case 3: std::cout<<"siz qara rengi secdiniz\n";
break;
default: std::cout<<"siz hech bir reng sechmediniz\n";
} return 0;
}
Proqramı kompilyasiya edib yerinə yetirək.
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>prog2.exe
Her hansi reng sechin(qirmizi=1,yashil=2,qara=3):
2 siz yaşıl rengi secdiniz
C:\cpp\prog2\Debug>
C:\cpp\prog2\Debug>
3.4 continue və break
continue və break operatorları dövr operatorlarının daxilində istifadə olunur.
break operatoru icra olunduqda dövr dərhal başa çatır.
continue operatoru icra olduqda dövr daxilində continue -dən sonra gələn əməliyyatlar icra olunmadan dövr yeni tsiklə keçir.
3.5 Şərtin qiyməti
Şərt və dövr operatorlarında diqqət yetirilməli digər bir məqam da şərtin qiyməti ilə bağlıdır.
C++ dilində hər şey rəqəmlərlə göstərilir - ünvan, məlumat, sətir, simvol … Şərtlər də istisna deyil: 0 - yanlış, 0 -dan böyük qiymətlər isə doğru kimi qəbul olunur. Misal üçün aşağıdakı yazılış doğrudur .Bu kod icra olunduqda heç nə yerinə yetirilməyəcək, çünki şərt ödənmir 0-dır:
if (0)
{ std::cout<<"Bakida havalar yaxshi kecir \n";
}
Bu kod isə icra olunduqda sonsuz sayda "Bakida havalar soyuq keçir" sətri çap olunacaq(şərt həmişə ödənir - 1).
while(1)
{ std::cout<<"Bakida havalar soyuq kecir \n";
}
Çalışmalar
if operatoru
-
Elə proqram yazın ki, istifadəçidən 2 ədəd qəbul etsin və bunların ən böyüyünü çap etsin.
int n,m;
std::cout<<”1-ci ededi daxil et”<<”\n”;
std::cin>>n;
std::cout<<”2-ci ededi daxil et”<<”\n”;
std::cin>>m;
if(n>m
std::cout<”<else
std::cout<”<2.Elə proqram yazın ki, istifadəçidən 3 ədəd qəbul etsin və bunların ən böyüyünü çap etsin.
int k,s,p;
std::cout<<”1-ci ededi daxil et”<<”\n”;
std::cin>>k;`.
std::cout<<”2-ci ededi daxil et”<<”\n”;
std::cin>>s;
std::cout<<”3-cü ededi daxil et”<<”\n”;
std::cin>>p;
if((k>s)&&(k>p))
std::cout<<”en boyuk eded =”<
else
if((s>k)&&(s>p))
std::cout<<”en boyuk eded =”<
else
std::cout<<” ededlerin en boyuyu =”<
2.Elə proqram yazın ki, istifadəçidən 5 ədəd qəbul etsin və bunların ən böyüyünü çap etsin.
int x,y,z,q,d;
std::cout<<”x-i daxil et”<<”\n”;
std::cin>>x;
std::cout<<”y-i daxil et”<<”\n”;
std::cin>>y;
std::cout<<”z-i daxil et”<<”\n”;
std::cin>>z;
std::cout<<”q-ni daxil et”<<”\n”;
std::cin>>q;
std::cout<<”d-ni daxil et”<<”\n”;
std::cin>>d;
if((x>y)&&(x>z)&&(x>q) &&(x>d))
std::cout<<”ededlerin en boyuyu=”<
else
if((y>x)&&(y>z)&&(y>q) &&(x>d))
std::cout<<”ededlerin en boyuyu=”<
else
if((z>x)&&(z>y)&&(z>q) &&(z>d))
std::cout<<”ededlerin en boyuyu=”<
else
if((q>x)&&(q>y)&&(q>z) &&(q>d))
std::cout<<”ededlerin en boyuyu=”<
else
std::cout<<”ededlerin en boyuyu=”<for operatoru
1.Elə proqram qurun ki, istifadəçinin daxil etdiyi ədəd sayda ekranda 'a' simvolu çap etsin.
int x,k;
std::cout<<”x-i daxil et”<<” \n”;
std::cin>>x;
for(k=1;k<=20;k=k+1)
std::cout<<”a”<<”\n”;
2. Elə proqram qurun ki, 1 ilə 100 arasında olan ədədlər içərisində 3-ə qalıqsız bölünən
ədədləri çap etsin.
int k;
Std::cout<<”3-e bolunen ededler”<< “\n”;
for(k=3;k<100;k=k+3)
std::cout<
std::cin>>k;
6. Elə proqram qurun ki, 1 ilə 1000 arasında istifadəçinin daxil etdiyi ədədə qalıqsız bölünən ədədləri çap etsin.
int x,k;
std::cin>>x;
for(k=x;k<=1000;k=k+x)
std::cout<
std::cin>>x;
for və if operatorları
7. Elə proqram qurun ki, istifadəçidən hər-hansı ədəd qəbul etsin. Əgər bu ədəd 100-dən böyük olarsa onda ekranda 100 dəfə 'c' simvolu çap etsin, 50 ilə 100 arasında olarsa ekranda həmin ədəd sayda 'b' simvolu çap etsin, 50 -dən kiçik olarsa həmin ədəd sayda 'a' simvolu çap etsin.
int x,k;
std::cout<<”x-i daxil et”<< “\n”;
std::cin>>x;
if(x=>100)
for(k=1;k<=100;k=k+1)
std::cout<<”buyurun,100 defe c simvolu”<< “ \n”;
std::cout<<”c”<<”\n”;
else
if((x>50)&&(x<100))
for(k=1;k<=x;k=k+1)
std::cout<<”buyurun,istediyiniz sayda b simvolu”<< “ \n”;
std::cout<<”b”<<”\n”;
else
if(x<50)
for(k=1;k<=x;k=k+1)
std::cout<<”buyurun,istediyiniz sayda a simvolu”<< “ \n”;
std::cout<<”a”<<”\n”;
8.(*) for dovr operatorundan istifadə etməklə ekranda sonsuz olaraq "unix" kəlməsini çap edən proqram yazın.
int k;
for(k=0;k+<=77;k=7)
std::cout<<”unix”<<”\n”; 100%duzdu!
9. while dövr operatorundan istifadə etməklə ekranda sonsuz olaraq "linux" kəlməsini çap edən proqram yazın.
1)x='b';
while (x!='a'){
std::cout<<"linux \n";
std::cout<<" yeni simvol daxil edin\n";
std::cin>>x;
} std::cin>>x;
}
//birinci halda linux kəlməsi sonsuz sayda cap edəcək.//
2)x='b';
while (x!='a'){
std::cout<<"linux \n";
std::cout<<" yeni simvol daxil edin\n";
std::cin>>x;
}
//2-ci halda isə a simvolu daxil etdikdə proses sona çatır./
10>
Dostları ilə paylaş: