Davlat ro'yxatidan o'tgan nodavlat notijorat tashkilot 1052p-son guvohnoma

Maqolalar

Algoritmik fikrlash: dasturlashdan oldingi qadam

11 daqiqa o'qish

Muammoni bo'laklarga ajratish, naqsh va abstraksiya, shart va sikl, psevdokod va blok-sxema, oddiy masalalar va qo'lda tekshirish — misollar va mashqlar bilan.

Ko’pchilik dasturlashni o’rganishni darhol biror tilni o’rnatishdan boshlaydi va birinchi xatoda to’xtab qoladi. Aslida dasturchining asosiy ko’nikmasi kod yozish emas, balki vazifani kompyuter bajara oladigan aniq qadamlarga aylantirish. Bu ko’nikma algoritmik fikrlash deb ataladi. U har qanday tildan oldin keladi va tilni almashtirsangiz ham siz bilan qoladi. Bu maqolada algoritm nima ekanini, muammoni bo’laklarga ajratish (dekompozitsiya), naqshlarni topish va abstraksiyani, qadamma-qadam ko’rsatma yozishni kundalik misollar — palov retsepti, ertalabki tartib va do’kon navbati orqali ko’rib chiqamiz. Keyin shart va takrorlashni, psevdokod va blok-sxemani o’rganamiz, eng katta sonni topish, qidiruv va saralash g’oyasini tahlil qilamiz, algoritmni “qo’lda bajarib” tekshirishni mashq qilamiz. Oxirida keng tarqalgan xatolar, amaliy mashqlar va tekshiruv ro’yxati beriladi. Kompyuter shart emas: qog’oz va qalam yetarli.

Algoritm nima va u nega kerak

Algoritm — biror natijaga erishish uchun aniq tartibda bajariladigan qadamlar ketma-ketligi. Yaxshi algoritmning to’rtta belgisi bor:

  1. Aniqlik. Har bir qadam bir xil tushuniladi. “Tuzni me’yorida soling” — odam uchun yetarli, kompyuter uchun emas.
  2. Tartib. Qadamlar qaysi ketma-ketlikda bajarilishi aniq. Avval suv qaynatiladi, keyin choy damlanadi — aksincha emas.
  3. Cheklilik. Algoritm qachondir tugaydi. “Toki tayyor bo’lguncha aralashtiring” degan qadamda “tayyor” nimani bildirishi aniq bo’lishi kerak, aks holda jarayon cheksiz davom etadi.
  4. Natija. Oxirida aniq javob yoki holat bor: palov tayyor, eng katta son topildi, ro’yxat saralandi.

Kompyuter juda tez, lekin o’zi “o’ylamaydi”: unga nima deyilsa, aynan shuni bajaradi. Odam “non olib kel” degan iltimosni tushunadi — qaysi do’konga borishni, pul olishni, yo’lda ehtiyot bo’lishni o’zi hal qiladi. Kompyuterga esa har bir qadamni aytish kerak. Shuning uchun dasturlashdagi qiyinchilikning katta qismi sintaksisda emas, aynan fikrni qadamlarga ajratishda bo’ladi. Dasturlashni boshlash haqidagi maqolamizda ham shu fikr bor: til — vosita, fikrlash — poydevor.

To’rt asosiy usul: dekompozitsiya, naqsh, abstraksiya, algoritm

Algoritmik fikrlash odatda to’rtta usulga bo’linadi. Ularni bitta misol bilan ko’rib chiqamiz: Dilshod oilasi uchun shanba kuni mehmon kutishni rejalashtirmoqda.

Dekompozitsiya — katta muammoni bo’laklarga ajratish

“Mehmon kutish” — juda katta va noaniq vazifa. Uni kichik qismlarga bo’lamiz: uyni tozalash, menyu tuzish, bozorga borish, ovqat tayyorlash, dasturxon yozish. Har bir qism ham bo’linadi: “bozorga borish” — ro’yxat tuzish, sumka olish, bozorga yetib borish, sotib olish, qaytish. Bo’laklar shunchalik kichik bo’lishi kerakki, har birini qanday bajarishni aniq bilasiz.

Naqshlarni topish

