paradigma) asoslangan.
Dasturlashda bir necha tubdan farq qiladigan metodologiyani ajratib ko'rsatish mumkin.
Dastlab, texnologiya tushunchasi o'tgan asrning 60-yillari dasturlash davri desak bo’ladi. Ushbu davrda dastur tuzilishi, ma'lumotlar turlari va boshqalar haqida tushuncha yo'q edi. Natijada, kod chalkash va qarama-qarshi bo’lgan. O'sha yillarda dasturlash san'at deb hisoblangan. 60-yillarning oxiri dasturlashdagi inqiroz boshlandi.
Ushbu inqirozdan chiqish yo'li dasturlash uslublari va paradigmasiga o'tishdir. Dasturlashga tarkibiy yondashuv - bu dasturiy ta'minotni ishlab chiqishning barcha bosqichlarini amalga oshirishni o'z ichiga olgan tavsiya etilgan texnologik usullar to'plamidir. Strukturaviy yondashuv keyinchalik alohida kichik kichik dasturlar shaklida amalga oshirish maqsadida murakkab tizimlarning parchalanishiga (qismlarga bo'linishiga) asoslangan. Parchalanishning boshqa printsiplari (ob'ekt, mantiqiy va boshqalar) paydo bo'lishi bilan bu usul protsessual dekompozitsiya deb nomlandi.
Strukturali dasturlashning yana bir asosiy printsipi - dasturlarni yozishda faqat asosiy algoritmik tuzilmalardan foydalanish GOTO operatoridan foydalanishni taqiqlash.
Strukturaviy yondashuv eng sodda tuzilmaning pastki satrlari ierarxiyasi sifatida vazifani ko'rsatishni talab qildi. Dizayn "yuqoridan pastga" amalga oshirildi va quyi dasturlarning interfeyslarini ishlab chiqishni ta'minlaydigan umumiy g'oyani amalga oshirishni anglatadi. Shu bilan birga, algoritmlarni loyihalashda cheklovlar joriy etildi, ularni tavsiflashning rasmiy modellari tavsiya qilindi, shuningdek algoritmlarni loyihalashning maxsus usuli - bosqichma-bosqich detallashtirish usuli.
Tarkibiy dasturlash tamoyillarini qo'llab-quvvatlash protsessual dasturlash tillari asosiga qo'yildi. Odatda, ular asosiy "tuzilgan" boshqarish uzatish bayonnomalarini, to’plamlar qo'llab-quvvatlashni, mahalliylashtirishni va ma'lumotlarni ko'rib chiqishni o'z ichiga oladi. Ushbu guruhning eng mashhur tillari orasida PL / 1, ALGOL-68, Paskal, S.
Ishlab chiqilayotgan dasturiy ta'minotning murakkabligi va hajmining yanada o'sishi ma'lumotlarning tuzilishini rivojlantirishni talab qildi. Natijada, tillar odatdagi ma'lumotlar turlarini aniqlashlari mumkin bo'ladi. Shu bilan birga, global ma'lumotlar bilan ishlashda yuzaga keladigan xatolar sonini kamaytirish uchun dasturning global ma'lumotlariga kirishni cheklash istagi kuchaydi. Natijada modulli dasturlash texnologiyasi paydo bo'ldi va rivojlana boshladi.
Modulli dasturlash bir xil global ma'lumotlardan foydalanadigan alohida dasturlashtirilgan modullarga (subroutine kutubxonalariga), masalan, grafik manbalar modullariga bo'linadigan kichik dasturlar guruhlarini ajratishni anglatadi. Ushbu texnologiyadan foydalanganda modullar orasidagi ulanishlar maxsus interfeys orqali amalga oshiriladi, modulni amalga oshirishga kirish taqiqlanadi (kichik dasturlar va ba'zi "ichki" o'zgaruvchilar). Ushbu texnologiya Paskal va C (C ++), Ada va Modula tillarining zamonaviy versiyalari bilan qo'llab-quvvatlanadi.
Ob'ektga yo'naltirilgan dasturlash (OYD) -deganda dasturni ob'ektlar to'plami sifatida taqdim etishga asoslangan murakkab dasturlarni yaratish texnologiyasi tushuniladi, ularning har biri ma'lum bir tip (sinf) ning namunasidir, sinflar esa meros xususiyati bilan ierarxiyani tashkil etadi. Bunday tizimda dasturiy ta'minot ob'ektlarining o'zaro ta'siri xabarlarni yuborish orqali amalga oshiriladi.
Ob'ektga yo'naltirilgan dasturlashning modulli dasturlashdan ustunligi bu "tabiiyroq" dasturiy ta'minotni parchalanishidir, bu uning rivojlanishini sezilarli darajada osonlashtiradi. Bu ma'lumotlarning yanada to'liq lokalizatsiyasiga va ularni qayta ishlash usullari bilan integratsiyasiga olib keladi, bu dasturning alohida qismlarini (ob'ektlarini) deyarli mustaqil ravishda ishlab chiqishga imkon beradi. Bundan tashqari, ob'ektga yondaltirish meros, polimorfizm, kompozitsion, to'ldirish mexanizmlariga asoslangan dasturlarni tashkil qilishning yangi usullarini taklif qiladi. Ushbu mexanizmlar nisbatan oddiy narsalardan murakkab ob'ektlarni qurishga imkon beradi. Natijada kodni qayta ishlatish va turli maqsadlarda foydalanish uchun sinf kutubxonalarini yaratish qobiliyati sezilarli darajada oshadi.
Ob'ekt yondashuviga asoslangan dasturiy texnologiyalarning jadal rivojlanishi ko'plab muammolarni hal qildi. Shunday qilib, vizual dasturlashni qo'llab-quvvatlaydigan muhitlar yaratildi, masalan, Delphi, C ++ Builder, Visual C ++ va boshqalar. Vizual muhitdan foydalanganda, dasturchi maxsus qismlarni qo'shish va sozlash uchun vizual vositalardan foydalangan holda, mahsulotning interfeyslarini loyihalash imkoniyatiga ega bo’ladi.
Siz umumiy ta'rif berishingiz mumkin: OYD ob'ekti – bu toplam o'zgaruvchilari va tegishli usullar (operatsiyalar) to'plami. Ushbu usullar ob'ektning atrofdagi dunyo bilan o'zaro munosabatini aniqlaydi.
Ob'ekt usullari deganda deklaratsiya ob'ekt tavsifiga kiritilgan va harakatlarni bajaradigan protseduralar va funktsiyalar tushuniladi. Natijada ob'ektlarning holatini boshqarish usullarini chaqirish orqali boshqarish qobiliyati ob'ektning xatti-harakatlarini aniqlaydi. Ushbu usullar to'plami ko'pincha ob'ekt interfeysi deb nomlanadi.
Enkapsulasyon - bu ma'lumot va uni boshqaradigan usullarni birlashtiradigan va ikkalasini tashqi buzilish yoki noto'g'ri ishlatishdan himoya qiladigan mexanizm. Usullar va ma'lumotlar shu tarzda birlashtirilganda ob'ekt yaratiladi.
Inkapsulatsiya yordamida ob'ektga tegishli ma'lumotlarni ushbu ma'lumotlarga to'g'ridan-to'g'ri kirishda yuzaga kelishi mumkin bo'lgan xatolardan himoya qilamiz. Bundan tashqari, ushbu printsipning qo'llanilishi dastur kodidagi xatolarni lokalizatsiya qilishga yordam beradi. Va bu xatolarni topish va tuzatish jarayonini sezilarli darajada osonlashtiradi. Aytishimiz mumkinki, kapsulasyon, bu ma'lumotlarni himoya qilishga imkon beradigan ma'lumotlarni yashirishni anglatadi. Biroq, kapsulasyondan foydalanish ob'ekt elementlariga kirish samaradorligini pasayishiga olib keladi. Bu ob'ektning ichki elementlarini (parametrlarini) o'zgartirish uchun usullarni chaqirish zarurati bilan bog'liq. Ammo kompyuter texnologiyalarining hozirgi rivojlanish darajasida samaradorlikdagi bu yo'qotishlar muhim rol o'ynamaydi.
Meros - bu bir ob'ekt boshqa ob'ektdan xususiyatlarni meros qilib olishi va o'ziga xos xususiyatlarni qo'shishi mumkin bo'lgan jarayon. Natijada ma'lumotlar turlari va "ajdodlar" usullari avtomatik ravishda ma'lumotlar maydonlari va "avlodlar" usullari bo'lgan ierarxiya yaratiladi.
Merosning ma'nosi va universalligi shundaki, har safar yangi ob'ektni ("noldan boshlab") tavsiflash kerak emas, lekin siz "ota-onani" (asosiy sinf) belgilashingiz va yangi sinfning o'ziga xos xususiyatlarini tavsiflashingiz mumkin. Natijada, yangi ob'ekt ota-ona sinfining barcha xususiyatlariga va o'ziga xos xususiyatlariga ega bo'ladi.
Polimorfizm - bir xil texnikadan bir nechta texnik muammolarni hal qilishda foydalanishga imkon beradigan xususiyat. Polimorfizm bir xil nomga ega bo'lgan usul turli xil ob'ektlarga nisbatan qo'llanilishi uchun tiplarning ierarxiyasida usullarni aniqlashni anglatadi. Umumiy ma'noda polimorfizm tushunchasi "bitta interfeys, ko'plab usullar" g'oyasidir. Polimorfizmning afzalligi shundaki, u bitta harakatlar sinfi uchun bitta interfeysga ruxsat berish orqali dasturlarning murakkabligini kamaytirishga yordam beradi. Vaziyatga qarab ma'lum bir harakatni tanlash kompilyatorga qoldiriladi.
Zamonaviy dasturlash texnologiyasi tarkibiy yondashuv bo'lib, dasturiy ta'minotni alohida tarkibiy qismlardan - bir-biri bilan standartlashtirilgan ikkilik interfeyslar orqali o'zaro ishlaydigan dasturiy qismlarni tashkil qilishni o'z ichiga oladi. Oddiy ob'ektlardan farqli o'laroq, komponentli ob'ektlar dinamik deb nomlangan kutubxonalarga yoki ikkilik shaklida tarqatiladigan bajariladigan fayllarga to'planishi mumkin (manbasiz)
Komponent ob'ekti modeli (COM) va Common Object Request Broker Architecture (CORBA) tomonidan taqsimlangan dasturlar tarkibiy yondashuvga asoslangan. Ushbu texnologiyalar o'xshash printsiplardan foydalanadi va faqat ularni amalga oshirish xususiyatlarida farqlanadi.
Microsoft-ning COM texnologiyasi murakkab hujjatlar yaratish uchun Windows-ning oldingi versiyalarida ishlatilgan Object Linking and Embedding (OLE) texnologiyasining evolyutsiyasidir. COM texnologiyasi har qanday turdagi dasturlarning o'zaro ta'siri uchun umumiy paradigmani belgilaydi: kutubxonalar, ilovalar, operatsion tizim, ya'ni dasturiy ta'minotning bir qismiga boshqa qismlar tomonidan taqdim etilgan funktsiyalardan (xizmatlardan) foydalanishga imkon beradi, ushbu qismlar bir xil jarayon davomida ishlayaptimi yoki yo'qmi farq qiladi. bir xil kompyuterda yoki turli xil kompyuterlarda jarayonlar. Qo'ng'iroqlar kompyuterlar o'rtasida uzatilishini ta'minlaydigan COM modifikatsiyasi DCOM (Distributed COM) deb nomlanadi.
Bular dasturiy texnologiyalarni o'zgartirishning asosiy bosqichlari. Hozirgi kunda dasturiy ta'minot turli xil qurilmalarda va inson faoliyatining turli sohalarida qo'llanilayotganligi sababli dasturiy texnologiyalarning yanada yaxshilanishini taxmin qilish mumkin.
Oxir-oqibat, har qanday dasturning qurilish materiali bo'lgan "g'isht" nimani anglatishini batafsilroq ko'rib chiqamiz - Paskal tilidan misol - protseduralar va funktsiyalar yordamida kichik dasturlar va ularni amalga oshirish variantlari.
Yangi muammolarni hal qilishda siz ilgari yozilgan dasturlardan foydalanishga harakat qilishingiz mumkin. Ilgari ishlab chiqilgan va butunlay boshqa algoritmlarning bir qismi sifatida ishlatiladigan algoritm yordamchi deyiladi. Yordamchi algoritmlardan foydalanish vazifani qismlarga ajratish va uning tarkibini tuzish imkonini beradi.
Butun dasturni shartli ravishda ikki qismga bo'lish mumkin: asosiy va yordamchi. Asosiy qismida eng oddiy ma'lumotlarni qayta ishlash amalga oshiriladi, turli xil kichik dasturlarga murojaat qilish tashkil etiladi. Yordamchi algoritm boshqa yordamchi telefonlarga ham qo'ng'iroq qilishi mumkin, bunday qo'ng'iroqlar zanjirining davomiyligi nazariy jihatdan cheksizdir. Yordamchi va asosiy algoritmlar o'zlarida emas, balki bir-biriga nisbatan.
Yordamchi algoritmlardan foydalanishda ular uchun dastlabki ma'lumotlarning qiymatlarini uzatish va ulardan natijani olish usulini hisobga olish kerak. Yordamchi algoritmning argumentlari o'zgaruvchilar bo'lib, ularga mos keladigan pastki bandni echish uchun dastlabki ma'lumotlar joylashtirilishi kerak. Yordamchi algoritmning natijalari, shuningdek, ushbu pastki qismlarni echish natijalarini o'z ichiga olgan o'zgaruvchilar bo'lib, natijada kompyuter subroutin harakati ostida bajaradigan ma'lum bir harakat bo'lishi mumkin.
Kichik dasturlar bilan ishlashda rasmiy va haqiqiy parametrlar haqida tushunchalar muhimdir. Rasmiy parametrlar bu quyi dastur uchun kirish ma'lumotlarining identifikatorlari. Agar rasmiy parametrlar ma'lum qiymatlarni oladigan bo'lsa, ular haqiqiy deb nomlanadi. Rasmiy parametrlar faqat ushbu kichik dastur moduliga qo'ng'iroq qilingan dasturda aniq qiymatlarni qabul qilishi mumkin. Yozishning turi va tartibi, shuningdek haqiqiy parametrlarning semantik (semantik) tarkibi rasmiy parametrlar bilan bir xil bo'lishi kerak. Aks holda, dasturning natijasi oldindan aytib bo'lmaydi. Bundan kelib chiqadiki, asosiy parametrlardan asosiy parametrdan kirishda haqiqiy parametrlardan foydalaniladi va rasmiy parametrlar faqat pastki dasturning o'zida ishlatiladi.
Turli xil kirish ma'lumotlari bilan takrorlanadigan xatti-harakatlarni qayd etish uchun parametrlarga ega kichik dastur. Parametrlari bo'lgan subututinlarni ikki turga bo'lish mumkin: subroutinlar-funktsiyalar va parametrlari bo'lgan oddiy dasturlar (ular protseduralar deb nomlanadi).
Parametrlari bo'lgan kichik dasturlarni yozishda quyidagi qoidalarga rioya qilish kerak:
har bir kichik dastur o'z nomiga va rasmiy parametrlarning ro'yxatiga ega;
asosiy dasturning protsedurasi chaqiruv buyrug'i bilan chaqiriladi, u qo'ng'iroqdan ijrochi buyrug'iga qadar farq qilmaydi.
Natijada rasmiy parametrlar ro'yxatidagi bir yoki bir nechta o'zgaruvchiga tayinlanadi. Ammo natija, albatta, nafaqat o'zgaruvchilarning qiymatlari, balki kompyuter tomonidan bajariladigan ba'zi harakatlar ham bo'lishi mumkin.
Misol 1. Ikki natural sonning eng katta umumiy bo'luvchisini topish uchun yordamchi sifatida masalani echishda algoritmdan foydalanamiz: kasrlarni ayirish dasturini tuzing (a, b, c, d natural sonlar). Natijani oddiy qaytarilmaydigan kasr sifatida keltiring.
Dastur kodi:
Program Sub;
Var A, B, C, D, G, E, F : Integer;
Procedure Nod(M, N : Integer; Var K : Integer);
Begin
While M <> N Do
If M > N Then M := M - N Else N := N - M;
K := M
End;
Begin
Write('Введите числители и знаменатели дробей:');
ReadLn(A, B, C, D);
E := A * D - B * C;
F := B * D;
If E = 0 Then WriteLn(E)
Else
Begin
Nod(Abs(E), F, G);
E := E Div G;
F := F Div G;
WriteLn('javob: ', E, '/', F)
End
End.
Misollardan ko'rinib turibdiki, reklama va muntazam tananing tavsiflari bo'limida. Tartibning sarlavhasi ularning turini ko'rsatadigan rasmiy parametrlar ro'yxatini o'z ichiga oladi, bu shartli ravishda kirish va hafta oxiri bo'linishi mumkin (ularning oldida xizmat bor). Jarayonga murojaat qilganda uning nomi va haqiqiy parametrlar ro'yxati ko'rsatiladi. Rasmiy va haqiqiy parametrlar miqdori va turiga muvofiq bo'lishi kerak.
Jarayon chaqiruvi quyidagicha amalga oshiriladi:
<Идентификатор (имя) процедуры>(<список фактических параметров>);
Например,
Nod(Abs(E), F, G);
Turbo Paskalda haqiqiy qiymatlarni subroutinga o'tkazish usuliga ko'ra parametrlar-parametrlar, parametrlar-qiymatlar, parametr-konstantalar ajralib turadi. Kamroq ahamiyatga ega bo'lgan boshqa usullar mavjud.
Funktsiya (protseduradan farqli o'laroq) har doim bitta qiymatni qaytaradi.
Agar misol sifatida subroutine funksiya sifatida yozilgan bo'lsa, u qanday o'zgarishini ko'rsatamiz.
Function Nod(M, N : Integer) : Integer;
Begin
While M <> N Do
If M > N Then M := M - N Else N := N - M;
Nod := M
End;
Shunday qilib, parametrlar ro'yxatidan so'ng, funktsiya qiymatining turi ko'rsatiladi va funktsiya tanasida kamida bir marta nomiga mos keladigan qiymat funktsiyasining nomi bilan mos keladigan o'zgaruvchiga topshiriq beriladi.
Funktsiya chaqiruvi quyidagicha bo'ladi:
G := Nod(Abs(E), F);
Umuman olganda, funktsional qo'ng'iroq tik turgan holda ifodalanishi mumkin: tayinlash operatorining o'ng tomonida, chiqish tartibida, boshqa kichik dasturga qo'ng'iroq qilishda haqiqiy parametr sifatida va boshqalar.
Muammolarni echishda vaziyatni tahlil qilish, echimni katta bloklarga yozish tavsiya etiladi (Paskal operatorlari emas), bloklarning har birini batafsil (blok shaklida yozish mumkin, ehtimol Paskal operatorlari ham emas) va hokazo, shu vaqtgacha davom eting. har bir blok til operatorlari yordamida amalga oshirilmaguncha.
Do'stlaringiz bilan baham: |