Mundarija (35)
- Bu darsda
- 1. Nega bu kerak?
- 2. Pseudokod nima?
- 2.1 Birinchi misol
- 2.2 Pseudokodning uch foydasi
- 2.3 Bu kursdagi yozuv qoidalari
- 3. O'zgaruvchi g'oyasi
- 3.1 Nomli quti
- 3.2 = — "qutiga sol" degani
- 3.3 hisob = hisob + 1 nimani anglatadi?
- 4. Birinchi g'isht: ketma-ketlik
- 5. Ikkinchi g'isht: shart
- 5.1 AGAR va AKS HOLDA
- 5.2 Taqqoslash belgilari
- 5.3 Ko'p tarmoqli shart
- 6. Uchinchi g'isht: takror
- 6.1 TOKI ... EKAN
- 6.2 HAR BIR ... UCHUN
- 6.3 Takror albatta tugashi kerak
- 7. Uch g'isht birga
- 7.1 Har qanday dastur shu uchtadan quriladi
- 7.2 To'liq yechilgan misol: eng arzon narx
- 7.3 Pseudokoddan haqiqiy kodga
- 7.4 Qisman yechilgan misol: sovuq kunlar
- 8. Ko'p uchraydigan xatolar
- 8.1 Pseudokodda sintaksis bilan ovora bo'lish
- 8.2 Hisoblagichni o'zgartirishni unutish
- 8.3 Noto'g'ri boshlang'ich qiymat
- 8.4 Chekinishni aralashtirish
- 9. Mashqlar
- 1-mashq (oson): Pseudokodni o'qing
- 2-mashq (o'rta): Qimmat mahsulotlar
- 3-mashq (qiyin): Raketa uchirish
- 10. Real ishda
- Xulosa
Pseudokod va uch g'isht: ketma-ketlik, shart, takror
Qisqacha: Pseudokod — algoritmni oddiy so'zlar bilan, lekin dasturga o'xshash tartibda yozish. Uni kompyuter bajarmaydi — u odam uchun reja. Har qanday dastur uchta g'ishtdan quriladi: ketma-ketlik (qadamlar birin-ketin), shart (agar ... bo'lsa) va takror (qayta-qayta bajarish).
Bu darsda
- Pseudokod nima ekanini va nega koddan oldin yozilishini tushunasiz.
- O'zgaruvchi g'oyasini va
hisob = hisob + 1qatorining ma'nosini tushuntira olasiz. - Ketma-ketlik, shart va takrorni pseudokodda yoza olasiz.
- Pseudokodni qo'lda, qadamma-qadam "bajarib" natijasini topa olasiz.
- Pseudokod haqiqiy kodga qanday aylanishini ko'rasiz.
Oldin bilishingiz kerak: Kompyutercha fikrlash. Foydali, lekin shart emas: Shell skript yozish asoslari.
1. Nega bu kerak?
Oldingi darsda katta muammoni bo'laklab, algoritm tuzishni ko'rdik. Endi algoritmni qanday yozib qo'yish kerak degan savol qoladi.
Boshlovchi vazifani eshitishi bilan kod yozishga tashlanadi. Shunda u bir vaqtda ikki og'ir ishni qiladi:
- Masalani qanday yechishni o'ylaydi.
- Tilning qavslari, nuqta-vergullari va qoidalarini eslaydi.
Miya bu ikkisini birga yaxshi bajara olmaydi. Natijada qavs bilan ovora bo'lib, asosiy fikr yo'qoladi.
Maktabda insho yozishdan oldin reja tuzganmiz: kirish, asosiy qism, xulosa. Reja tayyor bo'lsa, insho tez yoziladi. Dasturchilar ham avval algoritmni oddiy so'zlar bilan yozib oladi. Bu "reja" pseudokod deyiladi.
2. Pseudokod nima?
2.1 Birinchi misol
Choyxonada chek hisoblash kerak:
KIRIT narx
KIRIT soni
jami = narx * soni
CHIQAR jamiBuni har kim o'qiy oladi: narx va sonni oling, ularni ko'paytiring, natijani chiqaring. * — ko'paytirish belgisi, dasturlashda × o'rniga shu yoziladi.
Bu — pseudokod (pseudocode). "Pseudo" so'zi "soxta" degani. Pseudokod kodga o'xshaydi, lekin uni hech bir kompyuter bajarmaydi. U odamlar uchun yozilgan reja.
2.2 Pseudokodning uch foydasi
- Fikrni tildan ajratadi. JavaScript'ni ham, Python'ni ham o'ylamaysiz — faqat yechimni o'ylaysiz.
- Xato arzon tuzatiladi. Pseudokoddagi xatoni bir daqiqada o'chirib yozasiz. Yozilgan yuzlab qator kodni qayta qurish esa soatlab vaqt oladi.
- Hamkasb bilan umumiy til. Pseudokodni istalgan tilni biladigan dasturchi tushunadi.
2.3 Bu kursdagi yozuv qoidalari
Pseudokod uchun rasmiy standart yo'q. Lekin hamma bir-birini tushunishi uchun qulay odatlar bor. Bu kursda shunday yozamiz:
| Kalit so'z | Inglizcha kitoblarda | Ma'nosi |
|---|---|---|
KIRIT x |
INPUT x |
Foydalanuvchidan qiymat olish |
CHIQAR x |
OUTPUT x, PRINT x |
Natijani ekranga chiqarish |
AGAR ... BO'LSA |
IF ... THEN |
Shart |
AKS HOLDA |
ELSE |
Shart bajarilmasa |
TOKI ... EKAN |
WHILE ... DO |
Shart rost ekan, takrorla |
HAR BIR x UCHUN |
FOR EACH x |
Ro'yxatdagi har biri uchun |
Yana ikki odat:
- Kalit so'zlar KATTA harflar bilan yoziladi. Shunda ular o'zingiz tanlagan nomlardan ajralib turadi.
- Shart yoki takror ichidagi qadamlar 4 ta bo'sh joy bilan o'ngga suriladi. Bu chekinish (indentation) deyiladi. Chekinish qaysi qadam qaysi blok ichida ekanini ko'rsatadi.
Inglizcha ustun nega kerak? Internetdagi darsliklar va intervyularda pseudokod ko'pincha inglizcha kalit so'zlar bilan yoziladi. Ularni ko'rsangiz, tanib olasiz.
3. O'zgaruvchi g'oyasi
3.1 Nomli quti
Chek misolida narx, soni va jami so'zlari bor edi. Ular qiymatni eslab turadi.
O'zgaruvchi (variable) — qiymat saqlanadigan nomli joy. Uni usti yozilgan quti deb tasavvur qiling. Qutining ustiga "narx" deb yozdingiz va ichiga 3 000 soldingiz. Keyin "narx" desangiz, ichidagi 3 000 olinadi.
Siz o'zgaruvchini allaqachon ko'rgansiz. Muhit o'zgaruvchilari darsida terminalda PORT=3000 deb yozib, keyin $PORT bilan o'qigan edingiz. G'oya aynan shu.
3.2 = — "qutiga sol" degani
Pseudokodda = belgisi matematikadagi tenglik emas. U "o'ng tomondagi qiymatni chap tomondagi qutiga sol" degani:
yosh = 20"yosh qutisiga 20 ni sol." Nom o'zgarmaydi, lekin ichidagi qiymat o'zgarishi mumkin — shuning uchun u "o'zgaruvchi" deyiladi.
3.3 hisob = hisob + 1 nimani anglatadi?
Bu qator matematikada ma'nosiz: hech bir son o'zidan 1 ga katta bo'lolmaydi. Lekin pseudokodda u juda ko'p ishlatiladi. Keling, sekin ko'ramiz.
Kompyuter bu qatorni ikki qadamda bajaradi:
- Avval o'ng tomonni hisoblaydi:
hisobqutisidagi qiymatni oladi va unga 1 qo'shadi. - Keyin natijani yana
hisobqutisiga soladi. Eski qiymat o'chadi.
hisob = 5
hisob = hisob + 1
CHIQAR hisobQo'lda bajaramiz:
| Qadam | Nima bo'ladi | hisob ichida |
|---|---|---|
| 1 | 5 ni solamiz | 5 |
| 2 | 5 + 1 = 6, uni solamiz | 6 |
| 3 | Chiqaramiz | 6 |
Natija: 6. Bunday jadval tuzib, algoritmni qo'lda "bajarish" qo'lda kuzatish (tracing) deyiladi. Dasturchilar buni doim qiladi.
Tekshirib ko'ring: Quyidagi pseudokod nima chiqaradi?
textx = 5 x = x + 3 x = x * 2 CHIQAR x
Javobingiz:
Javob
16. Avval x = 5. Keyin 5 + 3 = 8, x = 8. Keyin 8 × 2 = 16, x = 16. Har qatorda o'ng tomon eski qiymat bilan hisoblanadi, keyin natija qutiga tushadi.
4. Birinchi g'isht: ketma-ketlik
Ketma-ketlik (sequence) — qadamlar yuqoridan pastga, birin-ketin bajariladi. Hech bir qadam tashlab ketilmaydi.
KIRIT ism
KIRIT shahar
CHIQAR "Salom, " + ism + "! " + shahar + "dan xush kelibsiz."Agar ism ga "Malika", shahar ga "Samarqand" kiritilsa, natija:
Salom, Malika! Samarqanddan xush kelibsiz.Bu yerda + matnlarni bir-biriga ulaydi. Qo'shtirnoq ichidagi matn o'zgarmasdan chiqadi, qo'shtirnoqsiz so'z esa o'zgaruvchi — uning ichidagi qiymat olinadi.
Ketma-ketlikda tartib muhim. CHIQAR qatorini KIRIT ism dan oldin qo'ysangiz, chiqariladigan ism hali yo'q bo'ladi.
5. Ikkinchi g'isht: shart
5.1 AGAR va AKS HOLDA
O'zbekistonda saylovda 18 yoshdan ovoz berish mumkin. Buni pseudokodda yozamiz:
KIRIT yosh
AGAR yosh >= 18 BO'LSA
CHIQAR "Ovoz bera olasiz"
AKS HOLDA
CHIQAR "Hali erta"Shart (selection) — algoritm shartga qarab ikki yo'ldan birini tanlaydi. Shart rost bo'lsa — birinchi blok, yolg'on bo'lsa — AKS HOLDA bloki bajariladi. Ikkalasi birga hech qachon bajarilmaydi.
yosh = 20 bo'lsa: "Ovoz bera olasiz". yosh = 16 bo'lsa: "Hali erta". yosh = 18 bo'lsa-chi? >= "katta yoki teng" degani. 18 ga teng — demak "Ovoz bera olasiz".
AKS HOLDA qismi majburiy emas. "Shart rost bo'lsa nimadir qil, bo'lmasa hech narsa qilma" degan holatlar ham ko'p.
5.2 Taqqoslash belgilari
Shartlarda sonlar shu belgilar bilan solishtiriladi:
| Belgi | Ma'nosi | Misol (rost) |
|---|---|---|
> |
katta | 5 > 3 |
< |
kichik | 2 < 7 |
>= |
katta yoki teng | 18 >= 18 |
<= |
kichik yoki teng | 4 <= 9 |
== |
teng | 3 == 3 |
!= |
teng emas | 3 != 4 |
Nega tenglik uchun == (ikkita)? Chunki bitta = allaqachon band — u "qutiga sol" degani. Tekshirish va solishni aralashtirmaslik uchun tenglikni tekshirish ikki belgi bilan yoziladi.
5.3 Ko'p tarmoqli shart
Tanlov ikkitadan ko'p bo'lsa, AKS HOLDA AGAR ishlatiladi. Taksi tarifini tanlash:
KIRIT yolovchilar
AGAR yolovchilar <= 4 BO'LSA
CHIQAR "Oddiy mashina"
AKS HOLDA AGAR yolovchilar <= 7 BO'LSA
CHIQAR "Miniven"
AKS HOLDA
CHIQAR "Ikki mashina chaqiring"Shartlar yuqoridan pastga tekshiriladi. Birinchi rost chiqqan shart bloki bajariladi, qolganlari o'tkazib yuboriladi.
O'zgaruvchi nomini yolovchilar deb apostrofsiz yozdik. Dasturlash tillarida nomda apostrof va bo'sh joy bo'lmaydi — pseudokodda ham shu odatni saqlaymiz.
Tekshirib ko'ring: Yuqoridagi taksi pseudokodiga
yolovchilar= 5 kiritildi. Nima chiqadi va nega?
Javob
"Miniven". Birinchi shart: 5 <= 4 — yolg'on, o'tkazib yuboriladi. Ikkinchi shart: 5 <= 7 — rost, "Miniven" chiqadi. Shundan keyin qolgan AKS HOLDA tekshirilmaydi.
6. Uchinchi g'isht: takror
6.1 TOKI ... EKAN
Jasur telefon olmoqchi. Telefon 3 000 000 so'm turadi, Jasur har oy 500 000 so'm yig'adi. Necha oyda yig'adi?
yigilgan = 0
oylar = 0
TOKI yigilgan < 3000000 EKAN
yigilgan = yigilgan + 500000
oylar = oylar + 1
CHIQAR oylarTakror (iteration) — bir xil qadamlarni shart rost ekan qayta-qayta bajarish. Dasturchilar buni sikl (loop) ham deyishadi. TOKI shartni har aylanish boshida tekshiradi. Shart yolg'on bo'lishi bilan takror to'xtaydi va keyingi qatorga o'tiladi.
Pseudokodda sonlar bo'sh joysiz yoziladi (3000000). Kompyuter tillarida ham shunday: bo'sh joy sonni ikkiga bo'lib yuboradi.
Qo'lda kuzatamiz:
| Aylanish | Shart | yigilgan |
oylar |
|---|---|---|---|
| Boshida | — | 0 | 0 |
| 1 | 0 < 3 000 000 — rost | 500 000 | 1 |
| 2 | 500 000 < 3 000 000 — rost | 1 000 000 | 2 |
| 3 | rost | 1 500 000 | 3 |
| 4 | rost | 2 000 000 | 4 |
| 5 | rost | 2 500 000 | 5 |
| 6 | rost | 3 000 000 | 6 |
| 7 | 3 000 000 < 3 000 000 — yolg'on | — | — |
Takror to'xtadi. Natija: 6 oy.
6.2 HAR BIR ... UCHUN
Ko'pincha ro'yxatdagi har bir element bilan bir xil ish qilish kerak bo'ladi. Masalan, menyudagi har bir taomni e'lon qilish:
menyu = [osh, somsa, manti]
HAR BIR taom UCHUN menyu ichida
CHIQAR "Menyuda: " + taomNatija:
Menyuda: osh
Menyuda: somsa
Menyuda: manti[ ... ] — ro'yxat, ya'ni tartiblangan qiymatlar to'plami. Takror har aylanishda taom qutisiga ro'yxatdagi keyingi elementni soladi. Elementlar tugagach, takror o'zi to'xtaydi.
Bu sizga tanish bo'lishi mumkin. Shell skriptdagi for taom in osh somsa manti aynan shunday ishlagan edi.
6.3 Takror albatta tugashi kerak
TOKI ichida shartga ta'sir qiladigan narsa o'zgarishi shart. Jasur misolida yigilgan = yigilgan + 500000 qatorini o'chirib ko'ring: yigilgan doim 0 qoladi. Shart doim rost, takror hech qachon tugamaydi.
Bu — algoritm darsidagi cheklilik belgisining buzilishi. Bunday takror cheksiz sikl deyiladi.
Tekshirib ko'ring: Quyidagi pseudokod necha marta "Salom" chiqaradi?
texti = 1 TOKI i <= 3 EKAN CHIQAR "Salom" i = i + 1
Javob
3 marta. i 1, 2, 3 bo'lganda shart rost. i 4 ga yetganda 4 <= 3 yolg'on bo'ladi va takror to'xtaydi.
7. Uch g'isht birga
7.1 Har qanday dastur shu uchtadan quriladi
1966-yilda italyan olimlari Korrado Byom va Juzeppe Yakopini muhim narsani isbotladi. Har qanday algoritmni faqat uch qurilish bilan yozish mumkin: ketma-ketlik, shart va takror.
flowchart LR
subgraph K[Ketma-ketlik]
K1[1-qadam] --> K2[2-qadam]
end
subgraph S[Shart]
S1{Rostmi?} -- Ha --> S2[A yo'l]
S1 -- "Yo'q" --> S3[B yo'l]
end
subgraph T[Takror]
T1{Davom etamizmi?} -- Ha --> T2[Qadam]
T2 --> T1
endTelegram, bank ilovasi, o'yin — hammasi ichida minglab marta shu uch g'isht turli tartibda ulangan. Bunday chizmalarni keyingi darsda o'zingiz chizasiz.
7.2 To'liq yechilgan misol: eng arzon narx
Bozorda to'rt sotuvchi pomidor sotyapti. Eng arzon narxni topamiz:
narxlar = [9000, 7500, 8000, 7000]
eng_arzon = narxlar ichidagi birinchi narx
HAR BIR narx UCHUN narxlar ichida
AGAR narx < eng_arzon BO'LSA
eng_arzon = narx
CHIQAR eng_arzonUchala g'isht ham shu yerda: qadamlar ketma-ket, ichkarida shart, tashqarida takror. Nomda bo'sh joy bo'lmasligi uchun so'zlarni pastki chiziq bilan uladik: eng_arzon.
Qo'lda kuzatamiz:
narx |
Shart | eng_arzon |
|---|---|---|
| — | boshida | 9 000 |
| 9 000 | 9 000 < 9 000 — yo'q | 9 000 |
| 7 500 | 7 500 < 9 000 — ha | 7 500 |
| 8 000 | 8 000 < 7 500 — yo'q | 7 500 |
| 7 000 | 7 000 < 7 500 — ha | 7 000 |
Natija: 7000.
7.3 Pseudokoddan haqiqiy kodga
Pseudokod tayyor bo'lsa, uni istalgan tilga o'girish oson. Siz bash'ni bilasiz — xuddi shu algoritm bash'da:
#!/usr/bin/env bash
eng_arzon=9000
for narx in 9000 7500 8000 7000; do
if [ "$narx" -lt "$eng_arzon" ]; then
eng_arzon=$narx
fi
done
echo "$eng_arzon"7000Soddalik uchun birinchi narxni (9000) boshlang'ich qiymatga qo'lda yozdik. Qatorma-qator solishtiring: HAR BIR ... UCHUN — for ... do ... done, AGAR ... BO'LSA — if ... then ... fi, < — -lt. Mantiq bir xil, faqat yozuv boshqa.
JavaScript'da ham g'oya aynan shu, faqat so'zlar va qavslar boshqacha. Uni if / else va for sikli darslarida yozasiz — hozir bilish shart emas.
7.4 Qisman yechilgan misol: sovuq kunlar
Yanvar oyining 5 kunlik harorati: -3, 2, -7, 0, 1. Nechta kun noldan sovuq bo'lgan?
haroratlar = [-3, 2, -7, 0, 1]
sovuq = 0
HAR BIR t UCHUN haroratlar ichida
AGAR t < 0 BO'LSA
sovuq = sovuq + 1
CHIQAR sovuqO'zingiz kuzating: har bir t uchun shartni tekshiring va sovuq qanday o'zgarishini yozing. Natija nechchi?
0 ni sanamadik — chunki 0 < 0 yolg'on. "Noldan sovuq" va "noldan sovuq yoki nol" — ikki xil savol. Bunday nozik joylarga chegaraviy holatlar darsida qaytamiz.
8. Ko'p uchraydigan xatolar
8.1 Pseudokodda sintaksis bilan ovora bo'lish
Boshlovchi pseudokodga ham nuqta-vergul, qavs va maxsus belgilar qo'shadi. Bu shart emas. Pseudokodning maqsadi — mantiq. Odam o'qib tushunsa — yetarli.
8.2 Hisoblagichni o'zgartirishni unutish
i = 1
TOKI i <= 3 EKAN
CHIQAR "Salom"Bu yerda i = i + 1 yo'q. i doim 1 bo'lib qoladi va "Salom" cheksiz chiqaveradi. Har bir TOKI ni yozgach, o'zingizdan so'rang: "Ichkarida shartni yolg'onga yaqinlashtiradigan qator bormi?"
8.3 Noto'g'ri boshlang'ich qiymat
Eng arzon narxni topishda eng_arzon = 0 deb boshlasangiz nima bo'ladi? Birorta narx 0 dan kichik emas. Shart hech qachon rost bo'lmaydi va natija 0 chiqadi — bunday narx yo'q-ku!
Shuning uchun boshlang'ich qiymat sifatida ro'yxatning birinchi elementi olinadi.
8.4 Chekinishni aralashtirish
Quyidagi ikki pseudokod faqat bitta qatorning chekinishi bilan farq qiladi:
HAR BIR taom UCHUN menyu ichida
CHIQAR taom
CHIQAR "---"HAR BIR taom UCHUN menyu ichida
CHIQAR taom
CHIQAR "---"Birinchisida chiziq har taomdan keyin chiqadi — u takror ichida. Ikkinchisida bir marta, eng oxirida — u takrordan tashqarida. Chekinish — bezak emas, u ma'noni o'zgartiradi.
9. Mashqlar
1-mashq (oson): Pseudokodni o'qing
Quyidagi pseudokod nima chiqaradi?
x = 10
y = 20
AGAR x > y BO'LSA
z = x - y
AKS HOLDA
z = y - x
CHIQAR zYechim
10. Shart 10 > 20 — yolg'on, shuning uchun AKS HOLDA bloki ishlaydi: z = 20 − 10 = 10. Bu algoritm ikki son orasidagi farqni doim musbat qilib chiqaradi.
2-mashq (o'rta): Qimmat mahsulotlar
Do'kondagi mahsulotlar narxi ro'yxat sifatida berilgan: 45 000, 120 000, 30 000, 75 000. 50 000 so'mdan qimmat mahsulotlar nechtaligini sanaydigan pseudokod yozing. Keyin uni qo'lda kuzating.
Ishora: "Sovuq kunlar" misolidagi HAR BIR ... UCHUN va sanagich (sovuq = sovuq + 1) g'oyasini ishlating.
Yechim
narxlar = [45000, 120000, 30000, 75000]
qimmat = 0
HAR BIR narx UCHUN narxlar ichida
AGAR narx > 50000 BO'LSA
qimmat = qimmat + 1
CHIQAR qimmatKuzatish: 45 000 — yo'q (0). 120 000 — ha (1). 30 000 — yo'q (1). 75 000 — ha (2). Natija: 2.
3-mashq (qiyin): Raketa uchirish
KIRIT n bilan son olinadi. Algoritm n dan 1 gacha kamayib sanasin, oxirida "Uchdik!" chiqarsin. Masalan, n = 3 bo'lsa:
3
2
1
Uchdik!TOKI ... EKAN bilan pseudokod yozing. Ishora: hisoblagich bu safar oshmaydi, kamayadi: n = n - 1.
Yechim
KIRIT n
TOKI n >= 1 EKAN
CHIQAR n
n = n - 1
CHIQAR "Uchdik!"n = 3 bilan kuzatish: 3 >= 1 rost → 3 chiqadi, n = 2. 2 >= 1 rost → 2, n = 1. 1 >= 1 rost → 1, n = 0. 0 >= 1 yolg'on → takror to'xtaydi. "Uchdik!" takrordan tashqarida — shuning uchun bir marta chiqadi.
Agar n = 0 kiritilsa-chi? Shart birinchi tekshiruvdayoq yolg'on. Takror bir marta ham aylanmaydi va darhol "Uchdik!" chiqadi. Bu ham to'g'ri xatti-harakat.
10. Real ishda
- Rejalashtirish. Tajribali dasturchilar murakkab vazifada avval izoh sifatida pseudokod yozadi, keyin uni qatorma-qator kodga aylantiradi.
- Intervyu. Texnik suhbatda "avval yechimni so'z bilan tushuntiring" deyishadi. Pseudokod aynan shu. Qolgani live coding intervyu darsida.
- Hujjatlar. Algoritmlar haqidagi kitob va maqolalarda yechim ko'pincha pseudokodda beriladi — chunki uni istalgan til dasturchisi o'qiy oladi.
- Uch g'isht har bir dasturlash tilida bor. JavaScript'da ular
if,forvawhiledeb ataladi.
Xulosa
- Pseudokod — algoritmni oddiy so'zlar bilan, lekin dasturga o'xshash tartibda yozish. Uni kompyuter emas, odam o'qiydi.
- O'zgaruvchi — nomli quti.
=— "qutiga sol",==— "tengmi?". hisob = hisob + 1: avval o'ng tomon hisoblanadi, keyin natija qutiga tushadi.- Ketma-ketlik — qadamlar birin-ketin; shart —
AGAR ... BO'LSA; takror —TOKIvaHAR BIR. - Har bir takrorda shartni tugatadigan qadam bo'lishi shart.
- Qo'lda kuzatish jadvali — xatoni kod yozmasdan topish usuli.
Keyingi dars: Blok-sxema va diagramma vositalari — shu uch g'ishtni shakllar va strelkalar bilan chizishni va Mermaid, draw.io, Excalidraw vositalarini o'rganamiz.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!