- •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
- •4. Xətti və budaqlanan alqoritmlərin proqramlaşdırılması
- •4.1. Xətti alqoritmlərin proqramlaşdırılması
- •3.7. Tiplərin çevrilməsi
- •Müstəqil işləmək üçün tapşırıqlar
- •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
3.4. Konstantlar (Sabitlər)
Proqramlaşdırma dillərində verilənlər sabitlər şəklində də göstərilə bilər. Onlar
const int intVal=17;
kimi elan olunurlar.
Misal
3.1.
ifadəsini hesablayan proqram.
#include <stdio.h>
main()
{
const float b=3.14;
float x, a;
scanf(“%f”,&x);
a= b*x*x;
printf(“a = %f”, a);
return 0;
}
Simvol sabitlər apostrof daxilində yazılmış bir simvoldan ibarət olurlar: “q” , “2”, “.” Və s.
Const char sym=”m” ;
Xüsusi simvollar da simvol konstantlar bölməsinə daxildirlər.
Literal sabitlər (literallar) – bilavasitə proqramın mətnində daxil edilən qiymətlərdir. Belə ki, proqramın kompilyasiyasından sonra literalların qiymətini dəyişmək mümkün olmadığından onları sabitlər də adlandırırlar.
İstənilən sabitin emalı üçün kompilyator minimal diapazonlu qiymətə malik mümkün verilənlər tipindən istifadə edir, yəni verilən sabitin saxlanması üçün yaddaşın mümkün minimal həcmini tutur.
Məsələn, 1257 və ya -251 ədədlərinin daxil edilməsi üçün int tip istifadə olunacaq. Lakin əgər sabitə elan olunduğu qədər yaddaş ayrılması (faktiki olaraq tutduğu qədər yox) tələb olunursa, onun uzunluğunu aşkar olaraq göstərmək lazımdır. Bunun üçün L hərfi istifadə olunur. Ədəddən sonra U hərfinin göstərilməsi isə onun işarəsiz olduğunu göstərir. Double tip sabitlərə f və ya F hərflərinin əlavəsi zamanı onlar float tip, l və ya L hərfi əlavə olunduqda isə long double tip olurlar.
C/C++ dilində ədədi və simvol tiplərdən savayı sətir sabitləri də istifadə olunur.
Sətir sabitlər – dırnaq işarəsi daxilində yerləşən ASCII kodunun simvollarından ibarətdir.
Qeyd edək ki, C/C++ dilində əsasən aşağıdakı standart sabitlərdən istifadə olunur:
-
e ədədi
M_E
π ədədi
M_Pİ
π/2 ədədi
M_Pİ_2
π/4 ədədi
M_Pİ_4
lge
M_LOG10E
ln2
M_LN2
3.5. İfadələr
Ifadə
- qiymətə malik olan proqram fraqmentidir: adətən, bu proqram
buraxılan zaman hesablanmalı olan qiymətdir. Məsələn,
. Bu halda ifadə literallardan(ədədlərdən), operatorlardan (/ və
+) və kiçik mötərizədən ibarətdir. Mürəkkəb ifadələrdə
mötərizələr iç-içə ola bilərlər (bu o deməkdir ki, bir alt
ifadə digər altifadənin daxilində yerləşir). Məsələn,
.
Dəyişən = ifadə dəyişənə ifadənin qiymətini mənimsətmək deməkdir. Bu zaman əvvəlcə ifadənin qiyməti hesablanır və bu qiymət sol tərəfdəki dəyişənin qiyməti olur.
Yadda saxlamaq lazımdır ki, “=” işarəsi mənimsətmə işarəsidir, bərabərlik işarəsi deyil. Mənimsətmə ifadə olur. Bu qaydaya görə i=(j=k) da ifadə olur, belə ki, j=k ifadədir və konkret qiymətə malikdir. Mötərizəni yazmamaq olar, onda i=j=k ifadəsi k qiymətini i və j dəyişənlərinə mənimsədir, i=j=k=12 ifadəsi isə 12 qiymətini hər üç dəyişənə mənimsədir.
3.6. Əməllər
İfadələr qurularkən tətbiq edilən əməllərin növləri bunlardır:
Hesabi,
Münasibət,
Məntiqi və mərtəbə,
Inkrement və dekrement,
Mənimsətmə.
1) Hesabi əməllər:
*- vurma;
/ - bölmə;
+- toplama;
- - çıxma;
%- tam bölmədə qalığı götürmə.
Bölmədən başqa bütün əməllər ənənəvi qaydada yerinə yetirilir. Bölmə əməlinin xüsusiyyəti ondadır ki, əgər hər iki operand tamdırsa, onda nəticə tam qiymət olur. Həqiqi qiymət almaq üçün heç olmazsa bir operand həqiqi tipə malik olmalıdır. Belə ki, 9/5=1; 9/5.0=1.8; 9%5=4.
Hesabi operatorların üstünlük dərəcəsi belədir:
a) yüksək: - (unar minus),
b) orta: *, /, % (vurma, bölmə, qalığı götürmə),
c) aşağı: +, - (toplama, çıxma).
Yadda saxlamaq lazımdır ki, proqramlaşdırma dilində bütün əməlləri aşkar şəkildə göstərmək lazımdır. Bu, əsasən vurma əməlinə aiddir, belə ki, riyaziyyatda onu yazmamaq olar, proqramlaşdırmada isə yox! Məsələn, ab yazılışı proqramlaşdırmada identfikator kimi başa düşülür. Hesabi operatorlar binar operatorlardır, çünki onlar iki operand üzərində əməliyyatı yerinə yetirirlər.
Aşağıda riyazi ifadənin C/C++ dilində yazılışına aid nümunə verilmişdir:
Riyazi
ifadə:
;
C/C++
dilində yazılışı:
2) Münasibət əməlləri müqayisə üçün istifadə olunur:
< - kiçik;
<= - kiçik və ya bərabər;
> - böyük;
>= - böyük və ya bərabər;
= = - bərabər;
!= - bərabər deyil.
Məsələn,
#include <stdio.h>
#include <conio.h>
main(){
int b;
b=5>2; // b doğru qiymət alır;
printf("b=%i\n",b);
b=7<4; // b yalan qiymət alır;
printf("b=%i\n",b);
getch();
}
Nəticədə
alınır.
Münasibət, məntiqi və bitlər (mərtəbə) üzərində əməllərin nəticəsi məntiqi tip olur. Lakin C/C++ dilində true və false qiymətləri alan standart məntiqi tip yoxdur. Burada məntiqi qiymətlər olaraq tamqiymətli qiymətlər istifadə olunur, belə ki, sıfır yalan kimi, sıfırdan fərqli istənilən qiymət isə - doğru kimi başa düşülür.
Qeyd edək ki, “= =” münasibət işarəsini “=” mənimsətmə işarəsi ilə qarışdırmaq olmaz, belə ki, bu səhvə gətirib çıxara bilər.
3) Məntiqi əməllərə aşağıdakılar daxildir:
məntiqi “və” (&&),
məntiqi “ və ya” (||),
məntiqi inkar (!) .
Məntiqi əməllər bir neçə şərti ifadələri birləşdirdikdə istifadə olunur.
Məntiqi əməllər aşağıdakı xassələrə malikdirlər;
U1 və U2 – iki şərti ifadələrdirsə, onda:
əgər hər iki ifadə eyni zamanda doğrudursa, U1&&U2 - doğrudur;
6>2 && 7>5 - doğrudur;
6>2 && 7<5 - yalandır;
əgər ifadələrdən heç olmasa biri doğrudursa, U1 || U2 -doğrudur;
6>2 || 7>5 - doğrudur;
6>2 || 7<5 - doğrudur;
6<2 || 7<5 - yalandır;
U1- yalan olduqda, !U1 - doğrudur;
U1 - doğru olduqda, !U1 - yalandır;
! (6>2)- yalandır;
! (6<2)- doğrudur.
Mərtəbələr (bitlər) üzərində əməllər float və double tip dəyişənlərə tətbiq oluna bilməz. Belə əməllərə aşağıdakılar aiddir:
“ və” (&),
“ və ya “ (|),
mərtəbəli inversiya (-),
“ yoxetmə və ya “ (^),
sola yerdəyişmə (<<),
sağa yerdəyişmə (>>).
Misal 3.2.
C/C++ dilində riyaziyyatda rast gəlinməyən iki əməl var:
inkrement (++) və dekrement (--). İnkrement əməliyyatı operanda 1 əlavə edir, dekrement isə operanddan 1 çıxır:
i++ i=i+1;
i - - i=i-1.
j=i++
yazısı
j=i; i++
yazısına ekvivalentdir;
j=++i
yazısı isə
i=i+1; j=i;
yazısına ekvivalentdir.
Məsələn, S=a + b ++; yazısı o deməkdir ki, a+b- ni tapıb nəticəni S-ə mənimsətməli və onu 1 vahid artırmalı.
S=a+++b; yazısı o deməkdir ki, b-ni 1 vahid artırmalı, a və b – ni toplamalı, nəticəni S - ə mənimsətməli.
C/C++ dilində mənimsətmə əməli adi haldan əlavə qeyri ənənəvi göstərilişə malikdir. Məsələn, x=x+15 əməlinin yerinə yetirilməsi x dəyişəninin ünvanının 2 dəfə hesablanmasına gətirir: ilkin qiymətin tapılması üçün və alınan nəticənin köçürülməsi üçün.
Bu çatışmazlığı x+=15 yazmaqla aradan qaldırmaq olar.
“+ =” simvolu da mənimsətmə əməli adlanır və o, kompilyatora x - ə 15 qiymətini əlavə edib nəticəni x-də yadda saxlamaq göstərişi verir.
Mənimsətmə əməlinin tam yığımı:
*=, /=, +=, -=, %=, <<=, >>=, &=, ^=, \=.
