
- •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
3.2. Standart tip verilənlərin ölçüsü
Proqramlaşdırma dillərinin çoxunda proqramçının tip təyin etməsinə icazə verilir. Məsələn, C dilində strukturlar, C++ dilində də siniflər proqramçı tərəfindən təyin olunan dəyişən tipidir.
C/C++ dilində istifadə olunan hər bir dəyişən tipi göstərilməklə elan olunmalıdır. Lakin tiplərin çevrilməsi mənasında C/C++ dili digər tiplərə nəzərən daha az ciddidir.
Dəyişən – yaddaş oblastı ilə əlaqəli olan addır, bu oblast dəyişənin qiymətini çoxaltmaq üçün ayrılmışdır. Elan dəyişənin adı və onun tipinin göstərilməsini nəzərdə tutur. C dilində də əvvəldən təyin olunmuş 11 ədəd dəyişən tipi vardır. Bu dəyişən tiplərindən 8 -i tam (integer types) dəyişənlər üçün, qalan 3-ü isə həqiqi (floating types) dəyişənlər üçün nəzərdə tutulmuşdur.
C/C++ dilində həm işarəli, həm də işarəsiz dəyişənlər istifadə olunur. Onlar eyni yaddaş həcmləri tutsalar da, müxtəlif diapazonlu ədədlərdir.
Cədvəl 3.1.
Verilənlərin tipi |
Yadda- şın həcmi (bayt) |
Mümkün minimal qiymət |
mümkün maksimal qiymət |
signed char unsigned char signed short unsigned short signed int unsigned int signed long unsigned long |
1 1 2 2 2 2 4 4 |
-128 0 -32768 0 -32768 0 -2147483648 0 |
127 255 32767 65535 32767 65535 214783648 4294967295 |
float double long double |
4 8 10 |
3.4E-38 1.7E-308 3.4E-4932 |
3.4E+32 1.7E+308 1.1E+4932 |
Əsas standart tip verilənlər bunlardır: tam, həqiqi, simvol.
Bütün tam tiplər - char, short, int və long - susmaya görə işarəli olurlar, ancaq onları işarəsiz də elan etmək olar (bu vaxt onlar öz işarəli analoqlarının tutduğu qədər yaddaş tutacaqlar), belə ki, onlar sıfır da daxil olmaqla yalnız bütün müsbət qiymətləri ifadə edəcəklər. Buna görə də onlar 2 dəfə çox müsbət qiymətlər ifadə edə bilərlər.
Əgər hər hansı hesabi əməliyyat zamanı nəticə elan olunan tip üçün mümkün maksimal qiyməti aşırsa, onda tamqiymətli dəyişənlərin qiyməti sıfırlaşdırılır.
C/C++ dilində məntiqi tip - Boolean adlı (məntiqi doğru ya da yalan qiymətlərini alan) tip yoxdur, lakin tam qiymətlər məntiqi tip kimi verilən ifadələrdə doğru və yalan qiymətləri ifadə edə bilərlər. Bu vaxt sıfır qiymət yalan, sıfır olmayan isə doğrunu göstərir.
Sürüşkən vergüllü verilən tiplər (həqiqi) onluq ədəd və ya eksponensial formada ola bilərlər. Məsələn,
double d1=2.35;
double d2=2.0E-5;
3.3. Dəyişənlərin elan olunması
Programlaşdırma dillərinin çoxunda dəyişənlər istifadə edilməzdən əvvəl proqramda tanıdılır, yəni elan olunurlar. C dilində elan əməliyyatı, yaddaşda bir yer ayrılmasına səbəb olursa, bu əməliyyata təyinetmə (definition) deyilir. Hər təyin etmə əməliyyatı eyni zamanda bir elan əməliyyatıdır, amma hər elan əməliyyatı bir təyinetmə olmaya bilər. Başqa cür desək, təyinetmə obyekt yaradan bir elan əməliyyatıdır.
C dilində bir dəyişəni elan etməzdən əvvəl istifadə etmək səhv (error) yaranmasına gətirib çıxarır.
C/C++ proqramlaşdırma dilində elan əməliyyatı aşağıdakı şəkildə edilir :
<tip> <dəyişənin adı> <;>
Burada nöqtəli vergül işarəsi operatorun sonu əlamətini bildirir. C/C++ də bütün ifadələr nöqtəli vergül ilə bir-birlərindən ayrılırlar.
tip ifadə edən açar sözlər, C/C++ dilinin qabaqcadan təyin olunmuş dəyişən tiplərinə bağlı açar sözlərdir. Bu sözləri elan sintaksisində istifadə edərək, daha əvvəl öyrənmiş olduğumuz 11 dəyişən tip növünün hansından dəyişən təyin etmək istədiyimizi bildirmiş oluruq. C/C++ dilində təyinetmə əməliyyatında istifadə edilə biləcək açar sözlər bunlardır:
signed, unsigned, char, short, int, long, float, double
Bu sözlərin hamısı açar söz olduğundan kiçik hərf ilə yazılmalıdır.
Elan nümunələri:
int x;
unsigned long int a;
double MFCS;
signed short total
Tip ifadə edən açar sözlərin yazılmasından sonra eyni tipə malik birdən çox dəyişənin elanı zamanı adların arasına vergül qoyulur. Elan etmə yenə nöqtəli vergül ilə bitməlidir. Məsələn, unsigned char ch1, ch2, ch3, ch4;
float FL1, Fl2;
unsigned total, subtotal;
Fərqli tiplərlə bağlı elanlar vergüllərlə bir-birindən ayrıla bilməz. Məsələn,
long x, int y; /* error */
signed və unsigned sözləri tip ifadə edən açar söz olmadan tək istifadə edilə bilərlər. Bu vəziyyətdə int növdən bir dəyişənin elanının edildiyi qəbul edilir:
signed x, y;
ilə
signed int x, y;
tamamilə eyni mənadadır.
Elan əməliyyatında, tip ifadə edən açar söz birdən çoxdursa, bunların yazılış sırası əhəmiyyətli deyil, amma oxunaqlıq baxımından əvvəl işarə ifadə edən açar sözün, sonra tip ifadə edən açar sözün istifadə edilməsi ənənə halını almışdır. Məsələn :
signed long int x;
signed int long x;
long signed int x;
long int signed x;
int long signed x;
int signed long x;
hamısı etibarlı elanlardır. Amma yuxarıdakı elanda birinci yazılış forması oxunaqlıq baxımından seçilməlidir.
C/C++ dilində, ümumiyyətlə, dəyişənlər 3 yerdə elan edilə bilər :
Blokların daxilində.
Bütün blokların xaricində.
Funksiyanın parametr dəyişəni kimi funksiya mötərizələrinin içərisində.
Funksiya mötərizələri içərisində edilən elanlar müəyyən sintaksis qaydasına uyğunlaşdırılır, bu elanlar funksiyalar mövzusunda araşdırılacaq.
Əgər C dilində elan blokların daxilində ediləcəksə, onda elan əməliyyatı blokların ilk əməliyyatı olmalıdır. Elanın mütləq əsas blokun əvvəlində edilməsi kimi bir zərurət yoxdur. Əgər iç-içə bloklar varsa, içdəki hər hansı bir blokun əvvəlində də (o blokun ilk əməliyyatı olmaq şərti ilə) elan edilə bilər. Məsələn:
{
int var1, var2;
char ch1, ch2, ch3;
var1 = 20;
float f; /* error */
}
Yuxarıdakı nümunədə var1, var2, ch1, ch2, ch3 dəyişənlərinin təyin olunma yerləri doğrudur. Ancaq f dəyişəni səhv yerdə elan olunmuşdur. Çünki elan əməliyyatından əvvəl başqa bir əməliyyat (mənimsətmə) iştirak etmişdir. Bu vəziyyət səhv meydana gəlməsinə səbəb olur. Həmin proqram fraqmenti aşağıdakı şəkildə yazılmalıdır:
{
int var1, var2;
char ch1, ch2, ch3;
var1 = 10;
{ float f; }
}
Bu halda artıq f dəyişəni də öz blokunun əvvəlində (ilk əməliyyat olaraq) təyin olunmuşdur.
C++ dilində isə blok içində elan edilən dəyişənlərin, blokların ilk əməliyyatları kimi elanı zəruri deyil. Yəni C++ da dəyişənlər blokların içində hər hansı bir yerdə elan edilə bilərlər.
C/C++ dilində qlobal dəyişənlər də mövcuddur. Əgər dəyişən main () xaricində elan olunubsa, o, qlobal dəyişən adlanır. Bu halda proqram buraxılarkən ona sıfır qiymət mənimsədilir.