Bo’laklarga qarasak, ba’zilari bir-biriga o’xshaydi. Sabzi to’g’rash, piyoz to’g’rash, go’sht to’g’rash — hammasi “mahsulotni yuvish, tozalash, kerakli shaklda kesish”. Bu takrorlanuvchi naqsh. Naqshni topsangiz, uni bir marta yaxshilab tushuntirib, keyin faqat “nima” o’zgarishini aytasiz.

Abstraksiya — muhimini ajratib olish

Abstraksiya — keraksiz tafsilotlarni chetga surib, faqat vazifa uchun muhim narsani qoldirish. Bozor ro’yxatini tuzayotganda sabzining rangi yoki sotuvchining ismi muhim emas; muhimi — nima kerak va qancha. Xarita ham abstraksiyaning yaxshi misoli: unda har bir daraxt chizilmaydi, faqat ko’chalar va mo’ljallar bor.

Algoritm — qadamlarni tartibga solish

Oxirida barcha bo’laklarni to’g’ri ketma-ketlikka qo’yamiz: avval ro’yxat, keyin bozor, keyin tayyorlash. Ba’zi ishlar bir vaqtda bajarilishi mumkin (go’sht qovurilayotganda sabzi to’g’raladi), ba’zilari esa faqat ketma-ket (guruch damlanishi uchun avval zirvak tayyor bo’lishi kerak).

Kundalik hayotdagi algoritmlar

Algoritmlar bizni har kuni o’rab turadi, faqat biz ularni shunday atamaymiz.

Palov retsepti

Retsept — tayyor algoritm. Uni aniqroq yozishga harakat qilamiz (miqdorlar shartli):

  1. Qozonni olovga qo’ying va yog’ni qizdiring.
  2. Go’shtni solib, usti qizarguncha qovuring.
  3. Piyozni solib, oltin rangga kirguncha qovuring.
  4. Sabzini solib, yumshaguncha qovuring.
  5. Suv quying, tuz va ziravor soling, zirvakni bir muddat qaynating.
  6. Yuvilgan guruchni tekis yoying va suv guruchdan bir oz yuqori bo’lishini tekshiring.
  7. Suv bug’lanib ketguncha olovni kuchli qoldiring.
  8. Guruchni tepalik qilib yig’ing, qopqoqni yoping, olovni pasaytiring va damlang.

E’tibor bering: “qizarguncha”, “yumshaguncha”, “bug’lanib ketguncha” — bular shartli takrorlash: biror holat yuz bermaguncha amal davom etadi. “Suv yetarlimi?” degan tekshiruv esa shart. Bular dasturlashning asosiy qurilish bloklari.

Ertalabki tartib

Zarina har kuni ishga ketishdan oldin bir xil ishlarni bajaradi: uyg’onish, yuvinish, nonushta, kiyinish, sumkani tekshirish, chiqish. Bu ketma-ketlik bilan birga shartlar ham bor: “Agar yomg’ir yog’ayotgan bo’lsa, soyabon ol”, “Agar telefon quvvati kam bo’lsa, quvvatlagichni sumkaga sol”. Bunday tartibni bir marta o’ylab chiqib, keyin avtomatik bajarish — vaqtni tejashning oddiy usuli.

Do’kon navbati

Kassada navbat ham algoritm bo’yicha ishlaydi: navbatda odam bor ekan, kassir birinchi xaridorga xizmat qiladi, u ketadi, keyingisi oldinga o’tadi. Navbat bo’sh bo’lganda kassir kutadi. Bu siklning aniq misoli: “toki navbat bo’sh bo’lmaguncha — keyingisiga xizmat qil”.

Shartlar va takrorlash

Shart: agar … aks holda

Shart — qaror qabul qilish. U har doim “ha” yoki “yo’q” javobli savoldan boshlanadi:

AGAR yomg'ir yog'ayotgan bo'lsa
    soyabon ol
AKS HOLDA
    soyabonsiz chiq

Shartlar ichma-ich ham bo’lishi mumkin. Masalan, Bekzod ish kuniga qarab qaror qiladi: agar bugun shanba yoki yakshanba bo’lsa — dam oladi, aks holda, agar soat 8 dan o’tgan bo’lsa — taksi chaqiradi, aks holda avtobusda ketadi. Ichma-ich shartlar ko’paysa, ularni qog’ozga chizib olgan ma’qul — aks holda qaysi holat qaysi javobga olib borishi chalkashib ketadi.

