Mavzu: Funksional dasturlash Reja


Download 33.92 Kb.
bet1/2
Sana23.12.2022
Hajmi33.92 Kb.
#1044089
  1   2
Bog'liq
9-ma\'ruza


Mavzu: Funksional dasturlash
Reja:
1.Funksional dasturlash tushunchasi.
2.Funksional dasturlash tillari.
Funksional dasturlash - bu shunday dasturlash uslubiki, unda asosiy rolni buyruqlarni bajarish emas, balki ifodalarni hisoblash asosiy rolni o’ynaydi. Ifodalar bunday dasturlash uslubida dastlabki qiymat qabul qiluvchi funksiyalar yordamida ifodalanadi. Funksional til-funksional uslubni qo’llab quvvatlovchi dasturlash tili hisoblanadi.
Hisoblashga applikativ yondoshuv impreativ yondoshuvdan xususiy g’oylarga asoslanganligi bilan farq qiladi.Kompyuterda javob olish uchun ketma-ket bajariladigan holatlarning o’rniga kutilayotgan natijani beruvchi funksiya qidiriladi.
Butun diqqat e’tibor ketma-ket kelgan boshlang’ich ma’lumotlar bilan birga kelgan funksiyaga qaratiladi. Faqat oxirgi natija haqida mulohaza yuritiladi(funksiyalar ketma-ketligi) va ularga faqat boshlang’ich ma’lumotlar kiritiladi va natija olinadi.
Funksional (applikativ) tillar hisoblashni funksiyalar chaqiruvidan iborat deb qaraydi.
Funksional dasturning sintaksisi quyidagicha ko’rinish oladi:
functionn (functionn-1 (functionn-2 (...function1 ( ma’lumotlar))....))
Hisoblashning boshida 1-funksiya boshlang’ich ma’lumotlar asosida hisoblashni bajaradi. Keyin 1-funksiya natijasi bo’yicha olingan ma’lumotlar asosida ikkinchi funksiya hisoblashni bajaradi va h. Shunday qilib oxirida n-funksiya n-1 funksiyaning natijasini boshlang’ich ma’lumot sifatida olib hisoblashni bajaradi. n-funksiya kutilgan natijani qiymat sifatida qaytaradi.
Shunday qilib, funksional tillarda o’zgaruvch tushinchasi bo’lamydi(imperativ tillardagi kabi o’zgaruvchi tavsiflanmaydi), ta’minlash operatori bo’lamydi, iteratisya ko’rinishidagi takrorlanishlar bo’lmaydi.
Funksiyani tavsiflash uchun uning nomini o’ylab topib nomlash va hisoblaydigan ifodasini berish kerak. Yagona amalni tavsifi - bu aniq argumentlar bo’yicha funksiyani chaqirish. Dasturning tavsiflash - bu ketma-ket alohida funksiyalarni tavsiflash.
Misol qaraymiz. Faraz qilaylik, oltita a,b,c,d,e,f sonlari orasidan eng kattasini aniqlash talab qilimgan bo’lsin.
Funksional dasturlash tilida bitta funkisyaga faqatgina ikkita sonning eng kattasini aniqlashga ruxsat etilgan bo’lsin:

Bunday holatda sonlarni juft-juft qilib guruhlash va ularga MAX(x,y) funksiyasini qayta-qayta qo’llash talab qilinadi.
Dastlabki yaqinlashish sifatida quyidagini yozamiz:
MAX(a,b,c,d) = MAX(MAX(a,b),MAX4(c,d,e,f)) (1)
bu yerda psevdo funksiya MAX4 uchun quyidagicha tavsifni yozamiz:
MAX4(c,d,e,f) = MAX(MAX(c,d),MAX(e,f)) (2)
(1) va (2) larni birlashtirib natijaviy funksional dasturni hosil qilamiz:
MAX(a,b,c,d,e,f) = MAX(MAX(a,b),MAX(MAX(c,d),MAX(e,f)))
Uning bajarilishi izlanayotgan natijani beradi.
Yana bir misol. Faraz qilaylik, funksional tilda faqat bitta funksiya ishlaydi:

