Məzmuna keç
Educora
Orta9–11-ci sinif25 dəq37 / 59

Proqram yazmaq: yazılı tapşırıqların həlli

İnformatikanın 89 və 90-cı yazılı tapşırıqları: necə qiymətləndirilir, «Giriş / Çıxış» cədvəli necə oxunur, 2025–2026-cı illərin tapşırıq ailələri üzrə 10 nümunəvi həll və bal itirən səhvlər.

Özünü yoxla
Bu dərsdə öyrənəcəksən
  • Yazılı tapşırıqların yerini, çəkisini və qiymətləndirmə şkalasını (0, ⅓, ½, ⅔, 1) bilmək.
  • «Giriş / Çıxış» cədvəlindən daxiletmənin formasını, çıxışın şəklini və xüsusi halı (yoxdur) çıxarmaq.
  • Beş tapşırıq ailəsi üçün hazır skeletlə tam proqram yazmaq: aralıqda ədədlər və bölənlər, qalıq sinifləri, siyahılar, rəqəmlər, sətirlər.
  • Proqramı nümunələrlə yoxlamaq və bal itirən tipik səhvləri tapmaq.

İnformatika hissəsinin sonunda cavab vərəqində boş sahə və bir cümlə gözləyir: «…çap edən proqramı Python dilində yazın. Məsələn:» — yanında isə kiçik «Giriş / Çıxış» cədvəli. Burada cavab variantları yoxdur, yazdığın proqramı yoxlayıcılar (markerlər) qiymətləndirir. Yaxşı xəbər də var: 2025–2026-cı illərin dörd imtahanındakı səkkiz yazılı Python tapşırığının hamısı bir neçə ailəyə aiddir. Hər ailənin skeletini bilsən, tapşırıq «şərti yazmaq» işinə çevrilir.

Yazılı tapşırıq necə görünür və necə qiymətləndirilir

İnformatika hissəsi 61–90-cı tapşırıqlardır: 22 qapalı (61–82), 5 kodlaşdırılan (83–87) və 3 yazılı (88–90). 88-ci tapşırıqda blok-sxem qurulur («Blok-sxemin qurulması: yazılı tapşırıqlar» dərsinə bax), 89 və 90-cı tapşırıqlarda isə Python proqramı yazılır. Yazılı tapşırıqları markerlər meyarlar əsasında yoxlayır və hər birinə 0, ⅓, ½, ⅔ və ya 1 bal verir. DİM ətraflı meyarları dərc etmir, ona görə məqsəd sadədir: daxiletmə, hesablama və çıxış hissələrinin hər biri yerində olan tam, düzgün və oxunaqlı proqram.

NBa = (Dkod + 2 · Dyazılı) · 100 / 33NBa = (Dkod + 2 · Dyazılı) · 100 / 33
burada:
  • NBaaçıq tapşırıqlar üzrə nisbi bal
  • Dkoddüzgün kodlaşdırılmış cavabların sayı (0–5)
  • Dyazılıyazılı tapşırıqlara verilən balların cəmi (0–3)

Qapalı hissə buna 100/33 · (Dq − Yq/4) əlavə edir; fənn üzrə maksimum 100-dür. Yazılı tapşırıq iki kodlaşdırılan tapşırıq qədər çəkiyə malikdir.

Balın hesablanması

Leyla kodlaşdırılan 5 tapşırıqdan 4-nü düzgün həll edib, yazılı tapşırıqlar üçün isə 1, ⅔ və ½ bal alıb. Onun açıq tapşırıqlar üzrə nisbi balı neçədir? Bir yazılı tapşırığın tam həlli neçə bal «dəyər»?

Həllini göstər
Dyazılı = 1 + ⅔ + ½ = 13/6.
NBa = (4 + 2 · 13/6) · 100/33 = (4 + 13/3) · 100/33 = 25/3 · 100/33 ≈ 25,3.
Bir yazılı tapşırığın tam həlli 2 · 100/33 ≈ 6,1 bal, ⅓ isə ≈ 2,0 bal verir (100 ballıq şkalada). Rİ altqrupunda informatikanın çəki əmsalı 1 olduğundan, bu ballar ümumi bala olduğu kimi düşür.
Nəticə: düzgün başlanmış, amma yarımçıq proqram da bal gətirə bilər — boş sahə isə heç vaxt.

