8-dars: Ichma-ich sikllar
2-blokQarorlar va takrorlash5–8 darslar
Bu darsdan keyin siz
- ichma-ich sikl yozib, ikki o’lchamli naqsh chiqarasiz
- qadamlar soni ko’paytma bo’lishini hisoblaysiz
- ichki va tashqi sikl hisoblagichlarini adashtirmaysiz
Nazariya
“Nazariya” bo'limiga havolaSikl ichidagi sikl
“Sikl ichidagi sikl” bo'limiga havolaTashqi sikl bir marta aylanganda, ichki sikl to’liq aylanib chiqadi. Shu sababli jami qadam soni ikkisining ko’paytmasiga teng.
ichma-ich siklnested loop
Bir siklning tanasi ichida turgan boshqa sikl. Har tashqi iteratsiyada ichki sikl boshidan oxirigacha ishlaydi.
for i in range(1, 4): for j in range(1, 4): print(i * j, end=" ") print()Bu kod uch qatorli jadval chiqaradi. end=" " sonlarni bir qatorda qoldiradi,
oxirgi print() esa qatorni yopadi — u ichki sikldan tashqarida, lekin tashqi
sikl ichida.
Tezlik hissi
“Tezlik hissi” bo'limiga havola3×3 — 9 qadam, buni odam ham hisoblaydi. 100×100 — 10 000 qadam, kompyuter uchun bir lahza. 10 000×10 000 esa 100 million qadam — bu allaqachon seziladigan kutish.
Bu savolni chuqur o’rganish — Algorithms moduli ishi. Bu darsda faqat hissiyot kerak: ko’paytma tez o’sadi.
Ikki hisoblagichni adashtirmaslik
“Ikki hisoblagichni adashtirmaslik” bo'limiga havolaTashqi hisoblagich odatda i, ichki j deb nomlanadi. Lekin ma’noli nom yaxshiroq:
qator va ustun. Ichki siklda tashqi hisoblagichni o’zgartirish — chalkashlikning
eng tez yo’li, shuning uchun bunday qilinmaydi.
Bashorat qiling
“Bashorat qiling” bo'limiga havolaAvval o'ylang: bu kod nima chiqaradi? Ishga tushirishdan oldin yozing.
for i in range(2): for j in range(3): print(i, j)Haqiqiy natija:
0 0 0 1 0 2 1 0 1 1 1 2
Tashqi sikl 2 marta, ichki 3 marta — jami 6 qator. Ichki hisoblagich har tashqi aylanishda 0 dan qayta boshlanadi.
Javobni ko'rish
0 0 0 1 0 2 1 0 1 1 1 2
Tashqi sikl 2 marta, ichki 3 marta — jami 6 qator. Ichki hisoblagich har tashqi aylanishda 0 dan qayta boshlanadi.
Avval o'ylang: bu kod nima chiqaradi? Ishga tushirishdan oldin yozing.
qadam = 0for i in range(4): for j in range(5): qadam = qadam + 1print(qadam)Haqiqiy natija:
20
4 × 5 = 20. Hisoblagich ichki siklning eng ichida turgani uchun har katak sanaladi.
Javobni ko'rish
20
4 × 5 = 20. Hisoblagich ichki siklning eng ichida turgani uchun har katak sanaladi.
Sinab ko’r
“Sinab ko’r” bo'limiga havolaO’lchamni suring va kataklar qanday tartibda to’lishini kuzating. «jami qadam» hisoblagichi o’lchamni oshirganda qanday o’sishiga e’tibor bering.
Jadval chizuvchi
O'lchamni suring va ichma-ich sikl kataklarni qanday to'ldirishini kuzating.
Bu simulyatorda ichma-ich sikl ko'paytirish jadvalini to'ldiradi: tashqi sikl qatorni tanlaydi, ichki sikl esa o'sha qatorning barcha kataklarini bosib o'tadi. Qadam hisoblagichi tashqi va ichki sikl ko'paytmasini ko'rsatadi.
JavaScript'siz sinash: 3×3 jadvalni daftarga chizib, kataklarni qaysi tartibda to'ldirganingizni raqamlab chiqing. 9 qadam bo'ladi. Keyin 10×10 uchun necha qadam kerakligini hisoblang.
for i in range(1, n + 1):
for j in range(1, n + 1):
print(i * j, end=" ")
print()«Bitta qadam» yoki «Oxirigacha» bilan boshlang.
Xatoni toping
“Xatoni toping” bo'limiga havolaBu kod ataylab buzuq — xatoni toping
for i in range(1, 4): for j in range(1, 4): print(i * j, end=" ") print()Python shunday javob beradi:
1 2 3 2 4 6 3 6 9 (kutilgan uch qatorli jadval o'rniga to'qqiz qator)
Sababi va tuzatish
Oxirgi print() ichki sikl ICHIDA qolib ketgan — har sondan keyin qator yopilyapti. Natijada jadval emas, ustun chiqadi.
To’g’risi: oxirgi print() ni bir daraja chapga surish — u ichki sikldan chiqib,
tashqi sikl ichida qolishi kerak. Python xato bermaydi, chunki kod sintaktik
to’g’ri; xato faqat natijada ko’rinadi.
O’zingizni sinang
“O’zingizni sinang” bo'limiga havola1Tashqi sikl 5 marta, ichki sikl 4 marta aylansa, jami necha qadam bo'ladi?
Javobni ko'rish
20 qadam. Ichma-ich sikllar qo’shilmaydi, ko’paytiriladi.
2Ichki siklning hisoblagichi har tashqi aylanishda nima bo'ladi?
Javobni ko'rish
Boshidan qayta boshlanadi. range har tashqi iteratsiyada yangidan
yaratiladi.
3print(i * j, end=' ') dagi end nima qiladi?
Javobni ko'rish
Chiqarishdan keyin qator yopilmaydi, o’rniga bo’shliq qo’yiladi — sonlar bitta qatorda ketma-ket chiqadi.
4O'lchamni 10 dan 20 ga oshirsangiz, ichma-ich sikl qadamlari qancha ko'payadi?
Javobni ko'rish
To’rt barobar: 100 dan 400 ga. Har o’lchamning ikki barobar oshishi ko’paytmani to’rt barobar oshiradi.
5Jadvalni yopadigan print() ni qaysi darajaga qo'yish kerak va nega?
Javobni ko'rish
Ichki sikldan tashqarida, tashqi sikl ichida — ya’ni ichki sikl bilan bir xil otstupda. Shunda har qator tugagandan keyin bir marta bajariladi.
Topshiriq
“Topshiriq” bo'limiga havolaTopshiriq — darajangizni tanlang
Asos · 5–7-sinf — Vizual va aniq ko'rsatmali
Ichma-ich sikl bilan 5 qator uzunlikda yulduzchalardan uchburchak chizing
(birinchi qatorda 1 yulduz, beshinchisida 5). Keyin uni teskari qilib ko’ring.
Kalit: ichki siklning range i tashqi hisoblagichga bog’liq bo’ladi.
Mustahkam · 8–9-sinf — Matnli masala, o'zingiz tuzasiz
To’liq ko’paytirish jadvalini (1–9) chiroyli tekislangan holda chiqaring:
har son 4 belgi joy egallasin, jadval boshida sarlavha qatori bo’lsin.
Keyin shaxmat taxtasi naqshini chiqaring: qora va oq kataklar navbat bilan
(kalit: (i + j) % 2).
Chuqur · 10–11-sinf — Algoritmik, chegara holatlari bilan
Ichma-ich sikl bilan 2 dan 100 gacha tub sonlarni topuvchi programma yozing. Keyin qadamlar sonini hisoblagich bilan o’lchang. Optimallashtirish: ichki siklni sonning kvadrat ildizigacha qisqartirsangiz, qadamlar qancha kamayadi? Ikki variantning qadam sonini jadvalga solishtirib yozing. (Murakkablik tahlilining o’zi — Algorithms moduli mavzusi.)
Darsni belgilash uchun JavaScript kerak. Bu progressni saqlash uchun ishlatiladi — darslikning o'zi JavaScript'siz ham to'liq o'qiladi.