Шаг в маткаде цикла for

Шаг в маткаде цикла for thumbnail

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

В этом уроке мы изучим три новые команды:

  1. for – для циклов for.
  2. while – для циклов while.
  3. return – как команду для отслеживания ошибок.

Остановка вычислений

Операции Mathcad, которые мы рассматривали ранее, достаточно безвредны – они не заставят Ваш компьютер «зависнуть». Но с циклами это не так. Поэтому для начала следует изучить команды в меню Вычисления -> Элементы управления:

Здесь находятся четыре кнопки:

  1. Автоматический расчет.
  2. Остановить все расчеты.
  3. Рассчитать.
  4. Отключить область.

Кнопка «Автоматический расчет» обычно включена. Она отключается при нажатии на кнопку «Остановить все расчеты». Зеленый индикатор в левом нижнем углу становится серым. «Остановить все расчеты» служит для прекращения всех расчетов в документе на случай, если что-то пошло не так. При автоматическом расчете вычисления производятся лишь в том случае, когда происходят какие-либо изменения. С помощью кнопки «Рассчитать» можно сделать пересчет всего документа. Кнопка «Отключить область» прекращает вычисления в тех математических областях, которые Вы выбрали.

На рисунке ниже видно, что область серая – значит, она отключена:

mathcad_12_02

Нажмите на нее, затем на кнопку «Отключить область». Тем самым Вы запустите расчет в области. Вычисление займет некоторое время:

mathcad_12_03

Его можно прекратить, нажав на кнопку «Остановить все расчеты», затем отключив область и снова включив автоматический расчет.

Циклы

for

Циклы forприменяются, когда заранее известно число повторений вычислений. Программа ниже формирует вектор из n+1 элементов. Значения начинаются с нуля и имеют шаг 1.

mathcad_12_04

Цикл forначинается со второй строки. Он включает в себя счетчик (здесь – i), который является локальной переменной-диапазоном. Эту строку можно прочитать как: «Для диапазона целых чисел от 0 до nвключительно сделать: …». Затем следуют выполняемые действия – в нашем случае это простое присваивание. Когда цикл завершается, программа выполняет действия на следующей строке – здесь это оператор return.

Составим программу.

Задайте имя программы-функции, вставьте программную структуру (вертикальная линия) и определение цикла forиз меню Математика -> Операторы и символы -> Программирование или с помощью сочетания клавиш [Ctrl+Shift+”]:

mathcad_12_05

Определите имя переменной-счетчика:

mathcad_12_06

Определите диапазон счетчика:

mathcad_12_07

Введите команды тела цикла и оператор return:

mathcad_12_08

Проверим программу:

mathcad_12_09

Как видно, использование дробных или отрицательных чисел – не лучшая идея. Вы можете изменить точку начала, но этого лучше избегать:

mathcad_12_10

Видите нули, которые появились в начале вектора? Причиной появления этих нулей является то, что если не определить некоторые элементы вектора, то им автоматически присвоится значение 0:

Циклы

while

На рисунке ниже – простейший цикл while, который делает то же самое, что и предыдущий цикл for:

mathcad_12_12

До цикла необходимо создать строку, содержащую определение начального значения счетчика. Следующую строку можно прочитать как «Выполнять цикл, пока соблюдается условие i?n». После определения элемента вектора нужно задать команду на увеличение переменной-счетчика, так как в цикле while это не происходит автоматически.

Другой, более «реалистичный», пример цикла while вычисляет экспоненту отрицательного числа, используя разложения в ряд:

Суммирование будем производить с помощью цикла while. Будем проверять, насколько изменяется общая сумма S при каждом увеличении k. Если абсолютное значение этого изменения достаточно мало, цикл завершится. Чтобы начать цикл, необходимо определить первые два элемента вектора:

Кроме того, мы определили начальное значение суммы S и счетчика k. Дальнейшие вычисления производятся в цикле:

mathcad_12_15

