
- •Proqramlaşdırmanın əsasları
- •3. Yaddaş və verilənlərin tipləri
- •3.1. Yaddaş və onun növləri
- •3.2. Standart tip verilənlərin ölçüsü
- •3.3. Dəyişənlərin elan olunması
- •3.4. Konstantlar (Sabitlər)
- •3.5. İfadələr
- •3.7. Tiplərin çevrilməsi
- •Müstəqil işləmək üçün tapşırıqlar
- •4. Xətti və budaqlanan alqoritmlərin proqramlaşdırılması
- •4.1. Xətti alqoritmlərin proqramlaşdırılması
- •4.2. Giriş/çıxış operatorları
- •4.3. Budaqlanan alqoritmlərin proqramlaşdırılması
- •4.3.1. Şərt operatoru
- •4.3.3. Seçmə (variant) operatoru
- •4.3.4. Goto operatoru
- •4.3.5. Proqramın exit operatoru ilə dayandırılması
- •Müstəqil işləmək üçün tapşırıqlar
- •Dövri alqoritmlərin proqramlaşdırılması
- •5.1. Önşərtli dövr operatoru
- •5.2. Sonşərtli dövr operatoru
- •5.3. Parametrli dövr operatoru
- •5.4. Break operatoru
- •5.5. Continue operatoru
- •Müstəqil işləmək üçün çalışmalar
- •Funksiyalar
- •6.1. Funksiyanın sintaksisi
- •6.2. Funksiyanın təyin olunması
- •6.3. Funksiyanın çağırılması
- •6.4. Prototipin yaradılması
- •6.5. Lokal dəyişənlər
- •6.6. Qlobal dəyişənlər
- •6.7. Statik lokal dəyişənlər
- •6.8. Məlumatın funksiyaya göndərilməsi
- •6.9. Funksiyadan qiymətin qaytarılması
- •Müstəqil işləmək üçün tapşırıqlar
- •Massivlər
- •7.1. Birölçülü massivlər
- •7.2. İkiölçülü massivlər
- •İkiölçülü massivin ekrana çıxarılması:
- •Müstəqil işləmək üçün tapşırıqlar
- •Simvollar və sətirlər
- •8.1. Simvol və sətirlərin sintaksisi
- •Sətirlərlə işləyən funksiyalar
- •Müstəqil işləmək üçün tapşırıqlar
- •Fayllar: fayldan daxiletmə
- •Və fayla çıxış
- •Ikilik və mətn faylları
- •Fstream standart kitabxanası
- •Fayla girişin ümumi alqoritmi
- •9.4. Faylın açılması
- •9.4.1. Yazmaq üçün faylın açılması
- •9.4.2. Oxumaq üçün faylın açılması
- •9.4.3. Faylın oxumaq və yazmaq üçün açılması
- •9.5. Faylın bağlanması
- •9.6. Fayla yazmaq və fayldan oxumaq
- •Strukturlar və siniflər
- •Strukturlar və onların elanı
- •Int height;
- •Strukturun dəyişəninin elanı
- •Strukturun inisiallaşdırılması
- •Strukturların funksiya parametri kimi ötürülməsi
- •Siniflər
- •Operatorlar
- •Operatorların üstünlük dərəcəsi
- •Sərhəd qiymətlərinin sabitləri
- •Həqiqi tiplər üçün sabitlər – float.H faylı
- •C dilinin standart funksiyalar kitabxanası
- •Hesabi funksiyalar – math.H faylı
- •Standart fayllar üçün giriş-çıxış funksiyaları- stdio.H faylı
- •Sətirlərlə işləmək üçün funksiyalar- string.H, stdlib.H faylları
- •Mətn rejimində terminalla işləmək üçün funksiyalar- conio.H faylı
- •Xüsusi funksiyalar
- •Mündəricat
4.3. Budaqlanan alqoritmlərin proqramlaşdırılması
4.3.1. Şərt operatoru
Ümumi formatı belədir:
əgər şərtin (ifadənin) doğru olduğu zaman yerinə yetirilən operator təkdirsə:
if (ifadə) operator;
əgər belə operatorlar bir neçədirsə:
if (ifadə) { operator 1;
operator2;
- - - - - - - - - - - -
operator n; }
Bu halda “ifadə” qiyməti tam qiymətə gətirilə bilən ixtiyari ifadədir. Əgər onun qiyməti sıfırdan fərqlidirsə (doğrudursa), onda “ operator” yerinə yetirilir.
İfadəni müəyyən qiymətlə müqayisə edərkən münasibət operatorlarından (== və ya !=) istifadə etmək lazımdır.
if (ifadə = = qiymət) operator;
və ya
if (ifadə != qiymət) operator;
Burada operator sadə və ya mürəkkəb ola bilər.
Qeyd 1. if (ifadə !=0) operator;
operatoru
if (ifadə) operator;
operatoruna ekvivalentdir.
Qeyd 2. if (ifadə=qiymət) operator;yazmaq olmaz, çünki = işarəsi mənimsətmə əməliyyatını göstərir.
Şərti göstərən ifadə kiçik mötərizədə yazılır. if operatoru iki budağa malikdir, onlardan biri alternativ olur. Belə sxem “şaxələnmə” adlanır. “Şaxələnmə” strukturunun təşkili üçün else operatoru istifadə olunur. O, if operatorunun genişlənməsi və ya onun alternativ hissəsidir:
əgər if və else – dən sonra sadə (tək) operatorlar gəlirsə:
if(ifadə) operator1;
else operator2;
əgər operatorlar mürəkkəbdirsə:
if (ifadə) {operator 1 ;
operator 2;
}
else {operator 3;
operator 4;
}
if operatorunun daxili operatorları olaraq istənilən operatorlar, həmçinin şərt operatorları istifadə olunur:
if(ifadə 1)
operator 1;
else if (ifadə 2)
operator 2;
else if (ifadə 3)
operator 3;
. . . .
else if (ifadə n)
operator n;
else // məcburi olmayan hissə
operator_ susmaya_ görə;
Bu cür konstruksiyalarda else hissəsi əvvəlki ən yaxın if -lə əlaqələndirilir ( else hissəsi olmayan).
Qeyd 3. if – else operatorunu onun funksional qiymətini dəyişməyərək daha kompakt yazmaq olar. Bu halda o, şərt ifadəsi adlanır:
ifadə 1? ifadə 2; ifadə 3;
Proqram ifadə 1 – i hesablayır: əgər o, yalandırsa, ifadə 2 yerinə yetirilir; əgər o da yalandırsa, ifadə 3 yerinə yetirilir. Bu isə tamamilə
if (ifadə1) ifadə 2
else ifadə 3
sintaksisinə analojidir. Aşağıdakı proqram fraqmentləri ekvivalentdir.
. . . . . . . . . . . . . . . . .
if (meas== “y”) value=(meas==”y”)?100:;
value= 100; . . . . . . . . .
else
value=0;
. . . . . . . .
Lakin aydınlıq (əyanilik) nöqteyi-nəzərindən şərt operatoru daha əlverişlidir.
Misal 4.2. Kvadrat tənliyin həlli üçün proqram.
#include <stdio.h>
#include <stdlib.h>
# include "math.h"
int main()
{ float a,b,c, x1,x2, d;
printf("a=");
scanf (" %f", &a);
printf("b=");
scanf("%f",&b);
printf("c=");
scanf("%f",&c);
d=b*b-4*a*c;
if (d<0) printf( " heqiqi helli yoxdur \n ");
else {
x1=(-b+sqrt(d)) / (2*a);
x2=(-b-sqrt(d)) / (2*a);
printf (" kokler: x1=%3.2f\n x2=%3.2f\n",x1,x2);
} printf ("\n <Enter>\n " );
return 0;
}
Alınmış nəticə:
4.3.2. Tez-tez rast gəlinən səhvlər
Münasibət ifadəsindən sonra nöqtə vergül (;) qoymaq olmaz:
if (num% 2 ==0); // burada nöqtə vergül yazmaq olmaz!
cout<<” reqem cutdur”<<endl;
Bir neçə şərt operatoru üçün sistem mötərizələri vacibdir:
if (num %2==0)
cout<<” reqem cutdur”<<endl;
cout<<” Reqem cut deyil”<<endl;
Əgər istifadəçi tək ədəd, məsələn, 13 daxil edərsə, onda
cout<<” reqem cutdur”
instruksiyası işləməyəcək, ona görə ki, münasibət ifadəsinin qiyməti yalana bərabərdir. Lakin növbəti
”Reqem cut deyil”
simvol sətri təsvir olunacaq. Ona görə ki,
cout <<”Reqem cut deyil”
instruksiyası şərt operatoruna aid deyil.
Misal 4.3.
#include <cstdlib>
#include <iostream>
#include<conio.h>
using namespace std;
int main(int argc, char *argv[])
{int num;
cin>>num;
if(num%2==0)
cout<<"reqem cutdur"<<endl;
cout<<"Reqem cut deyil"<<endl;
getch();
return 0;
}
Əgər şərt operatorunda bir instruksiyadan çoxunun yerinə yetirilməsini istəyiriksə, onda bu instruksiyaları hökmən sistem mötərizələri daxilinə almalıyıq:
if (num % 2 ==0)
{
cout<<” reqem cutdur”<<endl;
cout<<” Reqem tek deyil”<<endl;
}
Burada yalnız məntiqi ifadə doğruya bərabər olduqda iki ifadə yerinə yetiriləcək.
Bərabərlik operatoru əvəzinə mənimsətmə operatorunu istifadə etmək olmaz.
if (num% 2 =0) // düzgün olmayan operator!
cout<<” Reqem cut deyil”<<endl;
Nəticədə məntiqi ifadə müqayisənin nəticəsi kimi emal olunmayacaq. Bunun əvəzinə o, son mənimsətmə nəticəsi olaraq mötərizədəki ifadəni alacaq, burada sıfır olmayan qiymət doğru, sıfır qiymət isə yalan hesab olunur.
if –siz else yoxdur!
Qeyd edək ki, else hissəsi olmayan if ola bilər, lakin bunun əksi ola bilməz. else hissəsi şərt operatorunun hissəsi olmalıdır. Ona görə də if xidməti sözlü məntiqi ifadədən sonra qoyulan nöqtəli vergül (;) kompilyator tərəfindən səhv kimi qeyd olunacaq. Belə ki, sistem mötərizələri istifadə olunmurlar, if şərt operatoru isə qeyri-düzgün qoyulmuş nöqtə vergüldən yaranan boş operatordan sonra sona çatır. Onda cout<<”Reqem tek deyil”- instruksiyası if şərt operatorunun hissəsi deyil. Ona görə də else hissəsi də if operatorunun hissəsi olmayacaq və if-siz else kimi qiymətləndiriləcək.
if(num %2 ==0);// burada nöqtə-vergül qoymayın!
cout<<” reqem cutdur”<<endl;
else(num % 2==1)
cout<<” Reqem cut deyil”<<endl;
else xidməti sözündən sonra məntiqi ifadə (münasibət ifadəsi) yazmayın! Qeyd edək ki, bu proqramın kompilyasiyası və işləməsində səhvlərə gətirmir, səhv nəticənin alınmasına səbəb olur:
if (num%2==0)
cout<<” reqem cutdur”<<endl;
else (num%2==1)
cout<<” Reqem cut deyil”<<endl;
Bu proqram kompilyasiya olunmayacaq və else sözündən sonrakı cout instruksiyası aşağıdakı səhvlə işıqlandırılacaq:
“missing ‘;’ before identifier ‘cout’ ”.
Burada cout instruksiyası ilə hər şey qaydasındadır, lakin sadəcə olaraq else xidməti sözündən sonra münasibət ifadəsi gələ bilməz.
else-dən sonra nöqtə vergül (;) qoymayın!
Bu halda da proqramın kompilyasiyası və ya işləməsi zamanı səhv haqqında məlumat çıxarılmayacaq, lakin səhv nəticə alınacaq. Məsələn, aşağıdakı kodda cout<<”Reqem cut deyil”; instruksiyası hətta daxil edilən ədəd cüt olduqda belə işləyəcək.
if (num %2 ==0)
cout<<” reqem cutdur”<<endl;
else; //burada nöqtə vergül qoymayın!
cout<<” Reqem cut deyil”<<endl;
Burada cout<<” Reqem cut deyil” instruksiyası münasibət ifadəsinin doğru və ya yalan qiymət almasından asılı olmayaraq işləyəcək, ona görə ki, cout instruksiyası indi if şərt operatorunun hissəsi deyil.
Proqramın if hissəsi üçün deyilən səhvlər, else if hissəsinə də aiddir.
Bundan başqa if-siz else if hissəsi ola bilməz, lakin else hissəsi olmayan bir və ya bir neçə else if hissəsi və if hissəsi ola bilər.