Duvp” fanidan yakuniy nazorat ishi bajardi: dif ta’lim yo‘nalishi



Download 70,24 Kb.
Sana20.07.2021
Hajmi70,24 Kb.
#123961
Bog'liq
Yakuniy nazorat


O‘ZBEKISTON RESPUBLIKASI AXBOROT TEXNOLOGIYALARI VA KOMMUNIKATSIYALARINI RIVOJLANTIRISH VAZIRLIGI

MUHAMMAD AL-XORAZMIY NOMIDAGI

TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI
DUVP”

fanidan

YAKUNIY NAZORAT ISHI


Bajardi:_____DIF____ta’lim yo‘nalishi
316-18 -guruh
________Norqobilov Akmal___________

talabaning F.I.Sh.

Variant №3

Savollar

  1. Funksional dasturlash paradigmasi.

  2. Parallel dasturlash paradigmasi.

  3. Rekursiv usulda 10 ! hisoblang.

1. Funktsional dasturlash - bu dasturlash paradigmasi bo'lib, unda biz hamma narsani funktsiyalarning faqat matematik uslubida bog'lashga harakat qilamiz. Bu dasturlash uslubining deklarativ turi. Uning yo'nalishi, "qanday qaror qabul qilish" ga yo'naltirilgan imperativ uslubdan farqli o'laroq, "nimani qaror qilish" ga qaratilgan. Bunda gaplar o‘rniga iboralar ishlatiladi. Ifoda qiymat olish uchun, ifoda o'zgaruvchilarni tayinlash uchun baholanadi. Ushbu xususiyatlar quyida muhokama qilinadigan ba'zi bir o'ziga xos xususiyatlarga ega. Funktsional dasturlash lambda hisobiga asoslanadi:

Lambda hisobi - bu Alonzo cherkovi tomonidan funktsiyalar bilan hisoblashni o'rganish uchun ishlab chiqilgan ramka. Uni dunyodagi eng kichik dasturlash tili deb atash mumkin. Bu hisoblanadigan narsalarning ta'rifini beradi. Lambda hisob-kitobi yordamida hisoblash mumkin bo'lgan hamma narsa hisoblab chiqiladi. Bu Turing mashinasining hisoblash qobiliyatiga tengdir. Bu funktsiyalarni tavsiflash va ularni baholash uchun nazariy asos yaratadi. Bu deyarli barcha zamonaviy funktsional dasturlash tillarining asosini tashkil etadi.

Funktsional dasturlashni qo'llab-quvvatlovchi dasturlash tillari: Haskell, JavaScript, Scala, Erlang, Lisp, ML, Clojure, OCaml, Common Lisp, Racket.



Funktsional dasturlash yordamida bajarilgan dasturlarni disk raskadrovka qilish oson, chunki sof funktsiyalarda nojo'ya ta'sirlar mavjud emas yoki yashirin kirish chiqish imkoniyatlari mavjud. Sof funktsiyalar, shuningdek, bir vaqtning o'zida bir vaqtda dasturlarni yozishni osonlashtiradi. Kod shu uslubda yozilganda, aqlli kompilyator ko'p ishlarni bajara oladi - ko'rsatmalarni parallellashtirishi, natijalar kerak bo'lganda baholanishini kutishi va natijalarni eslab qolishi mumkin, chunki kirish o'zgarguncha natijalar hech qachon o'zgarmaydi.

sof funktsiya misoli:

sum(x, y)

return x + y

sum - bu x va y ni argument sifatida qabul qiladigan funktsiya va ushbu sonlar yig’indisini qaytaradi.

Rekursiya: funktsional tillarda for yoki while sikli mavjud emas. Funktsional tillarda takrorlash rekursiya orqali amalga oshiriladi. Rekursiv funktsiyalar asosiy holatga kelguncha o'zlarini qayta-qayta chaqiradi.

Rekursiv funktsiyaga misol:

fib(n)

if (n <= 1)



