Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Muasir proq dil C++.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
7.31 Mб
Скачать

6.5. Lokal dəyişənlər

İndiyə qədər bütün dəyişənlər main funksiyasının yuxarı his­sə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 ya­ra­nı­r.

Eyni bir funksiyanı bir neçə dəfə çağırmaq olar. Aşa­ğı­da­kı proq­ramda printmessage funksiyası istifadəçinin istə­di­yi qədər ça­ğırılır və hər dəfə ekrana bu funksiyanın çağrılma sa­yı çı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, print­mes­sa­g­e funk­siyasında times dəyişəni elan olunmayıb (“undeclared iden­tifier”). Kompilyatorun bu səhvini times dəyişəninin ela­nı­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­şən­dir, çün­ki həmin funksiyanın daxilində təyin olunub. Ona gö­rə də times lokal dəyişən olduğundan hər dəfə print­mes­sa­ge­ funk­si­ya­sı çağırılarkən o yaradılır, hər dəfə printmessage funk­siya­sı­nın icrası sona çatdıqdan sonra o ləğv olunur. Beləliklə, ikin­ci dəfə print­mes­sage funksiyası çağırıldıqda times də­yi­şə­ni print­mes­sage funksiyasının birinci çağırışında yara­dı­lan times dəyi­şə­ninin davamı ol­mur. print­mes­sage funk­si­ya­sı­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 da­xilində görünmə oblastına malikdir, ona görə də onun möv­cud­luq vaxtı yalnız proqram öz işini sona çatdırdıqdan son­ra qur­ta­rır. Dəyişənin qlobal olması üçün onu funk­si­ya­la­rın pro­to­tip­lə­ri ilə bütün funksiyaların tipinə qədər elan et­mə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 proq­ra­mın istənilən yerində müraciət etməyə imkan versə də, qlo­bal dəyişənin nə səbəbə düzgün olmayan qiymət almasını tap­maq prosesi çətinləşir. Ona görə də imkan daxilində proq­ram­çıların qlobal dəyişənlərdən istifadə etməmələri məs­lə­hətdir. Qlobal də­yişənlərə alternativ olaraq statik lokal də­yi­­şənləri göstərmək olar.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]