case...of

ساختار انتخاب چندگانه case...of با برچسب‌ها، بازه‌ها و بخش else.

وقتی if زیاد می‌شود!

فرض کنید می‌خواهید بر اساس عدد روز هفته، اسمش را چاپ کنید. با if هفت شرط زنجیره‌ای لازم است — زشت و طولانی! راه‌حل پاسکال: case...of

ساختار

case عبارت of
  مقدار۱: دستور۱;
  مقدار۲: دستور۲;
  ...
else
  دستور پیش‌فرض;
end;

مثال: روزهای هفته

var day: integer;
begin
  day := 3;
  case day of
    1: writeln('شنبه');
    2: writeln('یکشنبه');
    3: writeln('دوشنبه');
    4: writeln('سه‌شنبه');
    5: writeln('چهارشنبه');
    6: writeln('پنجشنبه');
    7: writeln('جمعه');
  else
    writeln('عدد نامعتبر!');
  end;
end.

چند مقدار در یک برچسب

case day of
  6, 7: writeln('آخر هفته! 🎉');
  1, 2, 3, 4, 5: writeln('روز کاری');
end;

بازه (Range) با ..

var score: integer;
begin
  score := 15;
  case score of
    0..5:   writeln('خیلی ضعیف');
    6..9:   writeln('ضعیف');
    10..13: writeln('قابل قبول');
    14..17: writeln('خوب');
    18..20: writeln('عالی');
  else
    writeln('نمره نامعتبر!');
  end;
end;

case روی کاراکتر و رشته

var grade: char;
begin
  grade := 'B';
  case grade of
    'A': writeln('عالی');
    'B': writeln('خوب');
    'C': writeln('متوسط');
    'D': writeln('ضعیف');
    'F': writeln('مردود');
  end;
end;

چند دستور در هر شاخه

case n of
  1:
    begin
      writeln('شما گزینه ۱ را انتخاب کردید');
      writeln('در حال پردازش...');
    end;
  2:
    begin
      writeln('گزینه ۲');
      writeln('لطفاً صبر کنید');
    end;
end;

case در برابر if زنجیره‌ای

ویژگیcaseif/else if
شرطفقط مساوی (با مقدار/بازه)هر شرطی (>, <, and...)
خواناییعالی برای چندگانهبا زیاد شدن شرط‌ها بد می‌شود
نوعordinal (عدد، کاراکتر)هر نوعی

خلاصه

این مبحث بخشی از دوره آموزش کامل پاسکال است.

ابزارهای مرتبط