return 1;

else


return fib(n - 1) + fib(n - 2);

Yo'naltiruvchi shaffoflik: funktsional dasturlarda o'zgaruvchilar, belgilanganidan so'ng, dastur davomida o'z qiymatlarini o'zgartirmaydi. Funktsional dasturlarda tayinlash operatorlari mavjud emas. Agar biron bir qiymatni saqlash kerak bo'lsa, biz yangi o'zgaruvchilarni aniqlaymiz. Bu nojo'ya ta'sirlarning har qanday potentsialini yo'q qiladi, chunki har qanday o'zgaruvchining bajarilish istalgan nuqtasida uning haqiqiy qiymati bilan almashtirilishi mumkin. Har qanday o'zgaruvchining holati har qanday vaqtda doimiy bo'ladi.

misol:

x = x + 1 // bu x o'zgaruvchisiga berilgan qiymatni o'zgartiradi.



// Shunday qilib, ifoda mos yozuvlar shaffof emas.

Birinchi sinfning funktsiyalari va yuqori darajadagi bo'lishi mumkin: birinchi sinfning funktsiyalari birinchi sinfning o'zgaruvchilari sifatida qaraladi. Birinchi sinf o'zgaruvchilari funktsiyalarga parametr sifatida berilishi, funktsiyalardan qaytarilishi yoki ma'lumotlar tuzilmalarida saqlanishi mumkin. Yuqori darajadagi funktsiyalar - bu boshqa funktsiyalarni argument sifatida qabul qiladigan va shuningdek funktsiyalarni qaytaradigan funktsiyalar.

misol:

show_output(f)



f();

print_gfg()

print("hello gfg");

show_output(print_gfg)

O'zgaruvchilari o'zgarmas: funktsional dasturlashda biz o'zgaruvchini ishga tushirgandan so'ng o'zgartira olmaymiz. Biz yangi o'zgaruvchilarni yaratishimiz mumkin, ammo mavjud o'zgaruvchilarni o'zgartira olmaymiz va bu haqiqatan ham dasturning butun ishlash muddati davomida holatni saqlashga yordam beradi. O'zgaruvchini yaratib, uning qiymatini o'rnatganimizdan so'ng, ushbu o'zgaruvchining qiymati hech qachon o'zgarmasligini to'liq ishonch bilan bilishimiz mumkin.

2.


Kompyuter dasturlash davrining boshlarida paydo bo'lgan umumiy dasturiy paradigmalar, shu jumladan amaliy, nazariy va funktsional dasturlarning paradigmalari eng barqaror hisoblanadi.

Amaliy dasturlash kompyuterlar paydo bo'lishidan ancha oldin o'rganilgan ma'lumotlarning kompyuterlashtirilishini va raqamli ishlov berishning hisoblash jarayonlarini aks ettiruvchi muammoli yo'nalishga bo'ysundirilgan. Aynan shu erda aniq amaliy natija tezda paydo bo'ldi. Tabiiyki, bunday sohalarda dasturlash kodlashdan unchalik farq qilmaydi, chunki, qoida tariqasida, harakatlarni aks ettirish operatori uslubi etarli. Amaliy dasturlash amaliyotida tasdiqlangan shablonlarga va protsedura kutubxonalariga ishonish va xavfli tajribalardan qochish odat tusiga kiradi. Ilmiy hisob-kitoblarning aniqligi va barqarorligi baholanadi. Fortran tili amaliy dasturlashning faxriysi va asta-sekin bu sohada o'z o'rnini Paskalga, C ga, superkompyuterlarda esa - Sisal kabi parallel dasturlash tillariga berishni boshladi.