Tapşırığın ən dəyərli hissəsi «Giriş / Çıxış» cədvəlidir. Sol sütun klaviaturadan yığılanı göstərir — hər sətir bir input() çağırışıdır. Sağ sütun proqramın çap etməli olduğunu dəqiq göstərir: ədəd, söz, kvadrat mötərizəli siyahı və ya bir neçə sətir. Cədvəli belə oxu:

  1. 1
    Sətirləri say

    Bir nümunədə neçə giriş sətri var? Birinci sətir n-dirsə və ondan sonra düz n sətir gəlirsə, əvvəl n-i oxu, sonra dövrdə n ədəd.

  2. 2
    Tipi seç

    Tam ədəd — int(input()); mətn — input(); bir sətirdə boşluqla bir neçə qiymət — input().split(' ').

  3. 3
    Çıxışın şəklinə bax

    Bir ədəd — dövrdən sonra bir print; [15, 6, 7] — print(b); hər ədəd ayrı sətirdə — print dövrün içində.

  4. 4
    Qaydanı yoxla

    Bir nümunəni əllə hesabla: niyə məhz bu cavab alınır? «Böyük» və «böyük və ya bərabər», «sayı» və «cəmi» fərqinə diqqət et.

  5. 5
    Xüsusi halı tap

    Çıxışda ədəd əvəzinə söz varsa (yoxdur), dövrdən sonra if–else lazımdır.

«Giriş» sütunundaProqramda
bir ədədn = int(input())
iki ədəd, iki sətirdəa = int(input()), b = int(input())
n, sonra hərəsi ayrı sətirdə n ədədfor i in range(0, n): a.append(int(input()))
bir sətirdə boşluqla ayrılmış qiymətləra = input().split(' ') — elementlər sətirdir
bir sətir mətns = input()

Proqramın skeleti: daxiletmə → emal → çıxış

İmtahan proqramlarının hamısı üç hissədən ibarətdir və onlar həmişə bu ardıcıllıqla yazılır. Daxiletmə: bütün input() sətirləri əvvəldə. Emal: sayğac və ya cəm dövrdən əvvəl sıfırlanır (k = 0, s = 0, b = []), dövr şərti yoxlayır və nəticəni toplayır. Çıxış: sağa çəkilmədən, dövrdən sonra — lazım olsa yoxdur budağı ilə. Aşağıdakı on nümunə beş ailəyə bölünür; hər ailənin birinci həlli həmin ailə üçün skeletdir.

Nümunəvi həllər: beş ailə, on tapşırıq

1-ci ailə — aralıqda ədədlər və bölənlər. Dövr range(a, b + 1) və ya range(1, n + 1) üzrə gedir, şərt ödənəndə sayğac və ya cəm artır. 2025–2026-cı illərdə bu ailədən «parçada tək ədədlərin kvadratları» və «tək bölənlərin cəmi» tipli tapşırıqlar verilib.

1. Cüt tam kvadratlar

Klaviaturadan daxil edilən a və b (a < b) natural ədədləri üçün [a; b] parçasında yerləşən cüt tam kvadratların (4, 16, 36, …) cəmini, belə ədəd yoxdursa «yoxdur» sözünü çap edən proqramı Python dilində yazın.
Giriş → Çıxış (a və b ayrı sətirlərdə)
10, 70 → 116
50, 60 → yoxdur
1, 4 → 4

Həllini göstər
Hər iki uc daxildir → range(a, b + 1).
Tam kvadrat yoxlaması: r = int(x ** 0.5) və r * r == x — tam ədədlərlə, dəqiqdir.
Cüt: x % 2 == 0. Cəm s dövrdən əvvəl 0-dır.
Natural ədədlərin cəmi yalnız heç bir ədəd tapılmayanda 0 olur, ona görə dövrdən sonra if s == 0: → yoxdur.
Yoxlama: [10; 70]: 16 + 36 + 64 = 116 ✓.
Python
a = int(input())
b = int(input())
s = 0
for x in range(a, b + 1):
    r = int(x ** 0.5)
    if x % 2 == 0 and r * r == x:
        s = s + x
