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