O’zbekiston Respublikasi Axborot Texnologiyalari va Kommunikatsiyalarini Rivojlantirish Vazirligi Muhammad al-Xorazmiy nomidagi Toshkent Axborot Texnologiyalari Universiteti Mustaqil ish Mavzu



Download 202,81 Kb.
bet5/6
Sana21.01.2022
Hajmi202,81 Kb.
#395629
1   2   3   4   5   6
Bog'liq
9-var(M ish)Dasturlash

2.3. C++ da for tsikli
Salom aziz o'quvchilar! Looplar har qanday dasturlash tilining ajralmas qismidir. Ular bizga qo'lda qilish juda qiyin bo'lgan juda ko'p sonli muntazam operatsiyalarni bajarishga imkon beradi. Bu tsikllarning asosiy "jozibasi".
C++ da uch turdagi tsikllar mavjud:

  • for

  • while

  • do while

Ushbu maqolada asosiy e'tibor for tsikliga qaratiladi.


For tsikli qanday ishlaydi?

For tsikli bir xil amallarni ketma-ket, ma'lum bir necha marta bajaradi. Masalan, u Salom, dunyo! Ming marta chop etadi.


Keling, for tsiklining tuzilishini ko'rib chiqaylik:
for (; ; ) {

}
Endi for loop sintaksisini batafsil ko'rib chiqamiz:


- bu erda siz o'zgaruvchini (loop hisoblagich) yaratishingiz va uning boshlang'ich qiymatini belgilashingiz kerak. Bu buyruq siklni boshlashdan oldin bajariladi;

- bu if operatorining shartiga o'xshaydi. Biz mantiqiy ifodani ko'rsatishimiz kerak, agar rost bo'lsa, tsikl ishlaydi;

- bu ko'rsatma har bir takrorlash oxirida bajariladi, sikl hisoblagichi yangi qiymatga o'tkaziladi;

- bu yerda biz siklning har bir iteratsiyasida bajariladigan kodni belgilaymiz.

Ehtimol, sizda hali ham savollaringiz bor, shuning uchun bitta oddiy dasturni ko'rib chiqaylik.


For tsikli qanday ishlashiga misol

Quyidagi dastur 1 dan N gacha bo'lgan sonlarning ko'paytmasini topadi (faktorial):


#include

#include

Using namespace std;

int main () {

int n; // n o'zgaruvchisini yarating

cout << "N ="; // xabarni ko'rsatish cin >> n; // qiymatni o'qing

int res = 1; // res o'zgaruvchisini yarating

// unda biz sikl natijasini saqlaymiz

for (int i = 1; i <= n; i ++) // for tsikli

res * = i; // ilgari olingan qiymatni i ga ko'paytiring

cout << "RES =" << res << endl; // dastur natijasini ko'rsatish

qaytish 0;

}

Bu dasturning mumkin bo'lgan natijalaridan biri:



Endi kodni tahlil qilishni boshlaymiz:
6-qator: biz n o'zgaruvchisini yaratamiz. Kelajakda biz uni tsiklning holatida ishlatamiz.

10-qator: bizga tsikl natijasini saqlaydigan o'zgaruvchi kerak. Shuning uchun biz res o'zgaruvchisini yaratamiz.

11-qator: Endi biz for tsikliga o'tamiz. Keling, bu erda batafsilroq ko'rib chiqaylik:

i o'zgaruvchisi hisoblagich sifatida ishlatiladi. Biz darhol uni 1 ga qo'ydik (aslida ikkitadan boshlash mumkin edi, chunki 1 ga ko'paytirish mantiqiy emas);

siklning bajarilishi sharti bo'sh tengsizlikdir. i n dan kichik yoki teng bo'lganda sikl ishlaydi;

har bir iteratsiyadan so'ng biz hisoblagich qiymatini bittaga oshiramiz (ko'paytirish operatsiyasi). Bu quyidagi belgiga ekvivalent: i = i + 1.

14-qator: Dastur natijasini foydalanuvchi ekranida ko'rsatamiz.

Ushbu misol looplarning imkoniyatlarini aniq ko'rsatadi. Biroq, keling, for tsiklining moslashuvchanligini aniq ko'rsatadigan yana bir variantini ko'rib chiqaylik:


int a, b;

for (a = 140, b = 1742; a! = b;) {

if (a> b)

a - = b;


else

b - = a;


}
cout << a;

1

2

3



4

5

6



7

8

9



int a, b;

for (a = 140, b = 1742; a != b; ) {

    if (a > b)

        a -= b;

    else

        b -= a;

}

 

cout << a;


Ushbu dastur GCD ni topish algoritmini amalga oshirishdir. Keling, uning ishini tahlil qilmaylik, faqat ushbu kodning xususiyatlarini ko'rib chiqaylik:


bir vaqtning o'zida bir nechta o'zgaruvchilarni hisoblagich sifatida ko'rsatish mumkin. Shuningdek, ular to'g'ridan-to'g'ri blokning o'zida e'lon qilinishi shart emas;

