Организация и функционирование компьютеров

         

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


Иногда в процессе выполнения алгоритма может потребоваться выбор не из двух, а из трех и более альтернатив. Например, одно действие нужно сделать, если некоторая величина x равна 1 или 2, другое, если она равна 3,4 или 5, и третье, если она равна  6. Во всех остальных случаях нужно выполнить четвертое действие. Это можно записать с помощью нескольких вложенных условных операторов (обратите внимание на стиль записи):


if  (x=1) or  (x=2)

    then  <оператор1>

    else

        if  (x=3) or (x=4)) or (x=5)

            then  <оператор2>

            else

                if  (x=6)

                    then        <оператор3>

                    else <оператор4> ;

Для такой хотя и сложной, но стандартной конструкции более удобно использовать следующий стиль записи:

if      (x=1) or (x=2)                                  then     <оператор1>



else if    (x=3) or

(x=4) or (x=5)           then     <оператор2>

else if    (x=6)                                           then     <оператор3>

else                                                                          <оператор4> ;

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

case  x  of

    1,2:        <оператор1> ;

    3,4,5:    <оператор2> ;

    6:           <оператор3> ;

else            <оператор4>

end

Вместо  списка  3,4,5  можно указать диапазон  3..5. В общем случае формат оператора выбора следующий:

case  <выражение>  of

      <список значений выражения (через запятую)> :     <оператор_1> ;

      <список значений выражения (через запятую)> :     <оператор_2> ;

      . . .

      <список значений выражения (через запятую)> :     <оператор_n> ;

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

end

Обязательно требуется, чтобы элементы каждого списка значений выражения были различными. Выражение после case не может быть вещественного типа. При выполнении оператора выбора выраже­ние вычисляется, и выполняется тот оператор, в список которого вычислен­ное значение попадает. Если такой список отсутствует, выполня­ется оператор_0 из ELSE-конструкции (или ничего не делается, если ELSE-конст­рукция отсутствует).



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