Presentation1 - دانشگاه حکیم سبزواری
Download
Report
Transcript Presentation1 - دانشگاه حکیم سبزواری
الرحیم
آموزش نرم افزار CLIPS
حمیدرضا رخصتی
دانشگاه حکیم سبزواری
پاییز93-
مقدمه
سیستم خبره یک برنامه کامپیوتری هوشمند است که از دانش و روش های استنتاج
برای حل مسائلی کمک می کند که بدلیل مشکل بودن نیاز به تجربه و مهارت انسان
دارد .این سیستم (شکل داخل دایره) یک واقعیت ( )Factرا از بیرون سیستم دریافت
می کند و با توجه به آن واقعیت با پاسخ و راه حل مناسب (خبرگی) را به عنوان
خروجی می دهد .اسن سیستم در حالت کلی از دو قسمت تشکیل شده است.
.1
.2
پایگاه دانش ())Knowledge Base(KB
موتور استنتاج ())Inference Engine(IE
•
واقعیت ()Fact
واقعیات در واقع همان اطالعاتی است که به عنوان ورودی به سیستم خبره داده می
شود.
قواعد ()Rule
ساختار دانشی است که یعنی اطالعات دانسته به اطالعات دیگری می تواند به
معلومات قبلی اضافه یا دانسته فرض شوند.
ساختار این قاعده یک یا چند پیش فرض در قسمت “اگر” را با نتیجه گیری ها در
قسمت “آنگاه” مرتبط می سازد .یک قاعده می تواند در غیر “در غیر اینصورت” هم
داشته باشد.
در واقع قاعده ساختاری است که با برقرار شدن الگو ” “Patternقسمت عمل ”“Action
اجرا می شود که اگر این Actionخودش معادل یک Patternدیگر شود ،عمل مربوط به
آن اجرا می شود و به همین ترتیب تا آخر پیدا خواهد کرد.
•
دراین مثال واقعیات ( )Factsدر حافظه کاری و قواعد ) (Rulesدر پایگاه دانش
قرار دارند .قاعده Rule1اجرا می شود و قسمت الگوی آن با Fact1تطبیق دارد
یعنی ( )Ball’s Color Is Redپس چون قسمت الگو با Fact1تطبیق داشت،
قسمت عمل Rule1یعنی I Like Itانجام می شود .سپس Rule2اجرا می
شود .چون الگوی آن با Fact2که این قسمت توسط عمل Rule1یعنی
) (I Like Itساخته شده است تطبیق دارد ،قسمت عمل Rule2یعنی I will Buy
Itاجرا می شود.
نرم افزار CLIPS
مورد استفاده برای ساخت سیستم های خبره
برخی از ویژگی های نرم افزار به شرح زیر می باشد:
•
•
•
•
•
•
از سر نام های عبارات C Language Implementation Production Systemگرفته شده است.
برای اولین بار توسط NASAدر واحد فناوری نرم افزار تولید شده است.
این نرم افزار رایگان بوده و در حال حاضر نسخه 6.3آن موجود می باشد.
این نرم افزار بر روی سیستم عامل های متفاوت مانند ویندوز ،لینوکس ،مک نصب می گردد.
این نرم افزار با استفاده از زبان Cساخته شده است.
این نرم افزار چند کاره می باشد .یعنی می تواند بصورت مدل های زیر با آن برنامه نویسی کنید:
.1بر مبنای قواعد ()Rule-based
•
.2بر مبنای شی گرایی )(Object-oriented
نرم افزار کلیپس فقط قواعد زنجیره ای پیشرو را پشتیبانی می کند.
نصب نرم افزار CLIPS
• منوهای نرم افزار CLIPS
منوی :File
•
•
•
•
•
•
•
:Newایجاد یک فایل جدید
:Saveذخیره فایل
:Openباز نمودن فایلی که قبال ایجاد و یا ذخیره شده است.
:Loadفراخوانی یا بارگذاری برنامه
:Closeبستن فایل جاری
:Printچاپ دستورات
:Exitخارج شدن و بستن نرم افزار
منوی :Edit
•
•
•
•
•
•
•
•
:Undoلغو دستورات انجام شده
:Cutبرش زدن متن انتخاب شده
:Copyکپی نمودن متن انتخاب شده
:Pasteتکمیل کننده دستورات Copy, Cut
:Deleteحذف نمودن متن انتخاب شده
:Select Allانتخاب کل صفحه
:Commentاعمال توضیحات
:UnCommentخارج نمودن از حالت توضیحات
منوی :Execution
•
• :Runمعادل دستور Runمی باشد( .توضیح داده خواهد شد)
• :Stepمعادل دستور Run1می باشد( .توضیح داده خواهد شد)
• :Clearمعادل دستور Clearمی باشد( .توضیح داده خواهد شد)
:Resetمعادل دستور Resetمی باشد( .توضیح داده خواهد شد)
منوی :Browse
•
:Defrule Managerاز این قسمت برای مدیریت (حذف و مشاهده) قواعد ()Rules
استفاده می شود.
•
:Deffacts Managerاز این قسمت برای مدیریت (حذف و مشاهده) واقعیات ()Facts
استفاده می شود.
•
:DefTemplate Managerاز این قسمت برای مدیریت (حذف و مشاهده) الگو
( )Templateاستفاده می شود.
•
:DefFunction Managerاز این قسمت برای مدیریت (حذف و مشاهده) توابع
()Functionاستفاده می شود.
منوی :Windows
دستورات این منو برای مشاهده و مدیریت پنجره های نرم افزار بکار می رود.
:Agenda Windowپنجره مربوط به Agendaکه قواعد فعال در آن قرار دارد را
:Fact Windowپنجره لیست Factها را نمایش می دهد.
نمایش می دهد.
نشانه گذاری ها:
بعضی از نشانه گذاری ها در گرامر دستورات ( )Syntaxاستفاده می شود که
در این قسمت مقداری از آنها را برای آگاهی بیشتر ازSyntaxها توضیح داده
می شود.
• ) :(exampleیعنی ساختار یعنی در داخل پرانتز هر دستور می تواند قرار بگیرد.
• )] :(example [1دستوراتی که بین ][ قرار دارند یعنی اختیاری هستند .در استفاده آنها اجباری نیست.
• )> :(example <INTEGERدستوراتی که به این سبک نوشته می شوند یعنی دستور یا مقداری جایگزین عبارت
بین <> می شود.
•
*> :<INTEGERزمانی که عالمت * کنار دستوری وجود دارد یعنی تعداد 0یا بیشتر از این دستور می توان
استفاده کرد.
•
:<INTEGER>+زمانی که عالمت +کنار دستوری قرار می گیرد یعنی تعداد 1یا بیشتر از این دستور می توان
استفاده کرد.
•
:all | none | someزمانی که بین دستورات عالمت | باشد بدین معناست که میتوان از هرکدام استفاده کرد.
معنی ORمی دهد.
مولفه های پایه نرم افزار:
•
•
•
•
•
فیلد )(Field
واقعیات )(Fact
قواعد )(Rule
الگو )(Template
کالس )(Class
فیلدها:
برای ساخت پایگاه دانش باید اطالعات از ورودی (صفحه کلید یا فایل) خوانده
شود سپس دستورات اجرا شوند .در طی فرایند اجرای برنامه ،نرم افزار کلیپس
نشانه ها( ،)Symbolکاراکترهایی که یک معنی می دهد را با یکدیگر ترکیب و
گروه بندی می کند و یک توکن می سازد .در واقع یک نوع خاصی از توکن می
باشد.
فیلد عددی:
دو نوع فیلد عددی وجود دارد:
عدد ممیز شناور ( :)Floatمانند 15.02
عدد صحیح ( :)Integerمانند -32 ، 238
فیلد نشانه ای:
•
•
•
•
•
فیلدهای نشانه ای حاوی کاراکترهای اسکی می باشند.
این فیلدها دارای محدودیت هایی می باشند.
نشانه در کلیپس حساس به حروف می باشند.
نشانه ها نمی توانند با کاراکترهای ؟ و ؟ $شروع شوند .چون این دو کاراکتر
برای معرفی متغیرها رزرو شده اند.
نمونه هایی از نشانه ها@ + = - % B76-HI, foo :
محدودیت فیلد نشانه ای:
فیلدهای نشانه ای نمی توانند شامل سمبل های زیر باشند:
•
•
•
•
•
•
•
•
کاراکترهای اسکی چاپ نشدنی مانند Space
دابل کوتیشن “ “
پرانتز باز و بسته ()
امپرسند &
خط عمودی |
عالمت کوچکتر >
عالمت تیلدا ~
سمی کولن ;
فیلد رشته ای:
فیلدهای رشته در بین 2دابل کوتیشن ”“ قرار می گیرند .تنها محدودیت در این
فیلدها استفاده از بک اسلش \ می باشد که برای چاپ بک اسلش از \\ و برای
چاپ “از “ \ استفاده می شود .در نمونه هایی آورده شده است:
“a and b”
“a\”quote”
“1 number”
”“foo
فیلد آدرس:
این فیلدها آدرس داده ها را نگه داری می کنند .مانند زبان .C
واقعیات ()Fact
Factها در واقع واقعیت هایی هستند که کاربر به عنوان ورودی به سیستم خبره می دهد و از سیستم
خبره ،خبرگی دریافت می کنند .کلیپس برای حل مسئله ها نیاز به اطالعات و داده ها دارد .پایه واحدهای
داده که در قواعد استفاده می شود همان Factمی باشد .هر Factاز قسمت های زیر تشکیل شده
است:
نام واقعیت ()Relation name
تعداد صفر یا بیشتر اسالت ( )Slot nameبه همراه مقدار )(Slot value
ساختار :Deftemplate
با استفاده از این دستور می توان ساختار Factها را بصورت گروهی ایجاد نمود .باید دقت نمود که این
دستور فقط ساختار اولیه Factرا می سازد و هیچ Factرا ایجاد نمی کند و باید با دستور Assertآن
ساختار ایجاد شده توسط Deftemplateرا مقداردهی نماییم.
> :<relation-nameنام الگو می باشد.
> :<optional-commentمی توان در این قسمت توضیحاتی برای الگو قرار داد .این قسمت
اختیاری می باشد.
)> :(slot <slot-nameاین قسمت اجازه می دهد یک فیلد با یک مقدار ذخیره گردد.
)> :(multislot <slot-nameاین فیلد اجازه می دهد چندین مقدار در یک اسالت ذخیره شود.
در مثال اسالید بعد فقط یک ساختار ایجاد شده است و تا زمان مقداردهی با دستور Assertاین
الگو به Favtتبدیل نمی شود.
دستور Assert
مقداردهی Templateبا دستور Assertانجام می شود.
EXAMPLE 1
در EXAMPLE 1یک Factبا نام Personکه قبال با دستور DefTemplateساختار
آن ایجاد شده است مقداردهی می شود و در قسمت Fact-listاضافه می
گردد .این Factبصورت گروهی ایجاد شده است .یعنی Factبا یک نام و چندین
اسالت.
با دستور Assertمی تواند Factهایی بصورت جداگانه نیز تعریف کرد که در این
صورت نیازی به تعریف Templateنمی باشد.
مثال زیر یک Factبا نام Colorبا مقدار Redبه list-Factاضافه می کند.
مثال زیر چهار Factبه ترتیب با نام های Colorو Typeو Sizeو Widthبا مقادیر Redو Maleو
100و 230به طور همزمان اضافه می نماید.
محدودیت ها برای اسالت
با اعمال محدودیت ها می توان Slotهای یک Templateرا مجبور به وارد کردن
داده های با قالب خاص نمود و یا مقداری پیش فرض برای اسالت ها در نظر
گرفت.
به عنوان مثال درصورتیکه سعی کنید برخالف محدودیت تعریف شده وارد نمایید ،با خطایی از
سوی نرم افزار Clipsمواجه خواهید شد.
متغیرها ()Variable
در نرم افزار Clipsمی توان دو نوع متغیر تعریف نمود:
متغیر چند مقداری ()Multi Value
متغیر تک مقداری ()Single Value
مثال
ویلکارد ها ()Wildcard
ویلکاردها عالمت هایی هستند که به جای هر کاراکتر یا کاراکتر خاصی بکار می
روند .مانند * که در هنگام جستجو به معنای “هر” بکار می رود.
Example 2
(assert
(data 1 blue)
(data 1 blue red)
(data 1 blue red 6.9)
)
(defrule find-data)
(data ?x $?y ?z)
=>
(printout t “?x = “?x crlf
“?y = “ ?y crlf
“?z = “ ?z crlf
“-----------” crlf)
)
(run)
?x = 1
?y = (blue red)
?z = 6.9
------?x = 1
?y = (blue)
?z = red
---------?x = 1
?y = ()
?z = blue
--------
بدست آوردن شماره ایندکس Fact
برای انجام بعضی از عملیات ها نیاز به شماره ایندکس Factمی باشد .به همین دلیل
از روش زیر شماره ایندکس را بدست می آوریم .باید بدانیم که شماره ایندکس منظور
همان شماره ای است که در پنجره Fact-Listدر سمت چپ Factنشان داده می شود
و این شماره را خود نرم افزار بصورت اتوماتیک به Factها اختصاص می دهد.
> :<variable-symbolنام یک متغیر است که شماره ایندکس در آن قرار دارد.
> :<pattern-CEنام Factاست که میخواهیم شماره ایندکس آن را بدست بیاوریم.
:>-عالمت انتساب می باشد.
در لیست زیر تعداد Fact 4وجود دارد .شماره ایندکس 0یعنی f-0که توسط خود
نرم افزار رزرو می شود و در واقع یک مقداردهی اولیه انجام می دهد .حتی اگر
هیچ Factتعریف نشده باشد این شماره بعنوان ( f-0 )initial-factتوسط خود نرم
افزار استفاده می شود و Factها از شماره 1به بعد شماره گذاری می شوند.
حذف Factبا دستور Retract
با استفاده از این دستور می توان یک Factرا حذف نمود .باید دقت نمود که این
دستور با داشتن شماره ایندکس Factمی تواند آن را حذف نماید که از روش
قبل ایندکس را بدست می آوریم.
< :>retract-specifierشماره ایندکس Factای را که قرار است حدف نماییم،
مشخص می کنیم.
در مثال زیر یک قاعده به نام Rule2تعریف می شود و در قسمت patternتعریف
کرده ایم که اگر factبه نام Colorدارای مقدار redوجود داشت ،شماره ایندکس
آن را در متغیری به نام FactNumber1که خودمان تعریف کرده این قرار می دهد و
در قسمت Actionیا همان Thenاگر آن Factوجود داشته باشد با دستور
Retractآن Factیعنی Colorرا حذف می کند.
نکته:
•
زمانی که یک Factحذف می گردد ،شماره آن Factدیگر به Factهای جدید که
ایجاد می شود ،اختصاص داده نمی شود و به جای آن شماره خالی می
باشد.
•
با دستور (* )Retractهمه Factها حذف می گردد .این دستور معادل دستور
( )Clearمی باشد.
تغییر Factایجاد شده با Templateتوسط دستور
Modify
با استفاده از دستور Modifyمی توان مقدار Factهایی که قبال با دستور
Deftemplateایجاد شده را تغییر داد.
< :>fact-indexشماره ایندکس Factمورد نظر را مشخص می نماید.
< :>slot-nameنام اسالتی که می خواهیم مقدار آن را تغییر دهیم.
< :>slot-valueمقدار برای اسالید که میخواهیم مقدار آن را تغییر بدهیم.
مثال زیر Templateبا شماره ایندکس 4محتوای اسالت Nameرا به مقدار
Mohsenتغییر می دهد.
کپی نمودن Factایجاد شده با Templateتوسط
دستور Duplicate
•
با این دستور از روی Factهایی که قبال با دستور DefTemplateایجاد شده
کپی گرفته می شود.
< :>fact-Indexشماره Factای که می خواهیم اسالت های آن را تغییر بدهیم.
(< :)>Slot-Name Slot-Valueنام اسالت به همراه مقدار جدید آن را مشخص
می کند.
دستور save-factجهت ذخیره Factها
با استفاده از این دستور می توان کلیه Factهای موجود (Factها در پنجره)Fact
را در داخل فایل ذخیره نمود.
< :>FileNameمسیر ذخیره فایل به همراه نام و پسوند فایل را مشخص می
کند.
مثال زیر کلیه Factهای موجود را در فایلی به نام MyFactsبا پسوند txtدر درایور
Cذخیره می کند.
دستور Load-Factsجهت باز نمودن Factها
با استفاده از این دستور می توان Factهایی که قبال توسط دستور Save-Facts
در فایل ذخیره نموده ایم را به لیست Fact-Listاضافه نماییم.
< :>FileNameمسیر ذخیره فایل به همراه نام و پسوند فایل را مشخص می
نماید.
دستور زیر Factهایی که قبال در فایل مذکور ( )MyFact.txtذخیره شده است را
باز نموده و به پنجره Factsاضافه می نماید.
تعریف قواعد ()Rules
با این دستور می توان قواعد را تعریف نماییم .نرم افزار Clipsیک برنامه Rule-
Baseنیز می باشد .یعنی بر مبنای قواعد نیز کار می کند.
< :>rule-nameاین قسمت شامل نام قاعده یا Ruleمی باشد.
< :>optional commentدر این قسمت می توان توضیحاتی در مورد آن قواعد
نوشت .توضیحات اختیاری می باشد.
< :>patternاین قسمت الگو را مشخص می نماید .یعنی در واقعا همان
قسمت الگو عبارت شرطی می باشد.
نکته :عالمت * در Syntaxها به معنی تعداد 0یا بیشتر می باشد.
*< >patternsیعنی چندین الگو می توان تعریف نمود.
EXAMPLE
یعنی اگر factبا نام carمقدار فیلد Colorآن Redبود سپس یک Factبا دستور
Assertبه نام Actionایجاد کن و مقدار آن را okقرار بده.
نکته :عالمت >= معادل کلمه کلیدی Thenدر شبه کد می باشد.
ایجاد Factگروهی با دستور Deffacts
با استفاده از این دستور می توان Factهایی بصورت گروهی تعریف کرد و به عنوان دانش اولیه با
پایگاه دانش اضافه می شود.
< :>deffact-nameنام Factرا مشخص می کند.
نکتهFact :هایی که با دستور Deffactتعریف می شوند در پنجره Factsنمایش داده نمی شوند.
]> :[<commentتوضیحاتی برای Factمی باشد که نوشتن این توضیح اختیاری می باشد.
< :>patternنام الگو یا همان Factها را مشخص می نماید.
مثال زیر Factبا نام BaseFact1شامل فیلدهای اولیه Color, type, Heightرا به
عنوان دانش اولیه به پایگاه داده اضافه می نماید.
چاپ رشته /متغیر با دستور Printout
> :<logical-nameدر این قسمت می توان نوع خروجی را مشخص نمود .با
کاراکتر )Terminal( tمانیتور به عنوان خروجی در نظر گرفته می شود.
<:>print-itemsدر این قسمت متن مورد نظر با آیتم هایی که قرار است چاپ
شوند را مشخص می نماییم.
نکته :عبارت crlfتعیین می کند که بعد از چاپ نمودن آیتم ها ،مکان نما به خط
بعدی رود .این کلمه معادل \nدر زبان C++می باشد.
نمایش لیست دستورات
با استفاده از دستورات زیر می توان لیست بعضی از ساختارهایی
که تا بحال یاد گرفته ایم را مشاهده نماییم:
( :)list-defrulesاین دستور لیست قواعد موجود را نمایش می دهد.
( :)list-deftemplatesاین دستور الگوهای موجود را نمایش می دهد.
( :)list-deffactsاین دستور لیست Factهایی را که با دستور Deffactsتعریف
کرده ایم را نمایش می دهد.
( :)Factsاین دستور لیست تمام Fact( Factهای موجود در پنجره Factsکه با
دستورات assertیا Deftemplateاضافه نموده ایم) را نمایش می دهد.
نمایش ساختار دستورات
با استفاده از دستورات اسالیدهای بعد می توان ساختار یعنی همان سورس کد
بعضی از دستوراتی که تا به حال یاد گرفته ایم را نمایش دهیم.
نمایش ساختار قواعد ()ppdefrule
با این دستور سورس و ساختار قواعد را به همان صورت که یا دستور Defrule
تعریف نموده ایم ،نمایش می دهد.
< :>defrule-nameنام قاعده مورد نظر را مشخص می کند.
دستور زیر ساختار قاعده rule1را نمایش می دهد.
یادآوری :قواعد را با دستور Defruleتعریف می نماییم.
نمایش ساختار الگو ()ppdefTemplate
با این دستور سورس و ساختار الگوهایی که با دستور Deftemplateتعریف
نموده ایم را نمایش می دهد.
< :>deftemplate-nameنام الگوی مورد نظر را نمایش می دهد.
دستور زیر ساختار و سورس الگویی به نام personرا نمایش می دهد.
یادآوری :الگوها را با دستور Deftemplateتعریف می نماییم.
نمایش ساختار Factها ()ppDeffacts
با این دستور سورس و ساختار الگوهایی که با دستور DefFactsتعریف نموده
ایم را نمایش می دهد.
< :>deffacts-nameنام Factمورد نظر را مشخص می کند.
دستور زیر ساختار و سورس Factبه نام Animalرا نمایش می دهد.
یادآوریFact :ها را با دستور Deffactsتعریف می نماییم .با توجه داشت
Factهایی که با این دستور تعریف می شوند به عنوان پایگاه دانش در نظر گرفته
می شوند.
نمایش ساختار Factها ()ppFact
با این دستور سورس و ساختار Factهایی که با دستور Assertتعریف نموده ایم
را مشخص می نماید.
دستور زیر ساختار و سورس Factشماره 3را نمایش می دهد.
نکته :برای بدست آوردن شماره ایندکس می توانید از تکنیکی که در قسمت
های قبل توضیح داده شده استفاده نمایید.
حذف نمودن ساختارها
با استفاده از دستورات اسالیدهای بعد می توانید ساختارهایی را که تا به حال
آموخته ایم را حذف نمایید.
حذف قواعد با دستور ()undefrule
با این دستور قواعدی را که با دستور Defruleتعریف و ایجاد نموده ایم را حذف
می نماید.
< :>defrule-nameنام قاعده مورد نظر را مشخص می نماید.
دستور زیر قاعده با نام Rule1که قبال توسط دستور Defruleتعریف نموده ایم را
حذف می کند.
حدف الگوها با دستور ()undeftemplate
با این دستور الگوهایی را که با دستور DefTemplateتعریف و ایجاد نموده ایم را
حذف می نماید.
< :>deftemplate-nameنام الگو مورد نظر را مشخص می کند.
دستور زیر الگویی را با نام Personرا که قبال توسط دستور DefTemplateتعریف
نموده ایم را حذف می کند.
حذف Factبا دستور ()undeffacts
با این دستور Factهایی را که با دستور Deffactsتعریف و ایجاد نموده ایم را
حذف می کند.
< :>deffacts-nameنام Factمورد نظر را مشخص می کند.
دستور زیر یک Factرا با نام Animalکه قبال توسط دستور Deffactsتعریف نموده
ایم ،حذف می کند.
حذف Factبا دستور Retract
این دستور در قسمت های قبل توضیح داده شده است .به یاد داشته باشید که
این دستور برای حذف Factهایی که با دستور Assertایجاد نموده ایم می باشد
و همچنین برای حذف آن Factبجای نام Factنیاز به ایندکس Factدارد.
دستورات اساسی
( :)clearاین دستور تمام Factها و Ruleها را از حافظه کاری حذف می کند .معادل این است
یکبار از نرم افزار خارج شویم و دوباره وارد شویم.
( :)resetاین دستور اطالعات مربوط به Factها را حذف می کند و Agendaرا ریست می کند.
( :)agendaقواعد فعال را نمایش می دهد.
( :)refreshاین دستور قواعد را بروز رسانی می کند.
(]> :)Run [<Limitبا این دستور قواعد فعال در حافظه کاری اجرا می شود که در قسمت
< >Limitتعداد قواعدی را که می خواهیم اجرا شود را مشخص می کنیم .مشخص نمودن
تعداد اختیاری می باشد .درصورتیکه تعداد را مشخص ننماییم یعنی ( )Runدراینصورت کلیه
دستورات فعال در پنجره Agendaاجرا شوند.
بعضی توابع سودمند
تابع save
با این تابع مجموعه از ساختارهایی که وجود دارند ( Factو قواعد و الگوها و )...
را در فایلی ذخیره می نماید.
< :>file-nameمسیر و نام فایل به همراه پسوند آن را مشخص می نماید.
تابع Load
توسط این دستور می توان ساختارهایی که قبال ذخیره نموده ایم ( )saveرا باز
نماید و آماده اجرا کند.
< :>file-nameمسیر و نام فایل به همراه پسوند ان را مشخص می کند.
تابع Open
با استفاده از این تابع می توان فایل برنامه Clipsکه قبال ذخیره کرده ایم را باز نماییم.
< :>file-nameاین قسمت شامل نام فایل به همراه آدرس کامل و پسوند فایل می باشد .حتما اگر
در مسیر عالمت بک اسلش وجود دارد باید آن را مشخص نماییم.
< :>logical-nameاین قسمت یک نام منطقی می باشد که قبال در برنامه جاری نباید استفاده شده
باشد.
]> :[<modeاین قسمت نحوه دستیابی به فایل را مشخص می نماید .این قسمت اختیاری می باشد.
نکته :برای مشخص نمودن عالمت \ باید این عالمت را دو بار پشت سر هم تایپ نماییم تا برای Clips
معنی \ بدهد .یعنی \\ تایپ نماییم.
Mode انواع حالت های
•
•
•
•
“r” read access only
“w” write access only
“r+” read and write access
“a” append access only
درصورتیکه تابع Openبا موفقیت اجرا شود مقدار Trueو در غیراینصورت مقدار
Falseرا برمیگرداند.
تابع Close
این تابع برعکس تابع Openکار می کند و فایلی را که قبال با تابع Openباز شده
است را می بندد.
]> :[<logical-nameنام منطقی فایل است که هنگام Openکردن به آن اختصاص
دادیم.
تابع Read
با استفاده از این تابع می توان مقداری را از صفحه کلید دریافت نمود یا محتویات
یک فایل را خواند.
]> :[<logical-nameنام منطقی فایل است که هنگام Openکردن به آن اختصاص
دادیم .این پارامتر اختیاری است.
تابع Bind
با استفاده از این تابع یک مقدار را به یک متغیر منتقل می نماییم.
< :>variableنام یک متغیر را مشخص می نماید.
< :>expressionیک عبارت را که قرار است در متغیر قرار گیرد ،مشخص می
نماید.
مولفه های شرطی
•
•
•
•
پیوند منطقی AND, OR, NOTبرای ترکیب Patternها
عملگرهای شرطی (~ )&, |,بروی محتوای فیلدها
عملگر شرطی Ifبر روی متغیرها
عملگر Test
Example
عملگر منطقی AND, OR, NOTبرای ترکیب
Patternها
از عملگرهای شرطی در ترکیب Patternها در بین Ruleها استفاده می شود.
عملگر OR
این پیوند مانند عملگر “یا منطقی” می باشد .یعنی حداقل یکی از حاالت اتفاق
بیفتد.
< :>conditional-elementعملوندهای شرطی را مشخص می کند.
عملگر AND
این عملگر مانند عملگر “و منطقی” می باشد و هنگامی استفاده می گردد که
همه حاالت باید اتفاق بیفتند .این عملگر بصورت پیش فرض انتخاب شده است.
یعنی اگر بین Patternها عملگری مشخص نکنیم ،بصورت پیش فرض ANDمی
باشد.
< :>conditional-elementعملوندهای شرطی را مشخص می کند.
عملگر NOT
این عملگر مانند “نقیض منطقی” می باشد.
عملگر شرطی IF-Else
این دستور همانند دستور Ifدر دیگر زبان های برنامه نویسی می باشد.
< :>expressionعبارت مورد ارزیابی را مشخص می نماید که خروجی این قسمت یک
عبارت منطقی Trueیا Falseمی باشد .درصورتیکه عبارت برقرار باشد خروجی Trueو
Actionمربوط به Thenانجام می شود در غیر اینصورت Actionمربوط به Elseاجرا می
شود .قسمت Elseاختیاری می باشد.
< :>Actionعملی که قصد اجرا شدنش را در قسمت Thenیا قسمت Elseداریم را
مشخص می نماید.
دستور Switch
این دستور معادل دستور Switchدر زبان برنامه نویسی Cمی باشد که در این حالت از
بین چند حالت ،یک حالت انتخاب می شود و دستور مربوط به آن اجرا می شود.
< :>test-expressionعبارتی که قرار است مورد ارزیابی قرار گیرد را مشخص می کند.
< :>case-statementحالت هایی که در صورت منطبق بودن یکی از حاالت با عبارت مورد
ارزیابی اجرا می شود.
]> :[<default-statementمقدار پیش فرض که در صورت عدم تطبیق هیچ یک از حاالت با
عبارت مورد ارزیابی اجرا می شود .این قسمت اختیاری می باشد