Takrorlash: sikl

Sikl — bir amalni bir necha marta bajarish. Ikki asosiy turi bor:

  • Sanalgan sikl — necha marta takrorlanishi oldindan ma’lum: “har bir mehmon uchun likopcha qo’y” (mehmonlar soni ma’lum).
  • Shartli sikl — shart bajarilmaguncha davom etadi: “choynak qaynaguncha kut”.
HAR BIR mehmon UCHUN
    likopcha qo'y
    qoshiq qo'y

TOKI choynak qaynamagan EKAN
    kut

Shartli siklda eng muhim savol: u albatta tugaydimi? Agar shart hech qachon o’zgarmasa (masalan, choynak olovga qo’yilmagan bo’lsa), sikl cheksiz davom etadi. Dasturlarda bu “qotib qolish”ning keng tarqalgan sababi.

O’zgaruvchi — qiymat saqlanadigan “quti”

Ko’p algoritmlarda biror qiymatni eslab qolish kerak: hozirgacha nechta xaridorga xizmat qilindi, eng katta son qaysi. Buning uchun o’zgaruvchi ishlatiladi — nomi bor “quti”, ichidagi qiymat o’zgarishi mumkin. Masalan, kassir “xizmat_qilindi” degan qutiga avval 0 yozadi va har bir xaridordan keyin unga 1 qo’shadi.

Psevdokod va blok-sxema

Algoritmni yozishning ikki qulay usuli bor — ikkalasi ham hali biror dasturlash tili emas.

Psevdokod

Psevdokod — oddiy tilda, lekin qat’iy tuzilishda yozilgan algoritm. Unda AGAR, AKS HOLDA, TOKI, HAR BIR kabi kalit so’zlar va ichkariga surilgan qatorlar ishlatiladi. Qoidalar oddiy:

  • har qatorda bitta amal;
  • shart yoki sikl ichidagi amallar ichkariga suriladi;
  • noaniq so’zlar (“biroz”, “me’yorida”) o’rniga aniq shart yoki son (shartli bo’lsa ham);
  • boshlanish va tugash aniq ko’rinadi.

Psevdokodning afzalligi — uni har qanday tilga o’girish oson. Keyinchalik Python’da birinchi qadam qo’yganingizda ko’rasiz: Python kodi tuzilishi bo’yicha psevdokodga juda yaqin.

Blok-sxema

Blok-sxema — algoritmning rasmi. Asosiy shakllar:

  • Oval — boshlanish va tugash.
  • To’rtburchak — amal (“yog’ni qizdir”).
  • Romb — shart, undan ikki strelka chiqadi: “ha” va “yo’q”.
  • Parallelogramm — ma’lumot kiritish yoki chiqarish (“sonni so’ra”, “javobni ko’rsat”).
  • Strelkalar — bajarilish yo’nalishi.

Blok-sxemani qog’ozda chizish eng tez yo’l. Kompyuterda chizmoqchi bo’lsangiz, bepul diagrams.net (draw.io) xizmatida Flowchart bo’limidagi shakllardan foydalaning: shaklni chapdagi paneldan sudrab olib kelasiz, strelkani esa bir shakl chetidan ikkinchisiga tortasiz. Sikl blok-sxemada strelkaning orqaga — romb tepasiga qaytishi bilan ko’rinadi. Agar romb’dan orqaga qaytadigan strelka bo’lsa-yu, chiqish yo’li bo’lmasa, demak sikl cheksiz.

Oddiy masalalar: eng katta son, qidiruv, saralash

Endi o’rganganlarni klassik masalalarda qo’llaymiz. Raqamlar shartli.

Eng katta sonni topish

Masala: o’qituvchi Nilufar opa sinfdagi o’quvchilarning test ballari ro’yxatini oldi (masalan, 7, 12, 9, 15, 11) va eng yuqori ballni topmoqchi. Odam bir qarashda topadi, lekin ro’yxatda besh yuz son bo’lsa-chi? Algoritm:

eng_katta = ro'yxatdagi birinchi son
HAR BIR son UCHUN ro'yxatda
    AGAR son > eng_katta BO'LSA
        eng_katta = son
eng_katta ni ko'rsat

