logo

C++ dasturlash tilida bir nechta qiymat qaytaruvchi qism dasturlarni yaratish va ulardan foydalanish. Makroslar bilan ishlash

Yuklangan vaqt:

14.03.2023

Ko'chirishlar soni:

0

Hajmi:

203.224609375 KB
C++ DASTURLASH TILIDA BIR NECHTA QIYMAT QAYTARUVCHI QISM DASTURLARNI YARATISH VA ULARDAN FOYDALANISH. MAKROSLAR BILAN ISHLASH   Reja: 1. Prosedura va ularni e’lon qilish; 2. Prosedura asosiy tanasini tasvirlash va ulardan foydalanish; 3. MAKROSLAR BILAN ISHLASH C++ dasturlash tilida funksiyalar dastur tarkibidagi kichik dasturlar hisoblanadi, ular dastur bajarilish natijasida bitta qiymat qaytaradi. Masalan, sonning foktarialini, sonlarning ekubini, sonlarning ekukini va hakoza shunga o‘xshash natijalarni qaytaradi. Lekin dastur tarkibida ikki va undan ortiq natija qaytaradigan kichik muommolar ham mavjud. Masalan, kvadrat funksiyaning ildizlarini aniqlash, unda dastur ko‘pi bilan ikkita qiymat qaytarish kerak, massivlarni o‘sish yoki kamayish tartibida tartiblash va hakozo shunga o‘xshash masalalar ko‘p uchraydi. Bu turdagi masalalarni yechish uchun oddiy funksiyalardan foydalanish maqsadga muvofiq bo‘lmaydi. C++ dasturlash tilida ikki va undan ortiq qiymat qaytaradigan funksiyalarni qisqacha qilib prosedura deb nomlaymiz. Yuklangan funksiyalar chaqirilganda, qaysi funksiyani chaqirish kirish parametrlarining soniga, ularning tipiga va navbatiga bog&#39;liqdir. Proseduralar funksiyalardan farqi shundaki, prosedura faqat bitta qiymat qaytarmaydi, balki bir nechta qiymat qaytarishga mo‘ljallangandir. Yagona nom bilan saqlangan prosedura yordamida ikki sonning yig’indisini, ko‘paytmasini, nisbatini va ayirmasini hisoblovchi prosedura yaratish mumkin. Ta’rif: C++ dasturlash tilining dastur tarkibida ikki va undan ortiq qiymat qaytaradigan qism dasturlar protseduralar deyiladi. Proseduralarni e’lon qilishda, albatta, uning kiritish va qaytariladigan qiymatlar parametrlari keltirilishi kerak. Proseduralarni e’lon qilish usullari to‘liq funksiyalarni e’lon qilish usullari bilan bir xil bo‘ladi, ya’ni prosedurani main() funksiyasidan oldin e’lon qilish kerak. PROSEDURALAR VA ULARNI E’LON QILISH Proseduralarni e’lon qilishda qavs ichida birinchi parametr1 sifatida kiritish parametrlari funksiyaniki kabi tasvirlanadi keyin & bilan parameter2 sifatida qiymat qaytaruvchi parametrlar tasvirlanadi. Proseduralarni tasvirlash uchun ikki sonning yig’indisi va ko‘paytnasini hisoblovchi kop nomi bilan yaratilgan prosedura dasturiga e’tibor bering. PROSEDURALARNI C++ DASTURLASH TILIDA E’LON QILINISHINING UMUMIY KO‘RINISHI QUYIDAGICHA BO‘LADI: tur < prosedura nomi > ( tur < parametr1>, tur & <parametr2>);  #include <iostream.h> int kop (int m, int n, int & k , int & t ); using namespace std; int main() { } Prosedura asosiy tanasini tasvirlash va ulardan foydalanish Proseduralarning asosiy tanasini C++ dasturlash tilida tasvirlash uchun main() funksiyasidan oldin yoki main() funksiyasidan keyin xuddi funksiyalar kabi tasvirlanadi. Proseduralarni C++ dasturlash tilida tasvirlash jarayonining umumiy ko‘rinishi quyidagicha bo‘ladi:   <tur> <prosedura nomi> ( tur <parametr1>, tur & <parametr2>) { < tur > <lokal o‘zgaruvchilar>; <operatorlar>; parametr2= natija; } !!! Protseduralar tasvirlanish jarayonida protseduraning natijalari, albatta, qaytaradigan qiymatlar parametrlariga ta’minlanishi kerak.  #include <iostream.h> int kop(int m,int n,int &k,int &t); using namespace std; int main() { int a,b,p,q; cin>>a>>b; kop(a,b,p,q); cout<<&#34;a+b=&#34;<<p<<&#34; a*b=&#34;<<q; } int kop(int m, int n, int &k, int &t) { k=m+n; t=m*n; return 0; } Misol: Ikki sonni yig’indisi va ko‘paytmasini hisoblovchi kop(m,n,k,t) prosedurasini yarating. Kiritish ma’lumotlari 4 5 Dastur natijasi a+b=9 a*b=20 C++ dasturlash tilida proseduralarga murojat qilish jarayonida hech qachon ifoda tarkibida murojat qilinmaydi. Chunki prosedura natijani nomiga emas, balki o‘zgaruvchilarga ta’minlaydi, shuning uchun oldin prosedura ishlatiladi va keyin uning prosedura tarkibidagi qiymat qaytaruvchi o‘zgaruvchi ifoda ichida ishlatilishi mumkin.   Funksiya qiymat qaytarishi C++ dasturlash tilining barcha misollarida main() funksiyasidan foydalanildi va bu funksiya tarkibida ixtiyoriy boshqa funksiyalardan foydalaniladi. C++ dasturlash tilida barcha funksiyalar nomi return xizmatchi so‘zidan keying natijani qaytaradi va return bilan yakunlanadi faqatgina void tipidagi funksiyalar return xizmatchi so‘zi bilan tugallanmasligi mumkin. - void tipidagi funksiyalar parametrsiz return xizmatchi so‘zi yozilmasdan blokli qavs yordamida tugallanishi mumkin; - void tipidan tashqari barcha funksiyalar albatta return xizmatchi so‘zi parametr bilan tugallanishi kerak. Agar return parametrsiz ishlatilsa u holda komplyator xatolik ko‘rsatadi. Makros - bu programma (kod) bo’lagi bo’lib, ko’rinishi va ishlashi xuddi funksiyadek. Biroq u funksiya emas. Funksiyalar va makroslar o’rtasida bir nechta farqlar mavjud:  programma matnida uchragan makros ifodasi o’z aniqlanishi (tanasi) bilan protsessor ishlash paytida, ya’ni programma kompilyatsiyasidan oldin almashtiriladi. Shu sababli makros funksiyani chaqirish bilan bog’lik qo’shimcha vaqt sarfini talab qilmaydi; MAKROSLAR  makroslardan foydalanish programmaning boshlang’ich kodi (matnini) kattalashuviga olib keladi. Bunga qarama-qarshi holda funksiya kodi yagona nusxada bo’ladi va u programma kodini qisqa- rishiga olib keladi. Lekin funksiyani chaqirish uchun qo’shimcha resurslar sarflanadi;  kompilyator makrosdagi turlar mosligini tekshirmaydi. Shu sababli, makrosga argument junatishda turlarning mosligi yoki argumentlar sonining to’g’ri kelishi yoki kelmasligi haqidagi xatolik xabarlari berilmaydi;  makros boshlang’ich kodga programma bo’lagini qo’yish vositasi bo’lganligi va bunday bo’laklar matnning turli joylariga qo’yish mumkinligi sababli makroslar bilan bog’lik fiksirlangan, yagona adreslar bo’lmaydi. Shu sababli makroslarda ko’rsatkichlar e’lon qilish yoki makros adreslarini ishlatish imkoniyati yo’q. MAKROSLAR Makroslarni aniqlash uchun #define direktivasidan foydalaniladi. Funksiyaga o’xshab makroslar ham parametrlarga ega bo’lishi mumkin. Misol uchun ikkita sonni ko’paytmasini hisoblovchi makros quyidagicha aniqlanadi: MAKROSLAR #include <iostream.h> #define kupaytma(x,y) ((x)*(y)) using namespace std; int main() { int a=2,b=3,c; c=kupaytma(a,b); cout<<c; return 0; } Misoldan ko’rinib turibdiki, tashki ko’rinishi bo’yicha mak- roslardan foydalanish funksiyalardan foydalanishga o’xshash. Shuning uchun ularni ayrim hollarda ularga psevdofunksiyalar deb atashadi. Makroslar aniqlanishining yana bir o’ziga xos tomoni shundaki, C++ tilida ularning nomlarini katta xarflar bilan yozishga kelishilgan. Yuqoridagi misolning o’ziga xos ko’rinishidan biri bu makros parametrlarini qavs ichida yozilishidir. Aks xolda makros aniqlani- shini (tanasini) matnga qo’yishda mazmunan xatolik yuzaga kelishi mumkin. MAKROSLAR