الأحد، 27 ديسمبر 2009

الدرس الثاني

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته ابدا معكم اليوم الدرس الثاني كما وعدت وهو بعنوان

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


. 2Functors

وهي اسماء لل relations او ال predicates ولابد ان تكون من نوع alphanumeric atoms

مثل flight ,direct flight

3. Structures or compound terms:

وهي عباره عن functor (terms)

Example:


.( flight (egypt, london

book('Programming language',auther(tom)).

ملاحظه جيده

Functors can be overloaded :

Examples :

flight(egypt).

flight(egypt,paris).

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



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

إرسال تعليق