if s == 0:
    print('yoxdur')
else:
    print(s)
2. Cüt bölənlər

Daxil edilən natural n ədədinin cüt bölənlərinin sayını və cəmini bir sətirdə, boşluqla ayıraraq çap edən proqramı yazın.
Giriş → Çıxış
36 → 6 78
15 → 0 0
8 → 3 14

Həllini göstər
Bölən n-in özü də ola bilər → range(1, n + 1).
Şərt iki hissəlidir: n % d == 0 (bölən) və d % 2 == 0 (cüt), and ilə birləşir.
İki nəticə eyni dövrdə toplanır; print(k, s) onları boşluqla çap edir.
Yoxlama: 36-nın cüt bölənləri 2, 4, 6, 12, 18, 36 → 6 ədəd, cəmi 78 ✓.
Python
n = int(input())
k = 0
s = 0
for d in range(1, n + 1):
    if n % d == 0 and d % 2 == 0:
        k = k + 1
        s = s + d
print(k, s)

2-ci ailə — qalıq sinifləri. Ədədlər cədvələ «ilan» kimi düzülür və ədədin hansı sütunda olduğu soruşulur. Cədvəlin iki sətri bir dövr təşkil edir: 3 sütunda dövr 6, 4 sütunda 8-dir. 2025-ci ildə bu ailədən üç sütunlu cədvəl verilmişdi.

3. İlan cədvəli

Natural ədədlər A, B, C, D sütunlarına belə düzülüb: 1-ci sətir 1 2 3 4, 2-ci sətir 8 7 6 5, 3-cü sətir 9 10 11 12, 4-cü sətir 16 15 14 13 və s. Daxil edilən a ədədinin hansı sütunda olduğunu çap edən proqramı yazın.
Giriş → Çıxış
7 → B
12 → D
16 → A
30 → C

Həllini göstər
Bir dövrün (iki sətrin) qalıqlarını yaz: a % 8 = 1, 2, 3, 4 → A, B, C, D; 5, 6, 7, 0 → D, C, B, A.
Deməli: A — qalıq 1 və ya 0; B — 2 və ya 7; C — 3 və ya 6; D — 4 və ya 5.
8, 16, 24, … ədədlərinin qalığı 0-dır və onlar A sütunundadır — bu halı unutma.
Yoxlama: 30 % 8 = 6 → C ✓ (8-ci sətir: 32 31 30 29).
Python
a = int(input())
r = a % 8
if r == 1 or r == 0:
    print('A')
elif r == 2 or r == 7:
    print('B')
elif r == 3 or r == 6:
    print('C')
else:
    print('D')

3-cü ailə — siyahıya daxil edilən n ədəd. Əvvəl n, sonra n ədəd oxunur və boş siyahıya yığılır; sonra siyahı ya bütövlükdə (min, max, sum), ya da element-element emal olunur. 2026-cı ildə bu ailədən «hər element + ən kiçik element» və «klasterlərə tam yerləşən fayllar» tipli tapşırıqlar verilib.

4. Ən böyük elementlə fərq

n sayda tam ədəd boş siyahıya klaviaturadan daxil edilir. Elementləri ilkin siyahının ən böyük elementi ilə hər elementin fərqi olan yeni siyahını çap edən proqramı yazın.
Giriş → Çıxış (birinci ədəd n-dir, hər ədəd ayrı sətirdə)
4, 3, 10, −2, 7 → [7, 0, 12, 3]
3, 5, 5, 1 → [0, 0, 4]

Həllini göstər
Skelet: n = int(input()), a = [], dövrdə a.append(int(input())).
m = max(a) bir dəfə, ikinci dövrdən əvvəl hesablanır.
Yeni siyahı b boşdan qurulur: b.append(m - x).
Çıxış kvadrat mötərizəlidir → print(b).
Yoxlama: max = 10 → 10 − 3, 10 − 10, 10 − (−2), 10 − 7 = [7, 0, 12, 3] ✓.
Python
n = int(input())
a = []
for i in range(0, n):
    a.append(int(input()))
m = max(a)
b = []
for x in a:
    b.append(m - x)