Bunday holda, berilgan oltita a,b,c,d,e,f sonlaridan eng kichigini hisoblash uchun quyidagi dasturdan foydalanish kerak bo’ladi:
MIN(MIN(a,b),MIN(MIN(c,d),MIN(e,f)))
Funksional dasturlashning afzallik va kamchilik jihatlari:
Funksional dasturlar matematik formadagi hisoblashlarni taklif etadi.Dasturlar qisqa, qulay va tushunarli bo’ladi. Bu yerda kam kuch sarflagan holda dastur yozish imperativ uslubga qaraganda ustun turadi. Dasturchi imperativ dasturlashdagi kabi hamma detallarni hisobga olish yo’lidan bormay, ba’zi detallarni hisobga olmasdan dastur yaratsa ham bo’ladi.
Abstraksiyalash darajasining juda yo’qoriligi sababli, aniq amalga oshirishning qiyinchiligi ham mavjud. Funksional dasturlashda dasturchi o’zgaruvchini tavsiflashning hojati yo’q, bu yerda xotira yacheykasi tushunchasi qo’llanilmaydi. Takrorlanuvchi jarayonlar uchun kuchli rekursiya mexanizmidan foydalaniladi. Bularning barchasi dasturning ishlashi uchun vaqtning juda katta sarf qilinishi va katta xotira hajmidan foydalanishga olib keladi. Ishni ketma-ket bajaruvchi va xotirani chiziqli boshqaruvchi kompyuter uchun funksional dasturlash yuqori samaradorligini ta’minlash qobiliyatiga ega bo’lmaydi.
2.Eng mashhur funksional tillarni sanab o’tamiz. Eng birinchi funksional dasturlash tili - LISP. Bu til 1960 yillarda suni’y intellekt sohasidagi loyihalar doirasida vujudga kelgan.
Keyinchalik, ya’ni 1975 yilda LISP tilining dialikti asosida Scheme tili qurilgan. Bu oddiy sintaksis va semantikaga ega bo’lgan, talabalar o’zlashtirishi oson bo’lgan uncha katta bo’lmagan til hisoblanadi.
1970-yildan 1980-yilgacha bo’lgan vaqt oralig’ida LISP tilining juda ko’plab bir-biridan farq qiluvchi dialiktlari paydo bo’lgan. Bunday vaziyatni izga solish uchun 1984-yilda LISP tilining standartlashtirilgan variant -COMMON LISP tili yaratilgan.
1986-yilda Kent universiteti professori Devid Terner funksional tilning inglizcha variantini taklif qilgan. Bu dasturning nomi Miranda bo’lgan.
ML(Meta Language) tili 1990 yilda Edenburg universitetida Robin Milner tomonidan yaratilgan. ML tili nafaqat funksional tilni, balki imperativ paradigmaning ba’zi elementlarini ham qo’llab-quvvatlagan. Bu tilda o’zgaruvchi tushunchasi, turlar va operatorlar tushunchasi kiritilgan. ML tilining sintaksisi imperativ tillarning sintaksisiga o’xshash.
1992-yilda yaratilgan Haskell tili sof funksional til sifatida MIrandaning avlodi hisoblanadi. Bu yerda “dangasa” hisoblash g’oyasi qiziq tarzda qo’llanilgan: Hech qanday ifodaning qiymati hisoblanmaydi, qachonki ularning qiymati talab qilinmaguncha.
Funksional dasturlash belgili hisoblashlarni qayta ishlash va ruyxatlarni qayta ishlash uchun ishlab chiqilgan. Funksional dasturlash matematik funksiyalarga asoslangan. Bir qancha ommalashgan funksional dasturlash tillariga misol: Lisp, Python, Erlang, Haskell, Clojure va boshqalar.
Funksional dasturlash tillari ikki guruhga bo’linadi:
  1   2




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