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

متغیر های بی نام:
معمولا برای جلوگیری از پیچیدگی برنامه استفاده می شود.اگر ما به یکسری از اطلاعات معین نیاز داشته باشیم ،ما می توانیم برای چشم پوشی از اطلاعاتی که نیاز نداریم از متغیر های بی نام استفاده کنیم.
برای متغیر های بی نام می توان از under score استفاده نمود.از این
متغیر می توان بجای متغیر های دیگر استفاده نمود.
فقط باید به این نکته توجه داشت که به متغیر های بی نام نمی توان مقدار دهی نمود.
مثال:
کد:

PREDICATES
male(symbol)
female(symbol)
parent(symbol, symbol)
CLAUSES
male(bill).
male(joe).
female(sue).
female(tammy).
parent(bill,joe).
parent(sue,joe).
parent(joe,tammy).

در این مثال شما می خواهید ببینید که چه اشخاصی والدین هستند و نیازی به دانستن نام فرزندان آنها ندارید.
کد:

GOAL
parent(Parent, _).

جوابی که پس فرستاده می شود بصورت زیر است.
کد:

Parent=bill
Parent=sue
Parent=joe
3 Solutions

از متغیر بینام می توان در fact ها نیز استفاده نمود.
برای مثال:
کد:

owns(_, shoes).
eats(_).

که منظور عبارت زیر است:
Everyone owns shoes.
Everyone eats.
Goal:
یکی از بخشهای اصلی زبان پرولوگ می باشد.شما میتوانید سوالات خود را به منظور از استنتاج برنامه در این بخش وارد نمایید.
Goal می تواند ساده باشد مانند:
کد:

likes(ellen, swimming).

یا
کد:

likes(bill, What).

یا می تواند شکل پیچیده تری داشته باشد.برای مثال از دوبخش تشکیل شده باشد.
کد:

likes(Person, reading), likes(Person, swimming).

یک Goal که از دو بخش یا بیشتر ساخته می شوند،Goal های ترکیبی گفته می شود(Compound Goal).به هر بخش از Goal های ترکیبی یک Subgoal گفته می شود.بعضی اوقات ما نیاز به اشتراک دو Goal داریم.برای مثال Parent،شاید نیاز داشته باشیم که بدانیم که کدام یک از والدین مرد است که در این صورت از شکل دستوری زیر استفاده می کنیم:
کد:

Goal parent(Person, _), male(Person).

پرولوگ ابتدا سعی می کند که subgoal اولی را انجام دهد که parent(person) است.بعد از جستجو در داخل Clauses و به جواب رسیدن اولین subgoal نوبت به حل قسمت دوم می باشد.
کد:

Male(Person).

در صورت صحیح وارد شدن Goal نتیجه مورد نظر عبارت زیر خواهد بود:
کد:

Person=bill
Person=joe
2 Solutions


Goal های ترکیبی:
شما می توانید از Goal های ترکیبی برای حل هر دو Subgoal A وSubgoal B که True هستند (پیوسته) بوسیله جدا کننده Subgoal ها با کاما(،)استفاده نمایید.و یا می توان از ( برای goal منفصل استفاده نمایید.
به مثال زیر توجه نمایید:
جهت ترکیب subgoal هی می توان از دو کاراکتر (,) و ( استفاده نمود.
کاراکتر کاما معادل استفاده از And در زبانهای برنامه نویسی ویژوال بیسیک و یا زبانهای مشابه است.هنگامی که از کاما استفاده می شود منظور این است که تمام بخشهای subgoal ها باید جواب داشته باشد.
کاراکتر سیمی کالم ( معادل استفاده از Or در زبانهای برنامه نویسی دیگر می باشد. .هنگامی که ازسیمی کالم ا استفاده می شود منظور این است که تنها یکی از بخشهای subgoal ها باید جواب داشته باشد.
به زبان ساده تر می توان بصورت زیر استنباط نمود:

کد:

If condition1=true and condition2= true Then Print
If condition1=true or condition2= true Then Print
Astaraki آفلاين است   پاسخ با نقل قول
از Astaraki تشكر كرده اند:
mi na (۰۲-۱۷-۱۳۹۱), nasersalehiazar (۰۸-۲۵-۱۳۸۹)