Mantiqiy dasturlash xususiyatlari


Mantiqiy dasturlashning xususiyatlari -



Yüklə 95,03 Kb.
səhifə2/4
tarix19.12.2023
ölçüsü95,03 Kb.
#152727
1   2   3   4
Mustaqil ish

Mantiqiy dasturlashning xususiyatlari - Mantiqiy dasturlash boshqa mavjud dasturlash strategiyalaridan sezilarli darajada farq qiladi. Dastur bilan kompyuterga ko'rsatmalar berish o'rniga, ob'ektlar o'rtasida munosabatlar o'rnatiladi. Shu tarzda kompyuter ushbu aloqalarni asoslashi va shu bilan mantiqiy echimlarga erishishi mumkin.Mantiqiy dastur doirasida ikkita asosiy kodlar to'plami mavjud: faktlar va qoidalar. Qoidalar atrof-muhit to'g'risida bilim olish uchun faktlarga nisbatan qo'llaniladi.


Mantiqiy dasturlash va funktsional dasturlash o'rtasidagi farq
Mantiqiy dasturlash dasturlarni matematik ifodalar orqali belgilaydi; bu funktsional dasturlashga o'xshaydi. Mantiqiy dasturlash mantiqiy ifodalarni ishlatadi (yaxshi, oxir-oqibat mantiq matematika).
Menimcha, funktsional va mantiqiy dasturlash o'rtasidagi asosiy farq "qurilish bloklari" dir: funktsional dasturiy funktsiyalarni funktsiyadan foydalanadi, mantiqiy dasturlash predikatlardan foydalanadi. Bevosita funksiya emas; u qaytish qiymatiga ega emas. Uning argumentlarining qiymatiga qarab, u haqiqiy yoki noto'g'ri bo'lishi mumkin; agar ba'zi bir qiymatlar aniqlanmagan bo'lsa, unda asosni to'g'ri bajaradigan qadriyatlarni topishga urinib ko'riladi.
Prolog, birinchi navbatdagi mantiqqa tegishli Horn clauses nomli maxsus mantiqiy qoidalarini qo'llaydi; Hilog yuqori tartibli mantiq qoidalarini qo'llaydi.
Prognozni oldindan belgilaganingizda shoxni belgilashingiz kerak: foo: - bar1, bar2, bar3. agar bar1, bar2 va bar3 rost bo'lsa, foo rost bo'lsa. Men aytmadim va faqat agar; bitta predikate uchun bir nechta moddalar bo'lishi mumkin:
foo:-
bar1.
foo:-
bar2.
Agar bar1 rost bo'lsa yoki bar2 rost bo'lsa, foo rost bo'lsa
Ba'zilar, mantiqiy dasturiy funktsional dasturlashning ustunligidandir, chunki har bir funktsiyaning asosiy sababi sifatida ifodalanishi mumkin:
foo(x,y) -> x+y.
sifatida yozilishi mumkin
foo(X, Y, ReturnValue):-
ReturnValue is X+Y.
ammo bu kabi bayonotlar biroz noto'g'ri deb hisoblayman
Mantiq va funktsional farqning yana bir farqi - takrorlash. Funktsional dasturlashda funksiya tanasiga kirganingizdan so'ng siz muvaffaqiyatsiz bo'lib, keyingi ta'rifga o'tishingiz mumkin. Masalan, siz yozishingiz mumkin
abs(x) ->
if x>0 x else -x
yoki hatto soqchilardan foydalaning:
abs(x) x>0 -> x;
abs(x) x=<0 -> -x.
ammo yozolmaysiz
abs(x) ->
x>0,
x;
abs(x) ->
-x.
Boshqa tomondan, Prolog da siz yozishingiz mumkin edi
abs(X, R):-
X>0,
R is X.
abs(X, R):-
R is -X.
if then you call abs(-3, R), Prolog would try the first clause, and fail when the execution reaches the -3 > 0 point but you wont get an error; Prolog will try the second clause and return R = 3.
Funktsional til uchun shunga o'xshash narsani amalga oshirish mumkin emas, deb o'ylamayman (lekin men bunday tilni ishlatmaganman).
Umuman olganda, har ikkala paradigma ham deklarativ deb hisoblansa-da, ular juda boshqacha; ular bilan taqqoslaganda, funktsional va majburiy uslublarni taqqoslash kabi his. Mantiqiy dasturlashni biroz sinab ko'rishni taklif qilaman; bu aql bovar qilmas tajriba bo'lishi kerak. Biroq, siz faqat falsafani tushunishga harakat qilmoqchisiz; Prolog sizga funktsional yoki hatto imperativ uslubda (dahshatli natijalar bilan) yozish imkonini beradi.
Funktsional dasturlashda sizning dasturingiz funktsional tavsiflar to'plamidir. Har bir funktsiyani qaytarish qiymati matematik ifodalar sifatida baholanadi, ehtimol o'tgan argumentlarni va boshqa aniqlangan funktsiyalardan foydalanadi. Masalan, siz ma'lum bir raqamning factorialini qaytaradigan factorial funktsiyasini belgilashingiz mumkin:
factorial 0 = 1 //a factorial of 0 is 1
factorial n = n * factorial (n - 1) //a factorial of n is n times factorial of n - 1
Mantiqiy dasturlashda sizning dasturingiz birlamchi predmetlar majmui. Predikatlar, odatda, har bir moddada matematik ifodalar, boshqa belgilangan predikatlar va taklifnomalar yordamida aniqlanishi mumkin bo'lgan moddalar to'plami sifatida tavsiflanadi. Misol uchun, siz "argumentli" bir asosni belgilashingiz mumkin, bu ikkinchi argüman birinchi navbatda,
factorial(0, 1). //it is true that a factorial of 0 is 1
factorial(X, Y) :- //it is true that a factorial of X is Y, when all following are true:
X1 is X - 1, //there is a X1, equal to X - 1,
factorial(X1, Z), //and it is true that factorial of X1 is Z,
Y is Z * X. //and Y is Z * X
Har ikkala uslub ham dasturlarda matematik ifodalarni ishlatishga imkon beradi.


Yüklə 95,03 Kb.

Dostları ilə paylaş:
1   2   3   4




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə