|
Оператор 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 |