Algoritmlash va dasturlashning asosiy tushunchalari
Reja:
Algoritmlashning asosiy tushunchalari
Algoritm turlari
Dasturlash asoslari
Algoritm so`zi algoritmi so`zidan olingan bo`lib, u IX- asrning buyuk matematigi bobokolonimiz Muhammad al-Xorazmiy nomining lotincha shaklidir. Informatika sohasida algoritm tushunchasi asosiy tushuncha bo`lib, u geometriya kursidagi nuqta, to`g`ri chiziq va tekislik, matematikadagi to`plam, kimyodagi modda, fizikadagi fazo hamda vaqt tushunchalari kabi fundamental tushuncha hisoblanadi. Algoritmga aniq bir ta`rif berish mushkul. Shunday bo`lsada, algoritmning mohiyatini aniq tushuntirish mumkin. Algoritm – biror masalani yechish uchun bajarilishi zarur bo`lgan buyruqlarning tartiblangan ketma-ketligi. Tuzilgan algoritmni uning yozilish qoidalarini tushunadigan va unda ko`rsatilgan buyruqlarni bajarish imkoniga ega bo`lgan insonning o`zi yoki texnik qurilma (masalan, kompyuter) bajarishi mumkin.
Odamlar har kuni bajaradigan ishlarida o`zlari bilmagan holda shu ishlarni bajarish algoritmlardan foydalanadilar. Masalan, kompyuterdan foydalanish, non yopish, tamom tayyorlash, telefon avtomatidan foydalanish, avtomobilni boshqarish, kitob o`qish, ko`cha harakati qoidalariga rioya qilish, televizor yoki radiodan foydalanish va hokazo. Albatta, odamlar yuqorida keltirilgan yumushlarni har doim bajarib yurganligi bois, ularni bajarish uchun hech qanday aniq ko`rsatmalarga muhtojlik sezmaydilar. Lekin yuqoridagi yumushlarni birinchi marotaba bajarayotgan odam aniq ko`rsatmalarsiz uni bajara olmaydi. Masalan, hech qachon kompyuterdan foydalanib ko`rmagan odam aniq bir ko`rsatmasiz bu ishni bajaraolmaydi. Demak, odamlar o`zlariga tanish bo`lgan ishlarni yoki masalalarni bajarish zarur bo`ldigan ko`rsatmalarni qachonlardir, qayerlardandir olganlar yoki o`rganganlar. Algoritmni bajarishda ko`rsatmalarni berilgan tartibda bajarish kerak bo`ladi.
Algorithm va uning xossalari
Elektron hisoblash mashinalarining vujudga kelishiga qadar algorithmga har xil TA'rif berib kelindi. Lekin ularning barchasi mA'no jihatdan bir-biriga juda yaqin Bo'lib, bu TA'rif hozirgi kunda quyidagicha talqin qilinadi.
TA'rif. Algorithm deb, q'yilgan masalani echish uchun mA'lum qoidaga binoan bajariladigan amallarning chekli qadamlar ketma-ketligiga aytiladi.
Har qanday algorithm mA'lum Ko'rsatmalarga binoan bajariladi va bu Ko'rsatmalarga buyruq deyiladi.
Algorithm quyidagi muhim xossalarga ega:
Aniqlik va tushunarlilik - deganda algorithmda ijrochiga berilayotgan Ko'rsatmalar aniq mazmunda Bo'lishi tushuniladi.
Ommaviylik - deganda har bir algoritm mazmuniga Ko'ra bir turdagi masalalarning barchasi uchun ham o'rinli Bo'lishi tushuniladi.
Natijaviylik - deganda algorithmda chekli qadamlardan so'ng albatta natija Bo'lishi tushuniladi.
Diskretlik - deganda algorithmlarni chekli qadamlardan tashkil qilib Bo'laklash imkoniyati tushuniladi.
Algorithm turlari
Algorithmning uchta turi bor: chiziqli, tarmoqlanuvchi va takrorlanuvchi.
CHiziqli algorithm - deb hech qanday shartsiz faqat ketma-ket bajariladigan jarayonlarga aytiladi.
Tarmoqlanuvchi algorithm - deb mA'lum shartlarga muvofiq bajariladigan Ko'rsatmalardan tuzilgan algorithmga aytiladi.
Takrorlanuvchi algorithm - deb biron bir shart tekshirilishi yoki biron parametrning har xil qiymatlari asosida algorithmda takrorlanish yuz beradigan jarayonlarga aytiladi.
Algorithmlarni turli usullarda tasvirlash mumkin. Masalan: so'z bilan ifodalash; formulalarda berish; blok-sxemalarda tasvirlash; dastur shaklida ifodalash va boshqalar.
Algorithmlarni blok-sxema Ko'rinishda tasvirlash qulay va tushunarli Bo'lgani uchun Ko'p ishlatiladi. Bunda algorithmdagi har bir Ko'rsatma o'z shakliga ega. Masalan: parallelogramm Ko'rinishdagi belgi mA'lumotlarni kiritish va chiqarish; to'g'ri to'rtburchak belgisi hisoblash jarayonini; romb belgisi shartlarning tekshirilishini bildiradi.
Hayotimizda algoritmlarni turli sohalarda BA zan BA zan bilgan holda holda esa bilmagan ishlatamiz. Algorithmlar faqat matematik xarakterga ega Bo'lmasdan ularni oddiy hayotiy turmushimizda ham Ko'p Qo'laymiz. Masalan, ovqat tayyorlash, choy damlash, berilgan biror ishni bajarish va boshqa. Bu ishlarni bajarishda mA'lum Bo'lgan aniq Ko'rsatmalarni ketma ket bajaramiz. Agar bu Ko'rsatmalar aniq bir ketma ketlik tartibida bajarilmasa kerakli natijani olaolmaymiz. Misol tariqasida matematik xarakterga ega Bo'lmagan butelbrod tayyorlash algoritmini Ko'reb chiqaylik. Bunda boshlang'ich berilganlar: non, kolbasa va pishloq. Natija: butelbrod. Butelbrod tayyorlash algorithmi:
1. non Bo'lagini kesib olish;
2. kolbasa va pishloq Bo'lagini kesib olish;
3. kolbasa va pishloq lagini non Bo Bo lagi orasiga qo'yish.
Agar bu jarayonning ketma ketlik o'rinlari almashsa yoki biror bir bosqich amalga oshirilmasa natija Bo'lmaydi.
Algorithmik tillar
Masalani echish algorithmi ishlab chiqilgandan so'ng dastur tuziladi. Dastur-bu berilgan algorithmga asoslangan biror bir algorithmik tilda yozilgan Ko'rsatmalar, ya'ni buyruqlar yoki operatorlar to'plamidir. Dasturlash-esa bu dastur tuzish jarayoni Bo'lib, u quyidagi bosqichlardan iboratdir:
1.dasturga Bo'lgan talablar;
2.qo'yilgan masala algoritmini tanlash yoki ishlab chiqish;
3.dastur kodlarini (matnlari, buyruqlarni) yozish;
4.dasturni to'g'rilash va test o'tkazish.
Hozirgi kunda juda Ko'plab algorithmik tillar mavjud. Ularga dasturlash tillari deb ataymiz. Algorithmik til - algoritmlarni bir xil va aniq yozish uchun ishlatiladigan belgilashlar va qoidalar tizimidir. Algorithmik til oddiy tilga yaqin Bo'lib u matematik belgilarni o'z ichiga oladi. Tuzilgan algorithmni to'g'ridan-to'g'ri mashinaga berib Bo'lmaydi, shu sababli yozilgan algorithmni biror bir algorithmik tilga o'tkazish zarur. Har qanday algorithmik til o'z Qo'llanilish sohasiga ega. Masalan, muxandislik hisob ishlarini bajarishda Pascal, Beysik va Fortran. Iqtisod masalalarini echishda Pascal va Kobol. Mantiqiy dasturlash uchun Prolog va boshqalar. O'quv jarayonlari uchun Beysik, Pascal va boshqalar.
Paskal, Fortran, va Kobol tillari universal tillardan hisoblanadi. Assembler tili mashina tiliga ancha yaqin til Bo'lib o'rta darajadagi tildir. Algorithmik til inson tillariga qancha yaqin Bo'lsa, u tilga yuqori darajali til deyiladi. Mashina tili esa eng pastki darajali tildir.
Masalalarni echish bosqichlari
Kompyuterda masalani echish bosqichlari quyidagilar:
1.Masalani q'yish va uning matematik modelini ishlab chiqish. Ushbu bosqichda boshlang'ich malumotlar tarkibi aniqlanadi. Masalani q'yish odatda echiladigan masalaning asosiy xususiyatlarini og'zaki tavsiflash bilan tugallanadi va so'ngra, masala matematik modeli yoziladi.
2.Echish usulini tanlash. Masala matematik ifodalanib Bo'lgandan so'ng uni echish usuli tanlanadi. Bunda izlanayotgan natijalarning boshlang'ich mA'lumotlarga bog'liqligini aniqlaydi. Hozirgi zamon hisoblash matematikasi fan va texnikaga oid turli masalalarni echish uchun Ko'plab sonli usullarga ega.
3.Masalani echish algorithmini ishlab chiqish. Bu bosqichda kompyuterda masalani echish uchun bajariladigan amallar (buyruqlar) ketma-ketligi tavsiflanadi. Biz buni algorithmlash deb ataymiz.
4.Dasturlash. Bunda algoritm biror algoritmik tilga Ko chiriladi.
5.Dasturni kiritish va xatolarini tuzatish.
6.Masalani bevosita kompyuterda echish va natijalarni tahlil qilish. Bunda dasturda kerakli boshlang'ich qiymatlar berilib kompyuterda natija olinadi va tahlil qilinadi. Bu bosqichda agar kerak Bo'lsa algorithm va dastur modernizatsiya qilinishi ham mumkin. YAngi olingan mA'lumotlar asosida kerakli xulosalar ishlab chiqiladi. Bu mA'lumotlar q'yilgan masalani turlicha tahlil qilishga, murakkab jarayonlarni tushunishga, olamshumul yangiliklarning ochilishiga, yangi nazariyalarning, texnika mo‘jizalarining yaratilishiga xizmat qiladi. Umuman olganda "Model-algorithm-dastur" uchligi modellashtirishning intelektual MAG'zini tashkil etadi, bunday uchliksiz kompyuterda murakkab masalalarni echishda muvaffaqiyatga erishib Bo'lmaydi.
Dasturlash asoslari
Foydalanuvchi kompyuter bilan muloqat qilish uchun kompyuter “tili” ni bilishi ham talab qilinadi. Kompyuter tushunadiga “til” dasturlash tili deb ataladi. Biror masalani kompyuterda yechish uchun, avvalo, uning algoritmi tuzilishi va bu algoritmni kompyuter tushunadigan ko`rsatmalar va qonun-qoidalar asosida yozilisi kerak bo`ladi. Bu yozuv dastur bajarishi mumkin bo`lgan ko`rsatmalarning izchil tartibidan iborat ekan. Kompyuter uchun dastur tuzish jarayoni dasturlash va dasturnituzadigan kishi dasturchi deb ataladi.
Hozirgi kunda hisoblash, muhandis-texnik, iqtisodiy, matnli va sonli axborotlarni taxlil qilish va boshqa masalalarni yechish uchun yuqori darajadagi dasturlash tillari mavjud. Bular jumlasiga Beysik, Fortrant, Paskal, Kobol va boshqa tillarni kiritish mumkin.
Beysik dasturlash tili 1964 yili AQSHning Dortmunt kollejji ilmiy xodimlari Jon Kemeni va Tmes Kurtsi tomonidan turli hisoblashlarga doirmasalalarni kompyuter bilan muloqat holda hal qilishi uchun yaratiladi. “Basic” so`zi Beginners Allpyrpose Sumbolic Instruction Code dan olingan bo`lib, o`zbek tilida “boshlovchilar uchun mo`ljallangan ko`p maqsadli, belgili ko`rsatmalar tili” degan ma`noni bildiradi. Beysik dasturlash tili soddaligi va kompyuter xotirasiga quyiladigan talablarning juda kamligi sababli bu dasturlash tili boshqa dasturlash tillari qatori butun dunyoda shaxsiy kompyuterlar uchun keng foydalanadigan til bo`lib qoldi.
Fortran tili 1954 yilda ishlab chiqilgan. Fortran so`zi inglizcha Formula translator so`zidan olingan bo`lib, formula tarjimonchisi degan ma`noni bildiradi. Fortran tili muhandislik va ilmiy texnik masalalarni yechishga mo`ljallangan dasturlash tili hisoblanadi.
Paskal dasturlash tili Shveysariyalik professor Virt Niklaus tomonidan 1971 yilda yaratilgan bo`lib, 1981 yilda Paskal tilining xalqaro standarti qabul qilingan. Paskal tili jamlovchi mashinani yaratgan fransuz fizigi Blez Paskal xotirasiga quyilgan. Paskal tilidan ilmiy texnik, muhandislik masaalarni yechishda keng ko`lamda foydalaniladi.
Kobol tili 1959 yilda yaratilgan bo`lib, iqtisodiy xarakterga ega bo`lgan masalalarni yechishga mo`ljallangan.
Hozirgi paytda zamonaviy dasturlash tillaridan biri hisoblangan Delphi dasturlash tilidan keng foydalaniladi. Delphi dasturlash tili - bu Windows OT muhitida ishlashga mo‘ljallangan bo‘lib, u 1995-yildа Borland kоmpаniyasi dаsturlаri guruhi Chаk (Chuck) vа Dеnni (Danny) tоmоnidаn yaratilgan. Mazkur dastur o‘zining ba’zi bir xususiyatlari bilan boshqa dasturlash tillaridan ajralib turadi. Shu sababdan bugungi kunda Delphi dasturlash tili akademik litsey, kasb-hunar kollejlari hamda oliy o‘quv yurti fan dasturlariga kiritlgan.
C++ dasturlash tili C tiliga asoslangan. C esa o'z navbatida B va BCPL tillaridan kelib chiqqan. BCPL 1967 yilda Martin Richards tomonidan tuzilgan va operatsion sistemalarni yozish uchun mo'ljallangan edi. Ken Thompson o'zining B tilida BCPL ning ko'p hossalarini kiritgan va B da UNIX operatsion sistemasining birinchi versiyalarini yozgan. BCPL ham, B ham tipsiz til bo'lgan. Yani o'garuvchilarning ma'lum bir tipi bo'lmagan - har bir o'zgaruvchi kompyuter hotirasida faqat bir bayt yer egallagan. O'zgaruvchini qanday sifatda ishlatish esa, yani butun sonmi, kasrli sonmi yoki harfdekmi, dasturchi vazifasi bo'lgan.
C tilini Dennis Ritchie B dan keltirib chiqardi va uni 1972 yili ilk bor Bell Laboratoriyasida, DEC PDP-11 kompyuterida qo'lladi. C o'zidan oldingi B va BCPL tillarining juda ko'p muhim tomonlarini o'z ichiga olish bilan bir qatorda o'zgaruvchilarni tiplashtirdi va bir qator boshqa yangiliklarni kiritdi. Boshlanishda C asosan UNIX sistemalarida keng tarqaldi. Hozirda operatsion sistemalarning asosiy qismi C/C++ da yozilmoqda. C mashina arhitekturasiga bog'langan tildir. Lekin yahshi rejalashtirish orqali dasturlarni turli kompyuter platformalarida ishlaydigan qilsa bo'ladi.
1983-yilda, C tili keng tarqalganligi sababli, uni standartlash harakati boshlandi. Buning uchun Amerika Milliy Standartlar Komiteti (ANSI) qoshida X3J11 tehnik komitet tuzildi. 1989 yilda ushbu standart qabul qilindi. Standartni dunyo bo'yicha keng tarqatish maqsadida 1990 yilda ANSI va Dunyo Standartlar Tashkiloti (ISO) hamkorlikda C ning ANSI/ISO 9899:1990 standartini qabul qilishdi. Shu sababli C da yozilgan dasturlar kam miqdordagi o'zgarishlar yoki umuman o'zgarishlarsiz juda ko'p kompyuter platformalarida ishlaydi.
C++ 1980 yillar boshida Bjarne Stroustrup tomonidan C ga asoslangan tarzda tuzildi. C++ juda ko'p qo'shimchalarni o'z ichiga olgan, lekin eng asosiysi u ob'ektlar bilan dasturlashga imkon beradi.
Dasturlarni tez va sifatli yozish hozirgi kunda katta ahamiyat kasb etmoda. Buni ta'minlash uchun ob'ektli dasturlash g'oyasi ilgari surildi. Huddi 70-chi yillar boshida strukturali dasturlash kabi, programmalarni hayotdagi jismlarni modellashtiruvchi ob'ektlat orqali tuzish dasturlash sohasida inqilob qildi.
C++ dan tashqari boshqa ko'p ob'ektli dasturlshga yo'naltirilgan tillar paydo bo'ldi. Shulardan eng ko'zga tashlanadigani Xerox ning Palo Altoda joylashgan ilmiy-qidiruv markazida (PARC) tuzilgan Smalltalk dasturlash tilidir. Smalltalk da hamma narsa ob'ektlarga asoslangan. C++ esa gibrid tildir. Unda C ga o'hshab strukturali dasturlash yoki yangicha, ob'ektlar bilan dasturlash mumkin. Yangicha deyishimiz ham nisbiydir. Ob'ektli dasturlash falsafasi paydo bo'lganiga ham yigirma yildan oshayapti.
C++ funksiya va ob'ektlarning juda boy kutubhonasiga ega. Yani C++ da dasturlashni o'rganish ikki qismga bo'linadi. Birinchisi bu C++ ni o'zini o'rganish, ikkinchisi esa C++ ning standart kutubhonasidagi tayyor obyekt funksiyalarni qo'llashni o'rganishdir.