4-oy uy vazifalari (Dasturlash asoslari — CS, Git va C)
Umumiy ko'rsatmalar
1–5 darslar — Google Drive + email orqali:
- Drive papka:
Foundation/4-oy/Uy-vazifalari/[dars-raqam]/ - Email subject:
4-oy UV — [dars-raqam] — [Ism Familiya]
6-darsdan boshlab (GitHub o'rganilgach) — faqat GitHub orqali:
- Repo:
foundation-darslar(yoki shu kabi nom) - Har dars uchun alohida papka:
4-oy-dars-N/ - Har vazifa — alohida fayl + alohida commit
1-dars uy vazifalari: CS nima va algoritm
Topshiriq 1.1 — Hayotiy algoritmlar
7 ta kundalik vazifa uchun algoritm yozing (har biri 7+ qadam):
- Ovqat pishirish (sevimli taom)
- Maktab/ish'ga borish
- Mashina yuvish
- Telefon sotib olish (qidiruv → tanlov → to'lov)
- Internet'dan dastur o'rnatish
- Soch turmaklash
- Hayotda yangi do'st topish
Har qadam aniq va bajariladigan bo'lsin — "ovqat qil" emas, "kartoshkani archib, to'rtga bo'l".
Drive'ga: 1-algoritm.docx
Topshiriq 1.2 — Decomposition
Murakkab muammoni kichik qismlarga ajrating:
"Online o'quv markazi web sayti yaratish"
Quyidagi tarzda:
Asosiy maqsad: Sayt yaratish
├── 1. Bosh sahifa
│ ├── 1.1 Logo va navigatsiya
│ ├── 1.2 Hero rasm
│ └── 1.3 Tushuntirish matni
├── 2. Yo'nalishlar sahifasi
│ └── ...
├── 3. ...Kamida 5 ta asosiy + 15 ta kichik vazifa.
Drive'ga: 2-decomposition.docx
Topshiriq 1.3 — Linear va Binary Search
1000 ta raqamdan iborat ro'yxatdan bitta sonni qidiryapsiz. Ikki usulning qadamlarini oddiy so'zlar bilan yozing:
- Linear Search — sortlanmagan ro'yxatda boshidan oxirigacha tekshirish
- Binary Search — sortlangan ro'yxatda o'rtadan bo'lib qidirish
Har biri uchun: eng yomon holatda necha qadam? Qaysi biri qachon ishlatiladi?
Drive'ga: 3-search.docx
2-dars uy vazifalari: Binary va ma'lumot vakili
Topshiriq 2.1 — Binary konvertatsiyalar
Decimal → Binary: 15, 32, 64, 100, 200, 255, 500, 1024
Binary → Decimal: 1100, 10101, 11111111, 100000000, 110011
Har birini qadam-baqadam yozing (bo'lish/qo'shish jarayoni ko'rinsin).
Drive'ga: 1-binary.docx
Topshiriq 2.2 — ASCII jadval
Sizning to'liq ismingiz (Ism + Familiya) har harfini jadvalga yozing:
| Harf | ASCII | Binary | Hex |
|---|---|---|---|
| A | 65 | 01000001 | 41 |
| K | 75 | 01001011 | 4B |
| ... | ... | ... | ... |
Bo'shliqlar va kichik harflar uchun ham.
Drive'ga: 2-ascii.docx
Topshiriq 2.3 — Fayl hajmi
Hisoblang va yozing:
- 3000 belgili matn — necha byte?
- 20 sahifali kitob (har sahifada 2500 belgi) — necha KB?
- 5 ta rasm 4K (3840×2160) siqilmagan — necha MB?
- 2 soat HD video siqilgan — necha GB (taxmin)?
- 1 TB diskda nechta 1 daqiqali MP3 sig'adi?
Drive'ga: 3-hajm.docx
3-dars uy vazifalari: Algoritm, pseudocode va flowchart
Topshiriq 3.1 — Pseudocode mashqi
5 ta vazifa uchun pseudocode yozing:
- Uchta raqamdan eng kattasini topish
- Toq raqamlarning yig'indisi (1 dan 100 gacha)
- Ro'yxatning har bir elementini 2 ga ko'paytirish
- Matn ichidan unli harflar sonini sanash
- Telefon raqamini tekshirish (format
+998 XX XXX XX XX)
Drive'ga: 1-pseudocode.docx
Topshiriq 3.2 — Draw.io bilan flowchart
app.diagrams.net saytida 5 ta flowchart chizing:
- ATM operatsiyasi (kart, pin, pul olish)
- Online buyurtma (mahsulot tanlash → savat → to'lov → yetkazib berish)
- Yangi xodimni ishga olish (rezyume → suhbat → test → qaror)
- Auto-payment (har oy avtomatik to'lov)
- Imtihon natijasi (ball → harf baho → o'tdi/yiqildi)
To'g'ri shakllar: oval — boshlash/tugatish, to'rtburchak — amal, romb — shart.
Har birini PNG'ga eksport qiling.
Drive'da: 2-flowchartlar/ papka, 5 ta PNG fayl.
Topshiriq 3.3 — Boolean operatorlar
10 ta hayotiy shart AND, OR, NOT bilan yozing:
- Yoshim 18-30 oralig'ida VA o'qish bor
- Toshkentlik YOKI Samarqandlik
- Hafta oxiri EMAS VA soat 9-17
- ...
Drive'ga: 3-boolean.docx
4-dars uy vazifalari: Terminal va buyruq qatori
Topshiriq 4.1 — 30 ta buyruq mashqi
Quyidagilarni terminal'da bajaring va natijalarni daftarga yozing:
1. pwd
2. ls
3. ls -la
4. cd Documents
5. cd ..
6. cd ~
7. whoami
8. date
9. cal
10. echo "Salom"
11. mkdir test
12. cd test
13. touch fayl.txt
14. echo "Matn" > fayl.txt
15. cat fayl.txt
16. echo "Yana matn" >> fayl.txt
17. cat fayl.txt
18. cp fayl.txt nusxa.txt
19. ls
20. mv nusxa.txt yangi.txt
21. ls
22. rm yangi.txt
23. ls
24. cd ..
25. ls -lh test
26. du -sh test
27. df -h
28. find . -name "*.txt"
29. history
30. clearHar buyruq natijasi yoki sharhi daftarga. Umumiy xulosani Drive'ga: 1-buyruqlar.docx
Topshiriq 4.2 — Foundation papka tuzilmasi
Terminal orqali butun Foundation papka tuzilmasini yarating:
$ cd ~/Documents
$ mkdir -p Foundation/{1-oy,2-oy,3-oy,4-oy,5-oy,6-oy}
$ cd Foundation
$ for i in 1 2 3 4 5 6; do
mkdir -p $i-oy/{darslar,uy-vazifalari,konspekt,loyihalar}
done
$ ls -RBu — bash script uslubidagi yondashuv.
Drive'ga: ls -R Foundation natijasini yozing (2-papkalar.docx).
Topshiriq 4.3 — VS Code tekshirish va kengaytmalar
- VS Code o'rnatilganini tekshiring: terminal'da
code --version - Foydali kengaytmalar o'rnating:
- C/C++ (Microsoft) — keyingi darslar uchun kerak bo'ladi
- GitLens (Git uchun)
- Markdown Preview Enhanced
- vscode-icons
Screenshot Drive'ga: 3-vscode.png
Topshiriq 4.4 — Nano matn muharriri
Terminal'dan chiqmasdan fayl tahrirlash: nano biografiya.md
Ichiga qisqa biografiya yozing (ism, yosh, shahar, 3 ta maqsad, sevimli mashg'ulotlar) — Markdown formatida.
- Ctrl + O — saqlash
- Ctrl + X — chiqish
Drive'ga: biografiya.md
5-dars uy vazifalari: Git asoslari
Topshiriq 5.1 — Git setup va birinchi repo
Bu — kelajakdagi asosiy repo'ngiz. Keyingi darsda GitHub'ga push qilamiz, hozircha natijalarni (terminal screenshot + git log) Drive orqali topshiring.
Git sozlang:
bash$ git config --global user.name "Sizning ismingiz" $ git config --global user.email "sizning@email.com"Local'da repo yarating:
bash$ cd ~/Documents $ mkdir foundation-darslar $ cd foundation-darslar $ git initFayllarni yarating:
README.md(siz haqingizda va repo maqsadi)4-oy-dars-5/git-mashq.md(5-dars haqida qisqacha konspekt).gitignore(ichida.DS_Store,*.tmp,*.log)
Har faylni alohida commit qiling:
bash$ git add README.md $ git commit -m "docs: add README" $ git add 4-oy-dars-5/git-mashq.md $ git commit -m "docs: add dars 5 notes" $ git add .gitignore $ git commit -m "chore: add gitignore"git log --onelinenatijasinigit-mashq.mdichiga yopishtiring va yana commit qiling (docs: add commit log to notes)
Drive'ga: terminal screenshot + git log --oneline natijasi.
Topshiriq 5.2 — Conventional commits
Yangi mashq repo: commit-mashq
10 ta commit yarating — har biri turli tur bilan. Birinchi ikkitasi namuna:
# 1. feat
$ echo "function login() {}" > login.js
$ git add . && git commit -m "feat: add login function"
# 2. fix
$ echo "// fix" >> login.js
$ git add . && git commit -m "fix: correct login validation"Qolgan 8 tasini o'zingiz shu uslubda qiling (har safar biror faylni o'zgartirib):
docs: add READMEstyle: format login.jsrefactor: extract validationtest: add login testschore: add gitignoreperf: optimize login flowci: add GitHub Actions configbuild: add package.json
git log --oneline natijasini screenshot qilib Drive'ga.
Topshiriq 5.3 — .gitignore mashqi
Yangi mashq repo: gitignore-mashq
Quyidagi fayllarni yarating: main.py, secret.env, config.json, temp.tmp, app.log, data.db, .DS_Store hamda node_modules/ va __pycache__/ papkalari.
.gitignore yarating:
*.env
*.tmp
*.log
*.db
.DS_Store
node_modules/
__pycache__/git status da faqat main.py, config.json va .gitignore ko'rinishi kerak.
Tekshiring va Drive'ga screenshot.
6-dars uy vazifalari: GitHub bilan ishlash
Shu darsdan boshlab uy vazifalari GitHub'da topshiriladi!
Bundan keyin Drive kerak emas — hamma ish foundation-darslar repo'da. O'qituvchi repo'ngizni kuzatib boradi.
Topshiriq 6.1 — GitHub repo va push
GitHub'da yangi repo:
foundation-darslar(Public, README'siz — local'da bor)Local repo'ni bog'lang:
bash$ cd ~/Documents/foundation-darslar $ git remote add origin https://github.com/USERNAME/foundation-darslar.git $ git branch -M main $ git push -u origin mainREADME'ni chiroyli qiling (Markdown: sarlavha, siz haqingizda, darslar ro'yxati)
5-dars vazifalarining natijalarini repo ichida saqlang:
4-oy-dars-5/git-mashq.md4-oy-dars-6/github-mashq.md(bu dars konspekti)
Commit va push.
Repo URL'ni o'qituvchiga email qiling — bundan keyin tekshiruv shu repo orqali.
Topshiriq 6.2 — Branch va Pull Request
- Yangi branch:
git checkout -b feature/dars-6 - VS Code'da
4-oy-dars-6/dars-6.mdfayl yarating — ichida dars mavzulari (GitHub, branch, Pull Request) haqida qisqa konspekt - Commit va push:
$ git add 4-oy-dars-6/dars-6.md
$ git commit -m "feat: add dars 6 notes"
$ git push -u origin feature/dars-6GitHub'da:
- Compare & pull request
- Sarlavha:
feat: add dars 6 notes - Tavsif: 3 jumla
- Create pull request
- Merge pull request
Merge qilingan PR — repo'ngizda ko'rinib turadi, screenshot shart emas.
Topshiriq 6.3 — Profile README
O'zingizning GitHub profile README:
- Yangi repo:
USERNAME/USERNAME(sizning username bilan) - README qo'shing
- Markdown bilan chiroyli yozing:
### Salom, men [Ism] 👋
🌱 Hozir o'rganaman: Foundation 4-oy — C tili, Git, GitHub
🤖 AI bilan ishlayman: Claude Code bilan birinchi saytimni
yasadim (3-oy), ChatGPT va Gemini — kundalik vositalarim
🎯 Maqsad: Foundation tugagach Junior Developer bo'lish
📚 Loyihalarim:
- [foundation-darslar](https://github.com/USERNAME/foundation-darslar)
- AI bilan yasagan saytim — [havola]
📫 Aloqa: akmal@example.comProfilingizga kirib ko'ring (github.com/USERNAME).
Topshiriq 6.4 — Daily commit (7 kun)
Keyingi 7 kun davomida har kuni eng kamida 1 ta commit qiling.
foundation-darslar repo'ga:
- Kichik o'zgartirishlar
- README'ga jumla qo'shish
- Konspektga yangi izoh
7 kun oxirida profilingizda yashil kalendar kvadratlari paydo bo'ladi — bu dasturchining "yurak urishi".
7-dars uy vazifalari: C tili — tanishuv, Hello World
Topshiriq 7.1 — Setup tekshiruvi
- Compiler tekshiring:
gcc --versionyokiclang --version - VS Code + C/C++ extension (Microsoft) o'rnatilgan
- Repo'da papka yarating:
4-oy-dars-7/ - Terminal natijasi screenshot'ini
4-oy-dars-7/setup.mdfaylga qo'shib commit qiling
Topshiriq 7.2 — Hello World variantlari
4-oy-dars-7/ ichida 3 ta .c fayl:
hello.c— "Hello, World!" chiqaradishaxsiy.c— siz haqingizda 5+ jumla chiqaradiascii-art.c— printf bilan ASCII art rasm chizadi
Har birini kompilyatsiya qilib tekshiring:
$ gcc hello.c -o hello
$ ./helloHar fayl — alohida commit. GitHub'ga push.
Topshiriq 7.3 — Escape characters
belgilar.c — \n, \t, \", \\, %% belgilarining har biri bilan tajriba qiling: har biri nima chiqarishini ko'rsatadigan dastur yozing.
Topshiriq 7.4 — Xato topish
Dars matnida berilgan 4 ta xatoli kodni tuzating (nuqtali vergul, qavs, header, fayl nomi). Tuzatilgan faylni xato-tuzatildi.c nomi bilan commit qiling. Commit message: fix: correct 4 errors in broken code
8-dars uy vazifalari: O'zgaruvchilar, turlar va operatorlar
Eslatma
Foydalanuvchidan qiymat o'qish (scanf) hali o'tilmagan — 5-oyda o'rganamiz. Qiymatlarni kod ichida o'zgaruvchi sifatida bering. Papka: 4-oy-dars-8/
Topshiriq 8.1 — Shaxsiy ma'lumot va formatlar
shaxsiy.c — ism (char massiv sifatida printf'da), yosh (int), bo'y (float), og'irlik (float), jins (char).
Har birini mos format specifier bilan chiqaring: %d, %f, %.2f, %c, %s.
Qo'shimcha: sizeof bilan int, float, double, char turlarining hajmini chiqaring.
Topshiriq 8.2 — Kalkulyator
kalkulyator.c — ikkita int o'zgaruvchi ustida 5 ta amal: +, -, *, /, %.
Chiqish namunasi:
a = 17, b = 5
a + b = 22
a - b = 12
a * b = 85
a / b = 3
a % b = 2a / b nima uchun 3.4 emas, 3 chiqqanini // izoh sifatida faylga yozing.
Topshiriq 8.3 — Compound va increment
Ikki fayl:
compound.c—+=,-=,*=,/=,%=operatorlarining har biri bilan misol, har qadamdan keyin qiymatni chiqaringincrement.c—x++va++xfarqini ko'rsatadigan dastur (printf ichida ishlatib solishtiring)
Topshiriq 8.4 — Yosh kalkulyator
yosh-kalkulator.c — yoshingizni kod ichida bering, dastur hisoblasin:
- Necha kun yashagansiz (taxminan, 365 bilan)
- Necha soat
- Necha daqiqa
long turidan foydalaning — daqiqalar int sig'imidan katta bo'lishi mumkin.
9-dars uy vazifalari: Shartlar — if, else, switch
Papka: 4-oy-dars-9/. Har fayl — alohida commit.
Topshiriq 9.1 — Toq/juft va baho
Ikki fayl:
toq-juft.c— kod ichidagi son toq yoki juftligini%bilan aniqlaydibaho.c— ball (0-100) asosida harf baho: 90+ A, 80+ B, 70+ C, 60+ D, past F (if-else ifzanjiri bilan)
Topshiriq 9.2 — Uch sondan eng kattasi
max-of-3.c — uchta o'zgaruvchidan eng kattasini topadi. Ikki usulda yozing: nested if bilan va && bilan.
Topshiriq 9.3 — Kabisa yili
kabisa.c — yil kabisa yili ekanini tekshiradi:
- 4 ga bo'linadi VA 100 ga bo'linmaydi, YOKI 400 ga bo'linadi
2024, 1900, 2000 yillar bilan sinab ko'ring (uchalasini ham dasturda tekshiring).
Topshiriq 9.4 — switch mashqlari
Ikki fayl:
hafta-kuni.c— 1-7 raqamdan hafta kuni nominiswitchbilan chiqaradi (noto'g'ri raqam uchundefault)fasl.c— oy raqamidan (1-12) faslni aniqlaydi. Ikki versiya:if-elsebilan vaswitchfall-through bilan (case 12: case 1: case 2:— qish)
10-dars uy vazifalari: Sikllar — for, while, do-while
Papka: 4-oy-dars-10/. Har fayl — alohida commit.
Topshiriq 10.1 — Yig'indilar va faktorial
Ikki fayl:
yigindi.c— for bilan: 1-100 yig'indisi, faqat toqlar, faqat juftlar, 3 ga bo'linadiganlarfaktorial.c— 1 dan 10 gacha har sonning faktorialini chiqaradi (longishlating)
Topshiriq 10.2 — Ko'paytirish jadvali va yulduzlar
Ikki fayl:
jadval.c— 2 dan 9 gacha ko'paytirish jadvali (nested for)yulduzlar.c— 4 ta yulduzcha naqsh:
* ***** * *****
** **** ** ***
*** *** *** *
**** ** ****
***** * *****Topshiriq 10.3 — Raqam tahlili (while)
raqam-tahlil.c — kod ichidagi son uchun while sikli bilan:
- Necha xonali son ekanini
- Raqamlar yig'indisini
- Teskari yozilishini (masalan, 1234 → 4321)
Maslahat: n % 10 — oxirgi raqam, n / 10 — oxirgi raqamni tashlash.
Topshiriq 10.4 — Tub sonlar va Fibonacci
Ikki fayl:
tub-sonlar.c— 1 dan 100 gacha barcha tub sonlarni chiqaradifibonacci.c— birinchi 20 ta Fibonacci sonini chiqaradi (0, 1, 1, 2, 3, 5, ...)
Qo'shimcha: break va continue dan kamida bittasini o'rinli ishlating.
11-dars uy vazifalari: Funksiyalar
Papka: 4-oy-dars-11/. Har fayl — alohida commit.
Topshiriq 11.1 — Asosiy funksiyalar
Ikki fayl:
amallar.c—qoshish,ayirish,kopaytirish,bolishfunksiyalari (har biri 2 taintparameter, natija qaytaradi).main'da hammasini chaqiring.shakllar.c— yuza hisoblovchi funksiyalar:kvadrat_yuza,togri_turtburchak_yuza,doira_yuza(float bilan)
Topshiriq 11.2 — Max/min va tub son funksiyalari
Ikki fayl:
max-min.c—max2,min2(2 son uchun),max3,min3(3 son uchun; ichidamax2/min2ni chaqiring)tub-fn.c—int is_prime(int n)funksiyasi + uni ishlatib 1-50 orasidagi tublarni chiqaruvchiprint_primesfunksiyasi
Topshiriq 11.3 — Rekursiya
rekursiya.c — uchta rekursiv funksiya:
faktorial(n)— n!fibonacci(n)— n-chi Fibonacci sonisum_to_n(n)— 1 dan n gacha yig'indi
Har birida base case aniq bo'lsin. main'da har birini 2-3 qiymat bilan sinab ko'ring.
Topshiriq 11.4 — Scope tajribasi
Ikki fayl:
scope.c— global va local o'zgaruvchi farqini ko'rsatadigan dastur (bir xil nomli o'zgaruvchi ikki joyda)qiymat.c— funksiya ichida parameter'ni o'zgartirib,main'dagi asl qiymat o'zgarmasligini ko'rsating (pass by value).//izohda nima uchunligini yozing.
12-dars uy vazifalari: Imtihonga tayyorgarlik
Topshiriq 12.1 — Nazariy takror (checklist)
Har mavzuni takrorlab, o'zingizga baho bering (bilaman / takrorlash kerak):
- [ ] Algoritm nima, decomposition
- [ ] Binary ↔ decimal konvertatsiya, ASCII
- [ ] Pseudocode o'qish va yozish
- [ ] Flowchart shakllari (oval, to'rtburchak, romb)
- [ ] Terminal:
pwd,ls,cd,mkdir,touch,rm - [ ] Git:
init,add,commit,push,pull,clone - [ ] Branch va Pull Request
- [ ] C: o'zgaruvchilar, turlar, format specifiers
- [ ] Operatorlar:
+ - * / %,&& || !,++ -- - [ ]
if / else if / else,switch - [ ]
for,while,do-while,break,continue - [ ] Funksiya yozish, parameter, return
"Takrorlash kerak" bo'lganlarini dars konspektidan qayta o'qing.
Topshiriq 12.2 — Amaliy mashq
Imtihon formatiga o'xshash 3 ta dasturni hech qayerga qaramasdan yozib ko'ring:
- 1-50 oraligida FizzBuzz
- 1-100 sonlar yig'indisi (toq/juft alohida)
int eng_katta(int a, int b, int c)funksiyasi + main'da sinash
Papka: 4-oy-dars-12/mashq/. Yozib bo'lgach kompilyatsiya qilib tekshiring, commit va push.
Topshiriq 12.3 — GitHub repo audit
Imtihonning 3-qismi — repo'ngiz. Tartibga keltiring:
- README.md to'liq: siz haqingizda, darslar ro'yxati, har papkaga qisqa izoh
- Har dars papkasi joyida:
4-oy-dars-5/...4-oy-dars-12/ - Ortiqcha fayllar o'chirilgan (
a.out,.DS_Store—.gitignorega qo'shing) - Hamma
.cfayl kompilyatsiya bo'ladi - Yakuniy commit:
chore: prepare repo for exam
Compiler va git ishlashini oldindan tekshiring: gcc --version, git status.
Topshirish va baholash
1–5 darslar (Drive)
- Drive papka:
Foundation/4-oy/Uy-vazifalari/[dars-raqam]/ - Email subject:
4-oy UV — [dars-raqam] — [Ism Familiya]
6–12 darslar (GitHub!)
- Repo:
USERNAME/foundation-darslar, Public - Har dars:
4-oy-dars-N/papka - Har vazifa: alohida fayl + alohida commit (conventional format)
Baholash
| Mezon | Ball |
|---|---|
| To'liq bajarilgan | 50 |
| O'z vaqtida | 20 |
| Tartibli (papka, fayl, commit) | 15 |
| Conventional commits | 10 |
| Kreativlik | 5 |
| Jami | 100 |
Kech topshirish
- 1 kun kech: -10%
- 3 kun kech: -30%
- 1 hafta kech: 0
4-oy tugadi! 🎉
Endi siz quyidagilarni bilasiz:
- ✅ CS asoslari va algoritmik fikrlash
- ✅ Binary va ma'lumot vakili
- ✅ Pseudocode va flowchart
- ✅ Terminal bilan ishlash
- ✅ Git va GitHub — kundalik vosita darajasida
- ✅ C tilida dastur yozish: o'zgaruvchilar, shartlar, sikllar, funksiyalar
5-oyda C tili davom etadi — dasturlar jiddiylashadi:
scanf— foydalanuvchi bilan suhbat- String va massivlar
- Saralash va qidirish algoritmlari
- Pointer — C'ning yuragi
- Struct va fayllar bilan ishlash
Tayyorgarlik: 4-oy kodlaringizni qayta o'qib chiqing, foundation-darslar repo'ni tartibda saqlang.
Yutuqlar tilab qolaman! 🚀