Система программирования Турбо паскаль 7.0

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


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

Общий вид

записи:

     CASE <селектор> OF

           <список констант выбора 1>: <оператор 1>;

           ………………………………………………

          <список констант выбора n>: <оператор n>;

END;

Селектор – это выражение целого  или символьного типа.

Константы выбора – всевозможные значения селектора. Константы выбора в списке перечисляются через запятую.

                       Работа оператора CASE

По вычисленному значению селектора выбирается для исполнения оператор той строки, в списке которой содержится константа, равная значению селектора. После выполнения выбранного оператора управление передается на конец оператора CASE.

Пример 1. Написать оператор выбора для вычисления y.



                    

                       case   n    of

                             1: y := x;

                         2, 3: y := 2 * sqrt(abs(x));

                             4: y := exp(x);

                       end;

Графическая интерпретация оператора

В блок-схемах оператору CASE соответствует структура ВЫБОР.

Для приведенного выше примера эта структура выглядит следующим образом:

Замечание.  Если в строке выбора необходимо записать несколько операторов, то их заключают в операторные скобки BEGIN....END.

Пример 2.     Вычислить значение y.

Если значение x не принадлежит рассматриваемым промежуткам, то вывести на экран соответствующее сообщение.

В задаче переменная x является вещественной и не может использоваться в качестве селектора оператора CASE. Введем новую переменную целого типа, которой присваивается целая часть значения x:

n := trunc(x);

Тогда программа решения данной задачи с использованием оператора выбора может быть составлена следующим образом.


                   Program P_2;
                   Var
                       x, y: real;
                       n: integer;
                  Begin
                      writeln(‘Введите число x’);
                      read (x);
                      if (x<1) or (x>=5) then
                          writeln(‘ x не принадлежит ‘,
                                      ‘рассматриваемой области’)
                      else
                          begin
                             n := trunc(x);
                             case n of
                                1: y := sin(x);
                                2: y := exp(-x);
                                3: y := ln(x);
                                4: y := sin (x)/cos(x);
                            end;
                            writeln(‘y=’, y:6:2);
                         end;
                  End.

Содержание раздела