Birinchi mini-loyiha: xarajatlar hisoblagichi

Nazariyani mustahkamlashning ishonchli usuli — kichik loyiha qilish. Bu darsda til sintaksisidan qat’i nazar xarajatlar hisoblagichini rejalaymiz.
Loyihani rejalashtirish
Talablar
- Xarajat nomi va summasini qo’shish.
- Xarajatlar ro’yxatini ko’rish.
- Umumiy summani hisoblash.
- Uni budjet bilan solishtirish.
Psevdokod
funksiya jami_hisobla(xarajatlar):
jami = 0
har bir xarajat uchun xarajatlar ichida:
jami = jami + xarajat.summa
jami ni qaytar
jami = jami_hisobla(xarajatlar)
agar jami > budjet bo'lsa:
"Budjetdan oshdingiz" deb chiqar
aks holda:
"Budjet ichidasiz" deb chiqar
Bu yerda o’zgaruvchi, sikl, shart va funksiya birgalikda ishlaydi.
Avval test holatlarini yozing
| Holat | Jami | Budjet | Kutilgan natija |
|---|---|---|---|
| Xarajat yo’q | 0 | 100 000 | Budjet ichidasiz |
| Bir xarajat | 12 000 | 100 000 | Budjet ichidasiz |
| Chegaradan oshdi | 110 000 | 100 000 | Budjetdan oshdingiz |
| Manfiy summa | -5 000 | 100 000 | Xato: summa musbat bo’lishi kerak |
Loyiha chegarasini aniq belgilang
Boshlovchi loyiha uchun eng katta xavf — talabni cheksiz kattalashtirish. Birinchi versiyada foydalanuvchi ro’yxatdan o’tishi, grafiklar, bulutga saqlash va mobil ilova shart emas. Maqsad: kiritilgan xarajatlar ishonchli hisoblanishi va natija tushunarli chiqishi. Birinchi versiya ishlagach, keyingi o’zgarishni alohida rejalashtirasiz.
Talabni foydalanuvchi hikoyasi bilan yozing: “Foydalanuvchi xarajat nomi va summasini kiritadi, shunda u umumiy sarfini va budjetdan oshganini ko’radi.” Bu gapdan kiritish maydonlari, saqlanadigan ma’lumotlar, hisoblash qoidasi va natija ekrani kelib chiqadi.
Yechimni qurish
Ma’lumot modeli va validatsiya
Har xarajat uchun nom hamda summa boshida yetarli. Dastur bu qiymatlarni qabul qilishdan oldin tekshiradi: nom bo’sh bo’lmasin, summa son bo’lsin, u nol yoki manfiy bo’lmasin. Validatsiya foydalanuvchini ayblash uchun emas, noto’g’ri qiymatdan tug’iladigan chalkash natijani oldini olish uchun kerak.
Yangi xususiyatni bitta qadamda qo’shing: avval oldindan berilgan xarajat bilan jami hisoblang, so’ng kiritishni, keyin validatsiyani, undan keyin ro’yxatni ko’rsatishni yozing. Har bosqichdan so’ng kodni ishga tushiring. Git ishlatsangiz, har mantiqiy bosqichni alohida commit qilish ham muammo qayerda paydo bo’lganini topishga yordam beradi.
Natijani tushunarli qilish
Terminal dasturida ham natija o’qilishi kerak. Raqamlarni ajratib, aniq birlik bilan chiqaring: Jami xarajat: 37 000 so'm. Bo’sh ro’yxatda 0 raqamini yolg’iz chiqarish o’rniga “Hali xarajat qo’shilmagan” deng. Noto’g’ri kiritishda esa nima tuzatilishi kerakligini ayting. Keyinchalik web interfeysga o’tganda aynan shu holatlar loading, bo’sh natija va xato ekranlariga aylanadi.
Qo’lda test jadvalini kengaytiring
| Sinov | Kutilgan tekshiruv |
|---|---|
12000, 8000 |
Jami 20 000 bo’ladi |
| Bo’sh ro’yxat | 0 yoki tushunarli bo’sh holat |
0 summa |
Validatsiya xatosi |
| Matn ko’rinishidagi summa | Son kiritish so’raladi |
| Budjetga teng jami | Qoidangizga mos aniq xabar |
Budjetga teng holat muhim: > va >= turli qoida beradi. Qaysi biri kerakligini mahsulot talabi belgilaydi. Buni oldindan yozish mantiqiy xatoni kamaytiradi.
Loyihani kengaytirish
Keyingi rivojlantirish yo’li
Loyiha ishlagach, faqat bitta yo’nalishni tanlang. Faylga saqlash uchun Python’da JSON yoki matn fayli bilan ishlashni o’rganasiz. Kategoriya uchun lug’at yoki ro’yxat tuzilmasi kerak bo’ladi. Web versiya uchun HTML forma, CSS ko’rinish va JavaScript interaksiyasi qo’shiladi. Har yangi yo’l avvalgi poydevorga tayanadi; shuning uchun ishlaydigan kichik versiya katta, lekin tugallanmagan versiyadan qimmatroq.
Ma’lumotni saqlash usullari
Birinchi versiyada xarajatlar dastur ishga tushgan paytdagi ro’yxatda turishi mumkin. Dastur yopilganda ular yo’qoladi. Bu mantiqni sinash uchun yetarli, ammo foydalanuvchi ma’lumotni keyin ham ko’rishi kerak bo’lsa, saqlash qatlami kerak. Terminal loyihasida JSON yoki matn fayli, web loyihada brauzer xotirasi yoki ma’lumotlar bazasi tanlanishi mumkin. Saqlash usuli o’zgarsa, o’qish, yozish, xato va backup holatlari ham rejalashtiriladi.
Faylga yozishda dastur yarim yozilgan ma’lumot bilan to’xtasa nima bo’lishini, fayl yo’q bo’lsa qanday boshlashini va noto’g’ri format bo’lsa foydalanuvchiga nima deyishini belgilang. Ma’lumotni o’chirishdan oldin tasdiqlash va qayta tiklash ehtiyoji ham mahsulot talabiga bog’liq.
Kategoriya va hisobot qo’shish
Keyingi imkoniyat sifatida xarajatga kategoriya berishingiz mumkin: oziq-ovqat, yo’l, ta’lim va boshqa. Bu faqat yangi input emas; ma’lumot modeli, validatsiya, ro’yxat ko’rinishi va hisoblash ham yangilanadi. Kategoriya bo’yicha jami chiqarish uchun avval har kategoriya uchun boshlang’ich qiymat, keyin ro’yxat bo’ylab sikl va shart kerak bo’ladi.
har bir xarajat uchun xarajatlar ichida:
agar xarajat.kategoriya = "Yo'l" bo'lsa:
yol_jami = yol_jami + xarajat.summa
Keyin bitta xarajatga kategoriya berilmagan holatni ham sinang. Uni “Boshqa” guruhiga o’tkazasizmi yoki xato ko’rsatasizmi — qoida aniq bo’lishi kerak.
Kodni tartibga keltirish
Loyiha o’sganda hamma qatorni bitta faylga yozish qiyinlashadi. Kiritishni
tekshirish, jami hisoblash, saqlash va ekranga chiqarish kabi vazifalarni
alohida funksiyaga ajrating. Bir funksiyani o’zgartirganda boshqasi buzilmasa,
debugging va test ancha osonlashadi. Nomlar ham ma’noli bo’lsin: x o’rniga
xarajatlar, f o’rniga saqlash_fayli kabi.
Tayyorlikni baholash
Tayyorlik mezoni
Loyiha “tayyor” deyilishi uchun quyidagilar ishlashi kerak:
- xarajat nomi va musbat summa bilan qo’shiladi;
- bo’sh yoki noto’g’ri qiymat tushunarli xabar beradi;
- jami to’g’ri hisoblanadi;
- budjet chegarasi aniq qoida bilan tekshiriladi;
- bo’sh ro’yxat buzilmaydi;
- kamida uch test holati qayta sinab ko’rilgan;
- README yoki izohda dastur qanday ishga tushishi yozilgan.
Bu ro’yxat katta mahsulot uchun to’liq emas, ammo boshlovchi loyihasini “ekranda bir marta ishladi” darajasidan ishonchli natijaga olib chiqadi.
Loyihani baholash mashqi
Do’stingizga yoki o’zingizga dasturdan foydalanish vazifasini bering: uchta xarajat qo’shish, bittasini noto’g’ri qiymat bilan sinash, jami va budjet holatini ko’rish. Qaysi joyda savol tug’ilganini qayd qiling. Bu feedback yangi rang qo’shishdan oldin qaysi mantiq yoki xabar tushunarsizligini ko’rsatadi.
Ishni kichik vazifalarga bo’lish
Mini-loyihani boshlashda “xarajatlar ilovasini yozaman” degan katta niyat o’rniga tekshirsa bo’ladigan kichik vazifalar ro’yxatini tuzing. Masalan, birinchi vazifa ro’yxat ichida berilgan ikki xarajatning jamini chiqarish bo’lishi mumkin. Ikkinchisi bitta yangi xarajatni qo’shadi. Uchinchi vazifa noto’g’ri summani rad etadi. To’rtinchisi budjet haqida xabar beradi. Har vazifa tugagach, kutilgan natijani qo’lda sinab, keyingisiga o’ting.
Bu yondashuv sizga ayni paytda qaysi tushuncha ishlatilayotganini ko’rsatadi. Jami hisoblashda sikl va o’zgaruvchi kerak; budjet xabarida shart; kiritishni tekshirishda validatsiya; takrorlanadigan hisobda funksiya ishlaydi. Muammo chiqsa, butun ilovani emas, aynan joriy kichik vazifani tekshirasiz. Shuningdek, bajarilgan qadamlar ro’yxati motivatsiyani saqlaydi: loyiha hali tugamagan bo’lsa ham, ko’rinadigan natija paydo bo’ladi.
Foydalanuvchi oqimini sinash
Kodning ichki mantiqi to’g’ri bo’lishi bilan birga, foydalanuvchi qadamlarni tushunishi ham kerak. Oqimni oddiy gap bilan yozing: dastur ochiladi, foydalanuvchi nom va summani kiritadi, “qo’shish” amalini bajaradi, ro’yxatda yangi qator paydo bo’ladi, jami yangilanadi va budjet holati ko’rsatiladi. Keyin har bir qadamga savol bering: foydalanuvchi ayni paytda nima qilishi kerakligini biladimi, u xato qilsa nima bo’ladi, oldingi kiritganlari yo’qolib ketmaydimi?
Masalan, summa noto’g’ri bo’lsa, avval qo’shilgan xarajatlar ro’yxatda qolishi kerak. Xabar esa “Xato” deb umumiy yozishdan ko’ra “Summa 0 dan katta son bo’lishi kerak” desa foydaliroq. Budjetdan oshilganda ilova foydalanuvchini koyimasin; qancha oshgani yoki qaysi ma’lumot yangilanishi kerakligini sokin va tushunarli ko’rsatsin. Shunday mayda qarorlar mini-loyihani haqiqiy foydalanishga yaqinlashtiradi.
Natijani namoyish qilish
Loyiha ishlagach, uni namoyish qilish uchun uch-to’rtta aniq ssenariy tayyorlang: bo’sh holat, odatiy uch xarajat, budjetga teng holat va noto’g’ri kiritish. Har bir ssenariyda qaysi natija chiqishi kerakligini oldindan yozing. Bu sizga dars yakunida o’zingizni tekshirishga, boshqaga loyiha qanday ishlashini ko’rsatishga va keyingi o’zgarishdan keyin regressiyani ushlashga yordam beradi.
README yoki qisqa qaydda loyihaning maqsadi, ishga tushirish usuli, mavjud imkoniyatlari va ma’lum cheklovlarini yozing. Masalan, “ma’lumotlar dastur yopilganda saqlanmaydi” degan qayd foydalanuvchi kutishini to’g’ri boshqaradi. Bu hujjat faqat boshqalar uchun emas: bir haftadan so’ng loyiha tomon qaytsangiz, o’zingiz ham qayerda to’xtaganingizni tez eslaysiz.
Yakuniy mustaqil topshiriq
Xarajatlar hisoblagichining birinchi versiyasini o’zingiz tanlagan tilda yarating. Avval terminalda yoki bitta skriptda ishlating. Keyin faqat bitta qo’shimcha imkoniyatni tanlang: xarajatni o’chirish, kategoriya, faylga saqlash yoki sana qo’shish. Tanlangan imkoniyat uchun yangi talab, kamida uch test holati va foydalanuvchiga chiqadigan xabarni yozing. Shundan keyin kodga o’ting. Shu ketma-ketlik sizni “avval yozib, keyin nimani qilganini bilish” odatidan saqlaydi.
Keyin bu rejani Python yoki JavaScript bilan ishlaydigan dasturga aylantiring.
Keyingi darsda dasturchining ish vositalari — kod muharriri, terminal va Git bilan tanishasiz.