Məzmuna keç
Educora
Orta9-cu sinif25 dəq33 / 59

Proqramın analizi: nəticədən giriş qiymətinə

İzləmə cədvəli ilə proqramın nəyi çap etdiyini tapmaq, çap olunan qiymətdən dövrün neçə dəfə işlədiyini müəyyən etmək, dövr şərtini bərabərsizliklərə çevirib ən kiçik və ən böyük girişi, eyni nəticəni verən girişlərin sayını tapmaq — DİM-in qapalı və kodlaşdırılan tapşırıqları kimi.

Özünü yoxla
Bu dərsdə öyrənəcəksən
  • izləmə cədvəli qurub proqramın nəyi çap etdiyini tapmaq
  • çap olunan qiymətə görə dövrün neçə dəfə işlədiyini müəyyən etmək
  • dövr şərtini iki bərabərsizliyə çevirib ən kiçik və ən böyük girişi və uyğun girişlərin sayını tapmaq
  • rəqəmlərə görə geri həll etmək, dövrün hansı ifadəni hesabladığını və funksiyalı şərtləri təhlil etmək

Adi tapşırıqda proqram və giriş verilir, nəticəni sən tapırsan. DİM isə tez-tez əksini soruşur: «Nəticədə 77 çap olunubsa, m-in ən kiçik qiyməti nədir?», «Neçə natural ədəd daxil etmək olar ki, hər dəfə 9 çap olunsun?». 2025–2026-cı illərin dörd variantının hər birində belə «tərs» tapşırıq ən azı bir dəfə olub, üçü isə cavabı özün yazdığın kodlaşdırılan tapşırıq idi. Bu dərsdə əvvəlcə izləmə cədvəlini, sonra nəticədən girişə doğru düşünməyin dörd addımlı üsulunu öyrənəcəksən. Dövrlərin qaydaları «Dövr operatorları: for, while, dövr addımı, break, continue və iç-içə dövrlər» və «Ədədlər üzərində əməllər: rəqəmlər, bölənlər və sadə ədədlər» dərslərindədir.

İzləmə cədvəli: proqram nə çap edir?

Tərif
İzləmə cədvəli

Proqramın icrasını addım-addım göstərən cədvəl: hər sütun bir dəyişən (və dövrün şərti), hər sətir isə dövrün bir iterasiyasıdır.

Tərif
Tərs tapşırıq

Proqram və onun nəticəsi verilir, giriş qiyməti (ən kiçik, ən böyük və ya uyğun qiymətlərin sayı) axtarılır.

while dövründə şərt gövdədən əvvəl yoxlanılır: şərt yalan olan kimi dövr bitir və proqram dövrdən sonrakı sətrə keçir. Ona görə dövrdən sonra dəyişənlər son iterasiyadakı qiymətlərini saxlayır.

  1. 1
    Sütunları qur

    dövrdə dəyişən bütün dəyişənlər və şərt üçün «Hə/Yox» sütunu.

  2. 2
    İlkin qiymətləri yaz

    dövrdən əvvəlki mənimsətmələr birinci sətrə yazılır.

  3. 3
    Şərti yoxla

    «Hə» — gövdəni yuxarıdan aşağı sətir-sətir icra et və yeni sətir aç; «Yox» — dayan.

  4. 4
    print-ə bax

    çap olunan ifadə dəyişənin özü olmaya bilər (n + k, m * 10 + k); print(a, b) iki qiyməti boşluqla çap edir.

Python
s = 0
k = 1
while s < 40:
    if k % 2 == 0:
        s = s + k * k
    else:
        s = s + k
    k = k + 1
print(k, s)
▸ Gözlənilən nəticə
7 65
Nümunə 1-in proqramı: əvvəl cədvəli qur, sonra işə salıb yoxla.
Nümunə 1. Proqramın nəticəsi

