Иллюстрированный самоучитель по Mathematica 3/4

Организация циклов

Многие задачи в системе Mathematica решаются с использованием линейных алгоритмов и программ. Они могут быть представлены непрерывной цепочкой выражений, выполняемых последовательно от начала до конца.

Однако в большинстве случаев серьезные вычисления базируются на использовании циклических и разветвленных алгоритмов и программ. При этом, в зависимости от промежуточных или исходных данных, вычисления могут идти по разным ветвям программы, циклически повторяться и т. д. Для реализации разветвленных программ язык программирования должен содержать управляющие структуры, то есть специальные конструкции языка, реализующие в программах ветвление. Они используются при различных методах программирования, в том числе при процедурном и функциональном программировании.

Циклы типа Do

К важнейшим управляющим структурам в языках программирования относятся циклы. С их помощью осуществляется циклическое исполнение некоторого выражения ехрr заданное число раз. Это число нередко определяется значением некоторой управляющей переменной (например, i, j и т. д.), меняющейся либо с шагом +1, либо от начального значения imin до конечного значения imax с шагом di. Циклы могут быть одинарными или множественными – вложенными друг в друга. Последние используют ряд управляющих переменных. Такого рода циклы организуются с помощью функции Do:

  • Do [expr, {imax} ] – выполняет imax раз вычисление ехрг;
  • Do [expr, {i, imax}] – вычисляет ехрг с переменной i, последовательно принимающей значения от 1 до imax (с шагом 1);
  • Do [expr, {i, imin, imax} ]– вычисляет ехрr с переменной i, последовательно принимающей значения от imin до imax с шагом 1;
  • Do [expr, {i, imin, imax, di}] – вычисляет ехрг с переменной i, последовательно принимающей значения от 1 до imax с шагом di;
  • Do [expr, {i, imin, imax}, {j, jmin, j max},…] – вычисляет expr, организуя ряд вложенных циклов с управляющими переменными j, i и т. д.

Примеры организации цикла Do и его исполнения представлены ниже:

Do[Print["hello"], {5}]
hello
hello
hello
hello
hello
  
Do[Print[i], {i, 3}]
1
2
3
  
Do[Print[i], {i, 5, 8}]
5
6
7
8
  
Do[Print[i], {i, 0, 1, 0.25}]
0
0.25
0.5
0.75
1.

Нетрудно убедиться в том, что переменная i в теле цикла (итератор) является локальной и по выходе из цикла ее значение остается тем же, что было до входа:

i=2
2
  
Do[Print[i], i, 1, 5]
1
2
3
4
5
1
2

Вся программа с циклом является содержанием одной ячейки, и ее листинг охвачен квадратной скобкой. Для иллюстрации вывода здесь использована команда Print в теле цикла. Нетрудно заметить, что управляющая переменная цикла может принимать как целочисленные, так и вещественные значения. Возможность организации цикла в цикле иллюстрируется следующим примером:

Do [Do [Print [i, " ", j, " ", i + j], {j, 1, 3}], {i, 1, 3}];
1 1 2
1 2 3
1 3 4
2 1 3
2 2 4
2 3 5
3 1 4
3 2 5
3 3 6

Здесь используются два цикла с управляющими переменными i и j. Командой Print выводятся значения переменных i и j, а также их суммы i+j.

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