Nazariy dasturlash dasturlash va informatika sohasidagi ilmiy eksperimentlar natijalarini taqqoslashga qaratilgan nashrga yo'naltirilganlikka amal qiladi. Dasturlash o'zining rasmiy modellarini ifoda etishga, ularning ahamiyati va asosliligini ko'rsatishga harakat qiladi. Ushbu modellar o'zaro bog'liq matematik tushunchalarning asosiy xususiyatlarini meros qilib oldilar va o'zlarini kompyuter fanida algoritmik yondashuv sifatida namoyon qildilar. Dalillarga asoslangan konstruktsiyalarga intilish va ularning samaradorligi, maqbulligi, to'g'riligi, to'g'riligi va diagrammalar va dastur matnlaridagi boshqa rasmiylashtirilgan munosabatlarni baholash tizimli dasturlash va dasturni ishlab chiqish jarayonining ishonchliligiga erishishning boshqa usullari, masalan, vakolatli dasturlash uchun asos bo'lib xizmat qildi. Dasturlash nazariyasi uchun ishchi material bo'lib xizmat qilgan Algol va Paskalning standart kichik to'plamlari eksperimentlar uchun qulayroq amaliy tillar bilan almashtirildi, masalan ML, Miranda, Scheme, Haskell va boshqalar. Endi ularga C va Java-dagi yangiliklar ham qo'shildi.

Funktsional dasturlash sun'iy intellektni o'rganish va rivojlantirish va kompyuter fanida yangi ufqlarni rivojlantirishda matematik yo'nalishga hurmat sifatida shakllandi. Axborotni taqdim etishga mavhum yondashuv, funktsiyalarni tuzishning lakonik, universal uslubi, turli xil toifadagi funktsiyalar uchun ijro etish muhitining ravshanligi, rekursiv konstruktsiyalarning erkinligi, matematik va tadqiqotchining sezgi sezgisiga ishonish, xotirani taqsimlashning printsipial muammolarini muddatidan oldin hal qilish yukidan qochish, ta'riflar doirasidagi asossiz cheklovlardan voz kechish - - bularning barchasi Jon Makkarti tomonidan Lisp tili g'oyasida bog'langan. Birinchi Lisp dasturlarining mulohazali va uslubiy asoslanganligi yangi muammolarni hal qilishda tezda tajriba orttirish, ularni amaliy va nazariy dasturlash uchun tayyorlashga imkon berdi. Hozirgi vaqtda turli xil sinflar muammolari va texnik vositalar turlariga yo'naltirilgan yuzlab funktsional dasturlash tillari mavjud.

Asosiy dasturlash paradigmalari rivojlanib bordi, chunki yechilayotgan muammolarning murakkabligi oshmoqda. Axborotni kompyuterda qayta ishlashni tashkil etishning texnik tafsilotlarini ishlab chiqish chuqurligi va umumiyligiga qarab dasturlash vositalari va usullarining tabaqalanishi mavjud edi. Dasturlashning turli uslublari paydo bo'ldi, ularning eng etuklari - mashinaga yo'naltirilgan, tizimlar, mantiqiy, transformatsion va yuqori samarali parallel dasturlash.

Mashinaga yo'naltirilgan dasturlash har qanday apparat imkoniyatlariga kirishga qaratilgan kompyuter ishini tashkil qilishning apparat yondashuvi bilan tavsiflanadi. Asosiy e'tibor qurilmaning konfiguratsiyasi, xotira holati, buyruqlar, boshqaruvni uzatish, voqealar ketma-ketligi, istisnolar va kutilmagan hodisalar, qurilmaning javob berish vaqtlari va javob muvaffaqiyatiga qaratilgan. Assembler bir muncha vaqtga qadar Paskal va C tillarini afzal ko'rgan vizual vosita sifatida yo'qotdi, hatto mikroprogramma sohasida ham, lekin foydalanuvchi interfeysining yaxshilanishi uning o'rnini tiklaydi.