Yuxarıdakı proqramın nəticəsini müəyyən edin.
A) 6 65 B) 7 65 C) 7 29 D) 6 29 E) 8 65

Həllini göstər
k | s < 40? | s
1 | Hə | 0 + 1 = 1
2 | Hə | 1 + 2 · 2 = 5
3 | Hə | 5 + 3 = 8
4 | Hə | 8 + 4 · 4 = 24
5 | Hə | 24 + 5 = 29
6 | Hə (29 < 40) | 29 + 6 · 6 = 65
7 | Yox (65 < 40 yalandır) — dövr bitir.
Çap olunur: 7 65. Cavab: B. Tələ: dövrdən sonra k artıq 7-dir, 6 yox.

Dövr neçə dəfə işləyib? Nəticədən iterasiyaların sayına

Tərs tapşırığın ilk addımı həmişə eynidir. Çap olunan dəyişən hər iterasiyada eyni qayda ilə dəyişirsə (hər dəfə eyni ədəd əlavə olunur və ya eyni ədədə vurulur), onun son qiymətinə görə iterasiyaların sayını — k-nı tapırıq. Bu addımda giriş qiyməti hələ lazım deyil.

n = n₀ + k · d s = s₀ · qᵏ
burada:
  • n₀, s₀dövrdən əvvəlki qiymətlər
  • dhər addımda əlavə olunan ədəd (n = n + d)
  • qhər addımda vurulan ədəd (s = s * q)
  • kiterasiyaların sayı

Toplama arifmetik, vurma isə həndəsi silsilə verir.

Nümunə 2. İterasiyaların sayı

Dövr neçə dəfə işləyib?
1) Dövrdən əvvəl n = 5, gövdədə n = n + 6, dövrdən sonra 125 çap olunub.
2) s = 1, gövdədə s = s * 3, çap olunub 243.
3) n = 2, gövdədə n = n * 4, çap olunub 2048.
4) Sayğac k = 1, gövdədə k = k + 1, dövrdən sonra 8 çap olunub.

Həllini göstər
1) 5 + 6k = 125 → 6k = 120 → k = 20.
2) 3ᵏ = 243 = 3⁵ → k = 5.
3) 2 · 4ᵏ = 2048 → 4ᵏ = 1024 = 4⁵ → k = 5.
4) 1 + k = 8 → k = 7. Sayğac 1-dən başlayırsa, çap olunan qiymət iterasiyaların sayından 1 çoxdur.

Şərtdən bərabərsizliyə: ən kiçik və ən böyük giriş

Dövr düz k dəfə işləyibsə, iki fakt doğrudur: (k − 1)-ci iterasiyadan sonra şərt hələ doğru idi (yoxsa k-cı iterasiya başlamazdı), k-cı iterasiyadan sonra isə yalan oldu (dövr dayandı). Bu iki cümlə giriş qiyməti üçün iki bərabərsizlik verir.

şərt(x₍ₖ₋₁₎) — doğru, şərt(xₖ) — yalan
burada:
  • xₖdövr dəyişəninin k iterasiyadan sonrakı qiyməti, girişlə ifadə olunur (məsələn, s₀ + k · m)

Dövrün düz k dəfə işləməsinin şərti.

  1. 1
    k-nı tap

    çap olunan qiymətdən iterasiyaların sayını.

  2. 2
    Dəyişəni girişlə ifadə et

    məsələn, k addımdan sonra s = 25 + k · m.

  3. 3
    İki bərabərsizlik qur

    k addımdan sonra şərt yalan, k − 1 addımdan sonra doğrudur.

  4. 4
    Tam həlləri seç

    ən kiçik və ya ən böyük natural qiymət; bütün uyğun girişlərin sayı isə R − L + 1.

Python
m = int(input())
n = 2
s = 25
while s <= 900:
    s = s + m
    n = n + 5
print(n)
Nümunə 3-ün proqramı — imtahandakı kimi, klaviaturadan oxuyur.
Nümunə 3. Ən kiçik giriş

