Skip to content

5-oy uy vazifalari (C tili — chuqurlashish)

Umumiy ko'rsatmalar

Hammasi GitHub orqali! (4-oyning 6-darsidan beri odatiy tartib)

  • Repo: c-darslari (yoki foundation-darslar) — 4-oyda boshlangan repo davomi
  • Har dars uchun alohida papka: 5-oy-dars-N/
  • Har vazifa — alohida .c fayl + alohida commit (conventional commits)
  • Email subject: 5-oy UV — [dars-raqam] — [Ism Familiya]
  • Email body: GitHub repo havolasi + qisqacha sharh

1-dars uy vazifalari: Input/Output — scanf, printf

Topshiriq 1.1 — Interaktiv tanishuv

Ikkita fayl:

  1. tanishuv.c — foydalanuvchidan ism, yosh va shaharni so'raydi, so'ng chiroyli formatda javob chiqaradi:
Ismingiz: Ali
Yoshingiz: 15
Shahringiz: Toshkent

Salom, Ali! Siz 15 yoshdasiz va Toshkentda yashaysiz.
  1. yosh.c — tug'ilgan yilni so'raydi, yoshni kun, soat va daqiqalarda hisoblab chiqaradi

Topshiriq 1.2 — Kalkulyator va chegirma

  1. calc.c — to'liq kalkulyator: 2 ta son va amalni (+, -, *, /) so'raydi, natijani chiqaradi. Nolga bo'lishni tekshiring!
  2. narx.c — mahsulot narxi va chegirma foizini so'raydi, yakuniy narxni %.2f formatda chiqaradi

Topshiriq 1.3 — Raqam topish o'yini

game.c — number guessing game:

  1. Dastur 1-100 oralig'ida random raqam o'ylaydi (rand())
  2. Foydalanuvchi taxmin kiritadi
  3. Har urinishda "Kattaroq!" yoki "Kichikroq!" deb yordam beradi
  4. Topilganda urinishlar sonini chiqaradi

Bonus: o'yinni qayta boshlash imkoniyati.

Topshiriq 1.4 — Talabalar reytingi va formatlash

  1. students.c — N talaba ballarini kiritib olib, statistika chiqaradi: o'rtacha, eng yuqori, eng past
  2. format-mashq.c — ma'lumotlarni jadval ko'rinishida chiqaring: %-10s, %5d, %8.2f kabi format specifiers bilan
  3. echo.cgetchar/putchar bilan kiritilgan matnni qaytarib chiqaradigan dastur

2-dars uy vazifalari: Character va string

Topshiriq 2.1 — Char va string asoslari

  1. char-basics.c — belgi kiritib olib tekshiradi: harfmi, raqammi, katta harfmi, kichik harfmi (ctype.h)
  2. string-basics.cstrcpy, strcat, strlen, strcmp bilan mashqlar: ikki ismni birlashtirish, uzunligini topish, taqqoslash

Topshiriq 2.2 — O'z string funksiyalaringiz

my-string.c — kutubxona funksiyalaridan foydalanmasdan o'zingiz yozing:

  • my_strlen(char s[]) — uzunlik
  • my_strcpy(char dest[], char src[]) — nusxalash
  • my_strcmp(char a[], char b[]) — taqqoslash

main ichida har birini kutubxona versiyasi bilan solishtirib tekshiring.

Topshiriq 2.3 — Palindrome va unli harflar

  1. palindrome.c — kiritilgan so'z palindrom yoki yo'qligini tekshiradi (katta-kichik harfni hisobga olmang)
  2. vowel-count.c — matndagi unli va undosh harflar sonini sanaydi

Topshiriq 2.4 — Caesar shifri va parol tekshiruvchi

  1. caesar.c — Caesar cipher: matn va siljish (shift) qiymatini olib shifrlaydi, keyin deshifrlaydi
  2. password.c — kuchli parol tekshiruvchi: kamida 8 belgi, katta harf, kichik harf, raqam bormi — har mezon bo'yicha xabar chiqaradi
  3. case-converter.c — matnni upper/lower/swap qiladigan dastur (menu bilan)

3-dars uy vazifalari: Massiv asoslari

