Оператор выбора (варианта) case

Оператор выбора (варианта) используется в тех случаях, когда в зависимости от значения какого-либо выражения необходимо выполнить один из нескольких операторов.

Оператор case состоит из выражения (селектора) и списка операторов, каждому из которых предшествует одна или более констант (они называются константами выбора) или ключевое слово else. Селектор должен иметь порядковый тип размера байт или слово. Таким образом, строковый тип и тип longInt являются недопустимыми типами селектора. Все константы выбора должны быть уникальными и иметь порядковый тип, совместимый с типом селектора.

Оператор вывода имеет следующую форму записи:

case выражение of 
  константа1: оператор1;
  константа2: оператор2;
  .......................
  константаn: операторn;
else 
  оператор;
end;

Оператор case приводит к выполнению оператора, которому предшествует константа выбора, равная значению селектора или диапазону выбора, в котором находится значение селектора. Если такой константы выбора или такого диапазона выбора не существует, то выполняется оператор, следующий за ключевым словом else. Если ветвь else отсутствует, то не выполняется никакой оператор.

В операторе выбора в качестве константы допускается использование списка констант. В качестве констант также могут использоваться перечислимые и ограниченные типы данных, но число имен не должно превышать 255.

Пример

var i:integer;
..............
case i of 
  -1: writeln('отрицательное число');
  0, 2, 4, 6, 8: writeln('четное число');
  1, 3, 5, 7, 9: writeln('нечетное число');
  10..100 : writeln('между 10 и 100');
else
  Writeln('отрицательное или больше чем 100');
end;
var c:char;
..............
case i of 
  'a': writeln('буква а');
  'b': writeln('буква b');
  'c': writeln('буква с');
  'b','c': writeln('согласные буквы');
  'a'..'z':writeln('строчные символы алфавита');
  'A'..'Z':writeln('прописные символы алфавита');
else
  writeln('Нет описание символа');
end;
var 
a:real;
b,c:integer;
..............
case i of 
  '+': a:=b+c;
  '-': a:=b-c;
  '*': a:=b*c;
  '/': a:=b/c;
else
  a:=0;
end;