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

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