Проверка:

mathcad_12_16

С положительными числами программа работает хорошо, но для работы с отрицательными она не предназначена.

Отладка

Одна из простых технологий отладки программ – вывод промежуточных результатов вычислений и их сравнение с тем, какие значения должны быть. Пример на цикле while:

mathcad_12_17

Число элементов вектора верное, но второй элемент неправильный. Похоже, что последние элементы нашего вектора получили правильный индекс, а второй элемент (с индексом 1) – нет. Мы можем проверить, какой индекс получил второй элемент, вставив «returni» в первую строку цикла while. Программа остановит вычисление и вернет значение i:

mathcad_12_18

Вероятно, Вы уже поняли, что ошибка в первой строке. Замените 2 на 1, удалите дополнительную строку return, и Вы получите верный результат.

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

mathcad_12_19

После отладки всегда следует удалять дополнительные строки, которые Вы вводите, так как программа всегда прекращает работу после первого оператора return.

Подпрограммы

Примеры программ в этом уроке малы. Настоящие программы могут быть намного больше. В других языках программирования они обычно составляются как основная программа и следующие за ней подпрограммы и процедуры. Эти более малые программы можно составлять сами по себе и затем вызывать их в основной программе. Также могут быть подподпрограммы и так далее.

Ваша собственная программа

Когда Вы начинаете составлять свою собственную программу, может показаться, что Вы находитесь в замкнутом круге: чтобы начать, нужен опыт; чтобы получить опыт, нужно начать.

Начать необходимо, но не следует начинать с набора команд в Mathcad! Для начала следует подготовиться.

Прежде всего, нужно решить, что делает Ваша программа. Для больших, сложных программ это, как правило, нетривиальная задача. Какие выходные данные нужны, и какие входные для этого необходимы?

Читайте также:  Рерих цикл картин начало руси славяне

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

  1. Ввод (input)
  2. Действие (или определение)
  3. Вывод (output)
  4. Одиночное ответвление (if..elseили if..if)
  5. Многократное ответвление (if..if..if)
  6. Цикл for
  7. Цикл while

mathcad_12_20

Решите, какие вспомогательные переменные (например, счетчики) необходимы, и какие имена Вы собираетесь им дать. Постарайтесь предусмотреть, где и что может пойти не так и как это можно проверить.

Только когда Вы поняли, что улучшить программу на бумаге больше нельзя, открывайте Mathcad. Остановите все вычисления, затем вводите код. Возможно, это самая простая часть написания программы.

После написания кода программы сохраните файл. Затем нажмите кнопку «Автоматический расчет», чтобы запустить вычисления. Будьте готовы увидеть неверный результат или ошибку – тогда программу придется отлаживать. Сохраняйте файл каждый раз, когда делаете большие изменения.

После запуска программы ее необходимо проверить. Попробуйте обычные входные значения, а также такие значения, с которыми могут возникнуть проблемы. Программа может дать сообщение об ошибке для неверного входного или выходного значения. В завершение подумайте, как можно улучшить программу.

Резюме

  1. Отключайте вычисления при написании или редактировании программы (Вычисления -> Остановить все расчеты).
  2. Цикл for – повторяет вычисления определенное количество раз. Цикл forобязательно включает в себя счетчик и число повторений.
  3. Цикл while – выполняется, пока соблюдается определенное условие. Начальное значение счетчика следует задавать до цикла. В теле цикла изменение счетчика задается вручную.
  4. Программы почти всегда требуют отладки. Полезная команда для этого – return, с помощью которой можно вывести промежуточное значение.
  5. Важно подготовиться к написанию программы, например, составив структурную диаграмму до написания непосредственно кода.

Источник

В статье рассмотрены основы программирования в mathcad версии 15 и более старших. Приведены полезные примеры для инженерных расчетов

  • Цикл “FOR”
  • Условные операторы “IF”
  • Цикл “WHILE”

