"Dasturlash I" fanidan yakuniy nazorat savollari


Download 422.12 Kb.
Pdf ko'rish
bet2/3
Sana15.03.2023
Hajmi422.12 Kb.
#1269287
1   2   3
Bog'liq
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<Return 0; 

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. 




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: 









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:
1   2   3




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