Разработка программ в MathCAD
5.1. Цель работы
Научиться составлять алгоритмы и программировать их в среде математических расчетов MathCAD.
5.2. Постановка задачи
Составить алгоритмы решения задач, согласно варианта, и написать программу их реализующую.
5.3. Внеаудиторная подготовка
Для подготовки к лабораторной работе следует ознакомиться с [9] (С.В.Глушаков. Математическое моделирование. Mathcad 2000. Учебный курс / Харьков: Фолио, 2001. - 524 с.).
5.4. Краткие теоретические сведения
Программные операторы находятся в наборной панели Programming.
Программный блок имеет вид самостоятельного модуля, выделяемого в тексте документа жирной вертикальной чертой. Модуль может вести себя как функция без имени и параметров, но возвращающая результат — первый пример на вычисление квадратного корня из числа 12. Программный модуль может выполнять и роль тела функции пользователя с именем и параметрами — второй пример.
Обзор программных операторов
Набор программных элементов для создания программных модулей весьма ограничен и содержит следующие элементы:
Add Line— создает и при необходимости расширяет жирную вертикальную линию, справа от которой в шаблонах задается запись программного блока;
← — символ локального присваивания (в теле модуля);
if— оператор условного выражения;
for— оператор задания цикла с фиксированным числом повторений;
while— оператор задания цикла типа «пока» (цикл выполняется, пока выполняется некоторое условие);
otherwise— оператор иного выбора (обычно применяется с if);
break— оператор прерывания;
continue— оператор продолжения;
return— оператор-функция возврата;
on error— оператор обработки ошибок.
Оператор Add Lineвыполняет функции расширения программного блока. Расширение фиксируется удлинением вертикальной черты программных блоков или их древовидным расширением. Благодаря этому, в принципе, можно создавать сколь угодно большие программы.
Оператор ← выполняет функции внутреннего локального присваивания. Например, выражение x ← 123 присваивает переменной x значение 123. Локальный характер присваивания означает, что такое значение x сохраняет только в теле программы. За пределами тела программы значение переменной x может быть не определенным, либо равно значению, которое задается операторами локального := и глобального присваивания вне программного блока.
Оператор ifявляется оператором для создания условных выражений. Он задается в виде:
Выражение ifУсловие
Если Условие выполняется, то возвращается значение Выражения. Совместно с этим оператором часто используются операторы прерывания breakи оператор иного выбора otherwise.
Оператор forслужит для организации циклов с заданным числом повторений. Он записывается в виде:
forVar ϵ Range
Эта запись означает, что тело цикла – выражение, помещенное в шаблон под словом for, будет выполняться при изменении переменной Var в диапазоне Range. Range может быть непосредственно диапазоном Nнач .. Nкон, может быть ранжированной величиной (Nнач,,Nслед .. Nкон) или вектором.
Оператор whileслужит для организации циклов, действующих до тех пор, пока выполняется некоторое логическое условие. Этот оператор записывается в виде:
whileУсловие
Выполняемое выражение записывается на место шаблона под словом while.
Оператор otherwise("иначе") обычно используется совместно с оператором if. Его использование поясняет следующая программная конструкция: f(x):= 1 ifx > о возвращает 1 если x>0 otherwiseвозвращает -1 во всех иных случаях.
Оператор breakвызывает прерывание работы программы всякий раз, как он встречается. Чаще всего он используется совместно с оператором условного выражения ifи операторами циклов whileи for, обеспечивая переход в конец тела цикла.
Оператор продолжения continueиспользуется совместно с операторами циклов whileи for, обеспечивая прерывание текущей итерации цикла и возврат в начало цикла.
Особый оператор-функция returnпрерывает выполнение программы и возвращает значение своего операнда, стоящего следом за ним. Например, в приведенном ниже случае
return0 ifx<0
будет возвращаться значение 0 при любом x<0.
Оператор обработки ошибок on errorпозволяет создавать конструкции обработчиков ошибок. Этот оператор задается в виде:
Выражение_1 on errorВыражение 2
Здесь, если при выполнении Выражения_2 возникает ошибка, то выполняется Выражения_1. Для обработки ошибок полезна также функция error(S), которая, будучи в программном модуле возвращает окошко с надписью, хранящейся в символьной переменной S или в символьной константе (любой фразе в кавычках).
Несмотря на скромный набор программных средств, они дают системе MathCAD возможности задания функций с аппаратом локальных переменных, задания различных видов циклов (в том числе вложенных), упрощения алгоритмов с применением операций присваивания и реализацию по классическим алгоритмам итерационных и рекурсивных процедур.
Для нескольких подмодулей, которые должны выполняться в составе циклов, нужно использовать их объединение в виде жирной вертикальной черты. Для этого служит команда Add Line, как и для исходного задания блока.
Программный модуль, в сущности, является функцией, но описанной с применением упомянутых программных средств. Модуль возвращает значение, определяемое последним оператором или выражением. После такого модуля можно поставить знак равенства для вывода значения функции. В блоке могут содержаться любые операторы и функции входного языка системы.
Ниже показаны примеры применения операторов on errorи return, а также действие функции error, задающей вывод надписи в желтом прямоугольнике при активизации мышкой выражения, содержащего ошибку.
5.5 Задания к лабораторной работе 4
Задание № 1
Составьте блок-схему алгоритма и программу-функцию линейного алгоритма и вычислите её значение для трёх разных наборов аргументов.
Варианты:
1). Вычислить значения функций по формулам:
a) f(a,b,c)=
б) z(x,y)=
2). Вычислить значения функций по формулам:
a) f(a,b,c,d)=
б) z(x)=2ctg(3x) -
3). Вычислить значения функций по формулам:
a) f(x,y)=
б) z(x,y)=x - 10 + cos(x - y)
4). Вычислить значения функций по формулам:
a) f(x,y)=
б) z(x)=x - 10sinx +
5). Вычислить значения функций по формулам:
a) f(x,y)=
б) z(x)=sin
6). Вычислить значения функций по формулам:
а) f(x)=x -
б) z(x,y)=e -
7). Вычислить значения функций по формулам:
а) f(x,y)=ln
б) z(x)=
8). Вычислить значения функций по формулам:
a) f(x,y)= (1 - tgx)
б) z(x,y)=
9). Вычислить значения функций по формулам:
a) f(x,y)=
б) z(x)=e
10). Вычислить значения функций по формулам:
а) f(x,y)=
б) z(x,y)=x lnx +
11). Вычислить значения функций по формулам:
а) f(x,y)=
б) z(x)=
12). Вычислить значения функций по формулам:
a) f(x,y)=
б) z(x,y)=3
13). Вычислить значения функций по формулам:
а) f(x)=2ctg(3x) -
б) z(x,y)=2
14). Вычислить значения функций по формулам:
а) f(x,y)=sin(3x) – cos(x2 +y2)
б) z(a,b,c)=2a-b+c*(ln(b-a))
15). Вычислить значения функций по формулам:
а) f(a,b,c)= +
б) z(x,y)=2
16) Даны два целых числа. Найти их среднее арифметическое.
17) Даны длины сторон прямоугольника. Найти его периметр и длину диагонали.
18) Дано трехзначное число. Найти число, полученное при прочтении его цифр справа налево.
19) Даны длины сторон прямоугольного параллелепипеда. Найти его объем и площадь боковой поверхности.
20) Известны координаты двух точек плоскости. Составить программу вычисления расстояния
21) Треугольник задан координатами своих вершин. Найти периметр и площадь треугольника.
22) Дано трехзначное число. Найти число, полученное при перестановке первой и второй цифр заданного числа.
24) Даны катеты прямоугольного треугольника. Найти его периметр.
25) Дано трехзначное число. Найти число, полученное при перестановке второй и третьей цифр заданного числа.
26) Найти площадь кольца по заданным внешнему и внутреннему радиусам.
27) Дано целое число, большее 99. Найти количество десятков в числе.
28) Известны количество жителей в государстве и площадь его территории. Определить плотность населения в этом государстве.
29) Дано четырехзначное число. Найти сумму его цифр, произведение его цифр.
30) Дана длина ребра куба. Найти объем куба и площадь его боковой поверхности.
31) Дано натуральное число n (n>9). Найти число единиц в нем.
32) Дан радиус окружности. Найти длину окружности и площадь круга.
33) Дано натуральное число n ( n>99). Найти число десятков в нем.
34) Даны основания и высота равнобедренной трапеции. Найти ее периметр.
35) Дано натуральное число n (n>99). Найти число сотен в нем.
36) Даны два числа. Найти среднее арифметическое и наибольший общий делитель их модулей.
37) Дано натуральное число n (n>999). Найти число тысяч в нем.
38) Дан координаты двух точек в декартовом пространстве координат. Найти расстояние между точками.
39) Дано двухзначное число. Найти число десятков в нем, число единиц в нем, их сумму и разность.
40) Дано двухзначное число. Найти число десятков в нем, число единиц в нем, их произведение и среднее арифметическое.
Задание № 2
Составьте блок-схему алгоритма и программу-функцию разветвляющегося алгоритма
Варианты:
1. Дано целое число. Если оно является положительным, прибавить к нему 1, в противном случае увеличить его в два раза. Вывести полученный результат на экран.
2. Дано целое число. Если оно является положительным, то прибавить к нему 1; если отрицательным, то вычесть из него 2; если нулевым, то заменить его на 10. Вывести полученное число.
3. Определить, насколько число А больше (или меньше) числа В или же установить факт их равенства.
4. Даны два числа. Возвести в квадрат те числа, значения которых отрицательны.
5. Определить, является ли целое число N двузначным числом.
6. Определить, является ли треугольник со сторонами А, В, С равнобедренным.
7. Если целое число m делится на целое число n, то вывести на экран частное от деления, в противном случае вывести сообщение «m на n нацело не делятся»
8. Даны два числа, определить, равны они или нет, если числа не равны, вывести соответствующее сообщение в виде 5>2 или 2<5.
9. Даны три числа являющиеся углами треугольника. Классифицировать этот треугольник (равносторонний, равнобедренный, прямоугольный, разносторонний, остроугольный, тупоугольный)
10. Даны три целых числа. Найти количество положительных и количество отрицательных чисел в исходном наборе.
11. Написать программу нахождения N номера четверти декартовых координат, которой принадлежит заданная точка с координатами X и с координатами X и Y. Предусмотреть случай когда точка лежит на оси OX или OY.
12. Составить программу идентификации трапеции по двум прилежащим углам U1 и U2. Определяемое свойство: обыкновенная, прямоугольная, равнобедренная, прямоугольник.
13. Написать программу, классифицирующую треугольник (равнобедренный, равносторонний, прямоугольный, с разными сторонами), если даны стороны.
14. Дано целое число. Вывести его строку – описание вида «отрицательное четное число», «нулевое число», «положительное нечетное число» и т.д.
15.Дано целое число, лежащее в диапазоне 1-999. Вывести его строку описание вида «четное двузначное число», «нечетное трехзначное число», и т.д.
16. Даны три целых числа, одно из которых отлично от двух других, равных между собой. Определить порядковый номер числа, отличного от остальных.
17. Даны три целых числа. Если они упорядочены по возрастанию или убыванию, то удвоить их. В противном случае оставить без изменений. Вывести эти числа на экран.
18. Даны три числа. Найти наименьшее из них.
19. Даны три числа. Найти среднее из них (то есть число, расположенное между наименьшим и наибольшим).
20. Даны два числа А и В. Меньшее из этих чисел заменить их полусуммой, а большее удвоенным произведением
Задание № 3
Составьте блок-схему алгоритма и программу-функцию циклического алгоритма
Варианты:
1.Вывести на экран все натуральные числа до заданного
2. Найти наибольший нетривиальный делитель натурального числа
3. Найти наименьший нетривиальный делитель натурального числа
4. Подсчитать общее число делителей натурального числа
5. Проверить, является ли заданное натуральное число простым
6. Вывести все простые числа до заданного
7. Найти сумму всех натуральных чисел до n
8. Проверить, является ли заданное натуральное число совершенным
9. Проверить, являются ли два натуральных числа дружественными
10. Найти наибольший общий делитель двух натуральных чисел
11. Найти наименьшее общее кратное двух натуральных чисел
12. Вычислить факториал
13. Вычислить число сочетаний из n по k
14. Вывести таблицу квадратов и кубов всех натуральных чисел до n
15. Найти среднее арифметическое всех натуральных чисел до n
16. Вычислить значение функции f(x)=sin(x)+cos(x), где х лежит в диапазоне [0;1] с шагом 0,1
17. Дано вещественное число A и целое число N (> 0). Вывести A в степени N: AN = A·A·...·A (числа A перемножаются N раз).
18. Даны два целых числа A и B (A < B). Вывести все целые числа, расположенные между данными числами (не включая сами эти числа), в порядке их возрастания, а также количество N этих чисел.
19. Вычислить все квадраты двухзначных чисел, не превышающих 100.
20. Население города ежегодно увеличивается на 1/40 населения состава жителей. Через сколько лет население города утроится?
Контрольные вопросы
1. Как описывается программный блок в MathCAD?
2. Напишите пример оператора if и otherwise для создания условных выражений.
3. Напишите пример оператора цикла с заданным числом повторений
4. Напишите пример оператора цикла с условием завершения повторений.
5. Когда необходимо использование операторов break и continue?
6. Дайте понятие алгоритма. Какие структуры алгоритмов вам известны? Поясните различия структур.
7. Могут ли циклы в алгоритмах быть вложенными друг в друга? Приведите примеры.