بخشی از پاورپوینت
اسلاید 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 :
اتوماتا سلولی یک-بعدی متناهی
یک آرایه خطی متناهی از اتوماتونها
دارای یک مجموعه متناهی شامل تمامی وضعیتهای ممکن
قوانین (محلی) انتقال از یک وضعیت به وضعیت دیگر
اتوماتا سلولی یک-بعدی دو وضعیتی
یک اتوماتای سلولی با مجموعه وضعیتهای دو عضوی (در اینجا سیاه و سفید)
پیادهسازی اتوماتا سلولی یک-بعدی دو وضعیتی