print(b)
5. Klasterlər

Qovluqdakı n faylın Kbaytla həcmləri boş siyahıya daxil edilir. Klaster ölçüsü 8 Kbayt olarsa, faylların diskdə tutduğu ümumi yeri (Kbaytla) çap edən proqramı yazın.
Giriş → Çıxış
3, 20, 8, 1 → 40
4, 16, 17, 7, 40 → 88

Həllini göstər
Fayl diskdə yalnız tam klasterlər tutur: sonuncu klaster yarımçıq dolsa da, bütövlükdə məşğul sayılır («Fayl sistemləri və diskdə tutulan yer» dərsinə bax).
Klasterlərin sayı: x // 8, qalıq varsa + 1 (yuxarı yuvarlaqlaşdırma).
20 Kbayt → 3 klaster = 24 Kbayt; 8 → 8; 1 → 8. Cəmi 40 ✓.
Yoxlama 2: 16 + 24 + 8 + 40 = 88 ✓.
Python
n = int(input())
a = []
for i in range(0, n):
    a.append(int(input()))
s = 0
for x in a:
    k = x // 8
    if x % 8 != 0:
        k = k + 1
    s = s + k * 8
print(s)
6. Ədədi ortadan böyük

n sayda tam ədəd boş siyahıya daxil edilir. Ədədi ortadan böyük olan elementlərin sayını çap edən proqramı yazın.
Giriş → Çıxış
5, 4, 9, 1, 6, 10 → 2
3, 5, 5, 5 → 0

Həllini göstər
Orta m = sum(a) / n dövrdən əvvəl hesablanır; / kəsr verir (6.0) — müqayisə üçün bu, problem deyil.
Şərt ciddidir: «böyük» → x > m, >= yox.
Yoxlama: (4 + 9 + 1 + 6 + 10) / 5 = 6; 6-dan böyük 9 və 10 → 2 ✓. Bütün elementlər bərabərdirsə, heç biri ortadan böyük deyil → 0.
Python
n = int(input())
a = []
for i in range(0, n):
    a.append(int(input()))
m = sum(a) / n
k = 0
for x in a:
    if x > m:
        k = k + 1
print(k)

4-cü ailə — hər ədədin rəqəmləri. Hər ədədin rəqəmləri ayrıca yoxlanır; bunu köməkçi funksiyaya vermək rahatdır («Funksiya: def, parametrlər və return» dərsinə bax). 2026-cı ildə «bütün rəqəmləri tək olan ədədlər» tapşırığı bu ailədən idi.

7. Bütün rəqəmləri cüt

Klaviaturadan daxil edilən n natural ədəddən bütün rəqəmləri cüt olanları (hərəsini ayrı sətirdə), belə ədəd yoxdursa «yoxdur» sözünü çap edən proqramı yazın.
Giriş → Çıxış
4, 248, 1234, 60, 7 → 248 və 60 (iki sətirdə)
2, 13, 5 → yoxdur

Həllini göstər
Funksiya even_digits(n) rəqəmləri sondan bir-bir yoxlayır: tək rəqəm tapılan kimi return False; dövr bitdisə, return True.
Uyğun ədəd dövrün içində çap olunur (çıxışda bir neçə sətir var), sayğac k isə yoxdur üçün lazımdır.
Yoxlama: 248 → 8, 4, 2 cüt ✓; 1234 → 4 cüt, 3 tək ✗; 60 ✓; 7 ✗.
Python
def even_digits(n):
    while n > 0:
        if n % 10 % 2 == 1:
            return False
        n = n // 10
    return True

n = int(input())
a = []
for i in range(0, n):
    a.append(int(input()))
k = 0
for x in a:
    if even_digits(x):
        print(x)
        k = k + 1
if k == 0:
    print('yoxdur')
8. Palindromlar

Daxil edilən a və b (a < b) natural ədədləri üçün [a; b] parçasındakı palindrom ədədlərin (121, 44, 7 kimi — tərsinə oxunanda dəyişməyən) sayını çap edən proqramı yazın.
Giriş → Çıxış
10, 60 → 5
100, 130 → 3
1, 9 → 9

