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

6.3. Funksiyanın çağırılması

Əvvəlki bənddəki printmessage funksiyası main funk­si­ya­sına

printmessage();

sətri şəklində çağırılır. Bu misalda printmessage funksiyası main funksiyasından çağırıl­dı­ğına görə çağırılan funksiyadır. Baş mötərizə onu göstərir ki, bu funksiya ilə heç bir qiymət ötürülmür. Proqramın işlə­mə qaydası aşağıdakı kimidir:

  1. icra prosesi main funksiyası ilə başlayır;

  2. sonra main funksiyasının birinci operatoru- prin­tmes­sa­ge(­)­ funksiyası çağırılır;

  3. bundan sonra icraetmə printmessage funksiyasına yönə­lir, onun birinci operatoru yerinə yetirilməyə başlayır və “Hello World” məlumatı ekrana çıxarılır.

  4. printmessage funksiyasının işi sona çatdıqdan sonra proq­ram yenidən main funksiyasına, növbəti yerinə yeti­ril­mə­yən və proqramın sonuncu operatoru olan return 0 – ope­ra­­toruna qoşulur.

6.4. Prototipin yaradılması

Proqramın icrası main funksiyası ilə başladığından, on­da məntiqi olaraq belə nəticəyə gəlmək olar ki, main funk­si­ya­sı printmessage funksiyasından əvvəldə yerləş­mə­li­dir.Yəni,

#include <………..>

using namespace std;

int main()

{

printmessage();

return 0;

}

void printmessage (void)

{

cout <<”hello world”;

}

Lakin belə kod kompilyasiya olunmayacaq, print­messa­ge()­ sətri işıqlanacaq və “undeclared identifier” səhvi haqqında məlu­mat veriləcək.

Bu səhvin səbəbi ondan ibarətdir ki, kompilyator kodu yu­xa­rı­dan aşağıya keçərkən funksiyanın çağrılmasını görə­rək onun adını, qayıtma tipini və parametrlərini artıq bil­mə­li­dir. Lakin printmessage funksiyası main funksi­ya­sın­dan əv­vəl təyin olunduqda isə, kompilyator main funksi­ya­sın­da printmessage() müraciətini tapır, lakin onun haqqında hə­lə­lik­ heç nə bilmir: nə onun adını, nə qaytarılan qiymətin ti­pi­ni, nə parametrləri.

Bu problemin həlli – bütün funksiyaların təyininin main funk­siyasına qədər olmasından ibarətdir. Düzdür, bu halda proq­ram daha az oxunaqlı olacaq. Qeyd etmək lazımdır ki, funksiyaların yerləşmə ardıcıllığından asılı olmayaraq proq­ra­mın işi həmişə main funksiyası ilə başlayır. Funksiyaların sa­yı çox olduqda isə main funksiyası onları bir- birinin ar­dın­ca çağırır. Mürəkkəb proqramlarda, yəni bir funksiya di­gər bir funksiyanı, o isə başqa bir funksiyanı və s. çağır­dıq­da funk­si­ya­ların təyin olunma ardıcıllığında səhv olmaması üçün main-dən başqa bütün funksiyaların prototipinin yaradılması zəru­ri­dir. Aşağıdakı proqramda printmessage() funksiyası üçün pro­to­tipin necə yaradılması göstərilir:

# include <inter>

using namespace std;

void printmessage (void);// bu prototipdir

int main()

{

printmessage();

return 0;

}

void printmessage (void)

{

cout <<”hello world”;

}

Beləliklə, prototip bütün funksiyaların təyinindən yük­sək­də da­yanır və kompilyator kodu yuxarıdan aşağıya ke­çər­­kən hər bir funksiyanın qarşısında dəqiq prototip görür. Onu da qeyd edək ki, prototip funksiyasının başlığına ox­şa­yır, əsas fərq on­da­dır ki, o operatordur və ondan sonra hə­mi­şə­ nöqtə vergül ya­zı­lır.

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