You are on page 1of 11

Muhammad Siddig H.

@ @Prolog @òÌÜÛ@݁†ß
@ @Zò߆Խa
Programing in ‫  א א‬WPROLOG‫ אوج‬
Alan  &'()*+,‫ א‬$%+-.- /‫ ذ‬%  $‫و م  ! هذ" א‬KLogic .
0 123- .‫&א‬$'45 6 7(‫א‬8* 9‫و‬، .;%< -2،Colmeraur
2 =5‫>) و‬5 $9  7*?'@‫ن  مא   *ن‬BC ; % D$'  ‫א‬E 9F ‫א‬
 K١٩٨١‫ م‬.‫א‬G-+9+7H2I- J‫א‬3K‫; א‬%  ;L+
@ @ZProlog@òÌÛ@paŒî¾
 WLQ‫א‬R ;%P$'‫אوج‬.L
 K(5‫و‬+T‫ א‬-$.‫(א‬F.L2 7),*&$'.LU-‫א‬+ 9&$'' )LL١
 K‫אج‬+WX‫ لوא‬W‫د‬X‫وא א‬2![D‫وא‬4+9‫א‬F‫א‬BC+H ;‫א\لא‬G-G[]L٢
 Ksimplisiy in coding‫א‬4+,_‫ א‬97%L٣
E  ef ‫وذ‬ESource CodeFU- *$(5 ‫א‬4+, _‫א‬2![D ‫\ א‬+ab]L٤
‫אم‬k% f‫وذ‬DepuggingbD ‫א‬E e‫و‬Copilationgh‫وא‬ij‫א‬$'
 K$)>+‫א‬l> J‫א‬G-m‫وא‬KTracing Facilityg;‫ \א‬W
 KU- *‫!א‬hl$LBCo‫د‬pL4(+aq‫(م‬U-‫ אא‬9R$%L٥
 K$- [‫ אא‬G-.LL٦
f $]ً  T(‫  و‬u>‫_ א‬.‫  وא\ لא‬,$‫א‬g -3 - .‫א‬24‫  ز‬w ‫א‬5  7( L٧
4‫ود‬x -‫)  و‬y‫? א‬-  .‫א‬fF 9‫ و‬y‫وא‬DD ‫' אدא‬P  )  * [-‫א‬
 K L+‫א‬9+2‫م‬k)Lm‫وא‬bit-wiseg‫ودوאلא‬z$z‫) وא‬y‫ وאلא‬
 

@ @ZProlog@òÌÛ@¿@Statements@Ýà¦a@pbãìØß
@ @@ZÕöbÔy@Facts@OQ
G'45 ;'y‫وא‬،Prolog2% %}‫א‬4‫{وא‬5 .‫ >|وא‬y‫א‬3z]‫و‬
 ?-  .‫  >وא‬%‫א‬G - '‫و‬Head‫س‬5G -‫([ ن‬predicate )-
 KEArgumentsF
 Head (Arguments)  Predicate
 ،E$'‫وא‬6FW ‫א‬y‫?ًא‬z-FW€
WLQ 9prolog2Clauses$h9 7$z]G[m‫وא‬
 father (mohamed,ali).

1
Muhammad Siddig H.

@ @@Z†ÇaìÓ@Rules@OR
 K +WG-y‫‚ل‬%‚‫ جوא‬%‚‫א‬G-G[]4' ‫א‬
 W ‫ لא‬z‫ ن( א‬9‫ذא‬C
ali likes ahmed
noha likes sami
aser likes noha
 W‫&ن‬$'lL (‫و‬
yaser likes everything noha likes
 ‫ن‬4(ƒ‫&وƒد‬$'‫„*)ل‬$'
yaser likes sami
 Wprolog2 7$z].a
likes (ali,ahmed).
likes (noha,sami).
likes (aser,noha).
likes(yaser,X) :- likes(noha,X).
 {u‫ نא‬9‫@ذא‬a
 likes(yaser,sami).
 KYes‫و‬True‫([ن‬R‫א‬K‫@نא‬a
 
b†L4' f(‫و‬K‫ ن‬$%$'‫ونوא‬،$'…‫ووא‬8$'‫אذא‬Wً?za
 E } K‫'?א‬
father (ahmed,ali).
 father(salman,ahmed).
 grandfather(X,Y):-father(X,Z),father(Z,Y).
‫ ج‬%‚‫\ل‬$‡.;‫ א‬7T.g-|> y‫ * א‬854' ‫[نא‬L '
Kˆ.-
@ @@ZòÜ÷c@Queries@OS
 K'‫ >|وאא‬y‫&א‬$' 5 ;W ‫[(م‬$‫ƒ!א‬j-BC„ƒLm‫א‬$q%‚‫وא‬
 '‫  >|وאא‬y  q$- a+.-4 ' Š % y‫א‬3 .‹Prolog ‫‰ ن‬fF 
K ?.‫وא‬
! (m ‫وא‬E $' ƒ ‫ ن‬$ %F‫ن‬G - 9€*‫و‬U )*‫( ن‬+*|  )‫  لא‬z‫א‬G -
 W ‫א‬3[_  7 9
grandfather(salman,ali).
2
Muhammad Siddig H.

 KYesŠ% y‫א‬G- ƒX‫א‬L€

@ @Data Typer in Prolog@pbãbîjÛa@Êaìãc


oŒ 7[،‫; א‬9($L * ‫&*אع‬$'oŒ‚prolog
simple )3iŠ9+LG[aKlixical elements ;9+L+\ '&$'
 W‫[ن‬L‫ن‬G[Š9‫א‬j‫א‬gi‫و‬KComplex structure4.-3i‫و‬structure
ZConstants@oiaìrÛa@OQ
‫       مو‬5}‫و{وא‬+      y‫א‬G      -$      )$%      ‫و‬WAtoms ‫א‬5F      ‫• א‬
a..z,A..Z,!@#$%^&&*()_+‫ز‬-+‫א‬
 KReal(+)9‫و‬DD\integerWNumber‫ م‬5}‫• א‬
@ @ZVariables@paÌn½a@OR
Upper-case letter4Ž;[‫{א‬+}‫אمא‬k% ‫ج‬+2 ‫אŽא‬G'b(+ ‫(!א‬
o‫د‬+a 3[_ ?_? $,)‫ א‬+_‫אم א‬k%‫ و (! א‬EX,Y, M , Who, WhereF 3z-
 KAnonymous variable‫ل‬7‘‫אŽא‬G'Ž;.$

@ @prolog@òÌÛ@ÝîÌ’m

StartAll programs 
SWI-PrologProlog

 ٢3[_‫א‬2 93.‫א‬Prolog5+6‫ن‬h

 WProlog5+6 (6

(+H‫אنو‬.‫(א‬+H&$'5+’‫א‬H H4Fa *oŒ


{‫ƒ„א}א‬L‫א و‬5 ),%‚‫א‬-‫و‬،!>‫אא‬
 Kprolog!ƒj$q%}‫وא‬

 * 4' E _*CG-‚'‫ >|وאא‬y‫و[ א‬


"FE _*X‫ و‬Knowldege-Base a+.-4' ‫و‬
  ‫א א‬J‫א‬g;*،4' ‫א‬

3
Muhammad Siddig H.

 

4Fa *b,‫ م‬5+’‫نא‬hNew…+-}‫א‬5 W‫وא‬File> &$'T‫א‬L١


File g+-2<$-!%‫ א‬9!L 7a‫و‬ECreate New Prolog SourceF4(ƒ
!% 4(ƒ4Fa *b,5+’‫!(مא‬eSave“,y‫א‬5‫&ز‬$'T ‫!*م‬eName
 4' ‫א‬

 

4' <$-2'‫ >|وאא‬y‫*م[ א‬L٢


4J‫א‬2„)L‫"و‬E _*@ oF‫א‬a+.‫א‬
 K )‫א‬

&$'T*> ‫( א‬6“,y‫و‬L٣


Save Buffer+-}‫א‬5 W‫!א‬e،File > 
  K“,y‫א‬$'‫] م‬Xf‫وذ‬

$4' ‫א‬q7L‫<و‬$‫א‬F,LE‫א‬+ƒXL٤
،Compile&$'T* u?WG- ‫א‬5 ),%‚‫א‬
+-}‫وא‬Compile Buffer+-}‫א‬5 W‫!א‬e
$‫א‬5+64Fa  +W4+-‫ƒع‬+‫!א‬eKMake
  K,$k‫א א‬5 ),%‚‫ƒ„א‬

4
Muhammad Siddig H.

 ZSearch Mechanism @szjÛa@pbîvîmaa

@ @Z´Žîö‰@´àŽÓ@µg@Prolog@¿@szjÛa@pbîvîmaa@áŽÔäm

@bß@ìçë@…ìäjÛaë@pajÈnÛa@´ië@bç‹aŠyg@lìÜĐ½a@Òa†çþa@´i@ÕÏaìnÛa@òîÜàÇ@óÜÇ@Ýàn’í@ZÞëþa@áŽÔÛa@MQ
@ @NHUnificationI@†îyìnÛa@òîÜàÈi@ÒŠÈí

@ @ZÙÛ‡@|™ìí@ïÛbnÛa@Þbr½aë

likes (ali,ahmed).
likes (noha,sami).
likes (aser,noha).
@ @ZÒ†a@æb×ë

@ @likes(X,Y).

‫‰ن‬fF،4+ ‫Žא‬-G'45 ;'X,YG(Ž‫‰نא‬،"?'{u‫א‬G-


a+.‫א‬4' 24‫ >|אƒد‬y‫א‬g-Y‫و‬XG(Ž‫*א‬5 ”o+‹‫א‬$'
 W$( 9 ‫!אŽא‬5!(•، +W}‫א‬$L4‫وא‬

 X=aser X=noha X=ali


 Y=noha Y=sami Y=ahmed

{u‫ |א‬f‫א}אسوذ‬3W‫אŽא ” دא‬3[39‫א‬+‫א([نא‬F7


 K{u‫א;وא‬2likesE3‫א‬F

‫ذא‬CDƒ *‫[ن‬LEClausesF‫وא;د‬3K‫א‬G-'‫אˆ{و‬$'
 W‫ ن‬9

 Kˆ y‫א‬2‫وא‬3‫ א‬J١

 K3K‫א‬2‫ود‬y‫دא‬.o‫) و‬-{u‫א‬2‫ود‬y‫ 'دא‬J٢

 Kˆ$ -ˆƒ‫زو‬3[‫א‬o+—;9+‫ א}א{א‬2 J٣

5
Muhammad Siddig H.

@ @NbèÔîÔ¤@ëc@Òa†çþa@‹aŠy⁄@Þìܧa@åÇ@szjÛa@¿@áØznm@Ñî×@òa‰…@óÜÇ@Ýàn’íë@ZïãbrÛa@áŽÔÛa@MR

@ @ZÙÛ‡@|™ìí

likes (ali,ahmed).
likes (noha,sami).
likes (aser,noha).
@ @ZÒ†a@æb×ë

 likes(aser,Y).

 -‫ذא‬C Ža+.‫א‬4' lD,!ƒj‫مא‬a،„L ;eC(+({7 ‫א‬$';L


&$'‫ ل‬y‫א‬G-G[(˜‫ذא‬CKa+.‫א‬4' 2‫ƒد‬-‫); ًو‬-<†{u‫ نא‬9
{u‫א‬oŒ+z9‫و‬4' G' ‫אא'وא‬2{u‫وƒدא‬5 ;W ‫{(م‬u‫א‬
R$‫א‬

@ @ïÐܨa@ݎ܎nÛaë@ïßbßþa@ݎ܎nÛa

@ @@ZForward tracking@@ïßbßþa@ݎ܎nÛa

4(ƒ|>  7-|_L‫ >|و‬y‫א‬G-a+.-'h”;L‫‚ل‬%‫א‬hL‫א‬j%‫א‬


!(&K .‫א‬+)L‫و‬a‫و‬+.-|> g-‫ א‬7L --| L'‫אمא‬k% 
g-| L- --f$]m‫אא'א‬7L&‫و‬،{u‫א‬BC‫א\ل‬
 Ka+.-‫_و‬-|> 
@ @ZBacktracking @ïÐܨa@ݎ܎nÛa

+z9*+- 7$.‹m‫وא‬،Prolog4x‫ א‬, ‫א‬+z9G-,$J‫א‬3)$)‫א‬.(


!ƒj‫(مא‬،37%3[_$q%}‫א وא‬5 ),%‚‫א‬K .-G-G[]‫و‬،($‫ א‬$‫א‬G-
24‫ƒد‬-‫ א‬7-‫א‬-8* 9‫ذא‬C ™‫ و‬7$)$)LŠ)4' 39l D,
2 ‫א‬U>  ‫א‬g †‫( م‬، - ‫"א‬F u|  ‫ — א‬- '، a+.‫א‬4 ' 
‫ن‬G[4(ƒ'‫'موƒدא‬BC3 (‫ن‬BC +W4+-5 ;W‚‫אš مא‬5+[(‫و‬4+9‫א‬F‫א‬
‚$‫@نא‬a، |,W‫ و‬-4' '+a{‫א‬f ‫ ن‬9‫ذא‬C„*&K3)L

6
Muhammad Siddig H.

R+‹‫'و‬+,‫{א‬u‫א‬BC,$J‫א‬g; ‫م‬a،|,›4' ‫א‬3.‹‫و‬4+H ;-!$))L


 .(ƒG-5 ;W}‫א‬45‫دو‬.Lœ+DL!e،a+.‫א‬4' 2$( +W'‫א‬
 W‫ل‬x‫א‬3W‫אƒ دא‬LG9 -‫א[* و‬G-‫د‬.a+.-4' b†( ‫ لא‬z‫א‬
 
location(desk, office).
 location(apple, kitchen).
 location(flashlight, desk).
 location('washing machine', cellar).
 location(nani, 'washing machine').
 location(broccoli, kitchen).
 location(crackers, kitchen).
 location(computer, office).
  ‫?مא‬.%‚‫ ن( א‬9‫و‬
 Location(apple, kitchen).
W ‫א‬3[_ E{u‫א‬F‫?م‬.%‚‫א‬K .-!L
y ‫?م‬.%‚‫ א‬-ً‚‫ و‬6،a+.‫א‬4' 2B‫א}و‬$K !ƒj‫• (;א‬
   ‫   א‬$.   $.‫"א‬F   {+   .L‫ و‬J   a+.‫א‬4   ' 24‫אƒ   د‬
 ‫א‬y‫א‬BC3(، ‫א‬$'8,W‫@ذאא‬a J EUNIFICATIONF
‫א‬$'‫[ن‬L '‫و‬5 ),%‚‫א‬G-‫א}ول‬ExK‫ |א‬L‰ '‫و‬
 KTrue‫ƒ عא‬5 ‫ *و(م‬z‫א‬ExK‫و( |א‬،X=apple 8D‰
! ( '5 ),%‚‫א‬4‫Šא' د‬$‫و‬5 ,)%?3G-+z9‫ وƒد‬2‫• و‬
m‫א‬$K‫א‬8$Lm‫א‬$K (ƒG-•D;‫و(;א‬،XŽ‫א‬LE ‫א‬
|,™ ‫و‬a+.‫א‬4' 2 ‫א‬y‫א‬G-;(„*o،‫?م‬.%‚‫א‬8
W%‫א) د‬$K‫&א‬+)L‫و‬،.‫א‬+‫א‬$K‫א‬G- ‫א‬$';L‫אو‬
 X=broccali
Z†ÇaìÔÛa@òÛby@¿@ïÐܨa@ÉjnnÛa
 clerk(mohamed).
 clerk(adam).
 typist(ali).
 manager(salih). manager(omar).
 super(X,Y):- manager(X), clerk(Y).
 super(X,Y):- clerk(Y), typist(Y).
 super(X,Y):- manager(X), typist(Y).
  super(Super,ali). W ‫א‬5 ),%‚‫ ن( א‬9‫و‬

7
Muhammad Siddig H.

„ L!(4' ‫א‬G-‫א}ول‬ExK‫نא‬hB‫א}و‬4' ‫א‬lD,!ƒj‫• (مא‬


!ƒj‫א‬G[‫و‬KX=ali ‫ن‬hmanagerEXFa+.‫א‬4' 2g-
&   $'3   Dclerk(Y)4   ' ‫א‬G   -*    z‫א‬Ex   K‫    א‬-23   _,(
4+-,$J‫א‬g;‫אمא‬k%  ‫א‬4‫ƒ!@' د‬j‫و (;א‬،Y=mohamed
manager(omer)* z‫א‬y‫א‬BC‫אلא}ول وא‚* ل‬p)‫א‬BCgƒ+(‫ و‬+W
23_,(‫و‬،clerk(adam) * z‫א‬ExK‫ א‬-5+[(!eKX=omar‫ن‬h
gi‫}ن‬B‫א}و‬4' ‫ قא‬,WCG-9€‫ *و (!א‬z‫א‬4+$ExK‫אא‬F
K ‫א‬4' $  ‫א‬5+[(!e K8,W 7>‫א‬xƒ
 ,$J‫א‬g;‫( {א‬C
G'45 ;'oF‫وא‬g‫א‬3- .-‫אم‬k% Prolog ‫א‬3W‫دא‬,$J‫א‬g;‫( {א‬C!(
،,$J‫Šא‬.‫א‬g‫و‬U- *‫א‬F,L2![D‫א‬G-U-‫א‬G[]U- *‫א‬3W‫ ددא‬%‫א‬
‫و‬8 ‫?œא‬7 %‫ •א‬G - .a+ z9‫א‬U-  *‫א‬b; (• 1  -$.‫ “א‬,‫دون‬
 E>Fx-+ „$z]!(‫و‬K4+9‫א‬F‫א‬
 Wg3- .-b†L ‫א‬$K‫?ًא‬z-
 Factorial (0,1),!.
 GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
 ˆ(-ˆ5 )-+ &$'‫ ل‬y‫ˆאنوא‬a )‫א‬$[_-
road('A','C',200).
 road('A','D',300).
 road('C','D',100).
 road('C','B',120).
 road('D','B',130).
 route(Town1,Town2,Dist):-
 road(Town1,Town2,Dist).
 route(Town1,Town2,Dis):-
 road(Town1,X,Dist1),
 route(X,Town2,Dist2),
 Dis is Dist1+Dist2.
W ‫{א‬u‫ نא‬9‫@ذא‬a
 route (City1,City2,Distance).
 W ‫{א‬u‫א‬R+ƒ
 route(A,B,X).
 GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG

8
Muhammad Siddig H.

@ @Lists@áöaìÔÛa
K7) 7,\L !( • ، * ;‫Š א‬9‫א‬+L % % G- !>‫ אא‬.L •
3 ,$$\ ,‫אمא‬k%‫א‬g-، [ ]ˆ.+-ˆ%3W‫א >دא‬+\ 'Š[L
 K[1,2,3,4,5,6,7,8,9]ً?z-K> $*[‫א‬+\ .‫ˆא‬
„*€> ‫سא‬5{+.(‫و‬KTail3(F‫وא‬Head‫س‬+‫>ˆא‬xƒBC> ‫)!א‬L •
K> ‫א‬+\ '3(F‫وא‬،> ‫א‬2+ '‫ول‬
K[X|Y]ً?z-K3(F‫سوא‬+‫ˆא‬3 ,$E |F ‫א‬x-+‫ א‬Prolog‫م‬k)L •
KMatching!>‫|ˆאא‬a‫אא‬$'2ً T(„-k)L 9
 > 3W‫دא‬+ 'G'•D;‫א‬
member(member_name,[member1,member2]).
 Wa+.‫א‬4' 2 ‫א >א‬f(‫ضن‬ja‫א‬Wً?z-
 [mohamed,ali,suliman,hamdan,mohmoud]
 WU- *‫ƒ!א‬j4+H ;- ‫{א‬u‫*مƒ„א‬aliG'•D;‫(א‬+* * †+a‫و‬
member(ali,[mohamed,ali,suliman,hamdan,mahmoud]).
-----------------------------------------------------------------------------------
„ƒ ‫ *م‬، 3(F‫ א‬3 ‹‫س א > و‬5 2 ˆ.- !%‫ א‬G' •D;‫{  א‬u‫ ن א‬9 ‫ذא‬C
 W ‫{א‬u‫א‬
member(Name,[mohamed | _ ]).
 ----------------------------------------------------------------------------------
@ @NòŽÜ@Þì@Êbu‰hi@âìÔí@Prolog@wßbãŠi
mylength([],0).
 mylength([_|Tail], Len) :-
 mylength(Tail, TailLen),
Len is TailLen + 1.
 KX=0.Š—!ƒj‫@نא‬amylength([],X). {u‫ نא‬9‫@ذא‬a
 KX=7.Š—!ƒj‫@نא‬a،mylength([a,b,c,d,e,f,g],X). {u‫ نא‬9‫@ذא‬a
 
@ @Zò܎܍@¿@ñ…ìuì½a@Š•bäÈÛa@Éà€@âìÔí@Prolog@wßbãŠi
sum([],0).
 sum([Head|Tail],X):-
 sum(Tail,TailSum),
 X is Head+TailSum.
 KSum=6Š—!ƒj‫@نא‬a،sum([1,2,3],Sum). {u‫ نא‬9‫@ذא‬a

9
Muhammad Siddig H.

@ @Recursion@‰aŠØnÛa
!%‫א‬4' )” -?'‫و‬4' <\L!( -'،4+-+z95‫א‬+[‫א‬$'E‫א‬+ƒC!(
 K 7),*?.‫وא‬4' ‫א‬
K .‫?لא‬WG-N!‫د‬.‫א‬R‫و‬+T-R )y،Prolog R[- ‫א‬U- *‫א‬W?
ً z-
 W(x-+‫א‬
factorial (0,1).
factorial (N,Res) :-
N>1,
N1 is N-1,
factorial(N1,FacN1),
Res is N*FacN1.
 W$‫ƒ!א‬j ‫{א‬u‫ƒ„א‬L.a
 factorial(2,Answer).
 Answer=2.   !ƒj‫دא‬5‫' ([ن‬
 

@ @Zòî™bíŠÛa@pbîÜàÈÛa
 False‫و‬True‫د‬+‫' ([نא‬E3>5F- $.‫א‬8* 9‫ذא‬C
 E=Fo‫א) و‬-?'G'ً‚is$9 9G-‚† (5 $.‫א‬8* 9‫ذא‬C -C
 WProlog!ƒj ‫א א‬5 ),%}‫ƒ„א‬L'W ‫א‬$z-}‫א‬FW€
1?- X=3+5.
 X=3+5.       WŠ—!ƒj‫@نא‬a
 K *$)$)9UL ‫א‬gƒ5‫وא‬-45  ?- .‫نˆא‬5 ‫و ([ن‬
 WLQ‫א‬a †C'“‚G[
2?- X is 3+5.
 X=8.        !ƒj‫ƒ א‬C‫[ن‬L
3?- X is 3-5.
 X= -2.       !ƒj‫ƒ א‬C‫[ن‬L
4?- X is 3/5.
 X=0.6.      !ƒj‫ƒ א‬C‫[ن‬L
5?- X is 3*5.
 X=15.       !ƒj‫ƒ א‬C‫[ن‬L
 

10
Muhammad Siddig H.

@ @òî™bíŠÛa@Þaë†Ûa
@ @ZïÈîiÛa@‰ˆ¦a@òÛa…
1?- sqrt(10,X).
 X=3.1622776601683795     !ƒj‫ƒ א‬C‫[ن‬L
@ @ïÈîjĐÛa@áríŠËìÜÛa@òÛa…
2?- log(1,X).
 X=1.0.        !ƒj‫ƒ א‬C‫[ن‬L
@ @HLNI@QP@÷bÿÛ@áríŠËìÜÛa@òÛa…
3?- log10(1,X).
 X=0.301029995.      !ƒj‫ƒ א‬C‫[ن‬L
@ @@òÔÜĐ½a@òàîÔÛa@òÛa…
4?- abs(-3,X).
 X=3.        !ƒj‫ƒ א‬C‫[ن‬L
@ @ZòàŽÔÛa@ïÓbi@òÛa…
5?- X is 10 mod 20.
 X=10.       !ƒj‫ƒ א‬C‫[ن‬L

@ @òîrÜr½a@Þaë†Ûa
@ @kî¦a@òÛa…
6?- sin(0,X).
X=0.0.        !ƒj‫ƒ א‬C‫[ن‬L
@ @âbànÛa@kîu@òÛa…
7?- cos(0,X).
X=1.0.        !ƒj‫ƒ א‬C‫[ن‬L
 3š‫دאא‬
8?-tan(0,X).
 X=0.0.        !ƒj‫ƒ א‬C‫[ن‬L
 
@ @

11

You might also like