Həllini göstər
Ən qısa yol ədədi sətirə çevirməkdir: str(x) == str(x)[::-1] — sətir öz tərsi ilə eynidir.
«Funksiya: def, parametrlər və return» dərsindəki rev funksiyası ilə x == rev(x) yazmaq da olar.
Yoxlama: [100; 130]: 101, 111, 121 → 3 ✓. Birrəqəmli ədədlərin hamısı palindromdur.
Python
a = int(input())
b = int(input())
k = 0
for x in range(a, b + 1):
    if str(x) == str(x)[::-1]:
        k = k + 1
print(k)

5-ci ailə — sətirlər. Sətir ya bütöv oxunur (s = input()) və simvol-simvol gəzilir, ya da split(' ') ilə hissələrə bölünür. 2025-ci ildə bu ailədən «sətirdə müxtəlif simvolların sayı» və «3 ilə başlayıb 6 ilə bitən elementlərin indekslərinin cəmi» tipli tapşırıqlar verilib.

9. Bir dəfə rast gəlinən simvollar

Klaviaturadan daxil edilən sətirdə yalnız bir dəfə rast gəlinən simvolların sayını çap edən proqramı yazın.
Giriş → Çıxış
abracadabra → 2
python → 6
10 + 20 = 30 → 5

Həllini göstər
Hər simvol ch üçün s.count(ch) == 1 yoxlanır; boşluq da simvoldur.
«10 + 20 = 30»: 0 üç dəfə, boşluq dörd dəfə var; bir dəfə rast gəlinənlər 1, +, 2, =, 3 → 5 ✓.
Fərqli sual — «müxtəlif simvolların sayı» — başqa skeletdir: yeni sətirə və ya siyahıya hər simvolu yalnız bir dəfə əlavə et, sonda len çap et.
Python
s = input()
k = 0
for ch in s:
    if s.count(ch) == 1:
        k = k + 1
print(k)
10. Birinci və sonuncu simvol

Siyahının elementləri bir sətirdə, aralarında 1 boşluq olmaqla daxil edilir. Birinci və sonuncu simvolu eyni olan elementlərin indekslərindən ibarət siyahını, belə element yoxdursa «yoxdur» sözünü çap edən proqramı yazın.
Giriş → Çıxış
aba 12 x 707 ab 55 → [0, 2, 3, 5]
ab cd → yoxdur

Həllini göstər
a = input().split(' ') elementləri sətir kimi verir — burada ədədə çevirmək lazım deyil, çünki simvollar müqayisə olunur.
İndeks lazımdır → for i in range(0, len(a)); element w = a[i], birinci simvol w[0], sonuncu w[-1].
Birsimvollu «x» üçün w[0] və w[-1] eyni simvoldur → uyğundur.
Yoxlama: aba (0), x (2), 707 (3), 55 (5) → [0, 2, 3, 5] ✓.
Python
a = input().split(' ')
b = []
for i in range(0, len(a)):
    w = a[i]
    if w[0] == w[-1]:
        b.append(i)
if len(b) == 0:
    print('yoxdur')
else:
    print(b)

Bal itirən səhvlər və özünü yoxlama

SəhvNə olurDüzəliş
int yoxdur: a = input()sətirlər birləşir: '12' + '5' = '125'; müqayisə əlifba ilə gedir: '9' > '10'a = int(input())
range(1, n)n-in özü yoxlanmır: bölən n və ya parçanın ucu b itirrange(1, n + 1)
print dövrün içindəbir ədəd əvəzinə çoxlu sətirprint-i dövrdən sonra, sağa çəkmədən yaz
yoxdur budağı yoxduruyğun ədəd olmayanda 0 və ya boş siyahı çap olunurdövrdən sonra if k == 0: → print('yoxdur')
çıxışda artıq mətninput('n='), print('k =', k) — çıxış «Çıxış» sütunu ilə üst-üstə düşmürinput() və yalnız tələb olunanı çap edən print
sayğac sıfırlanmayıbNameError və ya səhv cəmdövrdən əvvəl k = 0, s = 0, b = []
sintaksis: if x = 5, : unudulub, girinti qarışıbproqram ümumiyyətlə işləmir== müqayisə edir, = mənimsədir; hər blok 4 boşluq
  1. 1
    Nümunələri izlə

    Hər «Giriş» nümunəsini dəyişənlər cədvəli ilə proqramdan keçir; nəticə «Çıxış» sütunu ilə hərfbəhərf eyni olmalıdır.

  2. 2
    Sərhədləri yoxla

    Uyğun element olmayan hal (yoxdur), bir elementli siyahı, parçanın ucları a və b özləri.

  3. 3
    Çıxışın şəklini yoxla

    Bir print dövrdən sonra? Siyahı mötərizədə? Söz tapşırıqdakı kimi (yoxdur)?

  4. 4
    Sintaksisi yoxla

    İki nöqtələr, girintilər, şərtdə ==, int(input())-da iki cüt mötərizə.

  5. 5
    Şərti yenidən oxu

    «sayını» yoxsa «cəmini»? «tək» yoxsa «cüt»? «böyük» yoxsa «böyük və ya bərabər»?

