"Dasturlash I" fanidan yakuniy nazorat savollari


Download 372.68 Kb.
bet3/4
Sana05.06.2020
Hajmi372.68 Kb.
#114940
1   2   3   4
Bog'liq
Dasturlash I fanidan yakuniy nazorat savollari


  1. Belgilar ustida sonli va munosabat amallari (belgilar ustida sonli hisoblash amallari, belgilarni taqqoslash va tekshirish);

Belgilar ustida sonli amallar – Bunaqa amallarga belgilarni bir-biriga qo’shish ASCII kodidagi raqamiga qarab ish yuritish kabilar kiradi. Bir necha belgilar ketma-ketligi satr deb ataladi. Satrlar ustida ham sonli amallar bajarilishi mumkin.Satrlarni bir biriga qo’shish mumkin.Belgilar ustida Munosabat amallari – Bunaqa amallarga belgilarni taqqoslash (Masalan: A

  1. Satrli ma’lumot turi, satr funksiyalari (string turi uchun qo‘llaniluvchi nusxa funksiyalar, at(index), length(), size());

Satrli ma’lumot turi – Bu string turidir bunda bir necha belgilar ketma – ketligi orqali satr hosil bo’ladi.string Satr = “So’zlar “;string ma’lumot turidan foydalanish uchun kutubxonasini chaqirish kerak;

string turi uchun asosiy funksiyalar:



Funksiya

Qo`llanilishi

length()

Satrdagi belgilar sonini qaytaradi

size()

length() bilan bir xil vazifa bajaradi

at(index)

Ushbu satrda joylashgan maxsus indeksdagi belgini qaytaradi




  1. Satrdan belgini ajratib olish. Satrlarni qo‘shish (subscript operator, string concatenation);

C++ ikki satrni birlashtirish uchun + operatorini taqdim etadi. Quyida keltirilgan misolda s1 va s2 satrlarini birlashtirib, s3 satriga ta’minlanishini ko`rish mumkin: string s3 = s1 + s2;

O`rnatilgan qoidali ta’minlash operatorini ham satrlarni birlashtirishda qo`llash mumkin. Masalan, quyidagi kod xabar nomli, “C++ ga xush kelibsiz!” qiymatga ega bo`lgan satrga “ va dasturlash – qiziqarli” satrini qo`shib ta’minlaydi:

xabar += “ va dasturlash – qiziqarli”;

Bunda xabar ning yangi qiymati “C++ ga xush kelibsiz va dasturlash – qiziqarli” ga teng bo`ladi. Shuningdek, satrga belgini ham qo`shib ta’minlashimiz mumkin:

string s = "ABC";

s += 'D';

Yangi s ning qiymati – “ABCD”.

Eslatma. Yangi satrga ikkita satrli ma’lumotni qo`shib ta’minlash xato hisoblanadi. Masalan quyidagi kabi:

string shaharlar = "London" + "Parij";

Quyida berilgan kod esa to`g`ri, chunki bunda avvaldan qiymatga ega s satriga “London” satri va keyin “Parij” satri qo`shilyapti.

string s = "Nyu York";

string shaharlar = s + "London" + "Parij";

32.Satrlarni taqqoslash. Satrni klaviaturadan o‘qish (comparing strings, read a string);Satrlarni taqqoslashda satrdagi belgilar ketma – ketlikda taqqoslanadi. Misol uchun :

string s1 = "ABC";

string s2 = "ABE";
s1 > s2 holatni ko`rib chiqamiz. Dastlab s1 va s2 lardan birinchibelgilar (A bilan A)ning tengligi tekshiriladi. Tenglik o`rinli. Keyin ikkinchi belgilar (B bilan B) ning tengligi tekshiriladi. Tenglik o`rinli. Keyingi qadamda ikkinchi belgilar (C bilan E) ning tengligi tekshiriladi. Tenglik 0 qiymat qaytaradi. Chunki, C belgisi E belgisidan kichik.
Satr ma’lumotni klaviatura orqali, cin ob’yektini qo`llagan holda o`qishi mumkin. Misol sifatida quyidagi kodni ko`rishimiz mumkin:

1 string shahar;

2 cout << "Shaharni kiriting: ";

3 cin >> shahar; // shahar satrini o`qish

4 cout << "Sizning kiritgan satringiz: " << shahar << endl;

Uchinchi satrda shahar ga satrli ma’lumot klaviatura orqali o`qiladi. Satrni o`qish uchun bunday yo`l tutish oson. Lekin bu yerda bir muammo bor. Kiritish bo`sh joyli belgi bilan tugaydi. Agar biz Nyu York satrini kiritmoqchi bo`lsak, boshqa bir alternative yo`lni tanlashimiz kerak. C++ string kutubxona faylida getline funksiyasini taqdim qiladi. Uning yozilish sintaksisi quyidagicha:

getline(cin, s, belginingDelimitlanishi)

Bunda funksiya belgining delimitlanishiga kelganda o`qishni to`xtatadi. Belgini delimitlovchi o`qiladi, ammo satrga yozilmaydi. Uchinchi argument, belginiDelimitlovchi‘\n’asl holatqiymati (default value)ga ega.

Quyidagi kodda satrni o`qish uchun ge


  1. Satrli ma’lumotni konsol oynaga chiqarilishini formatlash (format console output);

Oqim manipulyatorlaridan foydalanib, ekranda chiqarilishni formatlash mumkin.

Biz ko`p hollarda ko`ramizki, sonlar konsol oynada aniq qiymatda chiqariladi. Masalan, quyidagi dastur kodi omonatdan tushgan daromadni hisoblaydi:

double daromad = 12618.98;

double omonatUlushi = 0.0013;

double omonatFoyda = daromad * omonatUlushi;

cout << " omonatFoyda = " << omonatFoyda << endl;



omonatFoyda = 16.4047

Bu qiymatni yaxlitlab chiqarish mumkin. Buning uchun quyidagicha yo`l tutish lozim:

double daromad = 12618.98;

double omonatUlushi = 0.0013;

double omonatFoyda = daromad * omonatUlushi;

cout <<" omonatFoyda = " << static_cast( omonatFoyda * 100) / 100.0 << endl;


omonatFoyda = 16.4

Aslida bu noto`g`ri, chunki unda qo`zg`aluvchi nuqtadan keyin ikkita raqam bo`lishi kerak (M.: 16.40). Buni formatlash funksiyalari yordamida quyidagi kabi to`grilash mumkin:

double daromad = 12618.98;

double omonatUlushi = 0.0013;

double omonatFoyda = daromad * omonatUlushi;

cout <<" omonatFoyda = " << fixed << setprecision(2) << omonatFoyda << endl;


omonatFoyda = 16.40

Biz konsol oynaga ma’lumotlarni cout ob’yektidan foydalanib chiqarishni juda yaxshi bilamiz. C++ da oynaga chiqarishni formatlovchi funksiyalar ishlab chiqilgan. Bu funksiyalar oqim manipulyatorlari deb ataladi va iomanip kutubxonasini chaqirish orqali qo`llaniladi.

  1. Fayldan kiritish (stream manipulator,reading from a file);

Dasturlashda ma’lumotni faylga saqlash va keyin ma’lumotni fayldan o`qish mumkin.Shu vaqtgacha biz ma’lumotlarni kiritish uchun ci nob oyektidan, konsol oynaga chiqarish uchun esa cout ob’yektidan foydalanib kelganmiz. Bundan tashqari, ma’lumotni fayldan o`qish va uni faylga yozish imkoniyati ham bor. Faylga yozish ma’lumotni faylga yozish uchun birinchi navbatda ofstream turida o`zgaruvchini e’lon qilib olish kerak:

ofstream chiqarish;

chiqarish ob’yektidan maxsus open funksiyasini quyidagicha tartibda chaqirib olamiz:

chiqarish.open("sonlar.txt");

Bu ko`rsatma satri sonlar.txt deb nomlangan fayl yaratadi. Agar bunday fayl tarkibda avvalroq yaratilgan bo`lsa, uni qayta quradi va yangisi bilan almashtiradi. open funksiyasining chaqirilishi faylni oqim bilan bog`laydi.

Optimal holatda, bir vaqtning o`zida chiqarish ob’yektining faylini yaratish va o`sha faylni ochish quyidagi ko`rsatma satri orqali amalga oshiriladi:

ofstream chiqarish("sonlar.txt");

Faylga ma’lumot yozish uchun xuddi cout ob’yekti kabi “<<” – oqim operatoridan foydalaniladi:

Fayl bilan bog`liq operatsiyalar bajarib bo`lingandan so`ng chiqarish ob’yektidan close funksiyasi chaqirib olinadi.

chiqarish.close();




  1. Faylga chiqarish (stream manipulator, writing to a file);

Ma’lumotni faylga yozish uchun birinchi navbatda ifstream turida o`zgaruvchini e’lon qilib olish kerak:

ifstream kiritish;

kiritish ob’yektidan maxsus open funksiyasini quyidagicha tartibda chaqirib olamiz:

kiritish.open("sonlar.txt");

Bu ko`rsatma satri sonlar.txt deb nomlangan faylni ochadi. Agar bunday fayl tarkibda avval yaratilmagan bo`lsa xatolik berishi mumkin.

Optimal holatda, bir vaqtning o`zida kiritish ob’yektining faylini yaratish va o`sha faylni ochish quyidagi ko`rsatma satri orqali amalga oshiriladi:

ofstream kiritish("sonlar.txt");

Fayldan ma’lumotni o`qish uchun xuddi cin ob’yekti kabi “>>” – oqim operatoridan foydalaniladi:

kiritish >> score1;

kiritish >> score2;

kiritish >> score3;

yoki kiritish >> score1 >> score2 >> score3;

Fayl bilan bog`liq operatsiyalar bajarib bo`lingandan so`ng kiritish ob’yektidan close funksiyasi chaqirib olinadi. kiritish.close();


  1. while sikl operatori (while sikli, sikl tanasi, iteratsiya, sikl sharti);

while sikl operatori o`zining shart qismi rost qiymat qabul qilganda tana qismidagi ko`rsatmalarni bajaradi.

while sikl operatorining sintaksisi quyidagiicha:

while (sikl davom etish sharti)

{

// sikl tanasi



Ko`rsatmalar (s);

}

While siklining blok-sxemasi berilgan. “Sikl tanasi” deb nomlanuvchi sikl bloki takrorlanuvchi ko`rsatma satrlaridan tashkil topgan. Sikl tanasining bir marta bajarilishi siklning iteratsiyasini (yoxud takrorlanishini) anglatadi. Har qanday sikl tana qismining bajarilishini nazorat qiluvchi siklning-davom-etish-sharti – mantiqiy ifodadan tashkil topadi.Bu mantiqiy ifoda har safar sikl tanasining hisoblanishi uchun ishga tushiriladi. Agar u true qiymat qabul qilsa, tana qismi bajariladi; Agar u false qiymat qabul qilsa, butun boshli sikl operatorining ishi to`xtatiladi va dastur o`sha vaqtdagisiklning tana qismini bajarlmaydi.



While sikl operatori siklning-davom-etish-sharti true qiymat qabul qilganda sikl tanasida ko`rsatilgan ko`rsatma satrlarini takroran bajaradi.Siklning-davom-etish-sharti har doim qavslar orasiga olib yozilishi lozim. Siklning tana qismini ifodalovchi figurali qavslar esa, sikl tanasi faqat bitta ko`rsatma satridan iborat bo`lganda turshirib qoldirilishi mumkin. Siklning-davom-etish-sharti u false qiymat qabul qilgunga qadar aniq bajariladi. Dasturlashda ko`p uchraydigan xatoliklardan biri – cheksiz sikllar(bunda sikl tugatilmasdan, sikl tanasidagi ko`rsatma satrlari bajarilaveradi).Agar dasturingiz odatdagidan ko`proq vaqt davomida bajarilish jarayoni (run time)da qolsa va to`xtamasa, unda cheksiz sikl yozilgan bo`lishi mumkin. Agar dastur komanda oynasida ishga tushirilgan bo`lsa, uni Ctrl+C– tugmalar kombinatsiyasi orqali to`xtatish mumkin.

  1. While siklini tashkil etish strategiyasi (step1, step2, step3);

Dasturchilar uchun siklni to`g`ri yozish oson masala emas. Sikl yozishda uchta bosqich ko`rib chiqiladi:

1-bosqich: Takrorlanishi lozim bo`lgan ko`rsatma satrlarini belgilab olish;

2-bosqich: Ko`rsatma satrlarini quyidagi ko`rinishda sikl tanasiga biriktirish:

while (true)

{

Ko`rsatma satrlari;



}

3-bosqich: Sikl-davomiyligi-sharti ni kiritib, siklni nazorat qiluvchi qo`shimcha korsatma satrlarini kiritish:

while (Sikl-davomiyligi-sharti)

{

Ko`rsatma satrlari;



siklni nazorat qiluvchi qo`shimcha korsatma satrlari;

}


  1. Foydalanuvchi tasdig‘iga yoki nazoratchi o‘zgaruvchi qiymatiga ko‘ra while siklini tashkil etish (controlling a loop with user confirmation, controlling a loop with a sentinel value).

Siklni boshqarishniing ko`p tarqalgan usullaridan yana biri – o`qish va qiymat ta’minlash jarayonlarida maxsus qiymatni tayinlashdir. Bu maxsus kiritiluvchi qiymat “Nazoratchi qiymat” nomini olgan bo`lib, kiritishlarning so`ngida belgilanadi. Nazoratchi qiymat qo`llanilgan sikl “Nazoratchi qiymat orqali boshqariluvchi sikl” deb yuritiladi.

Quyida keltirilgan namunada, agar biz ko`p qiymatlar kiritishimiz kerak bo`lsa, bu qiymatlarni klaviaturadan kiritish anchayin malol keladi. Buning uchun oddiy matnli faylda qiymatlarni bo`shliqlar bilan ajratib kiritib olishimiz va dasturni quyidagicha kod orqali ishga tushirishimiz mumkin:

NazoratchiQiymat.exe < kiritish.txt

Bu ko`rsatma kiritishni qayta yo`naltirish deb yuritiladi. Dastur qiymatlarni klaviaturdan kiritishga qaraganda biroz qulayroq bo`lgan – qiymatlarni “kiritish.txt” faylidan kiritish imkonini beradi.



  1. do-while sikl operatori (do-sikli, sikl tanasi, iteratsiya, sikl sharti).

do-while – sikl operatori ham while – sikl operatoriga o`xshaydi, farqli tomoni, u birinchi sikl tanasini hisoblaydi, keyin shartni tekshiradi.do-while – sikl operatorining tuzilishi while – sikl operatorining tuzilishidan farq qiladi. Uning snintaksisi quyidagicha:

do


{

// Sikl tanasi;

Ko`rsatmalar(s);

} while (siklni-davom-ettirish-sharti);

do-while – sikl operatori birinchi sikl tanasini hisoblaydi, keyin hisoblashni davom ettirish yoki to`xtatish uchun shartli ifodani tekshiradi.do-while – sikl operatori birinchi sikl tanasini hisoblaydi. Keyin esa siklni-davom-ettirish-sharti tekshiriladi. Agar shartning qiymati true bo`lsa, sikl tanasi yana hisoblanadi; aks holda, sikl ishi to`xtatiladi.


  1. Ichma-ich sikl operatorlari (nested loop).

Sikl boshqa bir sikl tarkibida kelishi mumkin.

Ichma-ich sikl operatorlari tashki sikl operatori va bir, yoki bir nechta ichki sikl operatorlaridan tashkil topadi. Har safar tashqi sikl bir marta bakarilganda, ichki sikl to`liq bajariladi va ularga yangidan start beriladi.



  1. break va continue kalit so‘zlari (keywords break and continue).

break va continue – kalit so`zlari siklda qo`shimcha boshqaruv imkoniyatlarini taqdim etadi.Avvalroq break kalit so`zini switch operatorida qo`llashni ko`rganmiz. Bundan tashqari, break ni sikl tarkibida ham, siklni darhol to`xtatish uchun qo`llashimiz mumkin. Shuningdek, sikl tarkibida continue ni ham qo`llash mumkin. Bunda hisoblash bajarilgandan so`ng, sikl boshqaruvi, sikl tanasining tugash qismiga yuboriladi. Boshqacha qilib aytganda, break sikl ishini to`xtatsa, continue sikl davomiyligini to`xtatadi.

  1. Funksiyaning aniqlanishi (funksiyaning aniqlanishi, qiymat qaytaruvchi funksiya, void funksiya).

Funksiya qiymat qaytarishi mumkin. Qaytariluvchi qiymat turi – bu o`sha qaytariluvchi qiymatning ma’lumot turi. Ba’zi hollarda funksiya tomonidan qiymat qaytarmasligi talab qilinadi. Bundan hollarda qaytariluvchi qiymat turi void – kalit so`zi orqali ifodalanadi. Misol uchun, qaytariluvchi qiymat turi srand funksiyasida void hisoblanadi. Bajarilishdan so`ng qiymat qaytaruvchi funksiyalar qiymat qaytaruvchi funksiyalar, qiymat qaytarmaydigan funksiyalar esa, void funksiyalar deb ataladi. Funksiya tarkibida e’lon qilingan o`zgaruvchilarni formal parametrlar yoki oddiy qilib, parametrlar deb atash mumkin. Parametr o`rin egallovchiga o`xshaydi. Funksiya chaqirilganda parametrlarga qiymat kiritamiz. Bu qiymat faol parametr yoki argument sifatida kiritiladi. Funksiyaning parametrlar ro`yxati turni, tartibni va funksiyadagi parametrlar sonini ifodalaydi. Funksiya nomi va parametrlar ro`yxati birgalikda funksiya bosh qismi ni tashkil etadi. Funksiyada parametrlarni ishlatish majburiy emas, funksiya parametrlarga ega bo`lmasligi ham mumkin.


  1. 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.

  1. 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;



  1. 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.

  1. 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.



  1. 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.



  1. “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.

  1. 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.



  1. 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


  1. Konstanta havola parametrlari (constant reference parameter).


Download 372.68 Kb.

Do'stlaringiz bilan baham:
1   2   3   4




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