Funksiyalarni qayta yuklash; Funksiyaning prototiplari; Jimlik qoidasi argumentlari



Download 320,64 Kb.
bet1/4
Sana20.03.2022
Hajmi320,64 Kb.
#503506
  1   2   3   4
Bog'liq
maruza-7


7-MA’RUZA
MAVZU: Funksiyalarni qayta yuklash, funksiya argumentlariga boshlang‘ich qiymatlar berish, Inline – joylashtirilgan funksiyalar

Reja:

    1. Funksiyalarni qayta yuklash;

    2. Funksiyaning prototiplari;

    3. Jimlik qoidasi argumentlari;

    4. Inline – joylashtirilgan funksiyalar.


Kalit so‘zlar:

  • actual parameter

  • ambiguous invocation

  • argument

  • automatic variable

  • bottom-up implementation

  • divide and conquer

  • formal parameter (i.e., parameter)

  • function abstraction

  • function declaration

  • function header

  • function overloading

  • function prototype

  • function signature

  • global variable

  • information hiding

  • inline function

  • local variable

  • parameter list

  • pass-by-reference

  • pass-by-value

  • reference variable

  • scope of variable

  • static local variable

  • stepwise refinement

  • stub

  • top-down implementation


11.1. Funksiyalarni qayta yuklash
Key Point.Funksiyalarniqayta yuklash funksiyalarni bir xil nom, turlicha bosh qismibilan e’lon qilinishini ta’minlaydi.
Avvalroq o`rganganimiz, max funksiyasi faqat int ma’lumot turi bilan ishlaydi. Agar biz ikki haqiqiy sonlardan kattasini topishimiz kerak bo`lib qolsachi? Bu masalani hal etish uchun, quyidagi kodda keltirilgani kabi, bir xil nom bilan, biroq parametrlari turlicha bo`lgan boshqa bir funksiyani hosil qilish lozim:
doublemax(doubleson1, doubleson2)
{
if(son1>son2)
returnson1;
else
returnson2;
}
Agar max funksiyasi int turdagi parametrlar bilan chaqirilsa, max funksiyasi chaqiruvchi nuqtaga int turdagi parametrlarni hisoblab yuboradi; agar max funksiyasi double turdagi parametrlar bilan chaqirilsa, max funksiyasi chaqiruvchi nuqtaga double turdagi parametrlarni hisoblab yuboradi. Bir faylda joylashgan, bir xil nomdagi va turlicha parametrlarga ega bo`lgan funksiyalarni chaqirish, dasturlashda funksiyalarni qayta yuklash - deb talqin qilinadi. Bunda C++ kompilyatori qaysi funksiyani chaqirishni uning bosh qismiga qarab tanlab oladi.
11.1-kodli ro`yxatda uchta funksiyani hosil qilish keltirilgan. Birinchisi, int turidagi sonlardan kattasini topadi, ikkinchisi, double turidagi sonlardan kattasini topadi, uchinchisi esa, uchta double turidagi sonlardan kattasini topadi. Bunda uchala funksiya ham maxdeb nomlangan.
11.1-kodli ro`yxat. TestFunksiyaniQaytaYuklash.cpp
1 #include
2 using namespacestd;
3
4 // int turidagi ikki sondan kattasini topish
5 intmax(int son1, int son2)
6 {
7 if(son1>son2)
8 return son1;
9 else
10 return son2;
11 }
12
13 // double turidagi ikki sondan kattasini topish
14 doublemax(double son1, double son2)
15 {
16 if(son1>son2)
17 return son1;
18 else
19 return son2;
20 }
21
22 // double turidagi uchta sondan kattasini topish
23 doublemax(double son1, double son2, double son3)
24 {
25 returnmax(max(son1, son2), son3);
26 }
27
28 intmain()
29 {
30 // max funksiyasini int turida argument berib chaqirish
31 cout << "3 va 4 orasidagi katta son: "<< max(3, 4) << endl;
32
33 // max funksiyasini double turida argument berib chaqirish
34 cout << "3.0 va 5.4 orasidagi katta son: "
35 << max(3.0, 5.4) << endl;
36
37 // max funksiyasini uchta double turidagi argumentlarni berib chaqirish
38 cout<<3.0, 5.4 va 10.14 orasidagi katta son: "
39 << max(3.0, 5.4, 10.14) << endl;
40
41 return 0;
42 }
Bu yerda, max funksiyasining max(3, 4) ko`rinishda chaqirilishi (31-satr) natijasida ikkita butun sondan kattasi aniqlanadi. max funksiyasining max(3.0, 5.4) ko`rinishda chaqirilishi (35-satr) natijasida ikkita haqiqiy sondan kattasi aniqlanadi. max funksiyasining max(3.0, 5.4, 10.14) ko`rinishda chaqirilishi (39-satr) natijasida uchta haqiqiy sonlardan kattasi aniqlanadi.
Xo`sh, max funksiyasini bir vaqtning o`zida,max(2,2.5) kabi, bitta int argument va bitta double argument bilan chaqira olamizmi? Agar buning imkoni bo`lsa, unda qaysi max funksiyasi chaqirilgan bo`ladi? Birinchi savolga javob – ha. Ikkinchi savolga javob – bunda ikki double turidagi sondan kattasini qaytaruvchimax funksiyasi chaqirilgan bo`ladi. Bunda2 argumenti avtomatik tarzda double turiga o`giriladi va funksiyaga yuboriladi. “Nima uchun bunday vaziyatda max(double, double) funksiyasi chaqirilmagan, axir u har ikkala tur uchun ham o`rinliku” - deb xayron bo`lishingiz mumkin. C++ kompilyatori bunday vaziyatda aynan mos funksiyani chaqiradi. Ikkita butun sondan kattasini aniqlash uchun, max(int, int) funksiyasi ko`proq mos keladi. Ba’zida, funksiyani chaqirishda ikki yoki undan ko`proq moslik holatlari uchrab turadi. Bunda kompilyator qaysi birini tanlash kerakligini aniqlay olmaydi va kompilyatsion xatolik beradi. Bu dasturlashda tushunarsiz chaqiruv deb talqin qilinadi. Tushunarsiz chaqiruv kompilyatsion xatolik sodir bo`lishiga sababchi bo`ladi. Quyidagi kodni ko`rib chiqamiz:
#include
using namespacestd;
intmaxNumber(intnum1, doublenum2)
{
if(num1 > num2)
returnnum1;
else
returnnum2;
}
doublemaxNumber(doublenum1, intnum2)
{
if(num1 > num2)
returnnum1;
else
returnnum2;
}
intmain()
{
cout << maxNumber(1, 2) << endl;
return 0;
}
Bu yerda maxNumber(int, double) vamaxNumber(double, int) larning har ikkalasi ham maxNumber(1, 2) ni hisoblashga bir xil darajada mos tushadi. Natijada kompilyatsion xatolik yuz beradi.



Download 320,64 Kb.

Do'stlaringiz bilan baham:
  1   2   3   4




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish