نمايش پست تنها
قديمي ۰۶-۱۷-۱۳۸۸, ۰۲:۱۸ بعد از ظهر   #8 (لینک دائم)
Astaraki Female
Administrator
 
آواتار Astaraki
 
تاريخ عضويت: خرداد ۱۳۸۷
محل سكونت: تهران-کرج!
پست ها: 3,465
تشكرها: 754
16,337 تشكر در 3,127 پست
My Mood: Mehrabon
ارسال پيغام Yahoo به Astaraki
Post Visual Prolog Version 5.x

مثال 4:
مثال زیر را در پرولوگ نوشته و اجراکنید:
کد:

PREDICATES
can_buy(symbol, symbol)
person(symbol)
car(symbol)
likes(symbol, symbol)
for_sale(symbol)
CLAUSES
can_buy(X,Y):-
person(X),
car(Y),
likes(X,Y),
for_sale(Y).
person(kelly).
person(judy).
person(ellen).
person(mark).
car(lemon).
car(hot_rod).
likes(kelly, hot_rod).
likes(judy, pizza).
likes(ellen, tennis).
likes(mark, tennis).
for_sale(pizza).
for_sale(lemon).
for_sale(hot_rod).
GOAL
can_buy(Who, What).

در بخش goal برنامه عبارتهای زیر را بنویسید و امتحان کنید:
کد:

can_buy(Who, What).
can_buy(judy, What).
can_buy(kelly, What).
can_buy(Who, hot_rod).

تمرین:
1.زبان طبیعی مربوط به جملات زیر را بیابید:
کد:

eats(Who, What):- food(What), likes(Who, What).
pass_class(Who):-did_homework(Who), good_attendance(Who).
does_not_eat(toby, Stuff):- food(Stuff), greasy(Stuff).
owns(Who, What):- bought(Who, What).

2.زبان طبیعی زیر را به معادل پرولوگ اش تبدیل کنید:
[code[
a. A person is hungry if that person's stomach is empty.
b. Everybody likes a job if it's fun and it pays well.
c. Sally likes french fries if they're cooked.
d. Everybody owns a car who buys one, pays for it, and keeps it.
[/code]
Predicates (Relations) :
نامهای سمبلیکی از ارتباط ها، پریدیکیت نام دارد.آبجکت هایی که توسط پردیکیت با هم ارتباط بر قرار می کنند،آرگومان نام دارند.اگر فاکت likes(bill,cindy) را در نظر داشته باشیم،likes یک پریدیکیت است و bill و cindy هم آرگومان هستند.
در زیر پریدیکیت های با آرگومان و بدون آرگومان را نمایش داده ایم:
کد:

pred(integer, symbol)
person(last, first, gender)
run
insert_mode
birthday(firstName, lastName, date)

یک پریدیکیت ممکن است هیچ آرگومانی نداشته باشد.استفاده از چنین پریدیکیتهایی محدود است.شما از پرسشهایی نظیر person(rosemont,Name,male) به منظور پیدا کردن نام کوچک آقای resemont استفاده نمایید.اما پریدیکیتهای بدون آرگومان چه استفاده ای می تواند داشته باشد؟شما چه استفاده ای از run در برنامه می توانید بکنید؟موارد استفاده از چنین حالتهایی بسیار کم اتفاق می افتد برای نمونه وقتی که شما می خواهید رفتارهای متفاوتی از وابستگی حالت insert_mode راداشته باشید.در فصل های آتی به مثالهایی در این مورد برخورد خواهیم کرد.


متغیر ها:
متغیر ها در پرولوگ شما را به نوشتن های عمومی ،فاکت ها ،رولها و پرسش ها قادر می سازند.
نام متغیر ها در ویژوال پرولوگ باید با حروف بزرگ شروع شوند یا یک Under Score باشدوبعد از کارکتر حرف بزرگ ابتدایی ، هر کارکتر عددی ، حروف کوچک،بزرگ و یا کارکتر Underline می توان استفاده نمود.
برای مثال:
کد:

My_first_corrent_variable_name
Sales_10_11_86

نمونه های زیر اشتباهند.
کد:

1stattempt
second_attempt
"disaster"

در این پرسش ساده می توانید از متغیر برای پیدا کردن اینکه چه کسی tennis را دوست دارد استفاده نمایید.
کد:

likes(X,tennis)

در این پرسش از علامت X بعنوان متغیر،برای نشان دادن اینکه کسانی را که در حال حاضر tennis را دوست دارند ولی ما نامشان را نمی دانیم، استفاده شده است .
سعی کنید در انتخاب نام متغییر از نامهای متناسب با موضوع استفاده کنید تا خوانایی برنامه شما بالا باشد:
کد:

likes(Person, tennis).

بهتر است از:
کد:

likes(X, tennis).

از این مثال این است که شما عادت کنید بر اساس عبارات و کلمه های بامفهوم جملات خود را بسازید.این کار باعث خوانایی در کد های شما خواهد شد.
Astaraki آفلاين است   پاسخ با نقل قول
از Astaraki تشكر كرده اند:
mi na (۰۲-۱۷-۱۳۹۱), nasersalehiazar (۰۸-۲۵-۱۳۸۹)