Особенность присвоения значения функции
1) Если значение присваивается функции, то в отличии от стандартного синтаксиса MathCAD, определять переменные, от которых она зависит, в скобках ее имени не нужно.
Пример:
2) присвоение значений используемым функциям и переменным может быть произведено как в самой программе, так и выше нее.
При этом если в программе произвести определение уже заданных выше величин, то они переопределяться.
В свою очередь определения, сделанные в самой программе, никак не влияют на остальной документ.
Пример:
Вводим «Add Line» требуемое количество раз:
В конце программы (блока) вводится имя той величины, которая должна быть выдана в качестве ответа (здесь Т).
Присваивать программное имя необязательно ─ можно просто поставить после нее знак « = », при этом результат будет выведен непосредственно справа от алгоритма.
После нажатия на кнопку « = » справа от алгоритма будет получено:
7.2.2 Общие принципы задания операторов
1) Что бы задать нужный оператор, необходимо использовать соответствующие команды панели «программирование».
Просто набрать оператор с клавиатуры нельзя ─ он будет воспринят системой как неизвестная функция.
Кроме того, каждый оператор программирования имеет свое сочетание «горячих клавиш», узнать которое можно, подведя курсор к соответствующей ему кнопке рабочей панели.
2) Задание комплекса условий в программных операторах можно делать по разному:
─ Можно поставить курсор в соответствующий маркер оператора, задействовать команду «Add Line» (добавить линию). В появившемся программном блоке определить условия. При таком задании условий оператор будет выполнен, если будет выполнено хотя бы одно условие из множества условий (что соответствует использованию логического оператора «или»).
─ В том случае, если оператор должен быть задействован при условии выполнения всего комплекса условий, следует использовать логическое умножение «И» панели «булевы».
Примеры составления программ
7.3.1 Пример задания комплекса условий
Пусть требуется вычислить сумму гармонического ряда из произвольного числа членов n. Условия суммирования ─ сумма не должна превысить 10.
Суммирование будем осуществлять с использованием оператора условного цикла «While» (пока).
Принцип его работы следующий:
если выполняется условие в его правом маркере, то выполняются и выражения в левом.
Можно записать программу следующим образом:
Очевидно, что программа работает некорректно.
Произведем суммирование с помощью специального оператора:
Ошибка в программе связанна с тем, что записана связь условий подобно логическому «ИЛИ».
Это заставляет оператор работать, пока выполняется хотя бы одно условие.
Поэтому суммирование будет производится до тех пор, пока результат не достигнет 10 (при этом будет просуммировано 12370 элементов вместо необходимых 10000).
Запишем программу, используя для связи условий логическое «И». В этом случае для продолжения цикла «while» требуется, чтобы исполнялись оба условия. Когда число членов суммы достигнет n, одно из условий перестанет выполнятся, цикл останавливается и выдается верный ответ.
Таким образом видно, что правильно работает программа, в которой комплекс условий записан через логический оператор.
Во втором случае, когда число членов достигает 10000 (т.е. заданного n), одно из условий перестает выполнятся, цикл останавливается и выдается верный ответ.
Пример расчета с заданной точностью
Рассмотрим программу подсчета суммы сходящегося ряда с заданной точностью, которая имеет ряд важных технических особенностей.
Проверку можно сделать с помощью оператора суммирования:
Разберем создание программы по пунктам.
1) Сначала вводим имя программы и блок из нескольких маркеров.
2) Задаем условный цикл «While» (пока). В качестве условия остановки в его правом маркере определим, что число операций суммирования не должно превышать 100000.
Это необходимо в связи с тем, что если ряд не сходится или сходится очень медленно, то подсчет может вестись неограниченно долго.
3) Затем задаем вид общего члена ряда:
Он определится как элемент вектора: это нужно для того, что бы затем была возможность подсчитать максимально просто сумму всех членов ряда.
4) Далее определяется условие остановки цикла. Делается это при помощи условного оператора «if». В качестве условия задано, что два соседних члена ряда должны отличаться по абсолютной величине не более, чем на 10-14 (такой подход возможен только в случае равномерной сходимости).
5 Определяется первый элемент вектора t0 как 0:
Иначе возникает проблема: с чем будет сравниваться первый член ряда.
6) В левом маркере условного оператора цикла (на самом деле он выводится ниже оператора) задаются те операции, которые должны быть произведены при выполнении условия точности.
Так как их несколько, то вводим дополнительный программный блок.
Во-первых, требуется произвести суммирование рассчитанных членов ряда. Так как они были сохранены в форме вектора, то операцию суммирования следует выполнить при помощи специального оператора суммы элементов вектора (Vector Sum) панели «матрица»:
Во-вторых, интересно узнать, сколько просуммировано элементов. А так как в качестве результата работы программы может быть выведен только один объект, то интересующие величины следует объединить в один вектор:
Для объединения операций в данном случае пришлось использовать оператор исключающего «или». При использовании логического «ИЛИ» ответ был бы выведен неполным: в нем бы присутствовало только значение суммы, и не было бы числа членов ряда.
Проще можно было бы объединение в один вектор произвести его непосредственным определением:
Так как задача программы выполнена, цикл должен быть остановлен. Делается это с помощью специального оператора остановки «Break». Он почти всегда используется с оператором «if».
7) В том случае, если условие точности выполнено не было, цикл должен продолжить свою работу. Однако на следующем круге должен быть рассмотрен уже следующий член ряда. Для этого следует увеличить значение переменной на 1:
Подобное переопределение переменной (или функции) через саму себя называется реккурентным.
Несмотря на то, что с точки зрения математики реккурентные выражения выглядят алогично, они являются одним из наиболее мощных и широко используемых средств компьютерной математики.
Первое значение переменной i (индекса) должно быть задано выше цикла как 1.
8) В конце первой программной линии вводим имя той величины, которая должна быть выдана в качестве ответа. В нашем случае это вектор «Sum».
Необходимо помнить, что в качестве результата работы программы выводится значение того выражения, которое находится в последнем маркере главного программного блока.
Ошибившись с его определением (или забыв задать его вовсе), можно получить совсем не тот ответ, который соответствует решению данной задачи.
Пример расчета различных параметров одной и той же программой