Proqramın icrası nəticəsində 77 çap olunması üçün m-in hansı ən kiçik natural qiyməti daxil edilməlidir? m-in ən böyük uyğun qiyməti neçədir?
A) 58 B) 59 C) 60 D) 62 E) 63

Həllini göstər
1) n = 2 + 5k = 77 → k = 15.
2) k addımdan sonra s = 25 + k · m.
3) 15 addımdan sonra dövr dayandı: 25 + 15m > 900 → 15m > 875 → m > 58,3. 14 addımdan sonra şərt hələ doğru idi: 25 + 14m ≤ 900 → m ≤ 62,5.
4) 59 ≤ m ≤ 62. Ən kiçik: 59 (cavab B), ən böyük: 62; 77-ni 4 giriş verir.
Yoxlama: m = 58 olsa, 15 addımdan sonra s = 895 ≤ 900 — dövr 16-cı dəfə işləyər və 82 çap olunar.
x // q = y ⇔ q · y ≤ x ≤ q · y + q − 1
burada:
  • qbölən (a = a // q)
  • ytam bölmənin nəticəsi

Tam bölmədə geriyə addım: ən kiçik x = q · y, ən böyük x = q · y + q − 1.

Nümunə 4. Tam bölmədən geri

Hansı x ədədləri üçün 1) x // 3 = 5; 2) x // 10 = 42; 3) x // 2 = 7?

Həllini göstər
1) 3 · 5 = 15 ≤ x ≤ 17: x = 15, 16, 17.
2) 420 ≤ x ≤ 429 — 10 ədəd.
3) 14 ≤ x ≤ 15.
Python
a = int(input())
n = 1
while a > 5:
    a = a // 3
    n = n * 2
print(n)
Nümunə 5-in proqramı — imtahandakı kimi, klaviaturadan oxuyur.
Nümunə 5. Ən böyük və ən kiçik giriş (kodlaşdırılan tapşırıq)

Nəticədə 8 çap olunması üçün 1) a-nın ən böyük natural qiymətini; 2) ən kiçik natural qiymətini; 3) belə qiymətlərin sayını tapın.

Həllini göstər
n = 2ᵏ = 8 → k = 3. Qiymətləri sondan əvvələ doğru bərpa edirik (a₃ — 3 addımdan sonrakı qiymət).
1) Dövr dayandı: a₃ ≤ 5, ən böyüyü a₃ = 5. Hər addımda ən böyük x = 3y + 2: a₂ = 17, a₁ = 53, a = 161. Şərtlər ödənir: 161, 53, 17 > 5.
2) 3-cü iterasiya baş verdi: a₂ > 5, yəni a₂ ≥ 6 (6 // 3 = 2 ≤ 5 — dövr dayanır). Ən kiçik x = 3y: a₁ = 18, a = 54.
3) 54 ≤ a ≤ 161: 161 − 54 + 1 = 108 qiymət. Kodlaşdırılan tapşırıqda «ən böyük və ən kiçik qiymətlərin fərqi» soruşulsa, cavab 161 − 54 = 107 olar.

Neçə giriş eyni nəticəni verir?

Bu sualda həm ən kiçik (L), həm də ən böyük (R) girişi tapırıq. Aradakı bütün tam ədədlər uyğun gəlirsə, cavab R − L + 1-dir (iki ucu da sayırıq). Gövdədə əlavə olunan ədəd dəyişirsə (s = s + k * 4), k addımın cəmini arifmetik silsilənin cəmi kimi hesablayırıq.

say = R − L + 1 1 + 2 + … + k = k(k + 1) / 2say = R − L + 1 1 + 2 + … + k = k(k + 1) / 2
burada:
  • L, Rən kiçik və ən böyük uyğun giriş
  • k(k + 1) / 2k(k + 1) / 2ilk k natural ədədin cəmi

