بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته ابدا معكم اليوم الدرس الثاني كما وعدت وهو بعنوان
Prolog syntax
اولا تذكر ان برنامجنا يتكون من
Logic program=facts + rules
والذي يتمثل في ملف ال knowledgebase
prolog syntax

ال fact : اي شئ متحقق وغير مشروط وتاخذ الشكل
(t1,….tn). r
حيث تمثل ال r اسم العلاقه ومابين القوسين يمثل ال terms مثل
parent (ali, maged).
ال rule وهو يحتوي علي الاقل علي شرط واحد ويتكون من جزاين هما
Body , head وياخذ هذا الشكل
Rule has the form : head :- body
ويكون متحقق اذا تحققت كل متغيرات الجانب الايمن(body) يكون الجانب الايسر متحقق (head)
العلامه (:-) تعني if
مثال
brother(X,Z):-parent(X,Y),parent(X,Z).
سوف نتناول في هذا الدرس شرح النقاط الاتيه
Variables.
Atoms
.Numbers
Structures
Arity
اولا: المتغيرات ((Variables
يتم تعريف المتغيرات في البرولوج في شكل سلسله من الحروف او الارقام واهم مايميزها ان تبدا بحرف capital وايضا يمكن ان تبدا ب underscore (__)
امثله X,_RD ,Ahmed
لاحظ جيدا ان المتغيرات في الغات الاخري مكان يتم حجزه في الذاكره اما في البرولوج فان المتغير يتم اعطاؤه القيمه عن طريق عمليه instantiation وهي عمليه ربط المتغير بقيمه وايضا المتغيرفي البرولوج لاياخذ اكثر من قيمه
المتغير الذي يبدا ب underscore يعرف باسم Anonymous variable وهذا معناه ان كل الذي يهمني ان اجد حميع القيم لل ( _ ) الذي يحقق الاستعلام بغض النظر عن هذه القيم
مثال
?-parent (_, _).
Yes
وهذا الاستعلام مكافئ للاستعلام الاتي
?-parent(X,Y).
ثانيا : Atoms
تاخذ ثلاثة اشكال ولها شروط هامه
اولا : alphanumeric تتمثل في السلاسل الحرفيه او ال digits ويمكن ان تحتوي علي underscore ولكن لا تبدا به ولابد ان تبدا بحروف صغيره علي عكس المتغيرات
مثال
a, my_frind ,fatma .
ثانيا : special character strings هي عباره عن سلسله من الرموز الخاصه ولا تحتوي علي اي حروف او اي underscore مثل
>==>,--------,<<<>>>
ثالثا : quoted character strings اذا احتوي ال atom علي اي علامه او اذا بدا بحرف كبير او اذا احتوي علي مسافات مثل لابد ان ينحصر بين ' ' مثل
'Ali ','fa my'.
ثالثا الاعداد Numbers يمكنك استخام الاعداد الصحيحه والحقيقيه في البرولوج مع وجود قيد علي الاعداد الحقيقيه وتكون بهذا الشكل
23 integer
0.25 Real
كما يمكننا اجاراء العمليات الحسابيه المعتاده كالجمع والطرح والضرب والقسمه وغيرها من العمليات
Addition For +
For subtraction -
For multiplication *
For division /
For integer division //
For power **
Mod for integer reminder
يمكننا عمل evaluation لاي تعبير رياضي عن طريق استخدام ال is والشكل العام لاستخدامه كالاتي
Variable + is + expression
Example:
?- X is 4*3.
X=12
Yes
باختصار فان ال built in predicate is يقوم بعمل evaluation للطرف الايمن ووضعه في الطرف الايسر كما لاحظنا في الاستعلام السابق
تخيل اذا لم نضع is هل الناتج سيكون نفس الناتج السابق كالاتي
?-X=4*3.
X=4*3
Yes
هنا اعتبرها سلسله ولم يقم بعمل اي evaluation للتعبير
رابعا :Structures وتاخد ثلاثة اشكال
1. Simple terms:
وهي تكون اما atoms او variables او numbers
وهي اسماء لل relations او ال predicates ولابد ان تكون من نوع alphanumeric atoms
مثل flight ,direct flight
3. Structures or compound terms:
وهي عباره عن functor (terms)
Example:
book('Programming language',auther(tom)).
ملاحظه جيده
Functors can be overloaded :
Examples :
flight(
flight(
flight(X):-flight(X,_).
ماهو ال Arity
هو عدد اال argument في ال compound term
Arity is the number of argument in compound term
Examples:
parent(ali,ahmed) . is aterm with arity 2
mother(mona). is aterm with arity 1
parent(parent(ali)) is aterm with arity 1

ليست هناك تعليقات:
إرسال تعليق