G’oya oddiy: birinchi sonni “hozircha eng katta” deb olamiz va qolganlarini birma-bir u bilan solishtiramiz. Kattarog’i chiqsa, uni eslab qolamiz. Nega boshlang’ich qiymat 0 emas, birinchi son? Chunki ro’yxatda faqat manfiy sonlar bo’lsa, 0 noto’g’ri javob beradi. Bu kichik tafsilot — algoritmik fikrlashning aynan o’zi.

Qidiruv

Masala: kutubxonachi Shahnoza ro’yxatdan kitob nomini qidirmoqda. Eng oddiy usul — ketma-ket qidiruv: boshidan boshlab har bir nomni tekshirish, topilsa — to’xtash, ro’yxat tugasa — “topilmadi” deyish.

Agar ro’yxat alifbo tartibida bo’lsa, tezroq usul bor — ikkiga bo’lib qidirish. Lug’atdan so’z qidirganda shunday qilamiz: o’rtasini ochamiz, kerakli so’z oldinda yoki keyinda ekanini bilamiz va yarmini tashlab yuboramiz. Har qadamda qidiruv sohasi ikki baravar qisqaradi. Lekin bu usul faqat saralangan ro’yxatda ishlaydi — shuning uchun saralash shunchalik muhim.

Saralash g’oyasi

Saralashning ko’p algoritmlari bor, ularning eng tushunarlilaridan biri — tanlab saralash g’oyasi. Qo’lingizda turli uzunlikdagi qalamlar bor deylik:

  1. Barcha qalamlar ichidan eng qisqasini toping va chapga qo’ying.
  2. Qolganlardan yana eng qisqasini topib, uning yoniga qo’ying.
  3. Qalam qolmaguncha takrorlang.

Ko’rdingizmi, birinchi qadam — bu yuqoridagi “eng katta sonni topish” masalasining teskarisi (eng kichigini topish). Mana naqshni qayta ishlatish: tayyor yechimni yangi masalaning bir bo’lagiga aylantirdik. Haqiqiy dasturlarda tezroq saralash usullari ishlatiladi, lekin g’oyani tushunish uchun shu yetarli.

Algoritmni “qo’lda bajarib” tekshirish

Algoritm yozildi — u to’g’rimi? Eng ishonchli usul — uni kompyuter o’rnida o’zingiz, qog’ozda qadamma-qadam bajarish. Buni jadval bilan kuzatish deyiladi.

Eng katta sonni topish algoritmini 7, 12, 9, 15, 11 ro’yxati bilan tekshiramiz:

Qadamsonson > eng_katta?eng_katta
Boshlanish——7
17yo’q7
212ha12
39yo’q12
415ha15
511yo’q15

Javob: 15. To’g’ri. Endi chegaraviy holatlarni sinab ko’ring — xatolar aynan shu yerda yashirinadi:

  • Bitta elementli ro’yxat (masalan, faqat 5) — javob 5 bo’lishi kerak.
  • Hamma son bir xil (4, 4, 4) — javob 4.
  • Faqat manfiy sonlar (−3, −8, −1) — javob −1. Boshlang’ich qiymatni 0 qilganimizda shu yerda xato chiqardi.
  • Bo’sh ro’yxat — algoritm nima qiladi? Bu holatni alohida ko’rib chiqish kerak: “ro’yxat bo’sh” degan xabar berish.

Dasturdagi xato inglizcha “bug” deb ataladi, uni topish va tuzatish esa debugging. Qo’lda bajarish — eng birinchi va eng arzon debugging usuli: kompyutersiz ham, dastur yozishdan oldin ham qilsa bo’ladi.

Keng tarqalgan xatolar

  • Noaniq qadam. “Yetarlicha kut”, “biroz qo’sh”. Kompyuter buni tushunmaydi. Har bir qadamni o’lchanadigan qilib yozing.
  • Tartib xatosi. Ishlatishdan oldin qiymatni berish esdan chiqadi: eng_katta hali belgilanmagan, lekin u bilan solishtirish boshlangan.
  • Cheksiz sikl. Sikl ichida shartni o’zgartiradigan amal yo’q. Har bir shartli siklda “nima uni to’xtatadi?” deb so’rang.
  • Bittaga adashish. Sikl bir marta ko’p yoki kam aylanadi: masalan, ro’yxatning oxirgi elementi tekshirilmay qoladi. Jadval bilan kuzatish buni tez ko’rsatadi.
  • Chegaraviy holatlarni unutish. Bo’sh ro’yxat, bitta element, manfiy son, bir xil qiymatlar.
  • Darhol kodga shoshilish. Fikr aniq bo’lmasa, kod ham chalkash bo’ladi. Avval psevdokod yoki blok-sxema, keyin kod.
  • Hammasini bitta katta qadamda hal qilishga urinish. Dekompozitsiyani unutmang: qiyin bo’lsa, demak qadam hali juda katta.