Parçadakı tam ədədlərin sayı və dəyişən addımlı cəm.

Python
s = int(input())
k = 1
while s < 300:
    s = s + k * 4
    k = k + 1
print(k)
Nümunə 6-nın proqramı — imtahandakı kimi, klaviaturadan oxuyur.
Nümunə 6. Neçə natural ədəd 9 verir?

Klaviaturadan neçə natural ədəd daxil etmək olar ki, hər dəfə 9 çap olunsun?
A) 31 B) 32 C) 33 D) 144 E) 30

Həllini göstər
k 1-dən başlayır və dövrdən sonra 9-dur, deməli dövr 8 dəfə işləyib (k = 1, 2, …, 8 ilə).
8 addımda əlavə olunan: 4 · (1 + 2 + … + 8) = 4 · 36 = 144; 7 addımda: 4 · 28 = 112.
8 addımdan sonra dövr dayandı: s + 144 ≥ 300 → s ≥ 156.
7 addımdan sonra şərt doğru idi: s + 112 < 300 → s < 188, yəni s ≤ 187.
156 ≤ s ≤ 187: 187 − 156 + 1 = 32. Cavab: B.
Python
for m in range(1, 101):
    n = 2
    s = 25
    while s <= 900:
        s = s + m
        n = n + 5
    if n == 77:
        print(m)
▸ Gözlənilən nəticə
59
60
61
62
Tam yoxlama: 77-ni yalnız m = 59, 60, 61, 62 verir.

Rəqəmlər, düsturlar və funksiyalar

Proqram ədədi rəqəmlərinə ayırırsa, nəticə iki şey deyir: rəqəmlərin sayı və rəqəmlər haqqında bir fakt (cəm, hasil…). Ən böyük ədədi qurmaq üçün böyük rəqəmləri sola yazırıq; ən kiçik ədəddə birinci rəqəm ən azı 1 olmalı, cəmin qalanı isə sağda 9-larla yığılmalıdır.

Python
y = int(input())
m = 0
n = 0
while y > 0:
    m = m + 3
    n = n + y % 10
    y = y // 10
print(m, n)
Nümunə 7-nin proqramı — imtahandakı kimi, klaviaturadan oxuyur.
Nümunə 7. Rəqəmlərə görə geri həll (kodlaşdırılan tapşırıq)

Proqram 12 21 çap edib. y üçün daxil edilmiş ola biləcək ən böyük və ən kiçik natural ədədi tapın.

Həllini göstər
m hər rəqəm üçün 3 artır: 12 / 3 = 4 — ədəd dördrəqəmlidir. n rəqəmlərin cəmidir: 21.
Ən böyük: soldan mümkün qədər böyük rəqəmlər — 9, 9, sonra 21 − 18 = 3, sonda 0: 9930.
Ən kiçik: birinci rəqəm 1, qalan 20 sağdan yığılır: 9, 9, sonra 2 — 1299.
Yoxlama: 9 + 9 + 3 + 0 = 21, 1 + 2 + 9 + 9 = 21. Fərq soruşulsa: 9930 − 1299 = 8631.

«Proqram hansı ifadəni hesablayır?» sualında izləmə cədvəlinə ilk 2–3 iterasiyanı yazırıq və hədlərin qanunauyğunluğunu görürük. Sonra variantları n = 1 və n = 2 üçün yoxlayırıq.

Python
n = int(input())
s = 0
p = 1
for i in range(1, n + 1):
    p = p * 2
    s = s + i / p
print(s)
Nümunə 8-in proqramı — imtahandakı kimi, klaviaturadan oxuyur.
Nümunə 8. Dövr hansı ifadəni hesablayır?

Proqram hansı ifadənin qiymətini hesablayır?
A) 1/2 + 1/4 + … + 1/2ⁿ
B) 1/2 + 2/4 + 3/8 + … + n/2ⁿ
C) 1/2 + 2/3 + … + n/(n + 1)
D) 2 + 4/2 + 8/3 + … + 2ⁿ/n
E) 1 + 1/2 + … + 1/n