Цикл “FOR” в mathcad 15

Для примера рассмотрим пример заполнения матрицы-вектора в автоматическом режиме. Предположим, что нам нужно заполнить матрицу случайными числами. Размер матрицы 10 элементов. Заполнение в ручную такой матрицы безусловно отнимет массу времени

В свободном поле mathcad введите имя вашей будущей матрицы M. Поставте знак присвоить “:=” и затем на английской раскладке нажмите комбинацию Alt (правый) + “]”. В место привычного маркера возникнет вертикальная черная черта с двумя маркерами. Удерживая клавишу Alt введите еще несколько раз символ “]” так, чтобы увеличить число свободных маркеров. Можно также воспользоваться кнопкой “Add Line” на панели Programming. В этих маркерах записываются строки кода

Рис. 1. Подготовка к написанию кода

Поместите курсор в первый маркер и на панели Programming нажмите кнопку с надписью “for”. Вы увидите заготовку для формирования цикла FOR с маркером для ввода “тела цикла”, который несколько отстоит от основных маркеров

Рис. 2. Запись безусловного цикла FOR

Теперь нужно ввести переменную-счетчик (пусть это будет “i”), которая будет менять свое значение от 1 до 10. Диапазон от 1 до 10 задается с помощью ранжированной переменной, которую можно найти на панели Matrix

Рис. 3. Настройка параметров цикла for в mathcad 15

Цикл for в этом примере будет перебирать значения счетчика i от 1 до 10 c шагом 1. При каждом значении i элементу матрицы с соответсвующим индексом будет присваиваться случайное число с помощью стандартной функции rnd(m). Функция rnd присваивает переменной значение в диапазоне от 0 до “m”

Операция присваивания осуществляется при помощи операции Local difinition с панели Programming. Опрерация присваивания отображена в виде стрелочки “←”. Чтобы присвоить какое либо значение элементу матрицы нужно указать соответсвующий индекс матрицы. Это делается с помощью кнопки pt на панели Matrix.

Операция присваиваивания должна осуществляться в “теле цикла”. То есть, все действия, которые должны повторяться по мере работы счетчика циклы, должны находиться в соответсвующих маркерах. После завершения работы цикла в последний маркер тела программы нужно ввести имя матрицы, над заполнением которой мы работали. В нашем случае это M. См. рисунок 4

Рис. 4. Синтаксис программы по заполнению матрицы-вектора случайными числами в mathcad 15

Теперь можно посмотреть на результат. Введем имя матрицы M и поставим знак равно “=”. Мы сразу же увидим содержимое матрицы-вектора, который был заполнен с помощью нашей программы. Теперь меняя количество итераций в цикле for мы можем изменять размерность матрицы-вектора. Можн также поменять и закон заполнения матрицы-вектора.

Рис. 5. Результат работы программы в mathcad 15

Можно изменить программу таким образом, чтобы заполнить квадратную матрицу. Для этого нам нужно ввести еще один счетчик и еще один цикл for с индексом j. Таким образом один цикл будет выполняться внутри другого, формируя столбцы и строки матрицы

Рис. 6. Программа для заполнения квадратной матрицы в mathcad 15

Программы в mathcad могут использовать значения переменных, находящихся вне тела программы. Например, на рисунке ниже видно, как можно конечные значения счетчиков цикла связать со значениями переменных из вне

Рис. 7. Программа для заполнения квадратной матрицы в mathcad 15

Условные операторы “IF” в mathcad 15

Чтобы посмотреть, как работает условный оператор “if” в mathcad 15 рассмотрим простой пример. Заполним квадратную матрицу G размером 5 х 5 элементов случайными числами и затем обнулим все элементы, которые меньше 10

Читайте также:  Как называется рабочая часть цикла на компьютере

На рисунке 8 приведен уже знакомый код заполнения матрицы случайными числами

Рис. 8. Программа для заполнения квадратной матрицы случайными числами