Amaliy mashqlar va tekshiruv ro’yxati

Har bir mashqni avval psevdokodda yozing, keyin kamida bitta mashq uchun blok-sxema chizing va jadval bilan qo’lda tekshiring.

  1. Choy damlash. Choy damlashni kamida 8 qadamli algoritm qilib yozing. Kamida bitta shart (“agar choynakda suv bo’lmasa”) va bitta shartli sikl (“qaynaguncha kut”) bo’lsin.
  2. Ertalabki tartib. O’z ertalabki tartibingizni yozing va ob-havo hamda hafta kuniga bog’liq ikkita shart qo’shing.
  3. Eng kichik son. “Eng katta son” algoritmini eng kichik sonni topadigan qilib o’zgartiring. Uni 6, 2, 9, 2, 5 ro’yxati bilan qo’lda tekshiring.
  4. Sanash. Sinf ballari ro’yxatida (shartli: 7, 12, 9, 15, 11, 10) nechta o’quvchi 10 va undan yuqori ball olganini sanaydigan algoritm yozing. Sanagich o’zgaruvchisi 0 dan boshlansin.
  5. Qidiruv. Ism ro’yxatida “Aziz” bor-yo’qligini aniqlaydigan ketma-ket qidiruv algoritmini yozing. Ism topilmagan holatni ham hisobga oling.
  6. Do’stingizga sinov. Qog’oz samolyot yasash ko’rsatmasini yozing va uni do’stingizga bering. U faqat yozilganini bajarsin. Qayerda adashdi — o’sha qadam noaniq yozilgan.

Mashqlarni Scratch (scratch.mit.edu) kabi bepul vizual muhitda bloklardan yig’ib ko’rishingiz ham mumkin: u yerda “if”, “repeat”, “repeat until” bloklari aynan siz qog’ozda yozgan shart va sikllarga mos keladi.

Tekshiruv ro’yxati

  • Vazifa kichik, tushunarli bo’laklarga ajratilgan.
  • Har bir qadam aniq va bir xil tushuniladi.
  • Qadamlar to’g’ri tartibda, qiymatlar ishlatilishidan oldin berilgan.
  • Har bir shartda “ha” va “yo’q” holatlari ko’rib chiqilgan.
  • Har bir sikl albatta tugaydi.
  • Algoritm jadval bilan qo’lda tekshirilgan.
  • Chegaraviy holatlar sinalgan: bo’sh ro’yxat, bitta element, bir xil qiymatlar.

Algoritmik fikrlash faqat dasturchilar uchun emas: u ishni rejalashtirish, ko’rsatma yozish va muammolarni tartib bilan hal qilishda ham yordam beradi. Har kuni bitta oddiy ishni qadamlarga ajratib yozing — bir necha haftada bu odatga aylanadi va dasturlash tilini o’rganish ancha osonlashadi.

Agar dasturlashni o’qituvchi bilan tizimli o’rganmoqchi bo’lsangiz, assotsiatsiyamizning bepul dasturlash dasturi va boshqa o’quv dasturlari bilan tanishing. Tayyor bo’lsangiz, ariza qoldiring — mutaxassislarimiz siz bilan bog’lanadi.

Maqolalarga qaytish

Boshqa maqolalar

11 daqiqa o'qish

Oddiy biznes-reja tuzish: amaliy qo'llanma

Biznes-reja kim uchun kerak, bir sahifalik reja, to'liq rejaning bo'limlari, moliyaviy qismni tushunish, novvoyxona misoli, xatolar va checklist.

Bugun o'qishni boshlang

Guruhlarga qabul ochiq. Ariza qoldiring — mutaxassislarimiz siz bilan bog'lanib, mos yo'nalishni tanlashga yordam beradi.

Telegram orqali yozish