6.14.Funksiyalar. Funksiyaların təyini. Funksiyalara müraciət qaydası
C++ dilində alt proqramın reallaşması mexanizminə baxaq. Məlumdur ki, Pascal dilində alt proqramın 2 növü vardır: prosedura və funksiya. Hər iki alt proqram əsas proqramın daxilində yazılır və onunla bir yerdə kompilyasiya olunur. C++ dilində alt proqramın realizasiya mexanizmi Pascal dilində alt proqramın realizasi mexanizmindən fərqlidir. C++ dilində ancaq bir növ alt proqramdan-funksiyadan istifadə olunur. Bütün proqramlarda adı main olan əsas funksiya iştirak edir. Əgər proqramda digər funksiyalardan da istifadə edilirsə, bu funksiyalar alt proqram rolunu oynayır. Aşağıdaki misalda funksiyaların tərtibi və onlara müraciət olunma qaydaları verilmişdir.
Tutaq ki, üç a,b,c-ədədlərinin ən böyüyünü tapmaq lazımdır: max(a,b,c)=?. Bu məsələnin həlli üçün aşağıdaki bərabərlikdən istifadə etmək olar:
max(a,b,c)=max(max(a,b),c).
Köməkçi funksiyadan isitifadə etməklə məsələnin proqramını aşağıdaki kimi yazmaq olar:
#include
using namespace std;
//Köməkçi funksiyanın təyini
int max(int x, int y)
{if(x>y)return x;
else return y;
}
//Əsas proqram
void main ( )
{int a,b,c,d;
cout<<”a,b,c-ni daxil edin:”;
cin >>a>>b>>c;
d=max(max(a,b),c);
cout<<”\nmax(a,b,c)=”<
}
Funksiyanın təyini formatı aşağıdaki kimidir: (
) {funksiyanın gövdəsi}
qaytarılan qiymətin tipini müəyyən edir. Əgər funksiya heç bir qiymət qaytarmırsa, onda -nin yerinə void yazılır. -proqramçı tərifindən verilən identifikatordur.
olan hissə ya boş olur və ya hər birinin tipi göstərilməklə formal parametlərin siyahısı olur.
Funksiyasın gövdəsi ya mürəkkəb operatordur və ya blokdur. Blokun əlaməti odur ki, onun daxilində dəyişənlər, massivlər və s. təsvir olunur və onlar ancaq blok daxilində təsir oblastlarına malikdilər. Mürəkkəb operator kimi blok da fiqurlu mötərizə arasında yazılır.
Funksiyanın gövdəsində digər bir funksiyanı təyin eymək olmaz. İstənilən funksiyadan başqa bir funksiyaya müraciət etmək olar. Bu funksiya müraciət edən funksiyaya nəzərən xarici funksiya olmalıdır. Funksiya daxilindən ona müraciət olunan nöqtəyə qayıtmaq üçün return operatorundan istifadə edilir. Bu operator funksiyada 2 formada işlənə bilər:
return; və ya return ifadə;
Birinci halda funksiya nəticə olaraq heç bir qiymət qaytarmır. İkinci halda isə funksiyanın nəticəsi göstərilən ifadənin qiyməti olur. Bu ifadənin tipi ya funksiyanın tipi ilə üst-üstə düşür və ya funksiyanın tipinə avtomatik çevirmə ilə çevrilə bilən tiplərindən biri olur.
Return operatorunu aşikar şəkildə yazmamaq da olar. Bu halda return operatorunun mövcudluğu funksiyanın gövdəsinin sonunda qoyulan fiqurlu mötərizədən əvvəl qəbul edilir.
Funksiyaya müraciət formatı aşağıdaki kimidir:
(faktiki parametrlərin siyahısı);
C++ dilində funksiyaya müraciət ifadədir. Bu ifadədə dairəvi mötərizələr əməl rolunu oynayır, faktiki parametrlər isə operand rolunu oynayır. “Mötərizə” əməli ən yüksək üstünlük dərəcəsinə malik olduğuna görə ifadədə funksiyanın hesablanması digər əməliyyatlardan əvvəl yerinə yetirilir. Formal və faktiki parametrlərin tipi və ardıcıllığı uyğun olmalıdır. Faktiki parametr ona uyğun olan formal parametrlərin tipinə malik olmalıdır.
C++ dilində əlavə ən vacib bir prinsipi də qeyd etmək lazımdır ki, funksiyalara müraciətdə parametrlərin ötürülməsi ancaq qiymətə görə olur. Yəni formal parametrlər ancaq qiymətlər parametri ola bilər. Ona görə də funksiya yerinə yetirildikdə faktiki parametrlər dəyişmir. C dilində bəzi hallarda dəyişən sayda faktiki parametrlər ola bilər. Buna misal olaraq Prinf( ) və Scanf( )- kitabxana funksiyalarını göstərmək olar.
Dostları ilə paylaş: |