Инструкции break и continue
Инструкция break позволяет прервать выполнение цикла. Обычно она применяется для выхода из цикла при достижении определенного условия, делающего его продолжение бессмысленным.
Следующий фрагмент демонстрирует использование инструкции break для вычисления суммы чисел от 1 до 10. При достижении переменной i значения, превышающего 10, цикл прерывается.
s = о
i = 1
while ( %t )
if ( i > 10 ) then
break
end
s = s + i
i = i + 1
end
После завершения данного алгоритма значения переменных ins равны:
S =
55.
i =
11.
Инструкция continue позволяет немедленно перейти к выполнению следующей итерации, пропустив команды, следующие после continue в теле цикла. Встретив команду continue, интерпретатор Scilab переходит к заголовку цикла, проверяет условие продолжения, и, если оно истинно, делает следующую итерацию.
Следующий пример демонстрирует вычисление суммы s = 1 + 3 + 5 + 7 + 9 = 25. Используемая здесь функция modulo (i,2) возвращает 0 при условии, что i четно. В данном случае скрипт наращивает значение i и использует инструкцию continue для перехода к следующей итерации.
s = 0
i = 0
while ( i < 10 )
i = i + 1
if ( modulo ( i , 2 ) == 0 ) then
continue
end
s = s + i
end
Значение переменных ins после выполнения данного скрипта равны
S =
25.
i =
11.
Тот же результат можно получить, используя единственную команду sum в сочетании с оператором " :", что является примером векторизованных вычислений в Scilab.
s = sum(l : 2 : 10);
Использование высокоуровневой функции (в данном случае sum) имеет ряд преимуществ перед эквивалентным ей с точки зрения результата циклом на основе while:
- Высокоуровневая запись короче, а значит проще для понимания человеком.
- Для матриц высокой размерности высокоуровневые операции выполняются намного быстрее, чем алгоритмы на основе циклов.
Поэтому необходимо внимательно изучить доступные в Scilab функции перед тем, как писать собственный алгоритм с использованием while.