Оператор select

Оператор select предназначен для сокращенной записи нескольких последова­тельных проверок переменной на равенство одному из ряда значений (которые в противном случае необходимо было бы оформить как блоки elseif). В за­висимости от значения переменной оператор

select выполняет один из блоков case. Количество таких блоков не ограничено.

Ниже показано, как отобразить одну из нескольких возможных строк в со­ответствии со значением переменной i.

i = 2

select i

case 1

disp("One")

 case 2

disp("Two" )

 case 3

disp("Three")

else

disp("Other")

 end

В результате, как и следовало ожидать, в консоли будет отображена строка "Two".

Блок else выполняется в случае, если значение переменной не соответствует ни одному из перечисленных вариантов.

Наличие блока else не является обязательным, но считается хорошей прак­тикой. Действительно, даже если программист полагает, что соответствующее этому блоку событие в нормальных условиях никогда не может произойти, ошибка в логике выполнения программы может привести к непредсказуемым результатам. При отсутствии проверки скрипт продолжит выполняться и в наи­худшем случае завершится без сообщений об ошибках, вернув неверный резуль­тат. Отладка такого скрипта представляет крайне сложную задачу, поскольку неясно, какая инструкция повлекла нарушение работы. Блок else призван воспрепятствовать распространению ошибки и может помочь в том, чтобы точ­нее определить место ее возникновения.

Таким образом, блок else должен присутствовать в большинстве конструк­ций select. Для обработки непредвиденных ситуаций в составе блока else часто применяется функция

error. Функция error отображает сообщение об ошибке, содержащее указанный в качестве параметра текст. При этом поток управления прерывается, интерпретатор Scilab покидает все вызванные функ­ции и возвращает управление консоли Scilab.

Модифицируем предыдущий пример. Теперь в случае отрицательного зна­чения переменной i будем выводить сообщение об ошибке.

i = -5;

select i

case 1

disp("One")

case 2

disp("Two" )

case 3

disp("Three")

else

error   (   "Unexpected  value  of  the  parameter  i" )

end

В результате будет отображено:

__>i    = -5;

-->select i

-->case 1

--> disp("0ne")

-->case 2

--> disp("Two")

-->case 3

-->    disp("Three")

 --> else

-->    error   (   "Unexpected  value  of  the  parameter  i" )

 Unexpected  value  of  the  parameter i

На практике, когда конструкция select не содержит блока else, необходимо задаться вопросом, является ли такая ситуация результатом тщательного ана­лиза либо банального упущения. Предположение о том, что блок else никогда не будет выполнен, часто не оправдывается.

© vse-o-scilab

Сделать бесплатный сайт с uCoz