Logic Programming with Prolog
Download
Report
Transcript Logic Programming with Prolog
Logic Programming
with Prolog
Swi-prolog
ملفات البرولوغ دائما تكون بامتداد pl.او pro. مكونات لغة البرولوغ -:declaring :- -:1بعض الحقائق عن المواضيع(العوامل ) والعالقات بينها .
defining :- -:2تعريف القواعد والشروط بين المواضيع والعالقات بينها .
asking :- -:3أسئلة عن هذه المواضيع وعن العالقات بينها .
مكونات الجمل كما اشرنا لها سابقا -:
Factالحقائق والمعارف . Ruleالعالقات والقواعد بينها وتشبه عمل ال Functionفي لغات البرمجةاألخرى مثل الجافا والسي ++وتحتوي على If/then .
Queriesاألسئلة واالستعالمات في المترجم والتي يتم العبور بها إلى الحقائقوالقواعد ومن ثم بداية البرامج التي قمنا بها .
بلك بساطه لغة الربولوغ جتعل هجاز احلاسوب يس تخدم مكس تودع للحقائق والعالقات بيهنا ,وتوفر
س بل للوصول لالس تنتاجات .
Facts ::::
•
احلقائق يف لغة الربولوغ تعرب عن العالقات بني املواضيع
( العوامل) من خالل املعطى اذلي ميثل املعرفة .
)Live(monkey,forest
وهنا في الجملة السابقة Liveتمثل العالقة بين monkey
forest ...أي أن القرد يعيش في الغابة .
والجملة كاملة بكل محتوياها تسمى clause
يطلق على المواضيع ( العوامل ) بــــ arguments
ويطلق على العالقات بينها بـــــ predicate
Rules :::
•
تحتوي على جزئيين هما -:
-:1جزء الشرط body of clause >----------
2:-جزء الهدف head of clause >----------
Queries :::
•
االستعالم أو األسئلة حيث تكتب في المترجم فيقوم المحرك engineبتتبع الهدف
من خالل الحقائق والقواعد الموجودة في قاعدة المعرفة ( مالحظه مجموعة الحقائق
والقواعد في البرولوغ تسمى قاعدة المعارف ) .
كيف يكون استخدام األسئلة أو االستعالم في البرولوغ ؟
عندما يتم طرح سؤال في البرولوغ ,يصار إلى البحث في قاعدة البيانات والتي
اشرنا أنها تمثل الحقائق والعالقات بنها ( القواعد) ,ومن ثم
يبحث عن الحقائق التي تطابق االستعالم في السؤال ,لذا فإذا وجد هذه الحقائق التي
تطابق فيكون الجواب بـــ " " Yesوالعكس يكون "No " .
• أمر مهم جدا -:
أسماء المواضيع والعالقات بينها يجب أن تبدأ بأحرف صغيره lowercase letter
والحقائق والجمل يجب أن تنتهي بــــ " " .
مثال -:
father(khaled, mohammad).
أين نكتب برنامج البرولوغ ؟
الحقائق والقواعد تخزن في ملفات تمثل ما يسمى قاعدة المعارف ,ثم
عندما نريد العمل عليها نقوم بتحميل هذه القاعدة من المعارف إلى
المترجم ,وعندما نغير أي معلومة في هذه الملفات فيصار إلى إعادة
تحميلها مره أخرى إلى المترجم ( لكي يتم تفعيلها مره أخرى ) .
---قراءة ملفات البرامج
consult (filename).
Prolog syntax
… 1- atom
1- The upper-case letters
2- The lower-case letters
3- The digits
4- The special characters
e.g.
_ +, -, *, /, <, >, =, :, ., &, ~,
ولكن الشرط المهم هو انه عند كتابة ال Atomsال يجب ان تبدأ بـــ upper-case letters
او "_" .
أمثلــــــــــــــــــــــة:::
krrk, x15, x_, x___y, ahmad_khaled
=<---> , ==>, … , .:. , ::
___________________________________________
باستثناء هذا الرمز " " -:ألنه يمثل جزء من أدوات اللغة ( كما اشرنا سابقا من انه يفصل بين الشرط
والهدف في القواعد ) .
ممكن إن تكتب هكذا لكن بشرط وجود ' '
' 'Mohammad' , 'Othman Khalid
… 2- Numbers
أعداد صحيحة
100 ,20 ,-90, 0
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
أعداد حقيقية
3.99, -0.0001 , 10000.004
… 3- Variables
تتكون من أحرف وأرقام و أيضا " _ " ,وتبدأ بــ upper-caseأو " _ " .
مالحظة -:عن اس تخدام " _ " بشلك فردي فلها معىن خاص حيث تسمى متغري
جمهول .
ونطاق معل الـــ Variablesيكون يف الـــ clauseمتضمنه داخلها ..
مبعىن أخر مثال X16ميثل متغري ,وعندما يتواجد يف clause 2فهو ميثل
متغريان اثنان خمتلفان عن بعض ,أما عندما يكون هناكل أكرث من X16ولكن يف
نفس الــ clauseفلكها متثل نفس املتغري وتعود هل .
4- Structures
)date (3, jan, 1982
وحتتوي عىل أكرث من عامل ,وميكن أن تكون هذه العوامل متغريات مثل -:
)date (Day, Jan, 1982
وهذا يعين ان اليوم أصبح متغري ,وهذا يعطي أي يوم يف شهر jan
ويف س نة . 1982
*note
يف حاةل اس تدعاء املرتمج تظهر اشارة
?|ويه تعين أن املرتمج جاهز لي اس تعالم وسؤال ,ويف حال مل تكن موجودة ( أو انه مت
مسح الشاشة ) مق بكتابة هذا المر عىل شاشة املرتمج
Sicstus.
Open page 24