12-dars: Oylik imtihon (Dasturlash asoslari)
Dars haqida
Davomiyligi: 90 daqiqa Format: Test + amaliy C dasturlari + GitHub portfolio tekshiruvi Maqsad: 4-oy davomida o'rganilgan CS asoslari, terminal, Git/GitHub va C tili ko'nikmalarini baholash.
Imtihon tuzilmasi
| Qism | Vaqt | Ball |
|---|---|---|
| 1-qism: Test (20 savol) | 30 daqiqa | 35 ball |
| 2-qism: Amaliy C dasturlari | 50 daqiqa | 45 ball |
| 3-qism: GitHub portfolio | 10 daqiqa | 20 ball |
| Jami | 90 daqiqa | 100 ball |
O'tish chegarasi: 60 ball
1-qism: Test (35 ball)
20 ta savol, har biri 1.75 ball. Vaqt — 30 daqiqa.
CS asoslari, binary va algoritm (savol 1–5)
1. Algoritm nima?
- a) Dasturlash tili
- b) Muammoni yechishning ketma-ket qadamlari
- c) Kompyuter qurilmasi
- d) Tarjima dasturi
2. Decimal 13 binary'da qanday yoziladi?
- a) 1100
- b) 1101
- c) 1011
- d) 1110
3. ASCII jadvalida 'A' harfining raqami nechta?
- a) 64
- b) 65
- c) 97
- d) 100
4. Flowchart'da romb shakli nimani anglatadi?
- a) Boshlash
- b) Amal
- c) Shart
- d) Tugatish
5. Quyidagi pseudocode natijasi qanday?
SET x = 5
SET y = 3
IF x > y:
PRINT "Katta"
ELSE:
PRINT "Kichik"- a) Katta
- b) Kichik
- c) 5
- d) 8
Terminal, Git va GitHub (savol 6–10)
6. Terminal'da hozirgi papkani ko'rish:
- a)
pwd - b)
ls - c)
cd - d)
mkdir
7. git add . nima qiladi?
- a) Hammasini commit qiladi
- b) Hamma o'zgarishlarni staging'ga qo'yadi
- c) GitHub'ga yuklaydi
- d) Yangi branch yaratadi
8. Commit message qaysi konventsiyaga ko'ra to'g'ri yozilgan?
- a)
asdf - b)
feat: add login form - c)
xato tuzatildi - d)
12345
9. GitHub'dagi repo'ni kompyuterga olish:
- a)
git push - b)
git pull - c)
git clone - d)
git fetch
10. Pull Request nimani anglatadi?
- a) Faylni o'chirish
- b) Branchdan main'ga qo'shish so'rovi
- c) Repo'ni nusxalash
- d) Bug yaratish
C tili asoslari (savol 11–20)
11. Har C dasturda bo'lishi shart funksiya:
- a)
start() - b)
main() - c)
program() - d)
init()
12. Statement oxiriga qaysi belgi qo'yiladi?
- a)
.(nuqta) - b)
,(vergul) - c)
;(nuqtali vergul) - d)
:(ikki nuqta)
13. printf qaysi header'da?
- a)
<string.h> - b)
<math.h> - c)
<stdio.h> - d)
<stdlib.h>
14. %d qaysi tur uchun?
- a) double
- b) float
- c) int
- d) char
15. int x = 5; x++; — natijada x qancha?
- a) 5
- b) 6
- c) 4
- d) 10
16. 10 % 3 natija:
- a) 3.33
- b) 3
- c) 1
- d) 0
17. Quyidagi kod nimani chiqaradi?
int x = 5;
if (x > 3 && x < 10) printf("A");
else if (x == 5) printf("B");
else printf("C");- a) A
- b) B
- c) AB
- d) C
18. for (int i = 0; i < 5; i++) — sikl necha marta ishlaydi?
- a) 4
- b) 5
- c) 6
- d) Cheksiz
19. do-while va while farqi:
- a) Farq yo'q
- b) do-while kamida bir marta ishlaydi
- c) while kamida bir marta ishlaydi
- d) do-while tez
20. void func(void) ning ma'nosi:
- a) func hech narsa qaytarmaydi va parameter yo'q
- b) func bo'sh
- c) func ishlamaydi
- d) Xato
Javoblar kaliti
Test javoblari (o'qituvchi uchun)
1-b, 2-b, 3-b, 4-c, 5-a, 6-a, 7-b, 8-b, 9-c, 10-b, 11-b, 12-c, 13-c, 14-c, 15-b, 16-c, 17-a, 18-b, 19-b, 20-a
2-qism: Amaliy C dasturlari (45 ball)
Vaqt: 50 daqiqa. 3 ta masala + Git ish jarayoni.
Ish jarayoni ham baholanadi (8 ball)
Yechimlar foundation-darslar repo ichida imtihon/ papkaga yoziladi:
- Repo ichida
imtihon/papka yarating - Har masala — alohida
.cfayl (nomi quyida berilgan) - Har masala tugagach — alohida commit (conventional format, masalan
feat: add fizzbuzz solution) - Imtihon oxirida hammasini GitHub'ga push qiling
Commit qilmagan yoki push qilmagan ish — topshirilmagan hisoblanadi.
Eslatma
Foydalanuvchidan qiymat o'qish (scanf) hali o'tilmagan — u 5-oyda o'rganiladi. Shuning uchun boshlang'ich qiymatlarni kod ichida o'zgaruvchi sifatida bering.
Masala 1: Sonlar yig'indisi (12 ball)
Fayl: imtihon/yigindi.c
for sikli yordamida:
- 1 dan 100 gacha barcha sonlar yig'indisini hisoblang
- Toq sonlar yig'indisini alohida hisoblang
- Juft sonlar yig'indisini alohida hisoblang
- Uchala natijani
printfbilan chiqaring
Kutilgan natija:
1 dan 100 gacha yig'indi: 5050
Toq sonlar yig'indisi: 2500
Juft sonlar yig'indisi: 2550Baholash:
| Mezon | Ball |
|---|---|
| Sikl to'g'ri tuzilgan | 4 |
| Umumiy yig'indi to'g'ri | 3 |
Toq/juft ajratish (% bilan) | 3 |
| Chiqish toza va tushunarli | 2 |
Masala 2: FizzBuzz (12 ball)
Fayl: imtihon/fizzbuzz.c
1 dan 50 gacha sonlarni chiqaring, lekin:
- Son 3 ga ham, 5 ga ham bo'linsa —
FizzBuzzyozing - Faqat 3 ga bo'linsa —
Fizzyozing - Faqat 5 ga bo'linsa —
Buzzyozing - Boshqa hollarda — sonning o'zini yozing
Kutilgan natija (boshi):
1
2
Fizz
4
Buzz
Fizz
7
...
14
FizzBuzz
...Baholash:
| Mezon | Ball |
|---|---|
| Sikl to'g'ri (1–50) | 3 |
| Shartlar tartibi to'g'ri (avval FizzBuzz) | 4 |
% operatori to'g'ri ishlatilgan | 3 |
| Chiqish formati to'g'ri | 2 |
Masala 3: Funksiyalar (13 ball)
Fayl: imtihon/funksiyalar.c
Uchta funksiya yozing va main ichida ishlating:
int eng_katta(int a, int b, int c)— uchta sondan eng kattasini qaytaradiint juftmi(int n)— son juft bo'lsa1, toq bo'lsa0qaytaradilong faktorial(int n)— n! ni hisoblaydi (sikl bilan)
main funksiyasida har birini kamida 2 xil qiymat bilan chaqirib, natijalarni chiqaring.
Namuna chiqish:
eng_katta(3, 9, 5) = 9
eng_katta(12, 4, 12) = 12
juftmi(8) = 1
juftmi(7) = 0
faktorial(5) = 120
faktorial(7) = 5040Baholash:
| Mezon | Ball |
|---|---|
eng_katta to'g'ri ishlaydi | 4 |
juftmi to'g'ri ishlaydi | 3 |
faktorial to'g'ri ishlaydi | 4 |
main'da chaqirish va chiqish | 2 |
Git ish jarayoni (8 ball)
| Mezon | Ball |
|---|---|
imtihon/ papka to'g'ri joyda | 1 |
| Har masala alohida commit (conventional) | 4 |
| GitHub'ga push qilingan | 2 |
| Fayl nomlari topshiriqqa mos | 1 |
3-qism: GitHub portfolio (20 ball)
Bu qism uchun imtihon kuni alohida ish talab qilinmaydi — oy davomida yig'ilgan repo baholanadi. Imtihon oxirida o'qituvchi foundation-darslar repo'ngizni ochib tekshiradi (oxirgi push qilingan holat hisobga olinadi).
Tekshiriladi:
- Repo tartibi — har dars uchun alohida
4-oy-dars-N/papka, fayllar o'z joyida - Commit tarixi — oy davomida muntazam commitlar, conventional format (
feat:,fix:,docs:...) - README — repo tavsifi, darslar ro'yxati, siz haqingizda qisqacha
- Ochiqlik — repo Public,
.cfayllar ochilib o'qiladi
Baholash:
| Mezon | Ball |
|---|---|
| Repo tartibi (papkalar tizimi) | 6 |
| Commit tarixi (muntazam, conventional) | 8 |
| README to'liq va chiroyli | 4 |
| Repo Public, fayllar ochiladi | 2 |
Baholash
Umumiy taqsimot
| Qism | Ball |
|---|---|
| 1-qism: Test | 35 |
| 2-qism: Amaliy C dasturlari | 45 |
| 3-qism: GitHub portfolio | 20 |
| Jami | 100 |
Natijalar
- 90+ — A+, ajoyib
- 80–89 — A, juda yaxshi
- 70–79 — B, yaxshi
- 60–69 — C, o'tdi
- < 60 — F, qayta topshirish
O'tish chegarasi: 60 ball.
Qayta topshirish
60 dan past ball olganlar — 1 hafta ichida qayta topshiradi.
Imtihondan oldin tayyorgarlik
Tavsiyalar
- Yaxshi uxlang — 7+ soat
- Compiler tekshiring:
gcc --versionyokiclang --version - Git sozlangan:
git config --global --listda ism va email bor - GitHub'ga kirish ishlayapti (push qilib ko'ring)
- VS Code tayyor
- Vaqtni boshqaring:
- Test: 30 daqiqa
- Amaliy: 50 daqiqa
- Portfolio va yakuniy push: 10 daqiqa
Takrorlash uchun asosiy mavzular:
- Binary konvertatsiya va ASCII
- Flowchart shakllari, pseudocode o'qish
- Terminal buyruqlari:
pwd,ls,cd,mkdir - Git zanjiri:
add→commit→push, branch va Pull Request - C: o'zgaruvchilar,
%operatori,if/else,for/while, funksiya yozish
5-oyga tayyorgarlik
5-oyda C tili davom etadi — endi dasturlar jiddiylashadi:
| Mavzu | Nima o'rganiladi |
|---|---|
| Input/Output | scanf — foydalanuvchidan qiymat o'qish |
| String | Matnlar bilan ishlash |
| Massiv | Ko'p qiymatni bitta o'zgaruvchida saqlash |
| Saralash va qidirish | Sort va search algoritmlari C'da |
| Pointer | Xotira manzillari — C'ning yuragi |
| Struct | O'z ma'lumot turingizni yaratish |
| Fayl | Ma'lumotni faylga yozish va o'qish |
Tayyorgarlik:
- 4-oy darslarini takror ko'ring (ayniqsa sikllar va funksiyalar)
foundation-darslarrepo'ni tartibga keltiring- Massiv haqida qisqacha o'qib keling (nima ekanini bilish yetadi)
Refleksiya
Imtihondan keyin Drive'da Google Doc: "4-oy refleksiya"
4-oy refleksiya
1. Eng yoqqan mavzu: ___
2. Eng qiyin mavzu: ___
3. 3-oyda AI yordamida dastur yasatgansiz, 4-oyda o'zingiz yozdingiz —
farqni qanday sezdingiz? ___
4. GitHub'dagi eng faxrlanadigan commit'ingiz: ___
5. 5-oyga maqsadlar:
- ___
- ___
- ___Drive havolasini o'qituvchiga jo'nating.
Aloqa
Imtihon vaqtida muammo bo'lsa (compiler, internet, GitHub) — darrov o'qituvchini chaqiring.
Yutuqlar tilab qolaman! 5-oyda C tilining eng qiziqarli qismlari kutmoqda.