Topshiriq 3.1 — Birinchi massivlar

  1. asosiy.c — 10 elementli massiv: e'lon qilish, to'ldirish, chiqarish va yig'indini hisoblash
  2. min-max.c — massivdagi eng katta va eng kichik elementni topish
  3. count.c — shart bo'yicha sanash: nechta musbat, nechta manfiy, nechta juft

Topshiriq 3.2 — Teskari va nusxa

  1. reverse.c — massivni teskari tartibda chiqarish, so'ng joyida teskari qilish (yangi massivsiz)
  2. copy.c — bir massivni ikkinchisiga nusxalash va ikkalasini chiqarish

Topshiriq 3.3 — Statistika funksiyalari

  1. stats.c — to'liq statistika: yig'indi, o'rtacha, min, max, range
  2. array-fn.c — yuqoridagi barcha amallarni alohida funksiyalar ko'rinishida yozing: sum(int arr[], int n), average(...), find_min(...), find_max(...)

Massivni funksiyaga parametr sifatida berishni mashq qilasiz.

Topshiriq 3.4 — Amaliy: talabalar va histogram

  1. students.c — N talaba balini massivga olib, statistika chiqaradi: o'rtacha, eng yuqori/past ball, o'rtachadan yuqorilar soni
  2. histogram.c — massiv qiymatlarini # belgilar bilan gistogramma ko'rinishida chiqaradi:
5: #####
3: ###
7: #######

4-dars uy vazifalari: Massivda qidiruv (linear, binary)

Topshiriq 4.1 — Linear search

  1. linear.c — chiziqli qidiruv: element topilsa indeksini, topilmasa -1 qaytaradigan funksiya
  2. count.c — element massivda necha marta uchrashini sanaydi
  3. find-all.c — element uchragan barcha indekslarni chiqaradi

Topshiriq 4.2 — Binary search

  1. binary.c — saralangan massivda binary search (sikl bilan). Har qadamda low, mid, high qiymatlarini chiqarib, algoritm qanday ishlashini ko'rsating
  2. recursive-binary.c — xuddi shu algoritm, lekin rekursiv versiyada

Topshiriq 4.3 — Indeks va oraliq

  1. min-max-idx.c — eng katta va eng kichik element indeksini topish
  2. range.c — berilgan oraliqdagi (masalan, 10 dan 50 gacha) elementlarni topib chiqarish va sanash

Topshiriq 4.4 — Tezlik taqqoslash

  1. speed-test.c — katta massivda (masalan, 100 000 element) linear va binary search vaqtini taqqoslang (clock() bilan). Natijani izoh sifatida faylga yozing: qaysi biri nechchi marta tez?
  2. element-stats.c — massiv bo'yicha element statistikasi: takrorlanishlar, unikal elementlar soni

Bu — Big O tushunchasining amaliy isboti: O(n) vs O(log n).

5-dars uy vazifalari: Saralash algoritmlari — Bubble, Selection, Insertion

Topshiriq 5.1 — Bubble sort

  1. bubble.c — to'liq bubble sort, har iteratsiyadan keyin massiv holatini chiqaring:
Boshlanish:   5 2 8 1 9
1-iteratsiya: 2 5 1 8 9
2-iteratsiya: 2 1 5 8 9
3-iteratsiya: 1 2 5 8 9
  1. bubble-opt.cswapped flag bilan optimizatsiya: agar iteratsiyada almashinuv bo'lmasa — to'xtash
  2. bubble-desc.c — kamayish tartibida (descending) saralash

Topshiriq 5.2 — Selection va Insertion

  1. selection.c — selection sort, har qadamda tanlangan minimum va massiv holatini chiqaring
  2. insertion.c — insertion sort, har qadamda qaysi element qayerga "qo'yilganini" ko'rsating

Ikkala algoritmni og'zaki tushuntirib bera olishingiz kerak — darsda so'raladi!

Topshiriq 5.3 — Uchala algoritm birga

  1. all-sorts.c — bitta dasturda 3 algoritm: menu orqali tanlanadi, bir xil random massivda ishlaydi
  2. speed.c — turli hajmlarda (100, 1000, 10000 element) uchala algoritm vaqtini taqqoslang va natijani jadval ko'rinishida chiqaring

