Гурский Д., Турбина Е. - Вычисления в MathCad 12 (1077322), страница 33
Текст из файла (страница 33)
Использовать оператор обычного присваивания «:=» в программах нельзя. Однако вид уже введенного оператора присваивания может быть сменен с«<—» на «=». Для этого нужно щелкнуть на соответствующей строке программы правой кнопкой мыши и в появившемся контекстном меню открыть меню View DefinitionAs (Видеть присваивание как). В данном меню нужно выбрать пункт Equal (Равенство)(по умолчанию выбран пункт Left Arrow (Левая стрелка)).Присваивание значений в программах имеет ряд особенностей. Важнейшим из нихявляется то, что присвоение величин используемым алгоритмом функциям и переменным может быть произведено как в самой программе, так и выше нее. Данные два подхода весьма существенно разнятся. Если значение переменной или функции присваивается в программе посредством оператора «<-», то такая переменная или функциябудет являться локальной.
То есть она будет видимой только в рамках программы.Как-то повлиять на объекты вне программы она не сможет (равно как извне к нейнельзя будет получить доступ). Если переменная или функция задается выше программы с помощью оператора «:=», то она будет обладать глобальной видимостью. То естьтакая переменная или функция будет доступна любому нижележащему объекту, в томчисле и коду программ. Однако программа может только прочитать значение глобальной переменной или вызвать глобальную функцию. Как-то изменить значение глобальной переменной или функции программа не может.
Это очень важно учитыватьпри написании алгоритмов. Если программа должна осуществлять какую-то модификацию объекта (например, возводить все элементы массива в квадрат), то результатсвоей работы она должна возвращать (см. пример 4.2).Пример 4.2. Использование значения внешней переменной в программеМассив, элементы которого нужно возвести в квадрат:•М:=2 :ч4 5 67 8 9у1 3 8 •:• Глава 4. ПрограммированиеПрограмма, перебирающая все элементы М и заменяющая первоначальные значения элементових квадратами. Полученный результат программа возвращает.1for i e 0..
249Л16 25 36for j e 0.. 264 81V 49M. .<MВ результате выполнения программы массив М изменен не был. Это означает, что при обращении из программы к глобальной переменной копированием создается аналогичная локальнаяпеременная. Именно с хранимой ею величиной работают команды программы. Как-то изменитьглобальную переменную программа не может.(\ 2 Ъ\М= 4 5 6V7 8 9Локальные переменные и функции имеют приоритет над глобальными в рамках «родной» программы. Это означает, что если имеется локальная и глобальная переменные(или функции) с одним именем, то обращение по этому имени будет адресоватьсяк локальной переменной (или функции).Пример 4.3.
Одноименные локальная и глобальная переменныеа:=2|а<-3=3а =2Возможность создания локальных функций появилась только в Mathcad 12. До этогопопытка объявить функцию в программе вызывала ошибку. Создаются локальные функции точно так же, как обычные (только в качестве оператора присваивания используется «<—»). Вызвать локальную функцию можно только из нижележащих строк программы. Вне программы она не доступна.Пример 4.4. Задание в программе локальной функцииf(x,y,z) <- sin(x) + sin(y) + sin(z)= 4.287J П П тЛ( П пЛ J П „ 71value<-f - , - , - + f я , - , - + f — , 0 , V3 5 2)\ 8 A)V.
10 7valueЛокальные функции нужно создавать тогда, когда определенное выражение должновычисляться сразу в нескольких местах программы. Это позволяет избежать дублирования выражения, а следовательно, способствует уменьшению длины программы4.1. Создание программ * 1 3 9и увеличению ее читабельности.
Конечно, можно вынести выражение и во внешнююфункцию. Однако применение локальной функции техничнее, так как при этом сохраняется целостность программы, а, следовательно упрощается ее повторное использование.Иногда в программах используется значительное число локальных переменных. Еслипри этом каждая переменная объявляется в отдельной строке, то программа можетстать очень длинной. Соответственно, ее будет сложнее отлаживать, возникнут проблемы с распечаткой. В подобных случаях довольно заметно уменьшить длину программы можно, используя следующий прием. Представим, что нам нужно задать пять переменных. Для этого создадим в маркере программного блока матрицу-строку из пятиэлементов.
После этого определим каждую переменную в маркерах данной матрицы(см. пример 4.5).Пример 4.5. Объявление нескольких переменных в однойматрице-строке( а < - 1 b <-л с < - е d < - 0 f < - - l )=5.86a+b+c+d+fВ матрице-строке могут быть прописаны совершенно любые действия, а не толькооперации присваивания. Это можно использовать для сокращения длины программы тогда, когда одновременно должно быть выполнено несколько однотипных действий.Также сократить длину программы позволяет проведение присваивания в строке через запятую.
Для этого поставьте курсор в маркер программного блока и последовательным нажатием клавиши «,» введите необходимое количество маркеров, после чегов каждом из них задайте переменную либо пропишите требуемое действие.Пример 4.6. Объявление нескольких переменных в одной строке череззапятуюa<-4,b<-5,c<-8,d<-9=55a-b + с + 3dПри написании алгоритмов очень часто встречаются малопонятные для новичков в программировании выражения вроде п<—п+1. На самом же деле ничего противоречащегологике в таких выражениях нет.
Важно понимать, что оператор присваивания радикально отличается от оператора равенства, хотя в математике они традиционно обозначаются символом «=». Запись п*—п+1 не означает, что п тождественно равно п+1. Оналишь показывает, что текущее значение п нужно увеличить на 1, а затем полученнуювеличину присвоить п. Математически это можно записать рекуррентным выражением вида n k + ,=n k +l. Выражению п<-п-+1 соответствует целых три разделенных во времени действия. Сначала считывается текущее значение переменной.
Затем оно увеличивается на 1. И в последнюю очередь происходит переопределение п. Именно то, чтоэти действия происходят не одновременно, делает выражения рассматриваемого видаимеющими смысл.1 4 0 •:• Глава 4. ПрограммированиеПрактически любая программа строится с использованием специальных управляющихоператоров, вроде оператора цикла for или оператора условия if. Применение каждогоиз них мы рассмотрим весьма подробно ниже, а пока выделим лишь наиболее общиепринципы, связанные с их заданием.• Чтобы задать нужный оператор, используйте соответствующие кнопки панелиProgramming (Программирование). Просто набрать оператор с клавиатуры нельзя он будет воспринят системой Mathcad как неизвестная функция.
Кроме того, каждый оператор программирования имеет свое сочетание клавиш, узнать котороеможно, подведя курсор к соответствующей ему кнопке. Постарайтесь запомнитьэти сочетания клавиш, так как их использование значительно ускоряет набор программ.• Такие операторы как, if, for, while, активируют код, помещенный в их левый маркер,в том случае, если выполняется условие в правом. Для задания условия используются такие операторы панели Boolean (Булевы), как «=», «>», «<», «*», «>», «<».Можно задать и комплекс условий. Если некоторое действие должно быть выполнено, когда истину возвращают оба условия, то для их объединения нужно задействовать оператор логического И «л» панели Boolean (Булевы).
Если же действиедолжно быть проделано тогда, когда выполняется хотя бы одно условие из двух, дляих объединения следует использовать оператор логического ИЛИ «v». В тех жеслучаях, когда важно, чтобы выполнилось только одно условие из двух, применяется оператор исключающего ИЛИ «Ф». В принципе, в комплексе может быть и больше двух условий. Только стоит помнить о том, что для их объединения должениспользоваться один и тот же оператор. Если же часть условий объединяется с логикой И, а часть — ИЛИ, то лучше их разнести по разным операторам.Пример 4.7. Задание комплекса условийДанная программа перемножает две соразмерные матрицы так, что каждый элемент матрицырезультата есть произведение соответствующих элементов перемножаемых матриц. Перед темкак запустить основной алгоритм, программа проверяет матрицы на соразмерность..I 2 3М1:= 2 1 23 2 13 2 ЛМ2:=2 1 21 2 3(Ъ 4 3iflast(Ml(0>TJ=lastLW ) . =<0)=l a st(M2 0for ieO..lastVMl3 4 3y)\( rffor jeO..lastL\№l\/result.
. <-Ml. .-M2. .i-Jreturn result5tum "Error!!!"i.J4 1 4».J4.1. Создание программ* 141В качестве результата работы программы выводится значение того выражения, которое находится в последнем маркере главного программного блока. Ошибившись с егоопределением (или забыв задать его вовсе), можно получить совсем не тот ответ, который соответствует решению данной задачи. Впрочем, прервать работу программыи возвратить значение можно при выполнении любой ее строки. Для этого предназначен особый оператор return (см. пример 4.7).Если код программы не возвратит никакого значения, то по умолчанию будет выведено значение 0.