PROLOG
‫أ‬/‫العربي‬ ‫إبراهيم‬
PROgramming in LOGic
Ibrahim.Elaraby@Outlook.Com
‫مقدمة‬
•‫لغة‬‫البرولوج‬(PROLOG)‫هي‬‫اختصار‬(PROgramming in LOGic)
‫أي‬‫البرمجة‬‫المنطقية‬.‫وصمم‬‫هذه‬‫اللغة‬‫أستاذ‬‫بجامعة‬‫مرسيليا‬‫بفرنسا‬‫يدعى‬‫أل‬‫ن‬
‫كولمرير‬(Alan Colmeraur)‫وظل‬‫استخدام‬‫لغة‬‫البرولوج‬‫محصورا‬‫في‬‫معامل‬
‫أبحاث‬‫الذكاء‬‫االصطناعي‬‫بقارة‬‫أوروبا‬‫حتى‬‫أكتوبر‬1981
•‫وتعتمد‬‫لغة‬‫البرولوج‬‫على‬‫مفهوم‬‫البرمجة‬‫المنطقية‬(Logic Programming),
‫والتي‬‫تتعامل‬‫مع‬‫جمل‬(Statement)‫تحتوي‬‫على‬‫أشياء‬(Objects)
‫والعالقات‬(Relationships)‫التي‬‫تربط‬‫بينها‬‫وبين‬‫الجملة‬.
‫مثال‬
‫في‬‫هذه‬‫الجملة‬‫تسمى‬‫كلمة‬(Professor)‫بالمسند‬(Predicate)‫وتمثل‬
‫العالقة‬‫بين‬‫المعامالت‬،‫حيث‬‫ان‬(Mohammad)‫هو‬‫أستاذ‬(Ali)
‫وعلى‬‫هذا‬‫فإن‬‫لغة‬‫البرولوج‬‫تسمح‬‫للمبرمج‬‫بتمثيل‬‫العالقات‬‫بين‬‫األشياء‬‫وتجميع‬
‫وتنظيم‬‫هذه‬‫العالقات‬‫حتى‬‫يمكن‬‫الوصول‬‫إلى‬‫استنتاج‬‫منطقي‬‫من‬‫الحقائق‬‫ا‬‫لتي‬
‫تمثلها‬‫تلك‬‫العالقات‬.‫وذلك‬‫على‬‫عكس‬‫اللغات‬‫التقليدية‬‫مثل‬‫الباسكال‬‫وسي‬‫التي‬
‫تطلب‬‫من‬‫المبرمج‬‫كتابة‬‫الخطوات‬‫التفصيلية‬‫التي‬‫يجب‬‫إتباعها‬.
Professor (Mohammad, Ali).
‫برنامج‬‫البرولوج‬
‫يقوم‬‫برنامج‬‫البرولوج‬‫بإعطاء‬‫الحاسب‬‫وصف‬‫المشكلة‬‫بإستخدام‬‫عدد‬‫من‬‫الحقائق‬
"Facts"‫والقواعد‬"Rules"‫ثم‬‫يسأل‬‫الحاسب‬‫عن‬‫ايجاد‬‫كل‬‫الحلول‬‫المحتملة‬
‫للمشكلة‬.
‫ا‬ ‫وتنقسم‬‫هي‬ ‫مراحل‬ ‫ثالثة‬ ‫إلى‬ ‫البرولوج‬ ‫بلغة‬ ‫لبرمجة‬:
.1‫األشياء‬ ‫عن‬ ‫الحقائق‬ ‫إعالن‬(Objects)‫بينها‬ ‫تربط‬ ‫التي‬ ‫والعالقات‬.
.2‫القواعد‬ ‫تعريف‬(Rules)‫تحكم‬ ‫التي‬‫هذه‬‫تربط‬ ‫التي‬ ‫والعالقات‬ ‫األشياء‬‫بينها‬.
.3‫االستعالم‬‫تربطها‬ ‫التي‬ ‫والعالقات‬ ‫األشياء‬ ‫عن‬.
‫ملحوظه‬
‫يمكن‬‫أن‬‫تأتي‬‫المرحلة‬‫الثالثة‬‫بعد‬‫المرحلة‬‫األولي‬‫مباشرة‬‫حيث‬‫يمكن‬‫السؤال‬‫عن‬‫ا‬‫ألشياء‬
‫دون‬‫تطبيق‬‫أي‬‫قواعد‬.
‫كيفية‬‫اإلعالن‬‫عن‬‫الحقائق‬‫والسؤال‬‫عنها‬:
‫اإلعالن‬‫عن‬‫الحقائق‬‫في‬‫برنامج‬‫البرولوج‬‫يجب‬‫أوال‬‫تحديد‬‫األش‬‫ياء‬
(Objects)‫والعالقات‬‫التي‬‫تمثل‬‫تلك‬‫الحقائق‬.‫فمثال‬‫إذا‬‫كانت‬‫هناك‬
‫حقيقة‬‫تقول‬.(Likes (ali , Mohamed‫فاألشياء‬‫في‬‫هذه‬
‫الحقيقة‬‫هي‬‫األسماء‬(Ali , Mohamed)‫أما‬‫العالقة‬‫بينهما‬‫فهي‬
(Likes)‫وتسمى‬‫بالمسند‬(Predicate)‫أي‬‫الصفة‬‫التي‬‫تتعلق‬
‫بشيء‬‫ما‬‫أو‬‫العالقة‬‫التي‬‫تربط‬‫بين‬‫شيئين‬‫أو‬‫اكثر‬.‫ولتمثي‬‫ل‬‫هذه‬
‫الحقيقة‬‫في‬‫برنامج‬‫البرولوج‬‫تكتب‬‫كاآلتي‬:
likes ( ali , mohamed(.
•‫يتم‬‫كتابة‬‫أسماء‬‫األشياء‬‫والعالقات‬‫بالحروف‬‫الصغيرة‬(Small Letters)‫وذلك‬‫ألن‬‫األسماء‬‫التي‬
‫تبدأ‬‫بالحروف‬‫الكبيرة‬(Capital Letters)‫أو‬‫بالحرف‬(Underscore (_))‫يعتبرها‬
‫البرولوج‬‫متغيرات‬(Variable).‫وتختلف‬‫الحقيقة‬‫باختالف‬‫ترتيب‬‫أسماء‬‫األشياء‬‫بمعنى‬‫أن‬
likes ( ali , mohamed).‫تختلف‬‫عن‬likes (mohamed, ali).‫وينتهي‬‫اإلعالن‬
‫عن‬‫الحقيقة‬‫بوضع‬‫نقطة‬(.)‫في‬‫آخرها‬.
•‫ويطلق‬‫على‬‫التعبير‬likes ( ali , mohamed).‫في‬‫لغة‬‫البرولوج‬‫لفظ‬‫العبارة‬(Clause)
‫ويمكن‬‫ترجمة‬‫اللغة‬‫المكتوبة‬‫بإحدى‬‫اللغات‬‫الطبيعية‬(‫اإلنجليزية‬‫أو‬‫العربية‬)‫إلى‬‫عبارة‬‫أو‬‫اكثر‬‫من‬
‫عبارات‬‫البرولوج‬.‫ويتم‬‫ذلك‬‫بتحديد‬‫األشياء‬‫التي‬‫يدور‬‫حولها‬‫موضوع‬‫الجملة‬‫وتحديد‬‫الصف‬‫ات‬‫أو‬
‫العالقات‬‫التي‬‫تميزها‬,‫أو‬‫محمول‬‫الجملة‬.
EXAMPLE 1
prof (mohamed,ali).
Queries :-
1- ? prof (M,N).
2- ? prof (_,M).
3- ? prof (M,_).
4- ? prof (mohamed,ali).
Start – All Program – Accessories - Notepad
‫الـ‬ ‫برنامج‬ ‫فتح‬NOTEPAD
‫الـ‬ ‫برنامج‬ ‫فتح‬PROLOG
Start – All Programs – SWI-Prolog
‫المطلوبه‬ ‫االستعالمات‬ ‫إجراء‬ ‫يتم‬
•likes(ali,mohamad(.
•likes(ali,ahmad(.
•likes(ali,omar(.
•likes(ali,adel(.
•likes(ahmad,mohamad).
EXAMPLE 2
Queries :-
1-? likes(M,N).
2-?likes(_,M).
3-?likes(M,_).
4-?likes(ali,ahmed).
5-?likes(M,adel).
6-?likes(_,_).
EXAMPLE 3
prof(youssef,dss,1clook,m1).
prof(waffa,vb,3clook,m2).
prof(mona,nw,3clook,m1).
prof(hend,mm,5clook,m2).
prof(Youssef,net,4clook,m3).
Queries :-
1-?prof(M,N,X,Y).
2-?prof(M,N,_,_).
3-?prof(_,_,_,_).
4-?prof(M,dss,N,X).
5-?prof(youssef,B,N,H).
6-?Prof(M,dss,N,X).
7-?prof(hend,mm,5clook,m2).
8-?prof(Hend,mm,5clook,m2).
9-?prof(HEND,MM,5clook,m2).
EXAMPLE 4
A fast – car is fun.
A big – car is nice.
A little – car is practical.
Ali likes a car if the car is fun.
What does ail likes?
In prolog
car(fast,fun).
car(big,nice).
car(little,practical).
likes(ali,X):-
car(X,fun).
Query
1-? Likes (ali, X).
EXAMPLE 5
Ali likes Ahmed.
Ali likes dogs.
Salwa likes everything Ali likes.
What does salwa likes?
In prolog
likes(ali,ahmed).
likes(ali,dogs).
likes(salwa,Something):-
likes(ali,Something).
Query
1-? Likes (salwa, what).
EXAMPLE 6
parent(hala,hany).
parent(aly,hany).
parent(hany,yaser).
parent(hany,aml).
female(hala).
female(mona).
female(aml).
male(aly).
male(yaser).
Hala
Hany
Yasser
Amal
Aly
CONTINUE
sister(X,Y):-
parent(Z,X),parent(Z,Y),female(X),X=Y.
father(X,Y):-
parent(X,Y),male(X).
mother(X,Y):-
parent(X,Y),female(X).
brother(X,Y):-
parent(Z,X),parent(Z,Y),male(X),X=Y.
off(hany,hala).
off(hany,aly).
off(aml,hany).
off(yaser,hany).
off(X,Y):- parent(Y,X).X=Y.
gf(X,Z):-
parent(Y,Z),parent(X,Y),male(X),X=Y.
gm(X,Z):-
parent(Y,Z),parent(X,Y),female(X),X=Y.
CONTINUE
Queries :-
1-?sister(X,Y). 2-?brother(X,Y).
3-?father(X,Y). 4-?mother(X,Y).
5-?gf(X,Z). 6-?gm(X,Z). 7-?off(X,Y)
END
Ibrahim.Elaraby@Outlook.Com

Decision support systems (ch10) prolog