Организация циклов
Следующий пример показывает применение цикла Do для задания функции, вычисляющей п-е число Фибоначчи:
Обратите внимание на применение в этом примере функции Module. Она создает программный модуль с локальными переменными (в нашем случае fn1 и fn2), в котором организовано рекуррентное вычисление чисел Фибоначчи.
Наконец, последний пример показывает применение цикла Do для создания цепной дроби:
Циклы типа For
Другой вид цикла – цикл For – реализуется одноименной функцией:
В ней сначала один раз вычисляется выражение start, а затем поочередно вычисляются выражения body и incr до тех пор, пока условие test не перестанет давать логическое значение True. Когда это случится, то есть когда test даст False, цикл заканчивается.
Следующий пример показывает создание простой программы с циклом For и результат ее выполнения:
Программа, приведенная выше, позволяет наблюдать за изменением значений управляющей переменной цикла i и переменной х, получающей за каждый цикл приращение, равное 5*i. В конце документа показан пример на использование функции возврата значений Return [x]. В цикле For не предусмотрено задание локальных переменных, так что надо следить за назначением переменных – при использовании глобальных переменных неизбежны побочные эффекты.
Циклы типа While
Итак, функция For позволяет создавать циклы, которые завершаются при выполнении (эволюции) какого-либо условия. Такие циклы можно организовать и с помощью функции While [test, expr], которая выполняет expr до тех пор, пока test не перестанет давать логическое значение True.
Ниже дан практический пример организации и использования цикла While:
For [ start , test , incr , body ]
executes start , then repeatedly evaluates body and incr until test fails to give True .
Wolfram Mathematica — система для выполнения вычислений, широко использующаяся во всех областях, требующих технических вычислений.
Mathematica была создана Стефаном Вольфрамом (Stephen Wolfram) и разрабатывается Wolfram Research. Первая версия была выпущена 23 июня 1988 года.
Mathematica предоставляет пользователю огромный инструментарий:
- символьные и численные вычисления,
- библиотеки математических и статистических функций, теории групп и теории чисел,
- работа с графикой, в том числе инструменты визуализации и анимации, обработка и распознавание изображений,
- инструментарий для финансовых вычислений, анализа текстовых и графических данных и т.д.
- база данных математической, научной и социально-экономической информации,
- встроенный язык программирования, поддерживающий функциональный, процедурный и объектно-ориентированный стили прогграммирования.
- средства создания программ и пользовательских интерфейсов, параллельных вычислений, подключения внешних DLL и т.д.
Одним из базовых принципов встроенного языка Mathematica является представление любых сущностей в виде списков. Например, сумма чисел — это список с головным элементом Plus . Операции Map и Apply позволяют заменять головные элементы списков и применять заданное выражение к каждому элементу списка.
Элементы синтаксиса:
Комментарии, которые не могут быть вложенными | (* . *) |
---|---|
Регистрозависимость | да |
Регулярное выражение идентификатора переменной | [_a-zA-Z][_a-zA-Z0-9]* |
Регулярное выражение идентификатора функции | [_a-zA-Z][_a-zA-Z0-9]* |
Присваивание значения переменной | a=b, a:=b(отложенное или ленивое присвоение) |
Объявление переменной | (происходит в месте ее первого использования) |
Объявление переменной с присваиванием значения | = ; |
Группировка выражений | ( . ) |
Блок | [ . ] |
Равенство | == |
Неравенство | != |
Сравнение | >= 0, i—, loopBody] |
Логотип Wolfram Mathematica
Ссылки:
Примеры:
Квадратное уравнение:
После ввода коэффициентов определяем переменную y — квадратное уравнение с заданными коэффициентами. Так как x не определено, в уравнении оно останется обычной переменной (например, Print[y] выведет запись полученного уравнений c + b x + a x^2 с подставленными коэффициентами a, b и c). Функция Reduce вычисляет значения переменных, при котором указанное условие будет истинным. Условие в данном случае — квадратное уравнение, а переменная — x.
Факториал:
Используется встроенная функция вычисления факториала ! . Do — один из способов реализации циклов; выполняет первый аргумент для всех значений, заданных вторым аргументом, а именно: для всех i от 0 до 16 с шагом 1.
Числа Фибоначчи:
Print обязательно завершает вывод переносом строки, поэтому для того, чтобы вывести все числа Фибоначчи в одной строке, их нужно накопить в переменной msg и вывести ее. <> — оператор конкатенации; он работает только с явными строками, поэтому результат вызова Fibonacci нужно явно перевести в строку функцией ToString .
Hello, World!:
Функция Print выводит свои аргументы в основной выходной поток. Потоки могут быть вложенными, и для удобства копирования результатов лучше пользоваться для вывода одним потоком.
Hello, World!:
В этом случае создается временная строковая переменная. В конце строки нет символа “;”, и значение этой переменной выводится отдельным Out , что не всегда удобно.
Факториал:
Используется рекурсивное определение факториала. Обратите внимание на то, что при определении функции ее аргумент дополняется символом _ .
Числа Фибоначчи:
Этот пример использует функцию Riffle , которая в данном случае перемежает элементы массива чисел Фибоначчи копиями строки “,”.
Факториал:
Символу f[x] ставится в соответствие список (List[…]) первых x натуральных чисел, генерируемый функцией Range[x], в которой головная часть List заменяется на Times при помощи функции Apply[head, expr], записанной здесь как head@@expr.
Здесь использованы две парадигмы программирования, реализованные в Wolfram: во-первых, с помощью шаблонного выражения x_ число, вписанное в квадратные скобки, подставляется в соответствующее место справа от знака отсроченного присваивания := . Во-вторых, функциональная парадигма позволила избавить код от громоздких процедурных конструкций и придти к похожей на математическую записи.