بخشی از پاورپوینت

اسلاید 1 :

سمینار درس : برنامه سازی منطق
اتصال C# به PROLOG

اسلاید 2 :

چرا؟
ترکیب برنامهنویسی منطقی و شئگرا
بهرهگیری از امکانات .NET
ایجاد واسطهای کاربری برای کار با برنامههای منطقی
نوشتن برنامههای منطقی با قابلیت انعطاف بیشتر
کاهش پیچیدگی کار با پایگاه دانش

مقدمه

اسلاید 3 :

چگونه؟

استفاده از یک کتابخانهی .NET برای برقراری ارتباط بین C# و Prolog
این کتابخانه توسط SWI-Prolog طراحی و پیادهسازی شده است.
امکانات:
قابلیت تبدیل تایپهای .NET به Prolog و بلعکس
قابلیت ایجاد پرسش (query) از طریق C#
قابلیت مدیریت استثناء

اسلاید 4 :

موارد زیر باید روی سیستم نصب شده باشد:
آخرین ورژن نرمافزار Prolog
.NET Framework نسخه 3.5 یا بالاتر
Visual Studio (اختیاری، برای آسانتر شدن کار)

برای شروع

اسلاید 5 :

دانلود فایلهای مورد نیاز از سایت
http://www.lesta.de/prolog/swiplcs/download/index.htm
برای شروع

اسلاید 6 :

افزودن مسیر bin برنامهی Prolog به مسیرهای سیستم عامل
My Computer>Properties
Advanced system settings>Advanced
Environment Variables

اسلاید 7 :

افزودن فایل SwiPlCs.dll به پروژهی .NET

اسلاید 8 :

نمونه برنامه

اسلاید 9 :

ساختار کتابخانه
قسمت اصلی کتابخانه
و برقراری ارتباط
شامل بخشهای:

برنامههای چندنخی
مدیریت استثنا
جریانهای ورودی، خروجی، شبکه و .

اسلاید 10 :

رابط اصلی Prolog و C#
کلاسها و ساختارها:
PlEngineکلاس استاتیک جهت دسترسی به موتور Prolog
PlTermساختار برای کار با دادههای Prolog
PlTermVبردار از PlTerm
PlQueryکلاس جهت پرسش از Prolog
فضای نام SbsSW.SwiPlCs

اسلاید 11 :

این کلاس ارتباط با موتور Prolog را برعهده دارد و شامل موارد زیر است:
Initialize(String[ ])
راهاندازی موتور Prolog با توجه به آرگومانهای مورد نظر (به راهنما مراجعه شود)
IsInitialized
بررسی اینکه آیا موتور Prolog راهاندازی شده است یا خیر
PlHalt( )
متوقف کردن موتور Prolog
PlCleanup( )
آزادسازی منابع استفاده شده
کلاس PlEngine

اسلاید 12 :

مثال:
کلاس PlEngine

اسلاید 13 :

اعضای ساختار PlTerm:

سازندهها:
PlTerm(String)ساخت ترم متناظر با یک رشته
PlTerm(Int32)ساخت ترم متناظر با یک عدد صحیح
PlTerm(Double)ساخت ترم متناظر با یک عدد اعشاری

مشخصهها:
ساختار PlTerm
Arity IsAtom IsAtomic IsCompund IsFloat IsGround IsInteger IsList IsNumber IsString

IsVar Item[ ] Name PlType

اسلاید 14 :

اعضای ساختار PlTerm:

متدها:
Add(PlTerm)اضافه کردن یک عنصر به لیست
AddList(PlTerm)اضافه کردن یک لیست به لیست دیگر
Unify( PlTerm )همسانسازی با یک ترم
NextValue( )عنصر بعدی در لیست

متدها (عملگرها):
برای اکثر عملگرهای Prolog مانند تساوی، کوچکتر بزرگتر و . توابع معادل آن برای PlTermها نیز وجود دارد.
ساختار PlTerm

اسلاید 15 :

اعضای کلاس PlTermV
سازندهها:
PlTermV(Int32)
PlTermV(PlTerm)
PlTermV(PlTerm,PlTerm)
PlTermV(PlTerm,PlTerm,PlTerm)

مشخصهها:
Item[Int32]انتخاب ترم با اندیس مورد نظر از بردار ترمها
Sizeتعداد ترمهای موجود در بردار ترمها
کلاس PlTermV

اسلاید 16 :

اعضای کلاس PlQuery

سازندهها:
PlQuery(String)
PlQuery(String,PlTermV)

مشخصهها:
SolutionVariablesمتغیرها بعد از مقداردهی (جوابها)
Variablesمتغیرهای پرسش (برای کار با پرسش)
کلاس PlQuery

اسلاید 17 :

اعضای کلاس PlQuery

متدها:
PlCall(…)فراخوانی پرسش در Prolog
NextSolution( )پاسخ بعدی (در صورت وجود) برای پرسش
ToList( )دریافت همهی پاسخها و قرار دادن در یک لیست
کلاس PlQuery

اسلاید 18 :

روش 1)

استفاده از متد استاتیک PlCall موجود در کلاس PlQuery
این روش برای پرسشهایی که جنبهی عملیاتی دارند و پاسخ آنها برایمان مهم نیست استفاده میشود.
روی متغیرهای پرسش کنترل وجود دارد.
قابلیت انعطاف ندارد.

مثال:
انواع راههای پرسش از Prolog

اسلاید 19 :

روش 2)

استفاده از نمونه کلاس PlQuery
قابلیت کنترل متغیرهای موجود در پرسش
کنترل کامل جوابهای ممکن
گرفتن Exceptionهای دقیقتر در صورت بروز خطا

مثال:

انواع روشهای پرسش از Prolog

اسلاید 20 :

اتوماتا سلولی یک-بعدی متناهی
یک آرایه خطی متناهی از اتوماتونها
دارای یک مجموعه متناهی شامل تمامی وضعیتهای ممکن
قوانین (محلی) انتقال از یک وضعیت به وضعیت دیگر
اتوماتا سلولی یک-بعدی دو وضعیتی
یک اتوماتای سلولی با مجموعه وضعیتهای دو عضوی (در اینجا سیاه و سفید)
پیادهسازی اتوماتا سلولی یک-بعدی دو وضعیتی

در متن اصلی پاورپوینت به هم ریختگی وجود ندارد. برای مطالعه بیشتر پاورپوینت آن را خریداری کنید