logo
2012_METODICh_POSOBIE_PASCAL

Условный оператор Case.

Структура ветвления «Выбор – Иначе» соответствует оператору выбора CASE.

Оператор CASE имеет следующий вид:

Case P of

a: S1;

b: S2;

..

n: Sn

else Sn+1

end;

Каждый из операторов в операторе CASE, помеченный константой выбора, может быть составным. Операторы S1; S2; … Sn отделяются один от другого точкой с запятой.

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

При выполнении этого оператора сначала вычисляется некоторое выражение P называемое селектором выбора, а затем, в зависимости от полученного значения (если оно равно одной из констант a, b, ..., n, которые называются константами выбора), выполняется один из операторов, помеченный соответствующей констан­той. Если значение выражения P не совпадает ни с одной из констант выбора, выполняется оператор Sn+1, содержащийся после ключевого слова ELSE, причем ветвь ELSE в операторе CASE необязательна.

Кроме одиночных констант, в вариантах оператора CASE могут использоваться диапазоны значений и списки (представленные через запятую).

Case X of

1 .. 5: S1;

2, 3, 8: S2;

4, 6, 9 .. 13: S3;

else

S4

end;

Задача 4.

В зависимости от введенного числового значения вывести согласованное с ним слово рубль, рубля или рублей.

Математическая формулировка задачи:

Очевидно, что значение поясняющего слова зависит от последней цифры введенного числа: если последняя цифра 0, 5, 6, 7, 8, 9, то поясняющее слово «рублей», если 1 – то «рубль», если 2, 3, 4 – то «рубля». Исключение составляют числа, оканчивающиеся на 11, 12, 13, 14 для которых поясняющее слово должно быть «рублей».

Текст программы к задаче 4:

Program Ex_4;

Uses Crt;

Var

Алгоритм решения задачи 4: n: integer; { число }

r: integer; {остаток от деления числа на 10}

Begin

ClrScr;

Writeln(‘Введите число ‘);

Readln(n);

If n>100 then n:=n mod 100;

If (n>=11) and (n<=14) then

Writeln( ‘ рублей‘);

Else begin

r:=n mod 10;

Case r of

0, 5..9: writeln (‘ рублей‘);

1: writeln (‘ рубль’);

2..4: writeln (‘ рубля ‘);

end;

end;

Readln;

End.