Parametr ga standart qiymat yuklasa bo'ladi. buning uchun funksiya e'lon qilgan vaqtida = belgisi bilan e'lon qilinib ketadi. quyidagi misolga qarang.
#include #include using namespace std;
void myFunction(string fname, string lname="Sherkulov") {
cout << fname << lname << "\n";
}
int main() {
myFunction("Master");
myFunction("Farrukh", "Hamzayevich");
return 0;
}
Izoh: lname parametrga qiymat yuklamasa ham bo'ladi. Yuklanmasa uning standart nomi sifatida (ya'ni qiymati sifatida) lname="Sherkulov" nomi qabul qilinadi.
Bir nechta parametrlar.
Funktsiya ichida siz xohlagancha ko'p parametrlarni qo'shishingiz mumkin:
#include #include using namespace std;
void myFunction(string fname, int age) {
cout << fname << " Sherkulov. " << age << " yoshda. \n";
}
int main() {
myFunction("Mister", 13);
myFunction("Master", 14);
myFunction("Farrukh", 30);
return 0;
}
Mister Sherkulov 13 yoshda
Master Sherkulov 14 yoshda
Farrukh Sherkulov 30 yoshda
E'tibor bering, bir nechta parametrlar bilan ishlaganda, funktsiyani chaqirish parametrlari bo'lgani kabi bir xil argumentlarga ega bo'lishi kerak va tiplari bir xil tartibda o'tkazilishi kerak.
Qiymat qaytarish.
voidOldingi misollarda ishlatiladigan kalit so'z, vazifasi qiymat qaytarilmaydigan funksiyalar oldidan qo'llaniladi. Agar qiymat qaytaradi vazifasi bo'lsangiz, siz void bir ma'lumot turini (masalan, foydalanish mumkin int, stringva boshqalar) , va ishlatish return funktsiyasi ichki kalit so'zni.
#include using namespace std;
int myFunction(int x) {
return 5 + x;
}
int main() {
cout << myFunction(3);
return 0;
}
Endi ikkita parametrli funktsiyaning yig'indisini hisoblash funksiyasi.
#include using namespace std;
int myFunction(int x, int y) {
return x + y;
}
int main() {
cout << myFunction(5, 3);
return 0;
}
Siz shuningdek natijani o'zgaruvchiga saqlashingiz mumkin.
#include using namespace std;
int myFunction(int x, int y) {
return x + y;
}
int main() {
int z = myFunction(5, 3);
cout << z;
return 0;
}
C++ da dasturlashning asosiy bloklaridan biri funksiyalardir. Funksiyalarning foydasi shundaki, katta masala bir necha kichik bo'laklarga bo'linib, har biriga alohida funksiya yozilganda, masala yechish algoritmi ancha soddalashadi. Bunda dasturchi yozgan funksiyalar C++ ning standart kutubxonasi va boshqa firmalar yozgan kutubxonalar ichidagi funksiyalar bilan birlashtiriladi. Bu esa ishni osonlashtiradi. Ko'p holda dasturda takroran bejariladigan amalni funksiya sifatida yozish va kerakli joyda ushbu funksiyani chaqirish mumkin. Funksiyani programma tanasida ishlatish uchun u chaqiriladi, yani uning ismi yoziladi va unga kerakli argumentlar beriladi. () qavslar ushbu funksiya chaqirig'ini ifodalaydi. Masalan: foo(); k = square(l); Demak, agar funksiya argumentlar olsa, ular () qavs ichida yoziladi. Argumentsiz funksiyadan keyin esa () qavslarning o'zi qo'yiladi. Funktsiyalar С/C++ dasturlash tillari dastur kodining asosiy qismi funktsiyalar bo’lib hisoblanadi.Ular dasturni bir necha bloklarga bo’lish imkonini beradi. Bizga ma’lumki bu tillardagi ixtiyoriy dastur main ( ) funktsiyasini o’zida mujassamlashtiradi. Funktsiyalarni yaxshi tayyorlashi, dasturning effektli va ishonchli ishlashini ta’minlaydi. Ushbu ma’ruzada, funktsiyalar yaratish bilan bog’liq bir nechta dasturlarni keltirib o’tamiz. Shuningdek ma’ruzada С/C ++ tillarining ko’plab standart funktsiyalari haqida ham to’xtalib ketamiz. Obiektlarga ixtisoslashgan dasturlashda asosiy e’tibor funktsiyaga emas, balki obiektga qaratilgan bo’lsada dasturlarda funktsiya markaziy komponentligicha qoldi. Biz shu mavzuda quydagilar bilan tanishamiz: Funksiya nima va u qanday qismlardan iborat? Funksiya qanday e’lon qilinadi va aniqlanadi? Funksiyaga qanday qilib parametrlar uzatiladi? 1. Funksiya qanday qiymat qaytaradi? Funksiya nima? Funksiya bu ma’nosiga ko‘ra dastur osti bo‘lib, u ma’lumotlarni o‘zgartirishi va biror bir qiymat qaytarishi mumkin. S++ da har bir dastur hech bo‘lmaganda bitta main() funksiyasiga ega bo‘ladi. main() funksiyasi dastur ishga tushirilishi bilan operatsion sistema tomonidan avtomatik chaqiriladi. Boshqa funksiyalar esa u tomonidan chaqirilishi mumkin. Har bir funksiya o‘zining nomiga egadir. Qachonki, dasturda bu nom uchrasa boshqaruv shu funksiya tanasiga o‘tadi. Bu jarayon funksiyani chaqirilishi (yoki funksiyaga murojaat qilish) deb aytiladi. Funksiya ishini tugatgandan so‘ng dastur o‘z ishini funksiya chaqirilgan qatorning keyingisidan boshlab davom ettiradi. Dastur bajarilishining bunday sxemasi Qaytariladigan qiymatlar, parametrlar va argumentlar. Funksiya biror bir qiymat qaytarishi mumkin. Funksiyaga murojaat qilingandan so‘ng u qandaydir amallarni bajaradi, keyin esa u o‘z ishining natijasi sifatida biror bir qiymat qaytaradi. Bu kaytariladigan kiymat deb ataladi va bu qiymatning tipi oldindan e’lon qilinishi lozim. Quyidagi yozuvda myFunction funksiyasi butun sonli qiymat qaytaradi. int myFunction() Funksiyaga ham o‘z navbatida biror bir qiymat uzatish mumkin. Uzatiladigan qiymatlar funksiyaning parametrlari deb aytiladi. int myFunction (int Par, float ParFloat); Bu funksiya nafaqat butun son qaytaradi, balki parametr sifatida butun va haqiqiy sonli qiymatlarni qabul qiladi. Parametrda funksiya chaqirilganda unga uzatiladigan qiymat tipi aniqlanishi lozim. Funksiyaga uzatiladigan haqiqiy qiymatlar argumentlar deb aytiladi. int theValueReturned=myFunction(5,6,7); Bu yerda theValueReturned nomli butun sonli o‘zgaruvchiga argument sifatida 5, 6 va 7 qiymatlar berilgan myFunction funksiyasining qaytaradigan qiymati o‘zlashtirilayapti. Argument tiplari e’lon qilingan parametr tiplari bilan mos kelishi lozim. Funksiyani e’lon qilish va aniqlash. Dasturda funksiyani qo‘llash uchun, oldin uni e’lon qilish, keyin esa aniqlash lozim. Funksiyani e’lon qilishda kompilyatorga uning nomi, qaytaradigan qiymatlari va parametrlari haqida xabar beriladi. Funksiyani aniqlanishidan kompilyator uning qanday ishlashi haqida ma’lumot oladi. Dasturdagi biror funksiyani oldindan e’lon qilmasdan turib chaqirish mumkin emas. Funksiyani e’lon qilinishi uning prototipini (timsolini) hosil qilish deb ataladi. Funksiyani e’lon qilish. Funksiyani e’lon qilishning uch xil usuli mavjud: Funksiya prototipi faylga yoziladi, keyin esa u #include ifodasi qo‘llanilib kerakli dasturga qo‘shib qo‘yiladi. Funksiya ishlatiladigan faylga uning prototiplari yoziladi. Funksiya uni chaqiruvchi ixtiyoriy funksiyadan oldin yoziladi va bu holda funksiya e’lon qilinishi bilan bir vaqtda aniqlanadi. Funksiyani prototipini tuzmasdan turib ham uni ishlatishdan oldin e’lon kilish mumkin. Lekin, dasturlashning bunday uslubi quyidagi uchta sababga ko‘ra yaxshi hisoblanmaydi. Birinchidan, funksiyani faylda ko‘rsatilgan tartibda yozish, uni dastur ishlatilishida o‘zgartirish jarayonini murakkablashtiradi. Ikkinchidan, quyidagi ko‘p uchraydigan holatni amalga oshirish imkoniyati mavjud emas. A() funksiya V() funksiyani chaqirsin. Xuddi shuningdek, dasturning biror bir qismida V()funksiya A() funksiyani chaqirsin. U holda biz A()funksiyani V() funksiya aniqlanmasdan turib ishlata olmaymiz. Bu holda hech bo‘lmaganda bitta funksiya oldindan e’lon qilinishi lozim. Uchinchidan, funksiyaning prototiplari dasturni tekshirish jarayonida juda yaxshi ishlatiladi. Agarda funksiya prototipi aniqlangan bo‘lsa unga muvofiq funksiya aniqlangan parametrini qabul qiladi yoki aniqlangan biror bir qiymat qaytaradi. Dasturda e’lon qilingan prototipga muvofiq bo‘lmagan funksiyani ishlatishga urinsak kompilyator bu xatolikni kompilyatsiya jarayonini o‘zidayoq aniqlaydi va dastur ishlashida turli noxush xatoliklarni ro‘y berishining oldini oladi. Funksiya prototiplari. Ko‘pgina ichki qurilgan funksiyalarning prototiplari dasturga #include kalit so‘zi yordamida qo‘shiladigan fayl-sarlavhasida yoziladi. Foydalanuvchi tomonidan tuziladigan funksiyalar uchun esa ularning mos prototiplarini dasturga qo‘shish dasturchi tomonidan bajarilishi lozim. Funksiyaning prototipi nuqtali vergul orqali tugaydigan funksiyani qaytaradigan qiymati va signaturasidan iboratdir. Funksiyani signaturasi deb uning nomi va parametrlar ro‘yxati tushiniladi. Formal parametrlar ro‘yxati barcha parametrlar va ularning tiplarini ifodalaydi. unsigned short int FindArea ( int length, int width ) ; Funksiyaning prototipi hamda aniqlanishidagi uning qaytaradigan qiymati tipi va signaturasi mos bo‘lishi lozim. Agarda bunday mutanosiblik bo‘lmasa kompilyator xatolik haqida xabar beradi. Funksiya prototipida parametr nomlarisiz tiplarni ko‘rsatilishi yetarlidir. Masalan, quyida keltirilgan misol tug‘ridir: long Area(int, int) Bu prototip ikkita butun sonli parametrni qabul qilib, long tipidagi qiymat qaytaradigan Area()nomli funksiyani e’lon qiladi. Prototipning bunday yozilishi unchalik yaxshi variant emas. Prototipga parametrlarning nomlarini qo‘shilishi uni tushunarliroq bo‘lishini ta’minlaydi. Har bir funksiyaning qaytaradigan qiymati tipi aniqlangan bo‘ladi. Agarda u ochiq aniqlanmagan bo‘lsa avtomatik ravishda int tipini qabul qiladi. 1–misol. Funksiyani e’lon qilinishi, aniqlanishi va ishlatilishi. Funksiyaning aniqlanishi. Funksiyaning aniqlanishi ikki qismdan – uning sarlavhasi va tanasidan iboratdir. Funksiyaning sarlavhasi uning prototipiga o‘xshash aniqlanadi, faqatgina bu holda parametrlar nomlangan bo‘lishi shart va sarlavha oxirida nuqtali vergul qo‘yilmaydi. Funksiya tanasi figurali qavsga olingan ifodalar to‘plamidan iborat. int Yuza (int uzunlik,int kenglik) { – ochiluvchi figurali kavs. // funktsiya tanasi return (uzunlik*kenglik); } – yopiluvchi figurali kavs. Funksiyaning sarlavxasi va tanasi Funksiyaning bajarilishi. Funksiya chaqirilganda unda ko‘rsatilgan amallar ochiluvchi figurali qavsdan ({) keyingi birinchi ifodadan boshlab bajariladi. Funksiya tanasida if shartli operatoridan foydalanib tarmoqlanishni ham amalga oshirish mumkin. Funksiya o‘z tanasida boshqa funksiyalarni va hatto o‘z – o‘zini ham chaqirishi mumkin. Lokal o‘zgaruvchilar. Funksiyaga qiymatlar uzatish bilan birga uning tanasida o‘zgaruvchilarni e’lon qilish ham mumkin. Bu lokal o‘zgaruvchilar orqali amalga oshiriladi. Qachonki dasturni bajarilishi funksiyadan asosiy qismga qaytsa, bu funksiyadagi lokal o‘zgaruvchilar xotiradan o‘chiriladi. Lokal o‘zgaruvchilar xuddi boshqa o‘zgaruvchilar kabi aniqlanadi. Funksiyaga beriladigan parametrlarni ham lokal o‘zgaruvchilar deb atash mumkin va ularni funksiya tanasida aniqlangan o‘zgaruvchilar kabi ishlatish mumkin. 2 – misolda funksiya parametrlari va funksiya ichida aniqlangan lokal o‘zgaruvchilarni qo‘llashga oid misol keltirilgan. Global o‘zgaruvchilar. main() funksiyasida aniqlangan o‘zgaruvchilar dasturdagi barcha funksiyalar uchun murojaat qilishga imkonli va ko‘rinish sohasiga ega hisoblanadi. Bunday o‘zgaruvchilar dasturdagi funksiyalar uchun global o‘zgaruvchilar deyiladi. Global o‘zgaruvchi nomi bilan funksiya ichida nomlari ustma-ust tushadigan lokal o‘zgaruvchilar faqatgina joriy funksiyaning ichidagina global o‘zgaruvchining qiymatini o‘zgartiradi. Lekin global o‘zgaruvchi funksiya o‘z ishini tugatgach u chaqirilishidan oldingi qiymatini saqlab qoladi, ya’ni funksiya tanasida e’lon qilingan lokal o‘zgaruvchi funksiyaning ichida global o‘zgaruvchini yashiradi xolos. Bunda lokal o‘zgaruvchi alohida hosil qilinadi va funksiya ishlash vaqtida global va lokal o‘zgaruvchilarning nomlari bir xil bo‘lsa faqatgina lokal o‘zgaruvchi ustida amallar bajariladi. Global o‘zgaruvchi esa funksiyaning bajarilishi davomida oldingi qiymatini saqlab turadi. Quyidagi 3-misolda main() va sum() funksiyalarida bir xil nomdagi o‘zgaruvchilarni ishlatish ko‘rsatilgan. Programmada ikkita sonning yig‘indisi hisoblanadi va chop etiladi: 3-misolda keltirilgan programmada kompilyatsiya xatosi ro‘y beradi, chunki f1() funksiya uchun x o‘zgaruvchisi noma’lum hisoblanadi. Programma matnida global o‘zgaruvchilarni ular e’lonidan keyin yozilgan ixtiyoriy funksiyadan ishlatish mumkin. Shu sababli, global o‘zgaruvchilar programma matnining boshida yoziladi. Funksiya ichidan global o‘zgaruvchiga murojat qilish uchun funksiyada uning nomi bilan mos tushadigan lokal o‘zgaruvchilar bo‘lmasligi kerak. Agar global o’zgaruvchi e’lonida unga boshlang‘ich qiymat berilmagan bo‘lsa, ularning qiymati 0 hisoblanadi. Global o‘zgaruvchining amal qilish sohasi uning ko‘rinish sohasi bilan ustma-ust tushadi. Lokal o‘zgaruvchilar haqida batafsilroq ma’lumot. Funksiyani ichida aniqlangan o‘zgaruvchilar lokal ko‘rinish sohasiga ega deyiladi. Yuqorida aytib o‘tilganidek, bu o‘zgaruvchilarni faqatgina funksiyaning ichidagina qo‘llash mumkinligini anglatadi. C++da o‘zgaruvchilarni nafaqat dasturning boshida balki ixtiyoriy joyda aniqlash mumkin. Agarda o‘zgaruvchi funksiya tanasidagi biror bir blok ichida aniqlangan bo‘lsa, bu o‘zgaruvchi faqatgina shu blok ichidagina ta’sirga ega bo‘lib butun funksiyaning ichida ko‘rinish sohasiga ega bo‘lmaydi. Funksiyada ishlatiladigan operatorlar. Funksiyada ishlatiladigan operatorlar soni va turiga hech qanday chegara yo‘q. Funksiya ichida istalgancha boshqa funksiyalarni chaqirish mumkin bo‘lsada, lekin funksiyalarni aniqlash mumkin emas. C++ tilida funksiyaning hajmiga hech qanday talab qo‘yilmasa ham uni kichikroq tarzda tuzgan ma’quldir. Har bir funksiya tushunish oson bo‘ladigan bitta masalani bajarishi lozim. Agarda funksiya hajmi kattalashayotganligini sezsangiz, bu funksiyani bir nechta kichikroq funksiyalarga ajratish haqida o‘ylashingiz kerak. Funksiya argumentlari. Funksiyaning argumentlari turli tipda bo‘lishi mumkin. Shuningdek, argument sifatida C++ tilidagi biror bir qiymat qaytaradigan o‘zgarmaslar, matematik va mantiqiy ifodalar va boshqa ixtiyoriy funksiyalarni berish mumkin. Misol sifatida bizda biror bir qiymat qaytaruvchi double(), triple(), square() va cube() funksiyalari berilgan bo‘lsin. Biz quyidagi ifodani yozishimiz mumkin: Answer=(double(triple(square(my Value)))) Bu ifodada myValueo‘zgaruvchisini qabul qilinadi va u cube()funksiyasiga argument sifatida uzatiladi. cube() funksiyasi qaytargan qiymat esa square() funksiyasiga argument cifatida uzatiladi. square() funksiyasi qiymat qaytargandan keyin, buning qiymati o‘z navbatida triple()fuknsiyasiga argument sifatida beriladi. triple() funksiyasining qiymati esa double()funksiyasiga argument qilib beriladi va u Answer o‘zgaruvchisiga o‘zlashtiriladi.
Foydalangan adabiyotlar Маркушевич А. И. Теория аналитических функций.
В 2-х т. – М.: Наука, 1968. Т.2. – 624с 2. Голузин Г.М. Геометрическая теория функции комплексного переменного. – М. : Наука, 1976.– 540 с.
3. Б. В. Шабат. Введение в комплексный анализ. 1–част. М.Н. 1989.
Г .Худайберганов, А. Ворисов, Х. Мансуров. Комплекс анализ. Тошкент, «Университет», 1998.
Г. Худайберганов, А. Ворисов, Х. Мансуров. Комплекс анализ.Карши. «Насаф», 2003.