O'zbekiston Respublikasi Raqamli texnologiyalar vazirligi Muhammad Al-Xorazmiy nomidagi



Download 28,55 Kb.
bet4/5
Sana03.03.2023
Hajmi28,55 Kb.
#916234
1   2   3   4   5
Bog'liq
1Mavzu Mantiqiy dasturlash xususiyatlari va misollari Reja Man

Boshqa so'rovlar


Prolog-ga boshqa umumiy so'rovlar yuborilishi mumkin, bu tizim bir nechta natijalarni keltirib chiqaradi:
-? - parent_of (Ota-ona, bola).
- Ota = bobbi
- Bola = Karlos
- Ota = Karlos
- Bola = doris
Ko'rib turganimizdek, mantiqiy dasturlash, ular haqida bilim olish uchun alissa yoki bobbi odamlar ekanligi haqida ma'lumotga ega bo'lishni talab qilmaydi. Aslida, shaxs deb nomlangan tushunchaning mavjudligini ko'rsatish shart emas.
Ko'pgina mantiqiy bo'lmagan dasturlash tillarida, odamlar haqida ma'lumotni qayta ishlaydigan dasturlarni yozishdan oldin, avval ushbu tushunchalarni aniqlab olishingiz kerak bo'ladi.



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.


Download 28,55 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5




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