Tizimli dasturlash uzoq vaqt davomida xizmat ko'rsatish va maxsus ish bosimi ostida rivojlanib kelmoqda. Bunday ishlarga xos bo'lgan ishlab chiqarish yondashuvi takrorlanadigan jarayonlar va takroriy foydalanish uchun ishlab chiqilgan barqaror dasturlarni afzal ko'rishga asoslangan. Bunday dasturlar uchun kompilyatsiyani qayta ishlash sxemasi, xususiyatlarning statik tahlili, avtomatlashtirilgan optimallashtirish va boshqarish asoslanadi. Ushbu sohada dasturiy dasturlashning operatorlik uslubini to'g'ridan-to'g'ri umumlashtirish bo'lgan imperativ - protsessual dasturlash uslubi ustunlik qiladi. Bu ba'zi bir standartlashtirishga va modulli dasturlashga imkon beradi, lekin juda murakkab tuzilmalar, spetsifikatsiyalar, sinov usullari, dasturni integratsiya qilish vositalari va boshqalar bilan to'lib toshgan. Samaradorlik va ishonchlilik talablarining qat'iyligi sintaktik boshqariladigan loyihalash va dasturlarni yaratish usullari bilan bir qatorda murakkab assotsiativ-semantik evristikadan foydalanadigan professional vositalarni ishlab chiqish bilan qondiriladi. Amaliyotda bunday vositalar to'plamining shubhasiz salohiyati rivojlanishning murakkabligi bilan cheklangan - malaka malakasi paydo bo'ladi.

Yuqori samarali dasturlash muhim muammolarni hal qilishda mumkin bo'lgan eng yuqori ko'rsatkichlarga erishishga qaratilgan. Kompyuter ishlashining tabiiy zaxirasi parallel jarayonlardir. Ularning tashkil etilishi vaqt munosabatlari va imperativ bo'lmagan boshqaruv uslubini batafsil ko'rib chiqishni talab qiladi. Yuqori samarali hisoblashlarni qo'llab-quvvatlovchi superkompyuterlar uchun maxsus tizim dasturlash texnikasi zarur edi. Parallel arxitektura uchun tizimlar va jarayonlarni aks ettirishning grafik-tarmoq yondashuvi ixtisoslashgan parallel dasturlash tillarida va superkompilyatorlarda aniq vazifalar darajasidagi jarayonlarning mavhum iyerarxiyasini real uskunalar protsessorlarining ma'lum bir fazoviy tuzilmasiga xaritalashga moslashtirilgan holda ifodalangan.

Mantiqiy dasturlash matematiklar va tilshunoslar uchun simvolik ishlov berish masalalarini echadigan funktsional dasturlashni soddalashtirish sifatida paydo bo'ldi. Formulalarni qayta ishlashni dasturlashda bevaqt buyurtmalardan xalos bo'ladigan kontseptual asos sifatida determinizmdan foydalanish imkoniyati ayniqsa jozibador. Qaytish bilan jarayonlarni ishlab chiqarish uslubi mutaxassislar tomonidan rasmiylashtirilgan bilimlarni spetsifikatsiyalashga lingvistik yondashuv uchun etarli tabiiylikka ega va boshlang'ich to'siqni kamaytiradi.

Transformatsion dasturlash dasturlarni optimallashtirish, makro avlodlar va qisman hisoblash usullarini metodik jihatdan birlashtirdi. Ushbu sohadagi markaziy tushuncha - bu axborotning ekvivalentligi. Bu dasturlar va jarayonlarning o'zgarishini belgilashda, transformatsiyalarning qo'llanilishi mezonlarini izlashda, ulardan foydalanish strategiyasini tanlashda namoyon bo'ladi. Aralash hisoblash, dangasa harakatlar, dangasa dasturlash, kechiktirilgan jarayonlar va hk. ba'zi bir qo'shimcha aniqlanadigan sharoitlarda ma'lumotlarni qayta ishlash samaradorligini oshirish usullari sifatida ishlatiladi.

Dasturlashning keng ko'lamli yondashuvlari apparat va kompyuter tarmoqlari ishining keskin yaxshilanishiga tabiiy javobdir. Hisoblash vositalarining texnik asboblar sinfidan maishiy texnika sinfiga o'tishi mavjud. Dasturlashda yondashuvlarni yangilash uchun zamin mavjud edi, shuningdek, kompyuterlarning ishlab chiqarish qobiliyati pastligi va unumdorligi tufayli yomon rivojlangan eski g'oyalarni qayta tiklash imkoniyati mavjud edi. Haqiqiy axborot resurslari va kompyuter salohiyatini oqilona rivojlantirish istiqbollarini yaratadigan tadqiqotlarni, evolyutsion, kognitiv va adaptiv yondashuvlarni shakllantirish qiziqish uyg'otadi.

Professional, o'quv va havaskor dasturlarning o'quv-o'yin uslubiga ega bo'lgan tadqiqot yondashuvi avvalgi elementlar bazasidagi inqiroz hodisalariga dosh berolmagan dasturlash texnologiyasini takomillashtirishda ixtirochilik izlashga turtki berishi mumkin. Dasturni takomillashtirishning mobil uslubiga ega bo'lgan evolyutsion yondashuv asta-sekin predmetga yo'naltirilgan shaklga aylanib boradigan ob'ektga yo'naltirilgan dasturlash kontseptsiyasida aniq ko'rinadi. Ob'ekt xususiyatlarining ta'riflari va merosxo'rligini qayta ishlatish disk raskadrovka qilingan axborot muhitining umrini uzaytirishi, ularning ishonchliligi va foydalanish qulayligini yaxshilashi mumkin.

Ochiq tizimlarning vizual-interfeysini rivojlantirishning yangi uslubi va yangi audio-video vositalar va nostandart qurilmalardan foydalangan holda kognitiv yondashuv murakkab axborotni idrok qilishni kuchaytirish va uni etarli darajada qayta ishlashni soddalashtirish uchun yo'l ochadi.

Shaxsiylashtirilgan axborot tizimlarini individual dizayndagi ergonomik uslubiga ega bo'lgan adaptiv yondashuv kompyuter olimlariga inson omiliga sezgir bo'lgan real vaqtda texnologik jarayonlarni malakali dasturlash, tartibga solish va ta'minlash qobiliyatini beradi. Dasturlash paradigmasining rivojlanish yo'nalishi axborot tizimlarini ishlab chiqish va qo'llashga qiziquvchilar doirasidagi o'zgarishni aks ettiradi. Dasturlash amaliyoti uchun muhim bo'lgan ko'plab tushunchalar, masalan hodisalar, istisnolar va xatolar, potentsial, konstruktsiyalarning ierarxiyasi va ortogonalligi, ekstrapolyatsiya va dasturlarning o'sish nuqtalari, sifatni o'lchash va boshqalar. mavhumlashtirish va rasmiylashtirishning etarli darajasiga erishmagan. Bu dasturlash paradigmalarining rivojlanishini taxmin qilish va komponentli dasturlash istiqbollari uchun o'quv materialini tanlashga imkon beradi. Qayta foydalaniladigan komponentlarni ajratish uchun an'anaviy vositalar va usullar maksimal funktsionallik bilan minimal konjugatsiyani optimal tanlash sifatida tushunilgan modullik mezoniga bo'ysungan bo'lsa, zamonaviy element bazasi oddiy operatsiyalarni bajaradigan ko'p kontaktli tugunlar bilan ishlashga imkon beradi. Ammo biz ushbu barcha dasturlash turlari va paradigmalari bilan, hatto Vikipediyadan ham foydalanishimiz mumkin. Hozirgi vaqtda turli yo'nalishlarda dasturlashning juda keng doirasi mavjud.

3.

C++ dagi kodi



#include

using namespace std;

int factorial(int n){

return (n==1 || n==0) ? 1: n*factorial(n-1);3

}

int main(){



int n;

cout << "n = "; cin >> n;



cout << n << "! = " << factorial(n) << endl;

}


Download 70,24 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish