همخوان و ترابرد
وقتی یک مقدار چند حالت ممکن دارد، بهجای زنجیرهای از اگرها از همخوان یا ترابرد استفاده کنید.
همخوان
همخوان یک عبارت است: مقدار را با حالتها مقایسه میکند و نتیجهی شاخهی جورشده را برمیگرداند. چند حالت میتوانند با ویرگول یک شاخه را شریک شوند و وگرنه همهی حالتهای دیگر را میگیرد.
روال رده(نمره: صحیح): رشته:
برگشت همخوان نمره / ۱۰:
۱۰، ۹ => "عالی"
۸ => "خیلی خوب"
۷ => "خوب"
وگرنه => "نیاز به تلاش"
پایان
پایان
روال ریشه:
سرچاپ رده(۹۵)، رده(۸۰)، رده(۴۵)
پایانروی جداشمارها، همخوان بررسی میکند که هیچ حالتی از قلم نیفتاده باشد:
جداشمار فصل:
بهار، تابستان، پاییز، زمستان
پایان
روال هوا(ف: فصل): رشته:
برگشت همخوان ف:
بهار, پاییز => "معتدل"
تابستان => "گرم"
زمستان => "سرد"
پایان
پایان
روال ریشه:
سرچاپ "هوای بهار:", هوا(فصل.بهار)
سرچاپ "هوای زمستان:", هوا(فصل.زمستان)
پایانترابرد
ترابرد دستوری برای انتخاب میان حالتهاست. برچسب هر حالت میتواند یک مقدار، چند مقدار با ویرگول یا یک بازه مثل ۱ تا ۳ باشد. اگر حالتی با بشکن تمام نشود، اجرا به حالت بعدی هم میرود؛ پس هر جا نمیخواهید، بشکن بنویسید.
روال ریشه:
تکرار ۵ در روز:
ترابرد روز:
۰:
سرچاپ روز, "شنبه، آغاز هفته"
بشکن
پایان
۱ تا ۳:
سرچاپ روز, "میانهی هفته"
بشکن
پایان
وگرنه:
سرچاپ روز, "نزدیک تعطیلی"
پایان
پایان
پایان
پایانبرچسب ترابرد میتواند با یک عملگر مقایسه شروع شود، مثل >= ۹۰. ترابرد درست هم جای زنجیرهی اگرها را میگیرد: هر برچسب یک شرط است و نخستین شرط درست اجرا میشود.
روال ریشه:
تکرار ۳ در ای:
دما := ای * ۱۵
ترابرد درست:
دما < ۱۰:
سرچاپ دما, "سرد"
بشکن
پایان
دما < ۲۵:
سرچاپ دما, "معتدل"
بشکن
پایان
وگرنه:
سرچاپ دما, "گرم"
پایان
پایان
پایان
نمره := ۷۵
ترابرد نمره:
>= ۹۰:
سرچاپ "عالی"
بشکن
پایان
>= ۶۰:
سرچاپ "قبول"
بشکن
پایان
وگرنه:
سرچاپ "مردود"
پایان
پایان
پایانالگوی ساختار
همخوان میتواند یک ساختار را با فیلدهایش بسنجد. ایکس = ۰ یعنی فیلد باید برابر صفر باشد و نام تنها، مثل ایگرگ، مقدار فیلد را در متغیری به همان نام میگذارد. چون الگوها شرط دارند، یک وگرنه در پایان لازم است.
ساختار نقطه:
همگانی ایکس: صحیح = ۰
همگانی ایگرگ: صحیح = ۰
پایان
روال جای(ن: نقطه): رشته:
برگشت همخوان ن:
نقطه { ایکس = ۰، ایگرگ = ۰ } => "مبدأ"
نقطه { ایکس = ۰، ایگرگ } => "روی محور عمودی، ایگرگ = " + ایگرگ
نقطه { ایکس، ایگرگ = ۰ } => "روی محور افقی، ایکس = " + ایکس
وگرنه => "جای دیگر"
پایان
پایان
روال ریشه:
سرچاپ جای(نقطه {})
سرچاپ جای(نقطه { ایگرگ = ۵ })
سرچاپ جای(نقطه { ایکس = ۳ })
سرچاپ جای(نقطه { ایکس = ۱، ایگرگ = ۲ })
پایانهمخوان را وقتی به کار ببرید که به یک مقدار نیاز دارید یا میخواهید مترجم کامل بودن حالتها را بسنجد؛ ترابرد برای وقتی است که در هر حالت چند دستور اجرا میکنید.