Python
def solve(a, b):
    s = 0
    for x in range(a, b + 1):
        r = int(x ** 0.5)
        if x % 2 == 0 and r * r == x:
            s = s + x
    if s == 0:
        return 'yoxdur'
    return s

tests = [(10, 70, 116), (50, 60, 'yoxdur'), (1, 4, 4)]
for a, b, expected in tests:
    got = solve(a, b)
    print(a, b, got, got == expected)
▸ Gözlənilən nəticə
10 70 116 True
50 60 yoxdur True
1 4 4 True

Evdə hazırlaşanda proqramı belə yoxla: hesablamanı funksiyaya çevir və tapşırıqdakı bütün nümunələri bir dəfəyə işə sal. Sonra b + 1-i b ilə əvəz edib yenidən işə sal — üçüncü sınaq False verəcək. Səhvi tutan sınaq belə görünür: parçanın sağ ucu (b = 4) özü cavabdır.

Tapşırıq

İmtahanda a və b klaviaturadan oxunardı (a = int(input()), b = int(input())); burada onlar verilib. [a; b] parçasında rəqəmlərinin cəmi 9 olan ədədlərin sayını, belə ədəd yoxdursa yoxdur sözünü çap et.

Tapşırıq · Python
a = 20
b = 60
# exam version: a = int(input()) and b = int(input())
▸ Gözlənilən nəticə
4
Tapşırıq

Elementlər bir sətirdə, 1 boşluqla daxil edilir (imtahanda line = input()). Özündən əvvəlki elementdən böyük olan elementlərin indekslərinin cəmini çap et (0 indeksli elementin əvvəlində element yoxdur).

Tapşırıq · Python
line = '7 12 5 30 8'
# exam version: line = input()
▸ Gözlənilən nəticə
4

Yazılı tapşırıqlara hazırlığın ən yaxşı yolu hər ailədən bir tapşırığı kağız üzərində, vaxt ölçərək yazmaq və sonra kompüterdə nümunələrlə yoxlamaqdır. Proqram oxumaq bacarığı (qapalı və kodlaşdırılan tapşırıqlar) «Proqramın analizi: nəticədən giriş qiymətinə» dərsində, 88-ci tapşırığın blok-sxemi isə «Blok-sxemin qurulması: yazılı tapşırıqlar» dərsində məşq olunur.

Əsas fikirlər

  • 89 və 90-cı tapşırıqlar Python proqramıdır; markerlər 0, ⅓, ½, ⅔ və ya 1 bal verir, bir yazılı tapşırıq iki kodlaşdırılan tapşırıq qədər çəkiyə malikdir.
  • «Giriş» sütunu input() çağırışlarını, «Çıxış» sütunu isə çap olunmalı olanı dəqiq göstərir.
  • Skelet həmişə eynidir: daxiletmə → sayğac, cəm və ya boş siyahı → dövr və şərt → dövrdən sonra çıxış.
  • Söz çıxışı (yoxdur) dövrdən sonra if–else tələb edir.
  • Ən çox bal itirən səhvlər: int yoxdur, range(1, n), print dövrün içində, çıxışda artıq mətn.

Özünü yoxla

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

1 / 12
İnformatikanın yazılı tapşırıqları necə qiymətləndirilir?