1.1.2. Predikatlar jadval shaklda tavsiflanishi
Predikatni jadval shaklida ham tavsiflash qilish mumkin. U holda konkret qiymatlarda predikat true natija qaytarishi shu qiymatlardan tashkil topgan yozuv jadvalda satr(kortej, yozuv) ko’rinishida mavjudligidan dalolat beradi. Jadvaldagi yozuvlar tartiblanmagan deb tasavvur qilinadi. Yozuv maydonlardan tashkil topgan bo’lib, har bir maydon konkret nomga va domenga tegishli qiymat qabul qiladi. Masalan, yuqorida keltirilgan rain predikatiga mos jadval uchta: Temperature, Pressure va Humidity maydonga ega bo’lib, bu maydonlarning uchalasi ham haqiqiy sonlar domenidan qiymat qabul qiladilar. Workday(hours, date) predikati uchun, qaysiki ishkhonada agar berilhan sana(date) berilgan ish soati(hours)dan iborat bo’ldsa tru, aks holda false natija qaytaradi, 2 ta maydondan iborat: hours maydoni 0-24 butun sonlar oraliqi domenidan va date maydoni esa sana domenidan qiymatlar qabul qiladi.
Agar F(X1, X2,…, Xn) predikatda X1, X2,…, Xn argumentlar o’zlarining mos domenlaridan olingan qiymatlar bo’lsa, bunday ifoda fakt deb ataladi. Bu - X1, X2,…, Xn qiymatlar F munosabatga kirishish faktidir. X1, X2,…, Xn qiymatlar korteji uchun F predikat true natija qaytaradi. Masalan, dars_beradi(o’qituvchi, fan) predikati agar berilgan o’qituvchi berilgan fandan dars bersa true, aks holda false natija beradigan predikat bo’lsa quyidagi ifodalar fakt bo’ladilar:
dars_beradi(“Hayotov X.S.”, “Dasturlash asoslari”) dars_beradi(“Hayotov X.S.”, “Mikroprotsessorlar”) dars_beradi(“Hayotov X.S.”, “Web dasturlash”) dars_beradi(“Jalolov O.I”, “Sonli usullar”) dars_beradi(“Jalolov O.I”, “MBBT”) dars_beradi(“Jalolov O.I”, “Dasturlash asoslari”) dars_beradi(“Boltayev T.B.”, “Tizimli dasturlash”) dars_beradi(“Boltayev T.B.”, “Web dasturlash”)
Agar F(X1, X2,…, Xn) predikatda argument sifatida domendan olingan qiymat emas, balki o’zgaruvchi ishtirok etsa, u holda predikat true/false natija o’rniga predikatning true natijasini hosil qiluvchi, o’zgaruvchiga mos argument(lar)ning qiymatlar to’plamini qaytariladi. Bu qiymatlar clauzalar orasidan axtariladi. Masalan yuqorida keltirilgamn predikat uchun dars_beradi(“Boltayev T.B.”, X) ifoda quyidagi qiymatlarni beradi:
“Tizimli dasturlash”
“Web dasturlash”
Agar ifoda dars_beradi(X, “Web dasturlash”) ko’rinishida bo’sa, uning natijasi quyidagicha bo’ladi:
“Hayotov X.S.”
“Boltayev T.B.” natija qaytaradi
Agar ifodaning ko’rinishi dars_beradi(X, Y) bo’lsa, yuqorida keltirilgan faktlardagi qiymatlar juftliklarining barchasi natija sifatida qaytariladi.
Xorn gapi
Xorn gapining umumiy ko’rinishi quyidagicha:
H :- T1,T2,T3,...
Qaysiki H va Ti,lar – predikatlar bo’lib, H - gapning boshi yoki sarlavhasi,
T1,T2,T3,...esa, ya’ni :-belgisining o’ng tomon qismi – gapning dumi yoki tanasi deb ataladi. Ti predikatlar o’zaro «,» belgisi orqali birlashtiriladi. Bu belgi – mantiqiy «va» ma’nosini beradi. «:-» belgisi esa – mantiqiy «agar» ma’nosini beradi. Shunday qilib Xorn gapining ma’nosi «H agar T1va T2 va T3 va ... bo’lsa ».
Masalan, sonning faktorialini topish uchun quyidagicha ikkita Xorn gapi yozilishi mumkin :
O’qituvchi(“Jalolov O.I”) :- dars_beradi(“Jalolov O.I”, X), fan(X).
Bu gaplarning ma’nosi quyidagicha : Jalolov O.I o’qiyuvchi, agar X-fan bo’lib, Jalolov O.I. shu fandan dars bersa.
Quyidagi Xorn gapida son faktorialini aniqlash rekursiv ifodasi keltirilgan :
fact(N, N*F) :- fact(N-1, F).
Bu gaplarning ma’nosi – N ! = N*F agar (N-1)! = F bo’lsa. Bu yerda birinchi parametr qiymati N son beriladi va u N ! qiymat (natijaga) mos qo’yiladi. Bu moslik fact predikati hisoblanadi.
Bitta sarlavhaga tegishli bo’lgan barcha Xorn gaplari sarlavha predikatini aniqlaydi. Predikatning aniqlanishi uni aniqlaydigan Xorn gaplaridan va uning e’loni orqali amalga oshiriladi. Predikatning e’loni uning tipi va parametrlarining kirish-chiqish sxemasidan tashkil topadi. Yuqoridagi fact predikati uchun quyidagicha e’lon beriladi :
fact : (integer, integer) procedure (i,o).
Ya’ni, predikatning nomi – fact, har ikkala parametrning tipi – integer, 1parametr – beriladi, natija sifatida 2- parametrning qiymati olinadi. «procedure »
- bu predikatning hisoblash tipi - determinizm. Bu haqda keyinroq so’z yuritiladi.
Tanasiz Xorn gapi fakt(klauz) deb ataladi. Haqiqatan ham, hech qanaqangi shartsiz tasdiq doimo bajariladi. Bunda “:-“ belgisi ham tushirib qoldiriladi.
Do'stlaringiz bilan baham: |