|
Оператор forОператор for применяется для повторения некоторого действия заданное число раз. Чаще всего используется целочисленный счетчик, пробегающий ряд значений. В конце этого раздела мы увидим, что цикл for является гораздо более универсальным и позволяет производить итерации по элементам произвольной матрицы. Следующий фрагмент печатает значения i от 1 до 5. for i = 1 : 5 disp(i) end В результате в консоль будет выведено: 1. 2. 3. 4. 5. Запись "1 : 5" в приведенном примере обозначает матрицу, содержащую пять вещественных значений. Использование оператора ":" для генерации вектора [1 2 3 4 5]: -->i =1:5 i = 1. 2. 3. 4. 5. Стоит еще раз подчеркнуть, что в данном случае матрица 1:5 содержит вещественные значения. Поэтому переменная-счетчик i также является вещественной. К этому вопросу мы вернемся позже в данном разделе, рассматривая общую форму записи цикла for. Используя более общую форму записи оператора " :" можно вывести только нечетные числа в интервале от 1 до 5. Для этого, очевидно, в качестве шага необходимо задать значение 2, как показано в следующем примере: for i = 1 : 2 : 5 disp(i) end В результаты выполнения этого скрипта в консоли будут отображены строки: 1. 3. 5. Оператор " :" можно также использовать для перебора значений счетчика в порядке убывания. Следующий фрагмент отображает числа от 5 до 1 в порядке убывания: for i = 5 : -1 : 1 disp(i) end В консоль, как и следовало ожидать, будет выведено: 5. 4. 3. 2. 1. Действительно, инструкция 5:-1:1 возвращает вектор значений от 5 до 1 в порядке убывания, -->i = 5 : -1 : 1 i = 5. 4. 3. 2. 1. В действительности, цикл for является гораздо более универсальным, позволяя перебирать значения различных типов, в том числе матриц и списков. В качестве элементов матриц могут выступать вещественные и целые числа, строки и полиномы, В следующем примере цикл for используется для перебора элементов вектора-строки, содержащего вещественные значения (1.5, е,π): v = [1.5 ехр (1) %pi]; for x = v disp(х) end В результате в консоли будет отображено: 1.5 2.7182818 3.1415927 Хотелось бы еще раз обратить внимание читателей на нежелательность использования циклов в Scilab. Всякий раз, когда возникает такое намерение, следует выяснить, не существует ли подходящей векторизованной функции, выполняющей требуемые действия. Различие в скорости выполнения пользовательских циклов и встроенных функций может достигать 10-100 раз, поэтому при наличии соответствующей функции предпочтения должно быть отдано ей. Цикл for следует использовать только тогда, когда подходящей функции найти не удается. |
|
© vse-o-scilab |