Для обнуления элементов, значение которых меньше 10, запишем второй участок кода с использованием условного оператора “If”. Для проверки каждого элемента на выполнение этого условия нам опять потребуется два вложенных цикла “for” с счетчиками i и j. См. рис. 9. Обратите внимание, в теле второго цикла оставлено два свободных маркера

Рис. 9. Заготовка для применения условного оператора

Результат работы программы для удобства будет записываться в матрицу P. Поместите курсор в первый свободный маркер и нажмите на кнопку с надписью “if” на панели Programming. Вы увидите заготовку для записи условного оператора

Рис. 10. Заготовка для условного оператора

В этой заготовке выполним обнуление элемента матрицы G если значение этого элемента менее 10. Присвоение элементу матрицы значение нуля осуществляется символом “←” . Буквально логика данной операции следующая: “присвоить элементу матрицы P с текущим индексом i и j значение 0 если елемент матрицы G с тем же индексом меньше 10”

Рис. 11. Ввод условного оператора в mathcad 15

Теперь запишем второе условие, по которому все элементы матрицы G, которые больше либо равны 10 попадают в матрицу P без изменеий на те же “мееста”. Буквально логика данной операции следующая: “присвоить элементу матрицы P с текущим индексом i и j значение елемента матрицы G с тем же индексом если значение элемента больше либо равно 10”. Сразу же после текста программы можно вывести результат. См. рис. 12.

Рис. 12. Ввод условного оператора в mathcad 15

Теперь можно наглядно увидеть, как изменилась матрица после ее обработки условными операторами

Рис. 13. Результат работы условного оператора

Цикл “WHILE” в mathcad 15

Цикл While является условным циклом. То есть повторение его тела осуществляется до тех пор пока верно условие.

Рассмотрим простой пример заполнения матрицы-столбца с использованием цикла while. В качестве условия работы цикла будем проверять верно ли равенство m < 7. Переменную m будем изменять в теле цикла, так что бы в какой то момент условие не выполнилось и цикл завершился. Также в тело цикла введем закон изменения значений элементов нашей матрицы-столбца. На рис. 14 приведен синтаксис цикла while.

Рис. 14. Цикл WHILE в mathcad

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

Обратите внимание на то, что если в процессе выполнения программы условие запуска цикла “while” всегда оказывается верным, то цикл не завершится. Произойдет так называемое “зацикливание” программы и придется прерывать процесс счета вручную и искать ошибку

Источник

Мы поможем в написании ваших работ!

Мы поможем в написании ваших работ!

Мы поможем в написании ваших работ!

ЗНАЕТЕ ЛИ ВЫ?

ПРОГРАММИРОВАНИЕ В СИСТЕМЕ MATHCAD

Введение

Как известно из истории развития вычислительной техники, программное обеспечение, в том числе, используемое для математических расчетов, также эволюционировало от машинных языков низкого уровня к языкам высокого уровня и, наконец, к пакетам прикладных программ, предоставляющим инженерам и ученым возможность решать задачи не имея специальной «программисткой» подготовки, что, конечно, не избавляет их от необходимости владеть математическим аппаратом и специальными знаниями, а также возможностей используемых ими пакетов программ.

Тем не менее, математические пакеты дают огромные возможности исследователям и инженерам, так как содержат тщательно сбалансированные средства численных и символьных вычислений с графической визуализацией результатов в сочетании с современным интерфейсом пользователя, мощной справочной системой, обширными пакетами расширений (ориентированных на решение определенного класса задач) и средствами для работы в Internet.

К таким пакетам относятся MatLab, Mathematica , Maple и MathCAD.

Возможности этих пакетов огромны и с каждой новой версией их становится все больше, тем не менее, не всегда можно обойтись использованием «готовых» функций, входящих как в сам MathCAD, так и в пакеты расширений. Их использование порождает достаточно простые алгоритмические конструкции, реализуемые непосредственно в документе MathCAD. Однако в ряде случаев возникает необходимость программирования того или иного «нестандартного» вычислительного алгоритма. Здесь необходимы навыки программирования с учетом особенностей конструкций пакета MathCAD.

