"Dasturlash I" fanidan yakuniy nazorat savollari
Download 422.12 Kb. Pdf ko'rish
|
Dasturlash I fanidan yakuniy nazorat savollari
funksiya bosh qismi ni tashkil etadi. Funksiyada parametrlarni ishlatish majburiy
emas, funksiya parametrlarga ega bo`lmasligi ham mumkin. 40. Funksiyani chaqirish(funksiyani chaqirish, stek, yozuvni faollashtirish). Funksiya chaqirilganda uning tana qismidagi ko`rsatmalar bajariladi.Funksiyani yaratishda uning nima ish qilishi belgilab olinadi. Funksiyani ishlatish uchun uni chaqirishimiz yoxud jalb etishimiz lozim. Funksiyani chaqirish uning qiymat qaytarishi yoki qaytarmasligiga qarab ikki xil yo`l bilan amalga oshirilishi mumkin. Agar funksiya qiymat qaytaradigan bo`lsa, unga qiymat kiritgan holda chaqiriladi. Dasturda funksiya chaqirilganda dastur nazorati funksiyani chaqirishga yo`naltiriladi va funksiya hisoblanadi. Funksiya o`z tarkibidagi ko`rsatmalar bajarilganidan so`ng, yoki funksiyaning yakunlanganligini bildiruvchi yopiluvchi figurali qavsdan so`ng dastur nazoratini chaqiruvchiga qaytaradi. Bu dastur max va main funksiyalaridan tashkil topgan. main funksiyasining boshqa funksiyalardan jixati – u operatsion tizim tomonidan chaqiriladi va ishga tushganda dasturdagi hisoblash jarayonlarini amalga oshiradi. Qolgan barcha funksiyalar chaqirish ko`rsatmalari funksiyasi orqali chaqiriladi va ishga tushiriladi.Har safar funksiya chaqirilganda, tizim funksiyaning o`zgaruvchilarini va argumentlarini yozish uchun faollashtirish yozuvi (activation record) (shuningdek, u faollashtirish qobig`i (activation frame) - deb ham ataladi)ni yaratadi va uni chaqiruv steki (call stack) – xotira maydoniga joylashtiradi. Shuningdek, chaqiruv steki ham hisoblash steki (execution stack), bajarilish steki (runtime stack), yoxud mashina steki (machine stack) nomlarini ham olgan bo`lib, odatda, qisqacha qilib “stek” deb ataladi. Funksiya boshqa bir funksiyani chaqirganda, chaqiruvchining faollashtirish yozuvi tegilmasdan ushlab turiladi va yangi funksiya uchun yangi faollashtirish yozuvi yaratiladi. Funksiya ishini tugatganda va boshqaruv nazoratini chaqiruvchisiga qaytarganda, uning faollashtirish yozuvi stekdan olinadi. Chaqiruv steki faollashtirish yozuvlarini “oxirgi kelgan birinchi chiqadi” qoidasiga muvofiq xotiraga yozadi. Oxirgi chaqirilgan funksiyaning faollashtirish yozuvi stekdan birinchi bo`lib olib tashlanadi. Faraz qilaylik, m1 funksiyasi m2 funksiyasini chaqiradi va keyin m2 funksiyasi m3 funksiyasini chaqiradi. Real vaqt tizimi dastlab m1 funksiyasining faollashtirish yozuvini, so`ngra, m2 va m3 larnikini mos ketma- ketlikda stekka kiritadi. m3 bajarilib bo`lgandan so`ng, uning faollashtirish yozuvi stekdan olinadi. m2 bajarilib bo`lgandan so`ng, uning faollashtirish yozuvi stekdan olinadi. m1 bajarilib bo`lgandan so`ng, uning faollashtirish yozuvi stekdan olinadi. 41. Funksiyaga argumentlarni qiymatlar bilan yuborish (passing arguments by value) Funksiya argumentlariga qiymat yuborish uchun funksiya chaqirilayotgan joyga funksiya qavslari ichiga yuborilishi kerak bo’lgan qiymatlar joylashtiriladi. Masalan: int funk(int a, int b){ return a+b; } Int main(){ Cout< } Konsolda: 11; 42. Modulli dasturlash (modularizing code). Modulli dasturlash bu dasturni har xil modullarga ajratishdir. Masalan dasturinggizni har bir ishini alohida funksiyalar bajaradigan qilib yozish dasturni modullarga ajratishga misol bo’ladi, yoki Dasturni har xil qismlarga ajratib chiqish ham. 43. Funksiyalarni qayta yuklash (overloading funkstions). Funksiyani e’lon qilishda bir vaqtning o’zida ikkta har xil o’zgaruvchi qaytaruvchi yoki argumentlari har xil bo’lgan ammo ismlari bir xil qilib e’lon qilish mumkin. Funksiya qiymat qaytaradigan qismiga yana o’sha funksiyani chaqirish funksiyani qayta yuklash deyiladi. 44. Funksiya prototiplari (function prototypes, function implementation). Funksiya prototipi funksiyani bajarilmagan holda e’lon qiladi. Bilamizki, funksiya chaqirilishidan oldin uning bosh qismi e’lon qilingan bo`lishi kerak. Buning buning yana bir yo`li – barcha funksiyalarning chaqirilishlaridan oldin e’lonni joylashtirishdir. Boshqacha qilib aytganda, funksiya chaqirilishidan oldin uning prototipini e’lon qilish. Shuningdek, funksiya prototipi funksiya e’loni deb ham yuritiladi, ya’ni, tana qismga ega bo`lmagan bosh qism sifatida qaraladi. Funksiyaning to`liq qo`llanilishi esa, keyinroq, dasturda tarkibida beriladi. Prototipda parametrlar nomlari emas, faqatgina parametrlar turlari kerakli. C++ kompilyatori parameter nomlarini inobatga olmaydi. Prototip kompilyatorga funksiya nomi, u qaytaruvchi turi, parametrlar soni va har bir parametrlarning turlari haqida ma’lumot beradi. Funksiyani e’lon qilish deganda uning amalga hisoblashga ega bo`lmagan, faqat bosh qismi tushunilsa, funksiyaning aniqlanishi deganda hisoblashlarni amalga oshirish orqali fuksiyani amalga oshiruvchi funksiya tanasi tushuniladi. 45. “Jimlik holati” argumnetlari (default arguments). Funksiya tarkibidagi parametrlarga jimlik qoidasi qiymatlarini ta’minlash mumkin. C++ funksiyalarni e’lon qilishda uning parametrlarini jimlik qoidasi bo`yicha qiymatlar bilan ta’minlashga ruxsat beradi. Funksiyalarga jimlik qoidasi qiymatlari funksiya argumentlarsiz chaqirilganda ta’minlanadi. Funksiya jimlik qiymatiga ega bo`lgan va ega bo`lmagan parametrlardan tashkil topganda, jimlik qiymatiga ega bo`lgan parametrlar oxirida e’lon qilinishi kerak. 46. Lokal va global o‘zgaruvchilar (local and global variables). Lokal o’zgaruvchilar dasturda biror funksiyani ichida e’lon qilingan o’zgaruvchilar ular faqat funksiya ichida taniladi va boshqa funksiyalar ularni taanimaydi. Global o’zgaruvchilar dastur kodi yozilishida tashqarida e’lon qilingan o’zgaruvchidir (hech qanday funksiya ichida emas) va bu o’zgaruvchi dasturning butun qismida taniladi. 47. Argumentlarni havolalar orqali uzatish (passing arguments by reference). O'zgarish qiymati ko'p hollarda mos bo'lsa ham, bir nechta cheklovlarga ega. Birinchidan, biror funktsiyaga katta struktura yoki klassni o'tkazishda, qiymat bo'yicha o'tish argumentning nusxasini funktsiya parametriga o'tkazadi. Ko'p hollarda, bu keraksiz ishlash demakdir, chunki asl o’zgaruvchi etarli edi. Ikkinchidan, argumentlarni qiymat bo'yicha uzatish paytida, chaqirilgan joyga qiymatni qaytarishning yagona usuli - funktsiyaning return qiymati orqali. Ko'pincha bu mos bo'lsa-da, argumentni o'zgartirish funktsiyasi aniqroq va samaraliroq bo'lishi mumkin bo'lgan holatlar mavjud. O'zgaruvchini havola oraqli uzatish uchun, biz oddiy parametrlarga emas, balki parametrlar parametrlariga murojaat qilamiz. 1 2 3 4 void addOne(int &ref) // ref is a reference variable { ref = ref + 1; } Funktsiya chaqirilganda, ref argumentga havola bo'ladi. O'zgaruvchiga havola o'zgaruvchining o'zi bilan bir xil bo'lganligi sababli, havolaga kiritilgan har qanday o'zgartirish argumentga o'tkaziladi! Quyidagi misol buni amalda ko'rsatmoqda: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 void addOne(int &ref) { ref = ref + 1; } int main() { int value = 5; cout << "value = " << value << '\n'; addOne(value); cout << "value = " << value << '\n'; return 0; } Ushbu dastur qiymati havola orqali o'tish uchun ishlatgan dasturimiz bilan bir xil, ammo &ref parametri bundan mustasno, endi oddiy o'zgaruvchining o'rniga havola mavjud. AddOne (value) deb chaqirganinggizda, ref asosiyning o'zgaruvchisiga mos keladi.Ushbu parcha quyidagi ma’lumotni chiqaradi chiqaradi: Value = 5 Value = 6 Download 422.12 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling