Добавил:
sofyvits@ya.ru на позитиве Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
477
Добавлен:
10.01.2016
Размер:
919.04 Кб
Скачать

Оператор выбора

По практическим соображениям существует еще один тип условного оператора. Оператор выборапозволяет выбрать одно из нескольких возможных продолжений программы. Структура оператора выбора:

CASE <ключ выбора> OF <список выбора> ELSE <оператор> END

Здесь CASE, OF, ELSE, END – зарезервированные слова (случай, из, иначе, конец); <ключ выбора> – выражение порядкового типа (любого из рассмотренных, кроме типов REAL и STRING); <список выбора> – одна или более конструкций вида: <константа выбора> : <оператор>; <константа выбора> – константа того же типа, что и выражение <ключ выбора>; <оператор> – произвольный оператор.

Поясним общий вид оператора. В этой записи с – ключ выбора; ni : pi – список выбора; ni – константа выбора; pi – оператор.

CASE c OF

n1 : p1;

n2 : p2;

n3 : p3;

.............

nn : pn

ELSE

p

end;

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

Часть ELSE <оператор> можно опускать. Тогда при отсутствии в списке выбора нужной константы ничего не произойдет и оператор выбора просто завершит свою работу.

Задача. В зависимости от вводимого признака q рассчитать значение функции Z.

0, если q = 0;

sin(x), если q = 1;

Z = ex, если q = 2;

log(x), если q = 3;

x*x во всех остальных случаях.

Рис. 2. Множественный выбор

На рис. 2 приведена структура, которая называется «множественный выбор».

В зависимости от вводимого значения q вычисления осуществляются по одной ветви из пяти.

Программа.

program task4;

var X, Z : real; q : integer;

begin

write(‘Введите X ‘); readln(x);

write(‘Введите признак: 0, 1, 2, 3 : 0–0, 1–sin(x), 2–exp(x), 3–log(x) ‘);

readln(q);

case q of

0 : Z := 0;

1 : Z := sin(x);

2 : Z := exp(x);

3 : Z := ln(x)

else

Z := x*x

end;

write(‘Z = ‘, Z)

end.

Задача. Ввести два числа, знак арифметического действия и вывести на экран результат соответствующего действия.

Программа.

program task;

var

op : char;

x, y, z : real;

begin

write(‘x, y = ‘);

readln(x,y);

write(‘операция: ‘);

readln(op);

case op of

‘+’ : z:= x + y;

‘–’ : z:= x – y;

‘*’ : z:= x * y;

‘/’ : z:= x / y;

else

write(‘Такое действие не предусмотрено!’);

end;

write(‘Результат = ‘, z)

end.

В программе ключом выбора является переменная литерного типа. В зависимости от введенного значения символа выполнится одно из арифметических действий: сложение, вычитание, умножение или деление. Если будет введен какой-либо другой символ, то результатом будет сообщение: “Такое действие не предусмотрено!”.

Программа вводит две строки: первая содержит два произвольных числа, разделенных пробелом, вторая – символ арифметического действия. На следующей строке будет выведен результат. Например:

2 2

*

Результат = 4

или

18.5 0.12

+

Результат = 18.62

Соседние файлы в папке Лекции Информатика и программирование