|
شرط ها*
مانند همه ی زبان های برنامه نویسی، اسکیم
هم عبارات شرطی دارد. اساسی ترین فرم شرط if است.
ساختار یک عبارت شرطی با if به صورت زیر است:
اگر test-expression به true ارزیابی شود (هر مقداری
که #f نباشد) then-branch ارزیابی می شود. در غیر
این صورت else-branch ارزیابی می شود. قسمت else اختیاری است.
'low-pressure) ;no ``else'' branch
*برای
بهینه سازی اسکیم عبارات شرطی دیگری دارد که می توانند به صورت ماکرو تعریف
شوند.
when و unless:
برای مواقعی که فقط یکی از بخش های شرط (بخش then یا else) از شرط پایه لازم است
است، unless و when عبارات شرطی بهینه تری هستند.
(when (< (pressure tube) 60)
بازنویسی این برنامه با if به این صورت خواهد بود:
(if (< (pressure tube) 60)
توجه داشته باشید که when در خود begin را به طور غیر صریح
دارد در حالی که اگر هر یک از بخش های شرط بیشتر از یک فرم باشند، If نیازمند begin است.
این برنامه با unless به صورت زیر است:
(unless (>= (pressure tube) 60)
(همه
ی مفسرهای اسکیم دو فرم while و unless را ندارند. در این صورت می توانید آن ها را به صورت ماکرو تعریف
کنید)
cond:
فرم cond برای پیاده سازی عبارات
شرطی تو در تو مناسب تر است، جایی که هر else به جز آخری یک if
دیگر دارد. بنابراین
را می توان به صورت زیر با cond بازنویسی کرد:
(cond ((char<? c #\c) -1)
cond یک فرم شرطی چند بخشی است. هر عبارت، یک شرط و یک عمل مرتبط دارد.
اولین شرطی که درست باشد عمل مرتبط با آن
را انجام می شود. عبارت آخرین else هنگامی اجرا می شود که تمامی شرط ها false باشند.
هر بخش در خود به طور غیر صریح begin دارد.
case:
حالت خاصی از cond را می توان در case فشرده کرد. این وقتی
است که هر شرط یک تست برابری است:
عبارتی که راس آن مقدار c
را داشته باشد انتخاب می شود.
and و or
اسکیم دو فرم خاص برای عطف بولی (and) و فصل بولی (or) دارد. (در بخش 2 نیز منفی ساز عبارات بولی ،not، را دیدیم که یک روال
بود.)
فرم and مقدار true برمی گرداند
اگر همه ی زیر فرم هایش true باشند. مقدار واقعی برگشت داد شده مقدار آخرین زیر فرم است. اگر
یکی از زیر فرم ها false باشد مقدار بازگشتی #f
خواهد بود.
فرم or مقدار اولین زیر فرم true خود را برمی گرداند. اگر همه ی زیر فرم ها false باشند، or مقدار #f را بر می گرداند.
هر دو فرم or و and زیر فرم هایشان را از
چپ به راست ارزیابی می کنند. با یافتن اولین زیر فرمی که مقدار بازگشتی قابل تشخیص
باشد بقیه ی زیر فرم ها نادیده گرفته می شوند.
(and 1 #f expression-guaranteed-to-cause-error)
(or 1 #f expression-guaranteed-to-cause-error)
مهدی ییلاقی اشرفی
|