10.5. Yuqori darajali funksiyalar
Funksiya obyektlari – bu «kichik qavs» () operatsiya aniqlangan sinf nusxasi.
Ba’zi bir xolatlarda funksiyani obyekt – funksiyalarga almashtirish qulaydir. Obyekt -
funksiya funksiya sifatida ishlatilsa uni chaqirish uchun operator () foydalaniladi.
Misol:
class kub{
public:
double operator()(double x)
{return x*x*x;} };
Yuqori darajadagi algoritm bu shunday algoritmki bitta yoki bir nechta
argumentlar funksional tipga tegishlidir.
Dixotomiya usuli yerdamida ixtiyoriy funksiya uchun [a,b] oralikda f(x)=0
tenglamani yechish masalasi misolida yuqori darajali funksiyani ko‘rib o‘tamiz. Bu
maqsadda masalani yechadigan metodni tavsiflovchi sinf yaratamiz. Sinfni
tavsiflovchi dastur kodini ko‘ramiz:
template
class FunctionZero
{
public:
static double dihotom(double a, double b, double eps, T f)
};
template
double FunctionZero::dihotom(double a, double b, double eps, T f)
{
float x, x1=a, x2=b;
while (x2-x1)>eps
{x=(x1+x2)\2;
if (f(x)==0) return x;
if (f(x)>0) x1=x; else x2=x;
89
};
return x1;
}
Nazorat uchun savollari
1. Shablonlarlardan nima maqsadda foydalaniladi?
2. Funksiya shabloni asosiy xossalarini ko‘rsating.
3. Parametrlashtirilgan sinflar xossalarini ko‘rsating.
4. SHablon parametrlari ro‘yxati bo‘sh bo‘lishi mumkinmi?
5. Parametrlashtirilgan funksiya qanday chaqiriladi?
6. Parametrlashtirilgan
sinflar
xamma
komponenta
funksiyalari
parametrlashganmi?
7. Sinf shabloni tashqarisida komponenta funksiyalar qanday aniqlanadi?
90
Do'stlaringiz bilan baham: |