Иллюстрированный самоучитель по Maple 6/7

Циклы for и while

Зачастую необходимо циклическое повторение выполнения выражения заданное число раз или до тех пор, пока выполняется определенное условие. Maple 7 имеет обобщенную конструкцию цикла, которая задается следующим образом:

| for <name>| |from <expr1>| |to <expr3>| |by <expr2>| 
(while <expr4>| do Statement sequence> od;

Здесь name – имя управляющей переменной цикла, expr1, ехрr2 и ехрr3 – выражения, задающие начальное значение, конечное значение и шаг изменения переменной name, ехрr4 – выражение, задающее условие, пока цикл (набор объектов между словами do и od) будет выполняться.

В ходе выполнения цикла управляющая переменная меняется от значения expr1 до значения ехрr2 с шагом, заданным ехрr3. Если блок by <ехрr2> отсутствует, то управляющая переменная будет меняться с шагом +1 при ехрr1>ехрг2. Это наглядно поясняет следующий пример:

> for i front 1 to 5 do printd) od;
1
2
3
4
5

В нем выводятся значения переменной i в ходе выполнения цикла. Нетрудно заметить, что она и впрямь меняется от значения 1 до значения 5 с шагом +1. Следующий пример показывает, что границы изменения управляющей переменной можно задать арифметическими выражениями:

> for i from 7/(2+5) to 2+3 do printd) od:
1
2
3
4
5

А еще один пример показывает задание цикла, у которого переменная цикла меняется от значения 1 до 10 с шагом 2:

> for i from 1 to 10 by 2 do printd) od: 1 3 5 7 9

В этом случае выводятся нечетные числа от 1 до 9. Шаг может быть и отрицательным:

> for i from 9 to 1 by -2 do print(i) od:
9
7
5
3
1

Следует отметить, что если expr1>expr2 задать заведомо невыполнимое условие, например, ехрr1>ехрг2 и положительное значение шага, то цикл выполняться не будет. Цикл можно прервать с помощью дополнительного блока while <ехрr4>. Цикл с таким блоком выполняется до конца или до тех пор, пока условие ехрг4 истинно.

> for i from 1 to 10 by 2 while i<6 do print(i) od:
1
3
5

Таким образом, конструкция цикла в Maple-языке программирования вобрала в себя основные конструкции циклов for и while.

Есть еще одна, более специфическая конструкция цикла:

|for <name>| |in <expr1>| |whi1e <expr2>| do statement sequence> od:

Здесь expr1 задает список значений, которые будет принимать управляющая переменная name. Цикл будет выполняться, пока не будет исчерпан список и пока выполняется условие, заданное выражением ехрг2. Следующий пример иллюстрирует сказанное:

> for i in [1.2.5,-1.7.12] do print(i) od;
1
2 5-1 7
12 > for i in [1.2.5.-1.7.12] while i>0 do print(i) od:
1
2 5

В цикле этого вида управляющая переменная может меняться произвольно.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.