Topshiriq 5.4 — Sort + Search va string saralash

  1. sort-search.c — avval massivni saralab, keyin binary search bilan qidiradigan dastur (4-dars bilan bog'lanish)
  2. string-sort.c — ismlar ro'yxatini alifbo tartibida saralash (strcmp bilan)

6-dars uy vazifalari: 2D massiv (matrix)

Topshiriq 6.1 — Birinchi 2D massiv

  1. first-2d.c — 3x4 massiv: e'lon qilish, kiritish, jadval ko'rinishida chiqarish, barcha elementlar yig'indisi
  2. mult-table.c — 9x9 ko'paytirish jadvalini 2D massivga to'ldirib, chiroyli formatda chiqarish

Topshiriq 6.2 — Matritsa amallari

  1. matrix-ops.c — ikki matritsa ustida: qo'shish, ayirish, ko'paytirish, transpose. Har amal — alohida funksiya
  2. diagonal.c — kvadrat matritsaning asosiy va yon diagonal yig'indilarini hisoblash

Topshiriq 6.3 — 2D statistika

stats-2d.c — matritsa bo'yicha to'liq statistika:

  • Har qator yig'indisi va o'rtachasi
  • Har ustun yig'indisi
  • Umumiy min va max (qaysi qator/ustunda ekanini ham chiqaring)

Topshiriq 6.4 — O'yin: Tic-Tac-Toe yoki labirint

Bittasini tanlang (bonus uchun ikkalasini):

  1. tictactoe.c — 3x3 X-O o'yini: 2 o'yinchi navbat bilan yuradi, g'olibni tekshiradi
  2. maze.c — 2D massivda labirint: # devor, . yo'l, boshlanish va chiqish nuqtasi

Bonus: image.c — 0-9 qiymatli "rasm" matritsasini negative qilish va 90 gradusga aylantirish.

7-dars uy vazifalari: Pointer asoslari

Topshiriq 7.1 — Pointer asoslari

  1. pointer-basics.c — o'zgaruvchi, uning manzili (&) va pointer (*) bilan tajriba: qiymat, manzil, pointer orqali o'qish va o'zgartirish
  2. arithmetic.c — pointer arifmetikasi: p+1, p-1, massiv bo'ylab pointer bilan yurish

Topshiriq 7.2 — Swap va o'zgartirish

  1. swap.c — pointer bilan ishlaydigan swap(int *a, int *b). 4-oyda pass-by-value bilan swap nima uchun ishlamagan edi — endi nima uchun ishlashini kod izohida tushuntiring
  2. increment.c — funksiya pointer orqali o'zgaruvchini oshiradi: add_five(int *n)

Topshiriq 7.3 — Ko'p qiymat qaytarish

  1. divide.c — bo'linma va qoldiqni bitta funksiyadan pointer parametrlar orqali qaytarish: divide(int a, int b, int *quotient, int *remainder)
  2. analyze.c — massiv statistikasini pointer parametrlar bilan qaytarish: analyze(int arr[], int n, int *min, int *max, float *avg)

Topshiriq 7.4 — NULL va amaliyot

  1. null.c — NULL pointer bilan xavfsiz ishlash: pointer NULL bo'lsa tekshirib, xabar chiqarish
  2. calc-with-ptr.c — kalkulyator: barcha amallar natijani pointer parametr orqali qaytaradigan funksiyalar bilan

8-dars uy vazifalari: Pointer, massiv va string

Topshiriq 8.1 — Pointer va massiv

  1. pointer-array.c — massiv elementlariga 4 xil usulda murojaat: arr[i], *(arr+i), p[i], *(p+i) — hammasi bir xil natija berishini ko'rsating
  2. pointer-arith.c — faqat pointer arifmetikasi bilan (indekssiz) massiv yig'indisi va teskari chiqarish

Topshiriq 8.2 — Dinamik xotira

  1. malloc-basic.cmalloc bilan massiv yaratish, to'ldirish, chiqarish, free
  2. dynamic-input.c — massiv hajmini foydalanuvchi kiritadi, xotira dinamik ajratiladi
  3. realloc.crealloc bilan o'sadigan massiv: foydalanuvchi 0 kiritmaguncha son qo'shib boradi

Har mallocga bitta free — xotira oqishiga (memory leak) yo'l qo'ymang!

Topshiriq 8.3 — String pointer bilan

  1. string-fn.c — 2-darsdagi my_strlen, my_strcpy, my_strcmp funksiyalarini endi faqat pointer bilan qayta yozing (indekslarsiz, while (*s) uslubida)
  2. string-array.c — so'zlar massivi char *words[] bilan ishlash: chiqarish, eng uzun so'zni topish

Topshiriq 8.4 — String algoritmlari

Bittasini tanlab to'liq ishlang (bonus uchun ikkitasini):

  1. anagram.c — ikki so'z anagram ekanini tekshirish (masalan, "listen" va "silent")
  2. word-count.c — matndagi so'zlar sonini sanash (fgets bilan)
  3. tokenize.c — matnni so'zlarga bo'lib, har birini alohida qatorda chiqarish

9-dars uy vazifalari: Struct asoslari

Topshiriq 9.1 — Birinchi struct

  1. first-struct.cStudent struct: ism, yosh, ball. Bitta talaba yaratib, maydonlarini to'ldirib chiqaring
  2. geometry.cPoint va Circle structlari: ikki nuqta orasidagi masofa, doira yuzasi va perimetri

Topshiriq 9.2 — Talabalar bazasi

  1. students.c — struct massivi: N talaba ma'lumotlarini kiritish, ro'yxatni jadval ko'rinishida chiqarish, o'rtacha ball:
Ism        Yosh   Ball
--------------------------
Ali         15    87.50
Vali        16    92.00
  1. sort-students.c — talabalarni ball bo'yicha saralash (5-darsdan bilgan algoritmingiz bilan), bonus: ism bo'yicha ham

Topshiriq 9.3 — Nested struct

nested.c — struct ichida struct:

  • Date struct: kun, oy, yil
  • Person struct: ism + Date birthday maydoni

Bir necha odam yaratib, tug'ilgan sanalarini chiroyli formatda chiqaring.

Topshiriq 9.4 — Amaliy tanlov

Bittasini tanlab kichik CRUD dastur yozing (qo'shish, ro'yxat, qidirish):

  1. inventory.c — mahsulotlar ombori: nom, narx, soni
  2. library.c — kutubxona: kitob nomi, muallif, yili
  3. account.c — bank hisobi: egasi, balans, kirim/chiqim

Bu — 11-darsdagi mini loyihaga tayyorgarlik.

10-dars uy vazifalari: File I/O

Topshiriq 10.1 — Yozish va o'qish

  1. first.cfopen("w") + fprintf bilan fayl yaratib, unga 5 qator matn yozish
  2. read-file.c — o'sha faylni fopen("r") bilan ochib, mazmunini ekranga chiqarish

Fayl ochilmasa (NULL) xato xabarini chiqarishni unutmang.

Topshiriq 10.2 — Append va log

log.c — log dastur: har ishga tushirilganda faylga yangi qator qo'shadi ("a" rejimi):

[1] Dastur ishga tushdi
[2] Dastur ishga tushdi

Bonus: qator raqamini fayldan o'qib davom ettiring.

Topshiriq 10.3 — Unix vositalari

O'zingizning kichik utilitalaringiz:

  1. wc.c — fayldagi qatorlar, so'zlar va belgilar sonini sanaydi
  2. mycat.c — fayl mazmunini ekranga chiqaradi (cat dasturi kabi)
  3. mycopy.c — bir faylni ikkinchisiga nusxalaydi

Topshiriq 10.4 — Telefon kitobi

phonebook.c — struct + fayl birga:

=== TELEFON KITOBI ===
1. Kontakt qo'shish
2. Barcha kontaktlar
3. Qidirish
4. Chiqish
Tanlang:
  1. Kontakt qo'shish (ism, telefon)
  2. Barcha kontaktlarni ko'rish
  3. Ism bo'yicha qidirish
  4. Ma'lumotlar faylda saqlanadi — dastur yopilib qayta ochilganda ham turadi!

Bonus: binary.c — struct massivini fwrite/fread bilan binary faylga yozish va o'qish.

11-dars uy vazifalari: Mini loyiha

Topshiriq 11.1 — Loyiha tanlash va reja

Variantlardan birini tanlang yoki o'z g'oyangizni taklif qiling:

  • Kutubxona boshqaruvi
  • Telefon kitobi (kengaytirilgan)
  • Mahsulotlar ombori (inventory)
  • Talabalar jurnali
  • Bank hisobi simulyatori
  • Todo ro'yxati

reja.md yozing: qanday funksiyalar bo'ladi, qanday struct, qanday fayl formati.

Topshiriq 11.2 — Repo va skeleton

Yangi repo: c-mini-loyiha-2

  • README.md (loyiha nomi va qisqacha tavsif)
  • .gitignore (kompilyatsiya fayllari uchun)
  • main.c — menu skeleton (funksiyalar hali bo'sh)
  • Initial commit + push

Topshiriq 11.3 — Asosiy funksiyalar

Har funksiyani alohida commit bilan qo'shing:

  1. Add — yangi yozuv qo'shish
  2. Show — barcha yozuvlarni ko'rish
  3. Search — qidirish
  4. Update — o'zgartirish
  5. Delete — o'chirish
  6. Sort — saralash (5-darsdan)
  7. Statistika

Kamida 7 ta mazmunli commit (conventional commits: feat: add search function).

Topshiriq 11.4 — File I/O, validation va final

  1. Fayldan yuklash / faylga saqlash — ma'lumot dastur yopilganda yo'qolmasin (10-darsdan)
  2. Har input uchun validation — commit: fix: add input validation
  3. README.md to'liq: o'rnatish, ishlatish, screenshot
  4. Har xil holatlarda test qiling, bug topsangiz — tuzatib commit qiling
  5. Final push — repo URL'ni email orqali jo'nating

12-dars uy vazifalari: Oylik imtihon

Topshiriq 12.1 — Imtihonga tayyorgarlik

Imtihondan oldin:

  1. 1-10 darslarning barcha mavzularini takrorlang
  2. Har mavzudan kamida 1 ta mashqni qaytadan, ko'chirmasdan yozib chiqing
  3. Tushunarsiz joylar ro'yxatini tuzing — imtihondan oldingi konsultatsiyada so'rang

Topshiriq 12.2 — Refleksiya

Imtihondan keyin Google Doc yozing:

  • Eng yoqqan dars va mavzu
  • Eng qiyin mavzu (pointer? struct? algoritmlar?)
  • 4-oy boshidagi holatingiz bilan hozirgi holatingizni solishtiring
  • 6-oyga maqsadlar

Topshiriq 12.3 — Portfolio yangilash

c-darslari repo'ni tartibga keltiring:

  • README.md to'liq: qaysi oy, qaysi mavzular, dars papkalari ro'yxati
  • Har dars uchun papka to'g'ri nomlangan
  • Eng yaxshi ishlaringizga sharh yozilgan
  • GitHub profilingizda c-mini-loyiha-2ni pin qiling

Topshiriq 12.4 — 6-oyga tayyorgarlik

6-oyda Python boshlanadi:

  1. Python haqida o'qing: python.org, "Python nima uchun mashhur?"
  2. "C vs Python" mavzusida bitta video ko'ring
  3. Kompyuteringizga Python o'rnatib, print("Hello, World!") ni ishlatib ko'ring

C dan keyin Python sizga juda oson tuyuladi — va'da!

Topshirish formati

GitHub orqali:

  • Repo: c-darslari (asosiy) + c-mini-loyiha-2 (loyiha uchun)
  • Har dars: alohida papka 5-oy-dars-N/
  • Har vazifa: alohida .c fayl + alohida commit

Email:

  • Subject: 5-oy UV — [dars-raqam] — [Ism Familiya]
  • Body: GitHub repo havolasi + dars bo'yicha qisqacha sharh

Baholash

MezonBall
To'liq bajarilgan50
O'z vaqtida20
Conventional commits15
Kod toza, funksiyalarga bo'lingan10
Kreativlik5
Jami100

Kech topshirish

  • 1 kun kech: -10%
  • 3 kun kech: -30%
  • 1 hafta kech: 0 ball

5-oy tugadi! 🎉

Bu Foundation'ning eng og'ir oyi edi — va siz uni yengdingiz!

Endi C bilan jiddiy dasturlar yoza olasiz: massiv, saralash, pointer, struct, fayl — hammasi qo'lingizda. Bu bilim keyingi barcha tillar uchun mustahkam poydevor bo'ladi.

6-oyda: Python boshlanadi. C dan keyin Python juda yengil va qiziqarli tuyuladi — dam olishdan oldin Python o'rnatilganini tekshirib qo'ying (Topshiriq 12.4).

Yutuqlar tilab qolaman!

Master IT o'quv markazi — o'qitish rejasi