bloklarning har biri (ulardan 3 tasi bor) butunlay yo'q bo'lishi mumkin. Mana cheksiz tsikl qanday ishlashiga yaxshi misol:

for (;;) {}

1

for (;;) {}


Ushbu kod foydalanuvchi dasturdan majburan chiqmaguncha bajariladi.

Ko'pincha siz for tsiklining faqat bitta variantidan foydalanishingiz kerak bo'ladi. Biroq, agar siz aniq vazifalarni bajarishingiz kerak bo'lsa, unda siz o'zingizning xohishingizga ko'ra for tsiklini nozik sozlashingiz mumkin.


Mumkin bo'lgan xatolar

Tsikl bir vaqtning o'zida ish uchun juda qulay vositadir, lekin ayni paytda u ko'plab yashirin tahdidlar bilan to'la. Tajribasiz koderlar xatoliklarga yo'l qo'yishi mumkin, chunki dastur muvaffaqiyatli kompilyatsiya qilinadi va ishlay boshlaydi.

Segfault

Ushbu xatoning sabablari ko'p. Siz bu haqda ko'proq Vikipediyada o'qishingiz mumkin. Looplar bilan ishlashda u quyidagicha paydo bo'lishi mumkin:


for (int i; i <10; i ++) {

}

1



2

3

for (int i; i <10; i ++) {



}

Bu yerda menga qiymat berilmaganini payqagandirsiz. Dastlab, o'zgaruvchida "axlat" mavjud (siz nima haqida gapirayotganimni tushunish uchun ekranda bunday axlatni ko'rsatishingiz mumkin). Tabiiyki, axlatga hech narsa qo'shib bo'lmaydi - dastur buziladi. O'zingiz yaratgan o'zgaruvchilarni har doim nolga tushirishni odat qilishga harakat qiling. Bu o'z dasturlaringizni yozishda sizni katta miqdordagi qiyinchiliklardan xalos qiladi. Ba'zi kompilyatorlar o'zgaruvchilar yaratilganda ularni nolga qo'yadi. Masalan, gcc kompilyatori buni amalga oshiradi.


Cheksiz tsikl

Ushbu xato ko'pincha noto'g'ri holat yoki tsikldagi hisoblagich qiymatining o'zgarishi tufayli yuzaga keladi.


Keling, oddiy misolni ko'rib chiqaylik:


1

2

3



for (int i = 0; i < 10; i++) {

    r += --i;

}


Xulosa

Men bu mustaqil ishni bajarish davomida Bizning holatlarimizda u nolga tenglashtiriladi. Boshlashdan keyin nuqta-vergul qo'yiladi; ... Keyin shartni qo'yamiz: i <500 (demak, i 500 dan kichik bo'lsa, tsikl tanasidagi kod takrorlanadi) va yana nuqta-vergul; ... Aynan shu dasturga siklning tanasi qancha vaqt bajarilishini "aytib beradi" (jingalak qavslardagi kod {}). Nihoyat, biz tsiklning har bir bosqichida men qanday o'zgarishini ko'rsatamiz (bizda postfiks o'sishidan foydalanib, bittaga ko'payamiz). Qavslar ichida nima borligini bitta jumlada tasvirlab bersangiz, buyruq shunday eshitiladi - i o'zgaruvchisi besh yuzdan kam bo'lganda sikl tanasini bajaring, tsiklning har bir bosqichida i ni birdan oshiring. Loop qadami iteratsiya deb ham ataladi. Hisoblagich o'zgaruvchisi esa nazorat o'zgaruvchisidir, chunki u iteratsiyalar sonini boshqaradi. Keling, misolimizdan tsiklning bir necha bosqichlarini aniqlik uchun tahlil qilaylik. Siqnalning birinchi iteratsiyasida boshqaruv o'zgaruvchisi 0 ga teng. Shuning uchun birlikni ko'rsatish uchun i + 1 (0 + 1) ifodasidan foydalanamiz. Siklning tanasi bajarilganda boshqaruv o'zgaruvchisi i for operatoridan keyin qavs ichida () ko'rsatganimizdek o'zgartiriladi (ko'paytiriladi) - ya'ni bittaga teng bo'ladi. Ikkinchi iteratsiya shartni tekshirish bilan boshlanadi (bizda i <500). Agar i haqiqatdan <500 bo'lsa, tsikl tanasining bajarilishi takrorlanadi - ekranda yana i + 1 ko'rsatiladi, bu 1 + 1 ga ekvivalent, ya'ni 2. Boshqarish o'zgaruvchisi bo'lganda tsikl oxirgi marta bajariladi. 499 ga teng va ekranda i + 1 (499 + 1) qiymati ko'rsatiladi. Shundan so'ng uning qiymati yana bittaga ortadi, lekin siklni takrorlash sharti endi bajarilmaydi, chunki i (500) 500 dan kam emas. sikl tugagandan so'ng, dastur keyingi qatorni bajarishga o'tadi. halqa tanasining yopilish} jingalak qavsdan keyin joylashgan kod. Dasturni ishga tushirish orqali dastur natijasini o'zingiz ko'ring.



Download 202,81 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish