«Aniq fanlar» kafedrasi fanidan ma’ruzalar matni


O‘zgaruvchan parametrli funksiyalar


Download 1.15 Mb.
bet127/161
Sana02.01.2022
Hajmi1.15 Mb.
#200874
1   ...   123   124   125   126   127   128   129   130   ...   161
Bog'liq
dasturlash fanidan maruzalar matni 2

O‘zgaruvchan parametrli funksiyalar: C++ tilida parametrlar soni noma’lum bo‘lgan funksiyalarni ham ishlatish mumkin. Bundan tashqari ularning turlari ham noma’lum bo‘lishi mumkin. Parametrlar soni va turi funksiyani chaqirishdagi argumentlar soni va ularning turiga qarab aniqlanadi. Bunday funksiyalar sarlavhasi quyidagi formatda yoziladi:

(, . . .)

Bu yerda oshkor parametrlar ro‘yxati – oshkor ravishda yozilgan parametrlar nomi va turi. Bu parametrlar majburiy parametrlar deyiladi. Bunday parametrlardan kamida bittasi bo‘lishi shart. Qolgan parametrlar soni va turi noma’lum hisoblanadi. Ularni aniqlash va ishlatish to‘la ravishda programma tuzuvchi zimmasiga yuklanadi.

O‘zgaruvchan sondagi parametrlarni tashkil qilish usuli umuman olganda ikkita.

Birinchi usulda, parametrlar ro‘yxati oxirida yana bir maxsus parametr yoziladi va uning qiymati parametrlar tugaganligini bildiradi. Kompilyator tomonidan funksiya tanasida parametrlar birma-bir ko‘rib chiqilib parametrlar aniqlanadi. Barcha parametrlar turi oxirgi maxsus parametr turi bilan ustma-ust tushadi deb hisoblanadi.

Ikkinchi usulda birorta maxsus parametr sifatida noma’lum parametrlar soni kiritiladi va unga qarab parametrlar soni aniqlanadi.

Ikkala usulda ham parametrlarga murojaat qilish uchun ko‘rsatkichlar ishlatiladi. Misollar keltiramiz.

Birinchi usul:

#include

float Sonlar_kupaytmasi(float arg,…)

{

float p=1.0;



float *ptr=&arg;

if(*prt==0.0) return 0.0;

for (;*prt;prt++)p*=*prt;

return p;

}

void main()



{

cout<<”\n “<

cout<

}

Natija:



24

480


Ikkinchi usul:

#include

int Yigindi(int,…);

void main()

{

cout<<”\nYigindi(2,6,4)==”<

cout<<”\nYigindi (6,1,2,3,4,5,6)=”

cout<

}

int Yigindi (int k,…)



{

int *ptr=&k

int s=0;

for(;k;k--)s+=*(++ptr);

return s;

}

Natija:



Yigindi(2,6,4)=10

Yigindi (6 , 1 , 2 , 3 , 4 , 5 , 6)=21

Ikkala misolda ham noma’lum parametrlar berilgan maxsus parametr turini qabul qilgan. Har xil turdagi parametrlarni ishlatish uchun turni aniqlaydigan parametr kiritish kerak:

#include

float Summa (char,int,…);

void main()

{

cout<

cout<

cout<

}

int Summa(char z,int k,…);



switch(z)

{

Case ‘i’:



{

int *ptr=&k+1; int s=0;

for(;k--;ptr++) s+=*(ptr);

return (float)s;

}

case’f’:


{

float*ptr=(float*)(&k+1); float s=0.0;

for (;k--;ptr++) s+=*(ptr);

return s;

}

default:


{

cout<<”\n parametr xato berilgan”;

return 9999999.0;

}

}



}

Yuqorida keltirilgan misolda noma’lum parametrlarni turini aniqlash masalasi kompilyator tomonidan emas, balki programma tuzuvchisi tomonidan hal qilingan.



Download 1.15 Mb.

Do'stlaringiz bilan baham:
1   ...   123   124   125   126   127   128   129   130   ...   161




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling