logo
Пособие по мат_инф

9.5.3. Оператор выбора варианта

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

Структура оператора выбора такова:

CASE <ключ выбора> OF

<список выбора>

[else <оператор>]

end;

где CASE – случай, of – из,

<ключ выбора> выражение типа целые;

<оператор> – произвольный оператор Турбо Паскаля.

Оператор выбора работает следующим образом. Вначале вычисляется значение выражения <ключ_выбора>, а затем в последовательности операторов <список_выбора> отыскивается такой, которому предшествует константа, равная вычисленному значению. Найденный оператор выполняется, после чего оператор выбора завершает свою работу. Если в списке выбора не будет найдена константа, соответствующая вычисленному значению ключа выбора, управление передается оператору, стоящему за словом ELSE.

Пример 11.

Вывести разные функции в зависимости от значения переменной n, введённой с клавиатуры. Написать программу с использованием оператора выбораCASE.

Решение.

ProgramPr11;

Var

n: integer;

a, b, y, z: real;

begin

writeln (‘n, a, b’);

read (n, a, b);

y:=a+b; z:=a-b;

CASE n of

1, 2, 5: writeln (y);

7..10: writeln (z);

else writeln (‘ вне области определения n’);

end;end.

При значении n=1, 2, 5 программа выведет значение y. При значении n={7, 8, 9, 10}(одному из списка) программа выведет значение z, иначе выведет текст ‘вне области определения n’ .

Пример 12.

Вывести разные функции в зависимости от значения переменной k. Если переменнаяkлежит в пределах [110], вычислить y: = cos (x); z:=y+x; и вывести результат. Если переменнаяkлежит в пределах [11;20], вычислить y: = sin(x); и вывести результат. Написать программу с использованием оператора выбораCASE.

Решение.

Program Pr12;

Var

K: integer;

x, y, z: real;

begin

writeln (`x, k`); readln (x, k);

case k of

1..10: begin y:=cos (x); z:=y+x; writeln (y,z); end;

11..20: begin y:=sin(x); writeln (y); end;

else

writeln (`вне области переменной к`);

end; end.

Yandex.RTB R-A-252273-3
Yandex.RTB R-A-252273-4