
- •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
6.5. Lokal dəyişənlər
İndiyə qədər bütün dəyişənlər main funksiyasının yuxarı hissəsində yerləşirdi. Bir main funksiyası olan proqramlarda bu dəyişənlərə proqramın istənilən yerində müraciət etmək olar. Lakin kodu bir neçə müxtəlif funksiyaya böldükdə dəyişənin görünmə oblastı və mövcudluq zamanı ilə bağlı problemlər yaranır.
Eyni bir funksiyanı bir neçə dəfə çağırmaq olar. Aşağıdakı proqramda printmessage funksiyası istifadəçinin istədiyi qədər çağırılır və hər dəfə ekrana bu funksiyanın çağrılma sayı çıxarılır:
# include <inter>
using namespace std;
void printmesage (void);
int main()
{
int times=0;
char choice;
do {
cout <<”Enter Q to quit, any other character to continue:”;
cin >> choice;
if (choice ==’Q’)
cout << ”input stopped”;
else printmessage ();
} while (choice !=’Q’);
return 0;
}
void printmesage (void)
{
times + +;
cout << ”this function colled”<< times << ”times \ n”;
}
Bu kod kompilyasiya olunmayacaq, belə ki, printmessage funksiyasında times dəyişəni elan olunmayıb (“undeclared identifier”). Kompilyatorun bu səhvini times dəyişəninin elanını printmessage funksiyasına köçürməklə aradan qaldırmaq olar:
void printmessage (void)
{
int times=0;
times ++;
cout << “ this function called” << times << ”times \ n;
}
times dəyişəni printmessage funksiyası üçün lokal dəyişəndir, çünki həmin funksiyanın daxilində təyin olunub. Ona görə də times lokal dəyişən olduğundan hər dəfə printmessage funksiyası çağırılarkən o yaradılır, hər dəfə printmessage funksiyasının icrası sona çatdıqdan sonra o ləğv olunur. Beləliklə, ikinci dəfə printmessage funksiyası çağırıldıqda times dəyişəni printmessage funksiyasının birinci çağırışında yaradılan times dəyişəninin davamı olmur. printmessage funksiyasının hər bir çağırışında times dəyişəni yenidən yaradılır.
Qeyd edək ki, funksiyaya müxtəlif müraciətlər zamanı dəyişənin qiymətini iki üsulla saxlamaq olar. Birincisi, lokal dəyişən əvəzinə qlobal dəyişən istifadə etməklə, ikincisi, statik lokal dəyişəndən istifadə etməklə.
6.6. Qlobal dəyişənlər
“Qlobal” termini onu göstərir ki, dəyişən bütün proqram daxilində görünmə oblastına malikdir, ona görə də onun mövcudluq vaxtı yalnız proqram öz işini sona çatdırdıqdan sonra qurtarır. Dəyişənin qlobal olması üçün onu funksiyaların prototipləri ilə bütün funksiyaların tipinə qədər elan etmək lazımdır:
# include <inter>
using namespace std;
void printessage ();
int times;
int main()
{
times=0;
char choice;
do{
cout <<”Enter Q to quit, any other character to continue:”;
cin >> choice;
if (choice==’Q’)
cout <<”input stopped”;
else
printmessage();
} while (choice!=’Q’);
return 0;
}
void printmessage (void)
{
times++;
cout << ”this function called” << times <<”times \ n”;
}
Qeyd edək ki, dəyişənlərin qloballaşdırılması onlara proqramın istənilən yerində müraciət etməyə imkan versə də, qlobal dəyişənin nə səbəbə düzgün olmayan qiymət almasını tapmaq prosesi çətinləşir. Ona görə də imkan daxilində proqramçıların qlobal dəyişənlərdən istifadə etməmələri məsləhətdir. Qlobal dəyişənlərə alternativ olaraq statik lokal dəyişənləri göstərmək olar.