Этим вопросам и посвящена эта часть дисциплины «Информатика»

Подпрограмма-функция. Описание и вызов.

Программирование в системе MathCad, предполагает использование так называемых подпрограмм-функций (П-Ф), определяемых непосредственно пользователем. П-Ф позволяют реализовывать выполнение последовательности действий с использованием различных сочетаний алгоритмических структур – следования, ветвления и циклов.

Работа с П-Ф начинается с ее описания. Для этого нужно:

1. Присвоить имя П-Ф, посредством которого осуществляется обращение к этой функции в дальнейшем и ввести список формальных параметров (список формальных параметров при решении некоторых задач может отсутствовать).

Примеры имен П-Ф: f(x), A, Z(x,y,v).

2. После имени вводится знак «:=» присваивания.

Например:

f(x):=, A:=, Z(x,y,v) :=.

3. Открыть палитру Программирование и щелкнуть кнопкой Add line (рис. 1.1). На экране появится вертикальная черта и вертикальный столбец с двумя полями для ввода операторов, образующих тело П-Ф (рис. 1.2);

Рис.1.1. Палитра ПРОГРАММИРОВАНИЕ

Тело подпрограммы-функции включает любое число операторов: локальных операторов присваивания, условных операторов и операторов цикла, а также вызов других П-Ф и функций пользователя.

Рис.1.2. Структура подпрограммы-функции.

4. Перейти в поле 1 (щелкнув на нем мышью или нажав клавишу [Tab]) и начать вводить операторы П-Ф, оставляя самое нижнее поле тела для возвращаемого значения функции – результата работы П-Ф. на рис. 1.2.это поле 2.

Пример:

Так как тело П-Ф как правило состоит из более чем двух полей, то поля ввода для дополнительных операторов открываются с помощью щелчка на кнопке Add line палитры программирование (см. рис. 4.1.3). При этом поле ввода добавляется внизу выделенного к этому моменту оператора. Для удаления того или иного оператора или поля ввода из тела П-Ф нужно заключить его в выделяющую рамку и нажать клавишу [Delete];

Обратите внимание, что оператор присваивания в теле П-Ф имеет вид стрелки, направленной влево: ← и называется локальным оператором присваивания.

Рис.3.1. Пример программирования линейного алгоритма

Рис. 4.1. Структура условного оператора if «ЕСЛИ – ТО»

Поле 2 заполняется условием, если оно верно (истинно), то выполняется выражение, стоящее в Поле 1.

Пример:

Вычислить значение функции, заданной следующим образом:

.

Реализация ЕСЛИ – ТО (if) в MathCad:

Рис. 4.1. Реализация условного оператора if «ЕСЛИ – ТО»

Для получения условной структуры ЕСЛИ – ТО – ИНАЧЕ используется оператор otherwise, вводимый с палитры ПРОГРАММИРОВАНИЕ, в поле которого размещается конструкция ВЫР2, которая выполняется, если проверяемое логическое выражение принимает значение ЛОЖЬ (0) (рис. 4.2). Оператор otherwise непосредственно следует после условного оператора if.

Рис.4.2. Реализация структуры «ЕСЛИ – ТО – ИНАЧЕ»

Для ввода ВЫР2 в поле оператора otherwise необходимо:

· выделить поле, стоящее после оператора if;

· щелкнуть на кнопке otherwise палитрыПРОГРАММИРОВАНИЕ;

· в появившееся поле оператора otherwise ввести необходимую конструкцию ВЫР2.

Пример:

Вычислить значение функции, заданной следующим образом:

.

Реализация ЕСЛИ – ТО – ИНАЧЕв MathCad :

Рис. 4.3. Реализация условного оператора if «ЕСЛИ – ТО- ИНАЧЕ»

