Множественное ветвление
Оператор IF разделяет программу на два набора операторов, выполняемых в зависимости от результата вычисления заданного условия. Бывают ситуации, когда этого недостаточно. Например, пусть мы пишем программу-калькулятор. Она запрашивает у пользователя два числа и код выполняемого над ними действия (1 – сложение, 2 – умножение, 3 – вычитание, 4 - деление). Конечно, можно обойтись и кучей операторов IF, например, так:
VAR c:BYTE;
…
c:=IntToStr(LabeledEdit1.Text);
IF c=1 THEN
r:=a+b;
IF c=2 THEN
r:=a*b
…
и т.д. Но выглядит такая программа запутанно. Здесь лучше применить оператор множественного ветвления CASE. Для его использования должны соблюдаться два правила: во-первых, во всех проверяемых условиях одна и та же переменная должна сравниваться с константами. Так оно и есть: переменная с сравнивается с единицей, двойкой и т.д. Во-вторых, тип переменной с должен быть ограниченным. Это означает, что можно перечислить все значения этого типа. Скажем, тип BYTE – ограниченный, так как переменная типа BYTE принимает значения только от 0 до 255 и все их можно перечислить. А вот переменная типа REAL принимает бесчисленное множество значений (число дробных чисел в любом интервале бесконечно) и ее нельзя использовать в операторе CASE. Его общий вид таков:
Полная форма | Сокращенная форма |
CASE переменная OF значение1: оператор1; значение2: оператор2; … значениеN: операторN; ELSE операторM; END; | CASE переменная OF значение1: оператор1; значение2: оператор2; … значениеN: операторN; END; |
Обратите внимание, что слово END относится к самому оператору CASE и не требует никакого парного себе BEGIN. Заменим кучу IF'ов одним CASE:
CASE c OF { c – переменная перечислимого типа }
1: r:=a+b; ( если с=1, выполняется оператор r:=a+b )
2: r:=a*b;
3: r:=a-b;
4: IF b<>0 THEN r:=a/b ELSE Label1.Caption:='Деление на ноль'
ELSE
Label1.Caption:='введен неверный код действия'
END;
В CASE перечисляются возможные значения переменной, а после них через двоеточие записывается один-единственный оператор (надо больше – пишем BEGIN..END), выполняющийся, если переменная, имя которой указано между словами CASE и OF, равна указанному перед двоеточием значению. В операторе CASE может быть часть "иначе" (ELSE), оператор в которой выполняется, если значение переменной не совпало ни с одним из заданных.
Дата добавления: 2015-03-19; просмотров: 1014;