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

به مثال زیر توجه نمایید:
کد:

predicates
car(symbol,long,integer,symbol,long)
truck(symbol,long,integer,symbol,long)
vehicle(symbol,long,integer,symbol,long)
clauses
car(chrysler,13000,3,red,12000).
car(ford,90000,4,gray,25000).
car(datsun,8000,1,red,30000).
truck(ford,80000,6,blue,8000).
truck(datsun,50000,5,orange,20000).
truck(toyota,25000,2,black,25000).
vehicle(Make,Odometer,Age,Color,Price):-
car(Make,Odometer,Age,Color,Price)
;
truck(Make,Odometer,Age,Color,Price).
Goal
car(Make, Odometer, Years_on_road, Body, 25000).

این Goal سعی می کند ، ماشینی را که توصیف شده است ،در Clauses بیابد.یعنی ماشینهایی را که دقیقا قیمت آنها 25000 دلار است.
جوابی که باز گردانده خواهد شد بصورت زیر است:
کد:

Make=ford, Odometer=90000, Years_on_road=4, Body=gray
1 Solution

البته شاید ما فقط چنین جوابی را نخواهیم ،بلکه بخواهیم لیست کلیه ماشینهایی را که قیمتشان کمتر از 25000 دلار است را نشان بده که در اینصورت باید کد goal مورد نظر بصورت زیر باشد.
کد:

car(Make, Odometer, Years_on_road, Body, Cost),/*subgoal A and*/
Cost < 25000. /*subgoal B */

در واقع ما می دانیم که فقط از طریق عملگر و منطقی می توان به چنین نتیجه ای رسید.
برای حل این مثال ابتدا باید Subgoal اولی به جواب برسد
کد:

car(Make, Odometer, Years_on_road, Body, Cost).

و بعد از آن Subgoal دومی باید مقدار صحیحی ره به ما ارائه دهد.
Cost < 25000.
زبان طبیعی که در واقع سوال مورد نظر ما ست بصورت زیر است:
کد:

Is there a car listed that costs less than $25000?, or is there a
truck listed that costs less than $20000?

برای نوشتن goal های ترکیبی عبارتهای بالا ، در زبان پرولوگ،از دستورات زیر نیز می توان استفاده کرد:
کد:

car(Make,Odometer,Years_on_road,Body,Cost), Cost<25000
; /* subgoal A or */
truck(Make,Odometer,Years_on_road,Body,Cost), Cost < 20000.
/* subgoal B */

در این Goal می توان این استنباط را داشت که ، اگر یک Car با شرایط ذکر شده وجود داشت آن را نمایش بده(عملیات موفقیت آمیز بوده است) و در غیر این صورت یک Truckرا با شرایطی که ذکر شده بیاب.
Astaraki آفلاين است   پاسخ با نقل قول

  #ADS
نشان دهنده تبلیغات
تبليغگر
 
 
 
تاريخ عضويت: -
محل سكونت: -
سن: 2010
پست ها: -
 

نشان دهنده تبلیغات is online