Рис. 5.1. Поля оператора цикла for

· в поле ввода 1 ввести имя переменной, являющейся параметром цикла;

· в поле 2 – закон изменения параметра цикла, используя для этого описание дискретной переменной или описание массива;

· в поле 3 – операторы, составляющие тело цикла. Если одной строки недостаточно, то дополнительные поля ввода (дополнительные строки) создаются щелчком на кнопке Add line палитры ПРОГРАММИРОВАНИЕ, и тогда слева от тела цикла появляется вертикальная черта, охватывающая тело цикла.

Пример 5.1:

Написать программу формирования вектора длины п, значения элементов которого являются значениями выражения , где .

Рис. 5.2. Реализация цикла FOR в MathCad:

Пример 5.2:

На отрезке [-1;3] с шагом 0,3, вычислить значения функции и сформировать из этих значений вектор .

Примем – начальное значение, а – конечное значение аргумента, приращение аргументы происходит по закону , получим реализацию алгоритма for:

Рис. 5.3. Формирование вектора примера 5.2

Следует помнить, что и в тексте программы не являются элементами вектора и знаки 0 и k пишутся через десятичную точку.

Рис. 5.4. Структура оператора итерационного цикла

· в поле 1 ввести условие выполнения цикла;

· в поле 2 ввести операторы тела цикла. В теле цикла должны присутствовать операторы, которые могут изменить значение условия цикла, иначе цикл будет продолжаться бесконечно.

Оператор цикла while выполняется следующим образом: обнаружив оператор while, Mathcad проверяет указанное в операторе условие. Если оно равно 1 (т.е. выполняется), то выполняется тело цикла, и снова проверяется условие. Если условие принимает значение 0, то цикл заканчивается.

Пример 5.3:

Вычислять значение функции с шагом на отрезке [0.001; 3], до тех пор, пока .

Решение. Как видно из рисунка 5.5, функция , действительно меняет знак на отрезке [0.001; 3].

Введем следующие обозначения: а – начальное значение функции, d – приращение аргумента (шаг, с которым вычисляется значение функции ).

Рис. 5.5. График функции

Реализация программы итерационного цикла с использованием оператора whileприведена ниже на рис. 5.6:

Рис. 5.5. решение задачи примера 5.3

ПРОГРАММИРОВАНИЕ В СИСТЕМЕ MATHCAD

Введение

Как известно из истории развития вычислительной техники, программное обеспечение, в том числе, используемое для математических расчетов, также эволюционировало от машинных языков низкого уровня к языкам высокого уровня и, наконец, к пакетам прикладных программ, предоставляющим инженерам и ученым возможность решать задачи не имея специальной «программисткой» подготовки, что, конечно, не избавляет их от необходимости владеть математическим аппаратом и специальными знаниями, а также возможностей используемых ими пакетов программ.

Тем не менее, математические пакеты дают огромные возможности исследователям и инженерам, так как содержат тщательно сбалансированные средства численных и символьных вычислений с графической визуализацией результатов в сочетании с современным интерфейсом пользователя, мощной справочной системой, обширными пакетами расширений (ориентированных на решение определенного класса задач) и средствами для работы в Internet.

К таким пакетам относятся MatLab, Mathematica , Maple и MathCAD.

Возможности этих пакетов огромны и с каждой новой версией их становится все больше, тем не менее, не всегда можно обойтись использованием «готовых» функций, входящих как в сам MathCAD, так и в пакеты расширений. Их использование порождает достаточно простые алгоритмические конструкции, реализуемые непосредственно в документе MathCAD. Однако в ряде случаев возникает необходимость программирования того или иного «нестандартного» вычислительного алгоритма. Здесь необходимы навыки программирования с учетом особенностей конструкций пакета MathCAD.

Этим вопросам и посвящена эта часть дисциплины «Информатика»

Читайте также:  Цикл солнца 11 лет астрология

Источник