Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

06 - Программирование

.pdf
Скачиваний:
26
Добавлен:
29.03.2015
Размер:
459.58 Кб
Скачать

Программирование

Пример 6.11.

Немного изменим условия предыдущего примера, а именно: значения х, для которых вычисляется функция y(x), задается вектором x, имеющим n проекций. Для каждой проекции вектора х вычислить значение функции f(x)=e-x Cos ( 2x ) и записать это значение в соответствующую проекцию вектора y.

Описание программы-функции, решающую эту задачу имеет вид :

form_tab1(n,x)

 

 

for

i 1.. n

.cos 2.x

 

 

 

 

 

 

z

 

 

 

exp

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

i

 

 

 

 

 

yi

 

 

z

 

 

 

 

 

 

 

 

 

 

 

 

y

 

 

 

 

 

 

 

 

Здесь формальным параметром

являются: n

– число элементов вектора x;

х – вектор, состоящий из n элементов.

Обращение к описанной программе-функции можно осуществить с помощью конструкций:

m 5 i 1.. 5

y form_tab1(m,z)

1

1.414

z = 1.732

2

2.236

zi

 

i

 

 

Формирование фак-

 

 

 

тического параметра –

 

 

1.516

 

 

вектор z

 

 

 

 

 

 

3.84

 

 

 

 

y =

 

Сформированный

 

5.169

 

 

 

 

вектор у

 

 

3.696

 

 

 

 

 

 

 

 

 

 

1.702

 

 

 

 

Программирование итерационных циклов

Для программирования таких циклов используется оператор цикла while. Для ввода этого оператора необходимо выполнить следующие действия:

щелкнуть на кнопке while панели Программирования. На экране появляются элементы, показанные на Рис. 6.7.

Поле 2 while

Поле 3

Рис. 6.7. Структура оператора цикла while

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

89

Лабораторная работа 6

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

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

Пример 6.12.

Составим программу-функцию для вычисления n! (n фактори-

ал):

F(n)

f 1

 

while n n 1

 

f f (n 1)

f

Проверка программы вычисления факториала:

F(8) 4.032 104

8 4.032 104

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

Иногда необходимо досрочно завершить цикл, т.е. не по условию в его заголовке, а в некоторой строке в теле цикла. Для этого предназначен оператор break.

Пример 6.13.

 

 

 

 

 

 

 

Оператор break внутри цикла for и while

x

 

 

 

z 0

k

 

 

 

z 0

 

 

 

 

 

 

 

 

for i 0 5

 

 

 

 

while z 10

 

 

 

 

 

 

 

z z 1

 

 

 

 

 

 

 

 

z z 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

break if i

 

2

 

 

 

 

 

 

 

 

break if z 5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z

 

 

 

 

z

x 3

 

 

 

 

 

 

 

 

k 6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

90

 

 

 

 

 

 

 

 

Программирование

Оператор continue

Чтобы четче обозначить границы завершения тела цикла, в его конце может использоваться дополнительная строка с оператором continue. Этот оператор может использоваться для продолжения выполнения цикла путем возврата в начало тела цикла (поле оператора указывается условие).

Пример 6.14.

x

z 0

k

z 0

 

for i 0 5

 

while z 10

 

 

z z 1

 

 

 

z z 1

 

 

 

 

 

 

continue

 

 

 

continue

x 6

 

 

k 10

Пример 6.15.

Составим программу-функцию, формирующую новый вектор из положительных проекций исходного вектора.

В теле программы-функции используется функция last(v), определяющая индекс

последнего элемента массива v.

 

 

form_vec(v)

i 0

 

j 0

 

while i last(v)

 

 

i i 1

 

 

 

 

continue if vi 0

 

 

j j 1

 

 

wj vi

w

Обращение к этой программе-функции имеет вид:

91

Лабораторная работа 6

i 1 5

xi

 

Исходный вектор

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

0

 

 

Сформированный

3

 

 

 

 

2

 

 

вектор

 

 

form_vec(x)

 

 

 

 

5

 

 

8

 

 

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

Если очередной элемент vi не больше нуля, то пропускаются все нижележащие операторы тела цикла (в нашем случае - два оператора, формирующие очередную проекцию вектора w) и тело цикла повторяется при новом значении параметра цикла i.

Возврат значений (return)

Если для определения переменной или функции применяется программный модуль, то его строки исполняются последовательно при вычислении в документе этой переменной или функции. Соответственно, по мере выполнения программы рассчитываемый результат претерпевает изменения. В качестве окончательного результата выдается последнее присвоенное значение. Чтобы подчеркнуть возврат программным модулем определенного значения, можно делать это в последней строке программного модуля (примеры 6.10…6.12).

Вместе с тем, можно прервать выполнение программ в любой ее точке (например, с помощью условного оператора) и выдать некоторое значение, применив оператор return. В этом случае при выполнении указанного условия (пример 6.15) значение, введенное в местозаполнитель после return, возвращается в качестве результата, а никакой другой код больше не выполняется.

Пример 6.16.

Применение оператора return

f(x)

z x2

 

 

 

 

 

 

return

"zero"

if x

 

0

 

 

 

 

 

 

 

 

return

"minus"

if

x

0

z

f(2) 4

f(0) "zero" f( 2) "minus"

92

Программирование

6.6. Порядок выполнения лабораторной работы 6

Выполнить приведенные примеры 6.1 … 6.17

Пример 6.17.

Составить блок для нахождения вектора значений функции y(x)=x2, если начальной значение а = 1, шаг h = 0,1, число шагов n = 5.

 

 

 

y(x) x2

 

 

 

1

 

 

 

 

 

 

 

p

 

for i 0 5

 

 

 

1.21

 

 

 

 

 

 

 

x 1 0.1 i

 

 

 

1.44

 

 

 

 

Вектор значений:

p

 

 

 

 

 

pi y(x)

 

1.69

 

 

 

 

 

 

 

 

p

 

 

 

1.96

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.25

 

Вектор значений можно определить как функцию нескольких переменных:

 

y(x) x2

 

 

 

 

1

 

 

 

 

 

 

 

 

 

p(a h n)

 

for i 0 n

 

 

 

 

1.21

 

 

 

 

 

 

 

 

 

x a h i

 

 

 

 

1.44

 

 

 

 

 

Функция:

p(1 0.1 5)

 

 

 

 

 

 

 

pi y(x)

 

1.69

 

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

1.96

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.25

 

Если необходимо вывести не вектор, а таблицу значений, то решение:

 

P

for i 0 5

 

 

 

x 1

0.1 i

P i

 

x

 

 

 

 

 

 

 

 

 

y(x)

 

 

1

1.1

1.2

1.3

1.4

1.5

 

 

 

 

 

 

 

P

 

 

 

 

 

 

P

 

 

 

 

1

1.21

1.44

1.69

1.96

2.25

93

Лабораторная работа 6

6.7.Контрольные вопросы

1.Программа-функция. Локальный оператор присваивания.

2.Локальная переменная.

3.Формальный параметр.

4.Логические операции.

5.Условный оператор if.

6.Операторы цикла.

7.Оператор return.

94