صفحه 1:
© با فرب
شمه فان نش بان
3 = برنامهسازی ۰ 0 0
استاد:
دکتر کشاورزی
ارائهدهنده:
صفحه 2:
مقدمه
* مکانیزم های پایه ای در پرولوگث
- فراکردهای پرول و گ (Clauses)
- حقایق (5ا۲۵6)
- قوانین(1165)
- رویه ها (65ا0۳006)
* مکانیزم (backtracking) oF Jy» 52 > Xée
* تفاوت معنای توصیفی و رویه ای یک برنامه
صفحه 3:
مقدمه
اشیاء داده ای ساده
- ات ها ( ثابت های غیر عددی)
- اعداد
bs =
شیاه ساخت: یاقا
ols
معنای توصیفی یک پرنامه
معنای رویه ای یک برنامه
ارتباط معنای توصیفی و رویه ای SS برنامه
تغییر معنای رویه ای توسط تغیبر دادن ترتیب فرا کردها و اهداف
صفحه 4:
نمايش ليست ها
عمليات روى ليست ها
تعريف عملكرها
ليات رياضى
مقدمه
صفحه 5:
تعریف روابط بوسیله حقایق
پرولو گت یک زبان برنامه نویسی پرای محاسبات نمادین و غیر عددی می باشدا,
پرولو گ برای حل مسائلی که شامل اشیاء و روابط میان آنها می باشند بسیار
مناسب می باشد.
مثال : روابط خانوادگی
- این حقیقت که 1010 پدر 1300 است را در پرولو گ به صورت زیر نمایش می دهیم:
parent(tom, bob).
در اینجا 0816106 نام رابطه و 1010 و 130 آر گومانهای رابطه می باشند.
توجه: اسامی خاص مانند 1017 باید با یک حرف کوچک الفبا نوشته شوند.
صفحه 6:
Ge روابط بوسیله حقایق
* این برنامه از شش فرا کرد تشکیل شده است.
* هر فراکرد یک نمونه از رابطه 0216104 می باشد.
parent(tom, bob). (oom) (es)
parent(pam, bob).
parent(tom, liz). م - )
parent(bob, ann). ۳ مسر
parent(bob, pat). = ۳
parent(pat, jim). —
6
صفحه 7:
تعریف روابط بوسیله حقایق
آیا 0 پدر ۵1" می باشد؟
اين به صورت یک حقیقت در برنامه ذ کر شده است.
در برنامه چنین رابطه ای بیان نشده است.
برنامه نام 13610 را نشنیده است.
صفحه 8:
تعریف روابط بوسیله حقایق
جه كسى والد 17آ مى باشد؟
parent(X, liz). -?
پرول و گف در پاسخ به اين پرسش سعی می کند برای 26 مقداری بیابد که
عبارت بالا درست باشد.
0 2 2
فرزندان Bob چه کسانی می باشند؟
parent(bob, X). -?
X= ann;
X = pat;
no
مکانیزمی برای درخواست پاسخهای بیشتر pee
صفحه 9:
تعریف روابط پوسیله حقایق
چه کسانی والد چه کسانی می باشند؟
صفحه 10:
تعريف روابط بوسيله حقايق 3
جد 1117 چه کسی است؟ د ار
(۱) چه کسی والد 1117 است؟( فرض کنیم لا باشد) fir
(۲) چه کسی والد ۷ است؟ ( فرض کنیم 26 باشد)
اگر ترتیب دو درخواست را در پرسش بالا عوض کنیم معنای منطقی ثابت
باقی می ماند و بنابراین پرسش زیر همان پاسخ بالا لید می کند.
صفحه 11:
تعریف روابط پوسیله حقایق
نوه های 10100 چه کسانی هستند؟
11
صفحه 12:
5 2
تعریف روابط پوسیله حقایق ۱
4
آیا ۸ و ۳۵1 والد مشتركى دارئد؟ د لز
(6 چه کسی والد نله می باشد؟ (فرض می کب >( باقد)۷ 7۲
(۲) آیا این 26 والد ۳۵۲ نیز هست؟
12
صفحه 13:
تعریف روابط بوسیله حقایق
در پرولوگ تعریف روابط به سادگی توسط یک 2-تایی از اشیاء که رابطه
را ارضاء می کنندهانجام می شود.
کاربر به سادگی می تواند از پرولو گ در باره روابط تعریف شده در برنامه
پرس و جو کند.
یک برنامه پرولوگ از فرا کردها تشکیل می شود.
پرسش ها شامل یک يا چند هدف می باشند مانند:
parent(X, ann), parent(X. at).
ور سب به یک پر اشد در این صورت می گوییم
“ue doe ayy ارضاء می باشد.
اگر پرسشی دارای پاسخهای متعددی باشد پرول وگ هر تعداد پاسخی را
که کاربر بخواهد پیدا می کند.
13
صفحه 14:
تعریف روابط بوسیله قوانین
برنامه روابط خانوادگی را با افزودن اطلاعاتی مثلا درباره جنسیت افراد می
توان تعمیم داد:
female(pam).
male(tom).
male(bob).
female(liz).
female(pat).
female(ann).
male(jim).
روابط یکتایی و دوتایی.
صفحه 15:
تعریف روابط بوسیله قوانین
* تعریف رابطه 0115011۳82( عکس (parent a,
مثلا
).
(۲) از یک قانون کلی استفاده کنیم:
۷ مسب
parent(X, Y).
(۱) تمام روابط 011501108 را مانند روابط 731614 اضافه كنيم:
offspring(liz, tom
Head
L offspring(Y, x} |
یعنی بازاء هر 26 و ۰۷ اگر X والد ۷ باشدء آنگاه ۷ فرزند 26 می
باه
صفحه 16:
تعریف روابط بوسیله قوانین
آيا 2آرا فرزند 1010 است؟
offspring( liz, tom). -°2
نحوه پاسخ دهی پرول وگد:
چون قانون اسلاید قبل بازاء هر 26 و ۷ قابل اعمال است؛ بس بر اشیاء خاص انا و 10133"
نيز قابل اعمال مى باشد. برای اعمال اين قانون بر اين اشياء خاص. بايد لا را با 2آمآ و
X را با 1010 در قانون فوق جایگرین کنیم( نمونه دهی)
X=tom , Y=liz
پس از جایگذاری: یک نمونه خاص از قانون را به شکل زیر بدست می آوریم:
offspring(|iz, tom) :- parent(tom, liz)
اکنون پرول و گف. سعی.منی کند. که دریابد آپا بخش شرط قائون بالا درست."است. یا خین.
چون بخش شرط درست است ( با توجه به حقایق موجود در برنامه» بنابراین پاسخ
wag dale yes پرول و گ
16
صفحه 17:
تعریف روابط بوسیله قوانین
تعریف رابطه مادری:
_-mother(X, Y) :- parent(X, Y), female(X).
توجه: در قانون فوق علامت وی رگول به معنای تر کیب عطفی (۸۸100) شرایط
می باشد.
female 2 ~-/ ~=
x) ۳ ۵ (
parent offspring parent ‘mother — parent
عر جا
Pi 5 grandparent 1
ل 5 رقف
parent |
grandparent(X, Z) :- parent(X, Y), parent(Y, Z). 4 2
صفحه 18:
تعریف روابط بوسیله قوانین
نحوه قالب بندی پرنامه ها
grandparent(X, Z) :- parent(X, Y), parent(Y, Z).
۱
نحوه مناسب نوشتن قوانين: يس
grandparent(X, Z)
parent(X, Y),
parent(Y, Z).
صفحه 19:
تعريف روابط بوسيله قوانين 2 0
تعريف رابطه خواهرى (515]61)
ار
sister(X, Ye /
parent(Z, X),
parent(Z, Y), parent
female(X).
parent
صفحه 20:
تعریف روابط بوسیله قوانین
تصحیح رابطه خواهری
sister(X, Y) :-
parent(Z, X),
parent(Z, Y),
female(X),
different(X, Y).
20
صفحه 21:
تعریف روابط بوسیله قوانین
۰ نکات مهم:
- تعمیم برنامه های پرول و گ با افزودن فراکردهای جدید.
- انواع فراكردها:
* حقايق : بيانكر جيزهايى كه همواره و بدون شرط درست مى باشند.
glia Surge تست ؟لها بتكن بة برغت رايط دار
* پرسشن ها وسیله ای که کاربر با آن می تواند از برنامه بيرسد جه چیژهایی درست هستند:
- فراکردها از دوقسمت تشکیل می شوند ( سرآیند و بدنه)
؛ قسمت بدنه آنهاتهی
* پرسش ها فقط دارای بدنه
۵ (قرالزن: هارای هی قواقسمت:
21
صفحه 22:
قوانين باز گشتی
(predecessor) (solte| daly Ue i
جد متقیم (والد)
ew a
parent | مر
SS
ae
>
parent
75
fo
/
6
parent predecessor
52
parent
N
۳
i
ss 5
22
صفحه 23:
قوانین با ز گشتی
تعریف رابطه ‘predecessor
predecessor(X, Z) :-
parent(X, Z).
predecessor(X, Z) :-
parent(X, Y).
parent(Y, Z).
predecessor(X, Z) :-
parent(X, Y1),
parent(Y1, Y2),
parent(Y2, Z).
23
صفحه 24:
قوانين بازكشتى 20
تعریف 700500550۳ به صورت باز گشتی:
۳
- predecessor(X, Z) = %prl
fi parent(X, Z).
predecessor(X, Z):- 2
parent(X, Y),
ptedecessor(Y,, Z).
صفحه 25:
قوانین باز گشتی
تعریف رویه (01066016):
مجموعه تمام فراکردهای مربوط به یک رابطه: مانند رابطه
۲ در مثال روابط خانوادگی که توسط دو فرا کرد
تعریف شده است.
(comment) oes ¥ gl yl در پرول و گ:
this is a comment */ */
this is also a comment %
25
صفحه 26:
5 ۱ .
نحوه پاسخ گویی به پرسشها در پرول وگ
در پرولوگ هر پرسش شامل یک یا چند هدف می باشد.
پرولوگ برای پاسخ گویی به پرسشها سعی می کند این اهداف را ارضاء کند
ارضاء هدف یعنی اینکه نشان دهیم هدف درست است ( با اين فرض كه
روابط موجود در برنامه درست می باشند).
ارضاء هدف یعنی اینکه نشان دهیم هدف مورد نظر به طور منطقی از حقایق و
قوانین موجود در برنامه پیروی می کند.
گر پرسشی شامل متفیر باشد. برولوكك بايد دريايد كه كدام اشياء خاص ( به
جای متفیرها) اهداف را برآورده می کنند. اگر چنین اشیائی یافت شونده
پرولو گ نمونه دهی های متفیر ها را به کاربر نشان می دهد وگرنه
پرول وگ پاسخ منفی (100) برمی گرداند.
26
صفحه 27:
نحوه پاسخ گویی به پرسشها در پرولوگگ
مثال:
- fallible(X) :- man(X).
man(socrates).
2. fallible(socrates).
yes
یک مثال پیچیده تر:
2 predecessor(tom, pat).
parent(bob, pat) > predecessor(bob, pat)
parent(tom, bob) and predecessor(bob, pat) >
predecessor(tom, pat)
27
صفحه 28:
نحوه پاسخ گویی به پرسشها در پرول وگ
predecessor(tom, pat)
_ predecessor(X, Z) :- parent(X, Z).
X=tom, Z= pat
هدف جدید:
parent(tom, pat)
چون هیچ فراکردی در برنامه وجود ندارد که بخش سرآیند آن با این هدف
باشدء بنابراین این هدف مردود می شود. elo (match) gles
اکنون پزولوگف بهتتمت مدف اول غقیگره:می کند تا زوش دیگری:براعه
ارضای آن پیدا کند. بنابراین قانون دوم 01006005501 را امتحان می کند.
28
صفحه 29:
نحوه پاسخ گویی به پرسشها در پرول وگ
predecessor(X, Z) :-
parent(X, Y),
predecessor(Y, Z).
مانند قبل متغيرهاى 25 و 2 با 010] و )08 نمونه دهی می شوند:
X = tom, Z = pat
اكنون هدف اصلى يعنى predecessor(tom, pat) با دوهدف جدید زیر جایگزین می
شود:
parent(tom, Y),
predecessor(Y, pat)
اکنون پرول وگ سعی می کند این دو هدف را به ترئیب نوشتن آنها ارضاء کند.
29
صفحه 30:
نحوه پاسخ گویی به پرسشها در پرول وگ
هدف اول parent(tom, Y) Qe به راحتی با یکك حقیقت برنامه
ul + gulls parent(tom, bob) بنابراین هدف اول بانمونه دهی 900 و
می شود و هدف دوم به هدف زير تبدیل می شود:
predecessor(bob, pat)
دوباره برای ارضاء این هدف قانون اول 01606065501 امتحان می شود بعنی قانون زیر:
predecessor(X’, Z’) :-
parent(X’, Z’).
از تطابق هدف و بخش سرآیند این قانون نمونه دهی زیر پدست می آید:
1 < 7 ,0۵0 < 26۳
و هدف فعلی با هدف جدید زیر جایگزین می شود:
parent(bob, pat)
اين هدف بلافاصله قابل ارضاء می باشد. و بنابراین هدف اصلی نیز ارضاء می شود.
30
صفحه 31:
نحوه پاسخ گویی به پرسشها در پرول وگ
predecessor(tom, pat)
by rule pri 1 1 by rule pr2
parent(tom, Y)
predecessor(Y, pat)
parent(tom, pat)
no Y=bob ll by fact parent(tom, bob)
predecessor(bob, pat)
by rule prt
parent(bob, pat)
yes
31
صفحه 32:
معانی توصیفی و رویه ای برنامه ها
معنای توصیفی: تعیین می کند خروجی برنامه چیست (What)
معنای رویه ای: تعیین می کند خروجی برنامه چگونه بدست می آید(/۱0)
ازآنجا که نتایج برنامه توسط معنای توصیفی آن تعیین می شوند از نظر اصولی
معنای توصیفی برای نوشتن برنامه کافی می باشد.
فهم جنبه های توصیفی ساده تر است و نوشتن برنامه را ساده می کند.
32
صفحه 33:
اشیاء داده ای 2
صفحه 34:
اشیاء داده ای
* در پرولوگ نوع یک شیء توسط ساختار گرامری آن مشخص می شود.
- متفیرها با یک حرف الفبایی بز رگف شروع می شوند.
- اتم ها با يكك حرف الفبایی کوچکک شروع می شوند.
* در پرولوگ اتم ها و متفیر ها رشته هایی از کاراکترهای زیر می باشند:
محرو و الى ب
- سروف #وسكف Fab
- ارقام 0 1 ...ء 9
- كاراكتز هاق قاض عاد ل _ #4 , اه 2
34
صفحه 35:
اشیاء داده ای
* اتم ها به سه شکل می توانند ساخته شوند:
- رشته هایی از حروف» ارقام و کاراکتر زیرخط *_ "۰ که با یک حرف
کوچک شروع می شوند مانند :
miss Jones. x_.x2AB x25 .nilanna +
- رشته هایی از کاراکترهای خاص مانند:
Se =
- رشته هایی از کاراکترها که در یکك کوتیشن تک قرار دارند:
“Miss Jones’ “South_America’ .‘Tom’ +
35
صفحه 36:
اشیاء داده ای
* اعداد در پرولوگ:
- اعداد صحیح : 97- ,0 ,1313 ,1
- اعداد حقیقی: 100.2 ,0.0035- ,3.14
- اعداد حقیقی در پرول وگ کمتراستفاده می شوند.
3 متغیرها: رشته هایی از حروف: ارقام و کاراکتر زیرخط می باشند
که با یک حرف بزرگ و یا کاراکتر زیر خط شروع می شوند؛
مانند:
X, Result, ShoppingList, x23, 23 —
36
صفحه 37:
متغیرها
* اكر متغيرى در یک عبارت فقط یکک پار ظاهر شود؛ می توان به جای آن از متغير بى نام
ge) osléxul(anonymous) 15
haschild(X) :- parent(X, Y).
haschild(X) :- parent(X, _).
sombody_has_child :- parent(X, Y).
sombody_has_child :- parent(_, _).
اگر متغیر بی نام در یک پرسش قرار بگیرد؛ مقدار آن به خروجی فرستاده نمی شود:
?- parent(X,_).
توجه: حوزه لغوى يكك متغير يكك فراکرد است.
37
صفحه 38:
ساختارها
* اشیاء ساخت يافته (ساختارها)ناشیایی که شامل چندین مولفه می باشند. خود مولفه ها
می توانند ساختار باشند.
date(1, may, 200).
date(Day, may, 200).
عبارت ols (terms) اشیاء داده ای در پرول وگ عبارت محسوب می شوند مانند
date(1, may, 200) ,may
Mate, ۲ 2001)
er 5 3 0 /
1 may 2001 functor arguments
38
صفحه 39:
تطایق
* _عمل تطابق مهمترین عملی است که برروی عبارت ها در پرول و گگ انجام می گیرد.
*_گوییم دو عبارت داده شده باهم تطابق دارند اگر:
(۱) یکسان باشند. يا
(۲) متغیرها در هر دو عبارت بتوانند به گونه ای با اشیاء جایگزین شوند که بعد از
جایگزینیعبارت ها با هم یکسان شوند. مثلا:
date(D, M, 200) ,
date(D1, may, Y1)
دو عبارت بالا با هم تطایق دارند اگر: ۱
BEDE جایگزین شود. DLUD-1
M = may با 108 جایگزین شود. ۷-۲
Y1= 2001 با 2001 جایگزین شود. ۷۲1-۳
39
صفحه 40:
تطایق
* عبارت های زیر قابل تطابق نمی باشند:
date(D, M, 200),
date(D1, M1, 144%
date(X, Y, Z),
point(X, Y, Z)
40
صفحه 41:
تطایق
* توچه: عمل تطابق در پرول وگ همیشه منجر به عمومی ترین نمونه دهی ها
gt شود
2- date(D, M, 2001) = date(D1, may, Y1),
date(D, M, 2001) = date(15, M, Y).
12-5
M= may
21-5
Y1 =2001
Y= 200
41
صفحه 42:
تطایق
9 الگوریتم تطابق دو عبارت 1 ,5:
(۱) اگر ۲ ٩, هردو ثابت باشند» درصورتی قابل تطابق هستند که
هر دو شیء یکسانی باشند.
(۲) اگر ٩ یکک متغیر و 1 هر چه باشد. آنگاه قابل انطباق هستند و
5 با 1 نمونه دهى می شود و برعکس.
(۳) اككر 5 و '1 ساختار باشنده تنها در صورتی تطابق مى يابند كه:
الف- 5 و '1' داراى bel functor يكسانى باشند» و
ب- تمام مولفه هاى متناظرشان تطابق يابند.
42
صفحه 43:
معنای توصیفی برنامه ها
0۰ -: ۳ ۰
معنای توصیفی: درست است اگر () و *1 درست باشند.
معنای رویه ای:
برای ارضاء 7 ابتدا 0 و سپس 5 را ارضاء کن.
برای حل مسأله 7 ابتدا زیر مسأله 0۵ و سپس زیر مسأله 15 را حل
کن.
بنابراین تفاوت در اهمیت ترتیب بخش شرایط می باشد.
43
صفحه 44:
معنای توصیفی برنامه ها
معنای توصیفی: ۳ درست است اگر () درست باشد ها *1 درست باشد.
معادل باد
Ry
اولویت کاما از سمی کالن بیشتر است:
:- 0, 8: ٩, [۰
معادل است با
= (Q. R); (S, T, U).
یا
QR.
ey 0.0.
44
صفحه 45:
معنای رویه ای برنامه ها
* معنای رویه ای چنگوفگیی پاسخ گویی پرولوگ به پرسشها را
مشخص می کند.
* بنابراین معنای رویه ای پرولوگ» یک رویه براى اجراى ليستى از
اهداف ( پرسش) در رابطه با یک برنامه می باشد.
program
| — failure\suecess indicator
goal list execute
+ instantiation of variables
45
صفحه 46:
نمايش ليست ها
* تعريف ليست:
هر دنباله متناهى از تعدادى عنصر مانند 2 ,... ,83 ,22 و8 كه ترتيب آنها
مهم باشد. چنین لیستی در پرولو گ به صورت زیر نمایش داده می شود:
[aj, a, a3, ---, a, ]
مثال:
[ann, tennis, tom, skiing]
لیستها یک نوع ساختار هستند و بنابراین در پرولوگ نمایش داخلی آنها به
صورت درختی می باشد.
46
صفحه 47:
نمايش ليست ها
* جون دنباله يكك ليست خود يكك ليست مى باشدء بنابراين مى تواند تهى باشد و يا
سرآيند و دنباله خود را داشته باشد.
[ann, tennis, tom, skiing] =
.(ann, (tennis, (tom, .(skiing, []) ) ) )
[skiing] = (skiing, []) 2
os
ann 6
بل کر
tennis
%
skiing ۱۱
47
صفحه 48:
نمايش ليست ها
انواع لیست:
- لیست تهی که با [] نمایش داده می شود.
- ليست غير تهى
در مورد ليست غير تهى مى نوان آن را متشكل از دو قسمت در نظر كرفت:
- سرآيند؛ عنصر اول ليست
- دنبله: بقیه عناصر لیست
مثلا در لیست مثال قبل 0110 سر يند ليست و دنباله خود يكك لیست به صورت زیر
[tennis, tom, skiing]
به طور کلی سرآیند هر چیزی مي تواند باشد ( هر شیء پرو و گ) ما دنبله باید خود یکک لیست باشد.
این دوقسمت را می توان با یک 1180106 ویزه با هم ت کیب نمود:
(Head, Tail)
48
صفحه 49:
نمايش ليست ها
اكر ليست سآ به صورت زير باشد:
زعي يه حدر
مى توانيم بنويسيم:
Tail = [b, c] , L=.(a, Tail)
روش Sus
L= [al Tail]
به طور کلی:
[a, b, c] = [aj [b, ¢] } = La, bl [c] ]= [a, b, ¢| 1]
صفحه 50:
عملیات روى ليست ها
* از لیستها می توان برای نمایش مجموعه ها استفاده نمود با اين
تفاوت که ترتیب عناصر در مجموعه ها مهم نیست.
* برخی عملیات روى ليست ها:
- بررسى اينكه آيا يكك شىء خاص در لیست وجود دارد.
- اتصال دو ليست
- حذف عناصر موجود در ليست
- اضافه نمودن عناضر د يديه ليست
50
صفحه 51:
عملیات روى ليست ها
* بياده سازى عمل عضويت:
member( X, L)
member( X, [X| Tail] ).
member( X, [Head| Tail] ) :-
member( X, Tail).
صفحه 52:
* اقال:
صفحه 53:
عملیات روى ليست ها
پیده سازی عمل اتصال لیست ها
cone( L1, L2, L3)
cone( |], L, L).
cone( [X| LI], 2, [X| L3] ) :-
[X| Lt]
006) 1218, سس و اسر لا
¥ Li | L2
= سح
13
x 13
تا 2
113۱
53
صفحه 54:
صفحه 55:
مثال:
عملیات روی لیست ها
?- cone( Before, [may| After],
[jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec) ).
Before = [jan, feb, mar, apr]
After = [jun, jul, aug, sep, oct, nov, dec]
2- cone(_, [M1, may, M2|_],
[jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec] ).
MI = apr
M2 = jun
memberl( X, L) :-
cone(L1, [X, L2]. L).
55
صفحه 56:
عملیات روی لیست ها 9(
* اضافه نمودن یک عنصر جدید به لیست
Ohya, [X| L]).
متال:
56
صفحه 57:
عمليات روى ليست ها
* حذف يكك عنصر از ليست
(1آ ,نآ ا )اعل
del( X, [X| Tail], Tail).
del( X, [Y| Tail], [Y| Taill] ) :-
del( X, Tail, Tail).
صفحه 58:
صفحه 59:
عمليات روى ليست ها
permutation({], []).
permutation( [X| L], P) :-
permutation( L, L1),
| permute L
insert( X, L1, P). 55
~Y - سم
2
یه
insert X
59
صفحه 60:
* مثال:
صفحه 61:
61
صفحه 62:
عملیات ریاضی
7-2-1 + 2:
X=1+2
۳ 99 1 + ۰
> eB)
2- X is 5/2,
Y is 5//2,
Zis5 mod 2.
X25
sin( X), cos( X), atan( X), log( X), exp( X) بو خى توابع رياضى:
62
صفحه 63:
عملیات ریاضی
* عملگر های رابطه ای
عملگر
ty
X<Y
xX>=¥
X=<Y
X==
xo ¥
توضیح
بزرگتر
بزرگتر یا مساوی
كوجكتر يا مساوى
مساوى
نامساوى
63
صفحه 64:
عملیات ریاضی
بط 4 2 اک 2 +9
yes
71+ 2-2+ 1
no
9-11۸ < 8 + ۰
a2
B=1
2-2773% 10000
yes
2- born( Name, Year),
Year >= 1980,
Year =< 1990.
64
صفحه 65:
۱ 2 0
عملیات ریاضی
A>
‘
len
eth
a ([], 0
5 0
21 _| Tail] 5
( Tail, 00 ۱ "۹
| cdl *
¢
Ni
1 is NI
ef
1
صفحه 66:
عملیات ریاضی ©
* مثال: محاسبه فاکتوریل N )
ار
F is 1. - :۲ ,0 )01اه
factorial( N, F) :-
N>0,
NlisN-1,
factorial(N1, F), _
Fis N* Fl. _
صفحه 67:
منابع
* Ivan Bratko - Prolog programming for
artificial intelligence.
* اصر رضوی. آموزش پرولوگ.
۰. ۱۵5://۷۷۷۷۷۷۰ ۰۵۵۰۵۵0۵ -
jrfisher/www/prolog tutorial/2.html
www.irebooks.com
+ http://groups.umd.umich.edu/cis/course.des
lcis479/prolog.html