Çoxölçülü massivlər İkiölçülü massivə elementləri massiv tipinə malik olan birölçülü massiv kimi də baxmaq olar.
Məsələ float R[5][10];
Burada R-massivi 5-elementdən ibarətdir və hər bir elementi 10 həqiqi ədəddən ibarətdir. Massivin elementlərinə iki indekslə müraciət olunur. İndekslər sıfırdan başlayacaq qiymətlər alır. R-massivinin elementlərinə müraciət aşağıdaki kimidir:
R[0][0], R[0][1], . . . , R[4][9]
R[2,3]-yazılışı səhvdir.
Oxşar qaydada üç ölçülü massiv təsvir etmək olar:
double x[3][7][20];
Massivin elementlərinin yaddaşda yerləşməsi qaydası Pascal dilində olduğu kimidir, yəni əvvəlcə axırıncı indeks, sonra axrıncıdam əvvəlki indeks və s. dəyişir. Birinci indeks öz qiymətlərini bir dəfə alır. Çoxölçülü massivin təsvirində onun elementlərinə başlanğıc qiymətlər vermək (inisiallaşdırmaq) olar.
Məsələ, int M[3][3]={{11,12,13}; {21,22,23}; {35,36,37}};
Misal 3. Vurma cədvəlinin hesablanması və ekrana verilməsi proqramını yazaq:
//vurma cədvəli
#include using namespace std;
int main ( ){
int i,j, a[10][10];
for (i=0; i<=9; i++)
{for (j=0; j<=9; j++)
{a[i][j]=i*j;
cout<cout<<”\n”;}
}
45.Massivin elementlərinin artan sıra ilə nizamlanması
46.Funksiya anlayışı. Funksiyaların təyini
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.
47.Funksiyalara müraciət qaydası. Funksiya daxilindən qiymətin qaytarılması
İ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şkar şə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.
48.Funksiyaların prototipləri
Funksiyanı həmişə əsas proqramdan əvvəl təyin etməmək də olar. Məsələn, max-funksiyası əsas proqramdan əvvəl təyin olunmuşdur. Həmin funksiyanın başqa variantda təşkilinə baxaq: