İnformatika, Proqramlaşdırma
Python dövrləri və rəqəmlərlə iş: dövrü addım-addım izlə
Dövrün hər addımında dəyişənləri izləməyi, range ardıcıllığını oxumağı və ədədi rəqəmlərinə ayırmağı öyrənəcəksən.
Oxumaq üçün 4 dəqiqə

1-dən 1000-ə qədər bütün ədədləri topla. Kağızda bu, uzun və darıxdırıcı işdir, harasa bir səhv də girə bilər. Python-da isə bir neçə sətirlik dövr bunu göz qırpımında edir: s = 0, sonra for i in range(1, 1001): s += i. Cavab 500500 çıxır.
İndi başqa bir sual. 6462 ədədinin rəqəmlərini topla. Sən dərhal 6 + 4 + 6 + 2 = 18 deyirsən, çünki rəqəmləri gözünlə görürsən. Proqram isə 6462-ni tək bir ədəd kimi saxlayır. Rəqəmləri bir-bir almaq üçün onu 10-a bölməli olur: 10-a bölünmədən qalıq sağdakı 2-ni verir, 6462 // 10 isə 646 saxlayır. Bu iki əməli dövrlə birləşdirəndə ədədin bütün rəqəmlərini tək-tək ala bilirsən.
Niyə lazımdır
Dövr kompüterin ən güclü tərəfidir: eyni işi yüz dəfə də, milyon dəfə də yorulmadan təkrarlayır. Rəqəmlərin cəmi, bölünənlərin sayı, ən böyük rəqəm kimi bir çox proqram dövrlə qalıq və // əməllərinin birləşməsindən yaranır.
İmtahanda proqramı özün qurmaq da, verilmiş proqramın nəticəsini tapmaq da tələb oluna bilər. Hər iki halda kompüterin etdiyini kağızda addım-addım təkrarlamağı bacarmalısan: bunu bacarırsansa, ən çaşdırıcı tapşırıq da sakit hesablamaya çevrilir.
İmtahan bu mövzuda nə soruşur?
Səndən dövrün nəticəsini hesablamaq, yığılan cəmi ifadə şəklində yazmaq, verilmiş çıxışa uyğun başlanğıc ədədlərin sərhədlərini tapmaq gözlənilir. Həmçinin şərtləri ödəyən ədədləri saymaq və ədədin rəqəmlərini araşdıran proqram qurmaq tələb oluna bilər. Bunun üçün hər addımda dəyişənlərin necə yeniləndiyini izləməlisən.
Qayda
- Dövrün gövdəsi təkrarlanan əmrlərdən ibarətdir. Python-da gövdə girinti ilə ayrılır; başlıq iki nöqtə ilə bitir. Əmrlər yazıldığı sıra ilə işləyir.
- while hər icradan əvvəl şərti yoxlayır. Şərt başlanğıcda yanlışdırsa, gövdə işləməz. Şərtə təsir edən dəyişənin yenilənməsini izləyərək dövrün nə vaxt dayanacağını müəyyənləşdir.
- range ilə qurulan for dövründə sayğac ardıcıllığın qiymətlərini götürür. range(a, b, d) başlanğıcı a, sərhədi b, addımı d olan ardıcıllıq verir; b daxil edilmir. Addım yazılmadıqda 1, başlanğıc da yazılmadıqda 0 götürülür. Mənfi addım azalan ardıcıllıq üçündür; addım sıfır ola bilməz.
- Toplayıcı cəm üçün adətən 0-dan, hasil üçün 1-dən başlayır. Say dəyişənini yalnız tələb olunan şərt ödənəndə artır. s += x yazılışı s = s + x ilə eyni yenilənmədir.
- Qalıq % ilə hesablanır; / bölmə, ** qüvvətə yüksəltmədir. Müsbət tam n üçün n % 10 son rəqəmi verir, n // 10 isə onu silir. Bölünmə yoxlamasında qalığı sıfırla müqayisə et.
- Müqayisə üçün ==, !=, <, >, <=, >= işlənir; = qiymət mənimsədir. and bütün şərtlərin, or ən azı birinin doğruluğunu tələb edir; not doğruluq qiymətini əksinə çevirir.
- break cari dövrü dayandırır; continue gövdənin qalan əmrlərini ötürərək növbəti təkrara keçir. Girinti else hissəsinin hansı if-ə aid olduğunu göstərir.
Tapşırıqlarda işlənən düsturlar
Öyrənilməli düstur
Burada x qeyri-mənfi tam bölünən, b müsbət tam bölən, q isə tam bölmənin nəticəsidir. Vurulan dəyişəndən dövrün təkrar sayını tap, sonra dayanma şərtinə uyğun ən böyük son qiymətdən başlayaraq bölmələri bu sərhədlərlə geriyə izlə.
Öyrənilməli düstur
n müsbət tam ədəd, k onun rəqəmlərinin sayı olduqda bu düstur sola sıfırdan fərqli a rəqəmini, sağa isə b rəqəmini artırmaqla alınan N ədədini verir. k qiymətini n sıfıra çevrilənədək 10-a tam bölmələrin sayından müəyyənləşdir.
Öyrənilməli qayda
for dövründə əmrlər hər sayğac qiyməti üçün yazıldığı ardıcıllıqla işləyir və növbəti əmr dəyişənin yenilənmiş qiymətindən istifadə edir. Burada p əvvəlki toplananları da saxladığından s dəyişəninə əlavə olunan kəsrin surətində yığılmış cəmi nəzərə al.
Öyrənilməli qayda
while dövrünün şərti hər təkrardan əvvəl yoxlanılır: son təkrara daxil olarkən doğru, həmin təkrardan sonra isə yanlış olmalıdır. p dəyişəninin ardıcıl ikiqat artmasından təkrar sayını müəyyənləşdir, x üçün son iki yoxlamadan alınan ciddi aşağı sərhədi növbəti tam ədədlə əvəz et və yeni aralığın hər iki ucunu daxil etməklə say.
Öyrənilməli qayda
Sayğac hər təkrarda sabit qədər artırsa, son qiymətlə başlanğıc qiymətin fərqini bu artıma bölməklə təkrar sayı tapılır. Həmin sayda bölmədən əvvəl dövr şərtinin ödənməsini, son bölmədən sonra isə pozulmasını tələb et və mümkün girişlərin sərhədlərini taparkən // əməlində qalığın atıldığını nəzərə al.
Öyrənilməli qayda
Müsbət tam ədədin rəqəmlərini n%10 ilə ayırıb n//10 ilə silərək bir-bir yoxlamaq olar. Cari maksimumdan böyük rəqəm gələndə maksimumu dəyiş və sayğacı 1 et, eyni rəqəm gələndə sayğacı artır, kiçik rəqəmdə isə hər ikisini olduğu kimi saxla.
Öyrənilməli qayda
or ilə birləşdirilən şərtlərdən birinin doğru olması kifayətdir; else budağının hansı if əmrinə aid olduğunu girinti göstərir. range son sərhədi götürmədiyindən hər daxil edilən qiyməti bir dəfə yoxla: xarici şərt yanlışsa artım iki, hər iki şərt doğrudursa bir, yalnız daxili şərt yanlışsa sıfırdır.
Öyrənilməli qayda
Başlanğıc qiyməti 1 olan dəyişən hər təkrarda ikiqat artırsa, t təkrardan sonra alınır. Təkrar sayını bununla tap və giriş sərhədlərini müəyyənləşdirərkən n dəyişəninin son təkrara qədər həddi aşmamasını, son artımdan sonra isə həddən böyük olmasını tələb et.
Öyrənilməli qayda
Müsbət n üçün n%10 sağdakı rəqəmi seçir, n//100 isə sağdan iki mərtəbəni silir; buna görə dövr rəqəmlərin birindən keçərək cəm yaradır. Verilən cəmi ödəyən ən kiçik ədədi qurarkən əvvəl böyük mərtəbənin rəqəmini kiçilt, sonra cəmə təsir etməyən mərtəbəyə sıfır yaz.
Öyrənilməli qayda
while şərti yanlış olanda gövdə işləmir, lakin dəyişənlər son yenilənmiş qiymətlərini saxlayır. Burada əvvəl t cəmə əlavə edilir, sonra seçilən budaq üzrə artırılır; çıxışı hesablayanda cəmə daxil edilən son qiymətlə dövrü dayandıran t qiymətini fərqləndir.
Öyrənilməli qayda
Müsbət tam ədədin cütlüyünü son rəqəmi müəyyən edir; n%10 həmin rəqəmi ayırır, n//10 isə onu silir. k*10+r əməli r rəqəmini yığılan ədədin sağına yazdığından şərti ödəyən rəqəmlər nəticədə sağdan sola baxılma ardıcıllığı ilə düzülür.
Öyrənilməli qayda
Şərtdəki dəyişən gövdədə yenilənirsə, yeni qiymət yalnız növbəti while yoxlamasında dövrü dayandırır və cari təkrar tam işləyir. İstənilən təkrar sayını almaq üçün əvvəlki qalıqların şərti ödəməsini, son qalığın isə onu pozmasını tələb et; ilkin ədədi tapmaq üçün tam bölmələri və qalıqları geriyə izlə.
Öyrənilməli qayda
while şərti hər təkrardan əvvəl yoxlanır; dəyişənin ardıcıl vurulmasından təkrarların sayını müəyyən et. Girişin sərhədlərini taparkən son təkrara başlamazdan əvvəl şərtin doğru, həmin təkrardan sonra isə yanlış olmasını tələb et.
Öyrənilməli qayda
Müsbət tam ədəddə n%10 sağdakı rəqəmi ayırır, n//10 isə onu silir; bu əməllərlə qonşuları sağdan sola müqayisə et. Hər cütdə sol rəqəm sağdakından kiçik olmalıdır: bircə pozuntu ümumi yoxlamanı uğursuz edir, qonşusu olmayan rəqəm isə pozuntu yaratmır.
Öyrənilməli qayda
Sayğacın başlanğıc və son qiymətləri ilə artım addımı təkrarların sayını müəyyənləşdirir; hər təkrarda cəmə sayğacın artırılmamış qiyməti ilə hesablanan hədd əlavə edilir. Son təkrardan əvvəl while şərtini doğru, sonra yanlış edən giriş sərhədlərini tap və daxil olan tam ədədləri sayarkən hər iki sərhədi nəzərə al.
Öyrənilməli qayda
and bütün şərtlərin, or isə ən azı birinin doğruluğunu tələb edir; else eyni girintidəki if ilə əlaqələnir. range(a,b) son sərhədi götürmədiyindən hər qiymət üçün uyğun budağı izlə və yalnız sayğacı artıran halları say; xarici şərtin doğruluğu daxili şərtin də doğru olması demək deyil.
Öyrənilməli qayda
Dövr daxilində əmrlər sıra ilə işləyir: əvvəl çıxma aparılır, sonra çıxılan həddi saxlayan dəyişən artırılır. Həmin dəyişənin son qiymətindən təkrar sayını tap, sonra girişdən son təkrara qədər çıxılanların cəmini və bütün təkrarlarda çıxılanların cəmini hesabla; giriş birincidən böyük, ikincidən isə böyük olmamalıdır.
Öyrənilməli qayda
Ən azı ikirəqəmli müsbət tam ədəddə n%10 və (n//10)%10 sağdakı qonşu rəqəmləri verir; bərabərlikdə sayğacı artır. Hər yoxlamadan sonra n//10 ilə yalnız bir rəqəmi sil ki, ortaq rəqəmli cütlər də yoxlanılsın; iki rəqəm qalmadıqda dövrü bitir.
Öyrənilməli qayda
Hər namizədin surətində %10 ilə ayrılan rəqəmləri ayrıca cəmlə və //10 ilə sil; qalıqsız bölünməni isə bölmənin qalığının sıfır olması ilə yoxla. Hər iki tələb ödənəndə ümumi sayğacı artır, sərhədləri də yoxla və seçim olmadığını yalnız bütün aralıq bitəndən sonra müəyyən et.
Öyrənilməli qayda
Hər müsbət tam ədədin surətindən %10 və //10 vasitəsilə rəqəmləri ayırarkən cəmi və rəqəm sayını ayrıca topla, hər yeni ədəd üçün bunları sıfırla. Cəm sayın kvadratına bərabərdirsə, ilkin ədədi dərhal çap et və seçim olduğunu yadda saxla; seçim yoxluğu yalnız bütün girişlər yoxlanandan sonra müəyyənləşir.
Kompüterin yerinə sən işlət
Hər sualda kiçik bir proqram var. Onu kağızda addım-addım işlət və nəticəni yaz.
Nümunələr
Başlanğıcda p = 0, s = 0 olsun. range(1, 4) dövründə əvvəl p += i, sonra s += p işləyir. Son s-i tap. i ardıcıl 1, 2, 3 olduqda p qiymətləri 1, 3, 6, s qiymətləri isə 1, 4, 10 olur. Cavab 10-dur.
p = 1 ilə başlayan while n <= 20 dövründə n hər dəfə 4 artır, p isə ikiqat olur. Çıxışdakı p = 8 üçün başlanğıc n-i müəyyənləşdir. Üç təkrar lazımdır: , . Deməli, tam başlanğıc qiymətlər 9–12 arasındadır.
6462 ədədində ən böyük rəqəmin sayını tap. Rəqəmləri sağdan ayır: 2, 6, 4, 6. İlk rəqəmi maksimum, sayını 1 götür. Daha böyüyünü görəndə maksimumu dəyiş, sayı 1 et; bərabərini görəndə sayı artır. Nəticə 2-dir.
Tipik səhv
n = 1, sonra while n < 50: n *= 3. Dövrdən sonra print(n) üçün cavab: 27, çünki 27 hələ 50-dən kiçikdir.
Təkrarları ayrıca yaz: girişdə 1 → çıxışda 3, 3 → 9, 9 → 27, 27 → 81. 27 < 50 doğru olduğu üçün gövdə bir dəfə də işləyir və n = 81 olur. Şərt yalnız bundan sonra yanlış çıxır, ona görə də çap olunan ədəd 81-dir.
Dövr bitəndə dəyişənin son yenilənməsini unutma: şərti artıq ödəməyən qiymət də sonrakı hesablamada işlənə bilər.
Qarışıqlıq yaranarsa, hər təkrar üçün girişdəki və çıxışdakı qiymətləri ayrıca yaz.
Özünü yoxla
Başlanğıcda p = 1-dir. for i in range(8, 2, -3) dövrünün gövdəsində p *= i əmri işləyir. Dövrdən sonra p-nin qiymətini tap.
range(8, 2, -3) yalnız 8 və 5 qiymətlərini verir; son sərhəd olan 2 daxil edilmir. Buna görə hasil olur.
Başlanğıcda n = 3, s = 0-dır. while n < 10 dövrünün gövdəsində əvvəl n += 4, sonra s += n işləyir. Dövrdən sonra s-in qiymətini tap.
Birinci təkrarda n və s 7 olur, ikinci təkrarda isə n 11-ə yüksəlir və s-ə əlavə edilərək alınır. Şərt yalnız növbəti yoxlamada yanlış olduğundan ikinci təkrar tam işləyir.
Başlanğıcda n = 58346, s = 0-dır. while n > 0 dövrünün gövdəsində əvvəl s-ə n-in 10-a bölünməsindən alınan qalıq əlavə olunur, sonra n //= 100 işləyir. Dövrdən sonra s-in qiymətini tap.
n //= 100 hər dəfə sağdan iki rəqəmi silir: n ardıcıl olaraq 58346, 583, 5 və 0 olur. Buna görə cəmə 6, 3 və 5 əlavə edilir: .
Bu mövzunun tapşırıqlarını həll et
Bu mövzunun tapşırıqlarını həll et və hər birinin izahına bax.
Digər mövzular
Bütün İnformatika mövzuları- İnformatikaPython kodunda qiymətlər və şərtlərİmtahanda Python kodunu izləyərək çıxışdakı ədədi, mətni və ya sətirlərin ardıcıllığını müəyyənləşdirirsən.
- İnformatikaPython sətirləri, siyahıları və funksiyalarıİmtahanda sətir və siyahı üzərində əməliyyatların nəticəsini, funksiyanın qaytardığı qiyməti və proqramın…
Dərslikdə bu mövzu
- Dərslik: İnformatika, 9-cu sinif, «Ədədlərlə iş», səh. 70
- Dərslik: İnformatika, 8-ci sinif, «Proqramda dövr», səh. 47
- Dərslik: İnformatika, 8-ci sinif, «Sayğaclı dövrlər», səh. 50
- Dərslik: İnformatika, 6-cı sinif, «Proqramlaşdırma mühitində dövr», səh. 63