Takrorlanuvchi algoritm yoki dasturning bir necha marta (shu jumladan nol marta) takrorlanishi mumkin bo'lgan qismidir. Har bir siklik tashkil etuvchilar sikl sarlavhasi bilan boshlanadi va yakuniy tasdiq bilan tugaydi. Ularning orasida "sikl tanasi" deb nomlangan operatorlar mavjud. Siklning tanasini tashkil etuvchi buyruqlar (operatorlar) bajarilishining takroriy soni siklni tugatish sharti bilan belgilanadi. To'xtatish sharti sikl parametrlari (sikl o'zgaruvchisi) deb nomlangan maxsus o'zgaruvchining ma'lum bir qiymatiga erishishi yoki ma'lum bir shartning bajarilishi (bajarilishini tugatish) bo'lishi mumkin.
Dasturlash tillarida parametrli sikllarni tashkil qilish uchun FOR ("uchun") operatoridan foydalaniladi va shartli sikllarda WHILE ("aslo") aralash operatoridan foydalaniladi.
Parametrli sikl holatida siklning takrorlanish soni ("takrorlanishlar") oldindan ma'lum va sikl sarlavhasida maxsus ifoda bilan belgilanadi, shartli sikl bo'lsa, har bir keyingi takrorlash bilan siklning tugatish holatini tekshirish kerak.
Agar sikldan tanasida operatorlarni yozish paytida xatolik yuz bersa, siklni tugatish sharti hech qachon bajarilmaydi va sikl cheksiz bo'ladi ("dastur Takrorlanuvchi").
Bir o'lchovli massivlar bilan ishlash uchun parametrli sikllardan foydalanish tavsiya etiladi, chunki takroriy sonlarni sikl boshlanishidan oldin aniqlash mumkin. Bunday holda, massiv elementlarini kiritish uchun parametrli sikl talab qilinadi va sikllar ushbu elementlar bilan har qanday harakatlarni bajarish va natijalarni namoyish qilish uchun ham talab qilinishi mumkin.
Sikllarni biron bir hodisa ro'y bermaguncha ma'lumot kiritiladigan (ba'zi bir manbadan kelgan) vaziyatda ishlatish tavsiya etiladi. Bundan tashqari, barcha ishlov berishlarni ko'pincha massiv yaratmasdan bajarish kerak, chunki elementlarning soni oldindan ma'lum emas.
Oddiy vazifalarni ko'rib chiqing, ularning yechimi siklda hisoblashni talab qiladi.
1 topshiriq. Berilgan A bir o’lchovli massiv N elementlari sonlardan iborat. Massiv elementlarining o’rta arifmetik qiymatini toping.
Masalani qo’yilishi:
Berilgan:
Aniqlash:
Dasturning matni:
kirish N
S = 0
bs uchun 1 dan N gacha
A [i] kiritish
S = S + A [i]
ys
C = S / N
chiqarish C
Bu erda bs va ys mos ravishda siklning boshini va oxirini bildiradi, bs bilan chiziq siklning sarlavhasini anglatadi. Matndan ko'rinib turibdiki, sikl o'zgaruvchisining boshlang'ich va yakuniy qiymatlari ko'rsatilgan, ular butun son bo'lishi kerak. Bu erda ko'rsatilgan izohda, sikl o'zgaruvchisi har bir takrorlash uchun 1 ga ko'paytiriladi ("sikl o'zgaruvchan qadam" 1). Agar 1 ga teng bo'lmagan qadam kerak bo'lsa, bu aniq ko'rsatiladi
Sikl tanasi ikkita operatordan iborat - keyingi raqamni kiritish va ushbu raqamni summaning joriy qiymatiga qo'shish.
Python-da siz deyarli bir xil narsani yozishingiz mumkin (range () funksiyasidan foydalanish bilan bog'liq xususiyatlarni hisobga olgan holda).
|
# - * - kodlash: utf-8 - * - |
Elementlar soni:3 Raqamni kiriting:2 Raqamni kiriting:4 Raqamni kiriting:6 Natija : 4.0 |
Takrorlanuvchi tanasi ":" belgisidan keyin boshlanadi va Python-dagi barcha takrorlanish tanasi operatorlari satr boshidan bir xil bo’sh joy qoldirilishi kerak. Bo’shliq tugagandan Python sikl tanasi tugadi deb hisoblaydi.
Va bu erda ro'yxat va ro'yxat usullaridan foydalanib Python-da xuddi shu vazifani hal qilish uchun variant mavjud.
|
# - * - kodlash: utf-8 - * - |
Elementlar soni:3 Raqamni kiriting:2 Raqamni kiriting:4 Raqamni kiriting:6 Natija: 4.0 |
Ushbu parametrda ro'yxat tuziladi va ro'yxat elementlarining yig'indisi o'rnatilgan funksiyadan foydalanib hisoblanadi. Dastur bitta qatorga ko'paydi (bo'sh ro'yxatni yaratish), ammo biz qanday qilib sikl qanday qilib ro'yxat tuzishni bilib oldik.
2 topshiriq. Kiritilgan satr ABBA, kazak va boshqalar tipidagi palindrom (shakl o’zgartiruvchi) ekanligini aniqlang.
Masalani qo’yilishi: S satrni boshidan va oxiridan juft-juft taqqoslash talab etiladi (birinchi va oxirgi, ikkinchi va penultimate va boshqalar). Agar har bir bunday juftlik bir xil belgilarga ega bo'lsa, satr palindromdir. Shunga ko'ra, har bir belgi juftligini tekshirish ba'zi bir atributlarni olishi kerak (flag - "bayroq"), bu juftlikdagi belgilar mos keladigan bo'lsa 1 ga va agar ular bir-biriga mos kelmasa 0 ga teng bo'ladi. Satrni qayta ishlashning yakuniy natijasi "bayroqlar" ning barcha qiymatlarining mahsulidir. Agar hech bo'lmaganda bir marta "bayroq" nolga teng bo'lsa, satr palindrom emas va barcha "bayroqlar" ning mahsuloti 0 ga teng bo'ladi. Juftlar soni L satr uzunligining yarmidan oshmaydi (teng belgilar soni bo'lgan satrlar uchun uzunlikning yarmiga teng va satr uzunligining butun sonini bo'lish natijasi) toq sonli belgilar bilan chiziqlar uchun 2 ga teng, chunki toq belgilar soni bo'lgan chiziqning "markaziy" belgisi aniq bir xil).
Dasturning matni:
kirish S
flag = 1
L = uzunlik (S)
N = L div 2
bs i uchun 1 dan N gacha
agar S [i] = S [ L-i +1] bo'lsa
k = 1
aks holda
k = 0
agar tamom
flag = flag * k
ys
agar flag = 1 bo'lsa
"Palindrom" chiqishi
aks holda
"Palindrom emas!" xulosasi
agar tugadi
Har bir juftlikni tekshirishda k koeffitsient belgilanadi, u keyinchalik "bayroq" ning joriy qiymatiga ko'paytiriladi. Yakuniy xulosa "bayroq" ning umumiy qiymati bo'yicha amalga oshiriladi.
Python dasturidagi matn soxta til matniga juda o'xshash bo'lishi mumkin.
|
# - * - kodlash: utf-8 - * - |
Manba qatori: abba Palindrom |
Satr kiritish uchun input ( ) operatoridan foydalanilgan va satrni qo'shtirnoq ichiga yozish shart emas.
Shunga qaramay, ba'zi bir kichik sintaktik xususiyatlar mavjud - ikkita o'zgaruvchining tengligi sharti "==" belgisi bilan yozilgan, har bir aralash gapning boshi ":" belgisi bilan ko'rsatilgan va har doimgidek, siz yozuvni belgilashingiz kerak. Bunga qo'shimcha ravishda, chiziq oxiridagi belgilarni hisoblash uchun chiziq elementlarining "salbiy" ko'rsatkichlari qo'llaniladi.
Biroq, Python-da satrli funksiyalardan foydalanish, ularning funksiyalari va usullari bizga ushbu muammoni yanada oqilona tarzda hal qilishga imkon beradi. Masalan, shunga o'xshash.
|
# - * - kodlash: utf-8 - * - |
Manba qatori:abba Palindrom |
Agar operatsiyalarni takrorlash soni oldindan ma'lum bo'lmasa, lekin operatsiyalarni to'xtatish sharti ma'lum bo'lsa, WHILE (murakkab operator) sikl ishlatiladi. Biz undan foydalanishni quyidagi misolda ko'rsatamiz.
3 topshiriq. Nolga teng bo'lmagan raqamlar ketma-ket ravishda kiritiladi. Musbat va manfiy sonlarning yig'indisini aniqlang. 0 raqamini kiritganingizdan so'ng raqamlarni kiritishni tugating.
Vazifa shunchalik osonki, muammoning bayoni sifatida qo'shimcha aniqlashtirish talab qilinmaydi. Musbat sonlarning yig'indisi SP, manfiy sonlarning yig'indisi esa SN deb aytilsin.
Algoritmning blok sxemasi rasm. 3.13.
Dasturning matni:
SP = 0
SN = 0
kiritish son
bs agar son <> 0
agar son> 0 bo'lsa
SP = SP + son
aks holda
SN = SN + son
end agar
kiritish son
ys
SP chiqishi
SN chiqishi
Paskal va BASIC dasturlash tillaridagi "tengsizlik" holati " <> " deb belgilanadi, shuning uchun bu erda bu belgi saqlanadi.
Shuni ta'kidlash kerakki, tekshirilgan raqam sikl boshlanishidan oldin aniqlanishi kerak, chunki noma'lum qiymat 0 ga aylanishi mumkin va dastur ishga tushmasdan oldin tugaydi. Va keyin raqamlar siklga kiritiladi va har bir yangi qabul qilingan raqam 0 bilan taqqoslanadi (har bir raqam kiritilgandan so'ng, shart tekshiruvi kuzatiladi). WHILE Takrorlanuvchiidagi operatsiyalar va tekshirishlar tartibi to'g'ri natijaga erishish uchun muhim bo'lishi mumkin.
Python-dagi dastur matni muhim xususiyatlarga ega emas. O'qish qulayligi uchun dastur sharh belgisini ishlatgan holda "bloklar" ga bo'linadi.
|
# - * - kodlash: utf-8 - * - |
Keyingi raqam:4 Keyingi raqam :5 Keyingi raqam :-2 Keyingi raqam :-4 Keyingi raqam :7 Keyingi raqam :1 Keyingi raqam :0 Musbat sonlar yig`indisi: 17 Manfiy sonlar yig`indisi: -6 |
4 topshiriq. for operatori va input() funktsiyasini jamlab, ro'yxatni foydalanuvchidan olingan qiymatlar bilan to'ldiring.
|
dostlar = [] # bo'sh ro'yxat print("5 ta eng yaqin do'stingiz kim?") for n in range(5): # n bu yerda 0 dan 4 gacha qiymatlar oladi dostlar.append(input(f"{n+1}-do'stingizning ismini kiriting: ")) print(dostlar) |
5 ta eng yaqin do'stingiz kim? 1-do'stingizning ismini kiriting: Aziz 2-do'stingizning ismini kiriting: Salim 3-do'stingizning ismini kiriting: Karim 4-do'stingizning ismini kiriting: Toir 5-do'stingizning ismini kiriting: Zoir ['Aziz', 'Salim', 'Karim', 'Toir', 'Zoir'] |
5 topshiriq. N natural son berilgan 1+2+3+…+n hisoblang.
Python dasturi:
![]() |
N natural son kiriting n=50 Yig'indi qiymati= 1225 |
6 topshiriq. N va x natural sonlar berilgan. Quyidagi yig‘indini hisoblang:
![]()
Python dasturi:
![]() |
n natural son qiymatini kiriting n=4 x ning qiymatini kiriting x=1 Yig'indi qiymati S= 2.005471862662479 |
7 topshiriq. Ixtiyoriy berilgan N natural sonning raqamlar yig’indisi nechaga teng.
Python dasturi:
![]() |
n natural son qiymatini kiriting n=4789 Yig'indi qiymati S= 28 |
8 topshiriq. a natural soniga ko’paytirish karra jadvalini chiqaruvchi dastur tuzing.
Python dasturi:
![]() |
Karra jadvalini hisoblash sonini kiriting a=6 6 x 1 = 6 6 x 2 = 12 6 x 3 = 18 6 x 4 = 24 6 x 5 = 30 6 x 6 = 36 6 x 7 = 42 6 x 8 = 48 6 x 9 = 54 6 x 10 = 60 |
9 topshiriq. M>1 natural son berilgan bo’sin.
Shartni qanoatlantiradigan eng katta k sonini toping.
Python dasturi:
![]() |
M>1 natural sonini kiriting M=80 k= 3 |
10 topshiriq. N natural soni berilgan.
hisoblovchi dastur tuzing.
Python dasturi:
![]() |
n natural sonini kiriting n=30 Yig'indini qiymati S= 9920 |
Mustaqil yechish uchun topshiriqlar
Masala 1. N –butun son. k kattalikga shu sonni tashkil etuvchi raqamlar yig`indisini o`zlashtiring.
Masala 2. N- natural son. Uning tub buluvchilari sonini aniqlang
Masala 3. N- natural son berilgan. Uning raqamlari yig`indisini toping
Masala 4. N ta haqiqiy son berilgan. Ularni orta borish tartibida joylashtiring
Masala 5. Barcha uch xonali natural sonlardan raqamlari yig`indisi berilgan n (1<=n<=27) ga tenglarini chop eting
Masala 6. N- natural soni berilgan. Uning kvadrati tarkibiga 3 raqami kirishi yoki kirmasligini aniqlang
Masala 7. Ketma-ketlik quyidagi tartibda yaratilgan. 1, 3, 5, 7, 9, 10, 12, 14, 16, … ya`ni natural sonni tashkil etuvchi raqamlar yig`indisi toq bulsa, ketma-ketlik tarkibiga kiritilgan. SHu ketma-ketlikdagi 10, 15, 2008 o`rindagi raqamlarni aniqlang.
Masala 8. Berilgan n (n>10) sonidagi, birinchi va oxirgi raqamlari o`rnini almashtirish va natijani chop etish dasturini tuzing
Masala 9. Berilgan n (n>10) natural sonini raqamlarini teskarisidan yozib, yangi son hosil qiling.
Masala 10. k va n (n>0) butun sonlar berilgan. n marta k soni chiqarilsin
Masala 11. a va b butun sonlar berilgan(a>b). a va b sonlari orasidagi sonlarni o‘sish tartibida chiqarilsin(a va b sonlari ham kiradi) hamda shu sonlar miqdori (soni) n chiqarilsin.
Masala 12. a va b butun sonlar berilgan(a<b). a va b sonlari orasidagi sonlarni kamayish tartibida chiqarilsin(a va b sonlari ham kiradi) hamda shu sonlar miqdori (soni) n chiqarilsin
Masala 13. 2 ta a va b butun sonlar berilgan. (a<b) a dan b gacha bo‘lgan butun sonlar yig‘indisi topilsin.
Masala 14. 2 ta a va b butun sonlar berilgan. (a<b) a dan b gacha bo‘lgan sonlarning ko‘paytmasi topilsin.
Masala 15. n(n>0) butun soni berilgan (Yig‘indi haqiqiy son). Yig‘indi hisoblansin
Masala 16. a haqiqiy va n butun sonlari berilgan(n>0). (a, n marta ko‘paytirilgan) a ning n- darajasi hisoblansin.
Masala 17. a va n sonlari berilgan. . Bitta sikldan foydalanib yig‘indi hisoblansin.
Masala 21. N va К butun musbat sonlari berilgan. Faqat ayirish va qo‘shish amallarini ishlatib N sonini К soniga bo‘lgandagi qoldiq va butun qismini aniqlovchi dastur tuzing.
Masala 26. n butun soni berilgan (n>0). Uni bo‘lib butun va qoldiq qismlarini aniqlash orqali, berilgan son raqamlarini teskari tartibda chiqaruvchi dastur tuzing.
Masala 28. a va b butun musbat sonlari berilgan. Berilgan sonlarning eng katta umumiy bo‘luvchisini aniqlovchi dastur tuzing.
zo'r chiqibdi gap yo'q