Həllini göstər
i = 1: p = 2, s = 1/2
i = 2: p = 4, s = 1/2 + 2/4
i = 3: p = 8, s = 1/2 + 2/4 + 3/8
p hər addımda 2ⁱ olur, surətdə isə i dayanır: hədd i/2ⁱ. Cavab: B.
Yoxlama: n = 3 üçün proqram 1.375 çap edir və 0,5 + 0,5 + 0,375 = 1,375.

Dövr şərtində funksiya ola bilər (bax: «Funksiya: def, parametrlər və return»). Onda əvvəlcə funksiyanın hansı ifadəni qaytardığını yaz, sonra şərti adi bərabərsizlik kimi həll et.

Python
def f(x):
    return x * x

def g(x):
    return 5 * x + 6

k = abs(int(input()))
i = 1
while f(i) <= g(k):
    i = i + 1
print(i)
Nümunə 9-un proqramı — imtahandakı kimi, klaviaturadan oxuyur.
Nümunə 9. Şərtdə funksiyalar

1) Klaviaturadan −20 daxil edilir. Nə çap olunar?
A) 10 B) 11 C) 12 D) 106 E) 9
2) Neçə natural k üçün 11 çap olunar?

Həllini göstər
1) k = |−20| = 20, g(20) = 106. Dövr i² ≤ 106 olduqca davam edir: 10² = 100 ≤ 106, 11² = 121 > 106 — dayanır. Çap olunur 11. Cavab: B.
2) 11 çap olunması üçün 10² ≤ g(k) < 11², yəni 100 ≤ 5k + 6 ≤ 120 → 18,8 ≤ k ≤ 22,8 → k = 19, 20, 21, 22 — 4 ədəd.
Tapşırıq

Nümunə 6-nı yoxla: s = 1, 2, …, 400 qiymətlərinin hər biri üçün onun proqramını icra et və 9 çap olunan ən kiçik s-i, ən böyük s-i və belə qiymətlərin sayını bir sətirdə çap et.

Tapşırıq · Python
lo = 0
hi = 0
c = 0
for x in range(1, 401):
    s = x
    k = 1
    # the loop of Example 6 here

    # if k == 9, update lo, hi and c

print(lo, hi, c)
▸ Gözlənilən nəticə
156 187 32
Tapşırıq

Nümunə 7-ni yoxla: 1000-dən 9999-a qədər y-lər arasında proqramın 12 21 çap etdiyi ən böyük ədədi tap və çap et.

Tapşırıq · Python
best = 0
for x in range(1000, 10000):
    y = x
    m = 0
    n = 0
    # the loop of Example 7 here

    # remember x if the program would print 12 21

print(best)
▸ Gözlənilən nəticə
9930

Əsas fikirlər

  • while şərti gövdədən əvvəl yoxlanılır; dövrdən sonra dəyişənlər son iterasiyanın qiymətlərini saxlayır.
  • Tərs tapşırıqda əvvəlcə k-nı tap: n = n₀ + k · d və ya s = s₀ · qᵏ.
  • Düz k iterasiya: k − 1 addımdan sonra şərt doğru, k addımdan sonra yalan — iki bərabərsizlik.
  • Tam bölmədən geri: x // q = y ⇔ q · y ≤ x ≤ q · y + q − 1; uyğun girişlərin sayı R − L + 1-dir.
  • Ən böyük ədəd üçün böyük rəqəmlər sola, ən kiçik ədəd üçün 9-lar sağa; cavabı variantlarla və ya tam yoxlama ilə yoxla.

Özünü yoxla

12 sual. Hər düzgün cavab XP qazandırır.

1 / 12
while dövründə şərt nə vaxt yoxlanılır?