8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 40 41 42 43 44 45 46 ... 177

В двух верхних маркерах, соединенных символом принадлежности, задается имя переменной, по которой организуется цикл, и ряд принимаемых ею значений. В нижнем маркере определяется операция или комплекс операций, которые должны быть выполнены для каждого значения переменной. Задать ряд значений можно разными способами. Например, можно организовать ряд, члены которого представляют собой последовательность целых чисел. Для этого в правый верхний маркер введите оператор ранжированной переменной (Range Variable) (сделать это можно либо с панели Matrix (Матрица), либо использовав клавишу <;»). Данный оператор имеет два маркера, в которых следует определить первое и последнее значения переменной.

Пример 4.9. Организация цикла по целочисленной переменной

Factorial(n) :=

return I if n = О

return "Error" if a < Ov nunc С n) * n for i E I " n

а *- в-i

Factoriai(3) = 6

Factoriai(5) = 120

Factorial. Э) = "Error4Facioriat(-2) = "Error"

Описанный метод позволяет задать ряд значений с шагом, равным I. Однако зачастую значения переменной должны изменяться с меньшим или большим шагом. Конечно, этого можно добиться и при задании целочисленной последовательности введением коэффициента, однако можно поступить и проще. Задать произвольным образом шаг можно и непосредственно в операторе for. Для згого в правом маркере оператора ранжированной переменной введите через запятую первое и второе значения в ряде переменной (разница между ними и задаст шаг).

Пример 4.10. Организация цикла с произвольным шагом переменной (на примере решения задачи Коши по методу Эйлера)

4.2. Операторы цикла (for, while, break, continue)

В языке программирования Mathcad (как. впрочем, и в большинстве С-подобных языков высокого уровня) имеются два оператора, Предназначенных для задания цикла. С помощью первого — оператора irpocToro цикла for — можно организовать выполнение операции или проверку условия для ряда Конкретных значений переменной. Задать оператор for можно, равно как и все остальные операторы, с помощью команды панели Programming (Программирование) или сочетанием клавиш (Ctrt+Shift+«»), Оператор for имеет три маркера:

for в


4.2. Операторы цикла (for, while, break, continue) 143

Koshi(Df,t0.yO,h,tmax)

D «- 0

yO

t-i

S:= Koshi(f, 0,1,0.0001,3)

for t e t0, tO + h.. tmax - h

n+ 1

0

Ряд значений переменной, определешшй опнса1Л1ЬШИ способами с использованием оператора ранжированной переменной, может быть задан и непосредственно в рабочей зоне с помощью того же оператора. Поэтому в большинстве случаев задача, которая решается программно организацией простого цикла, может быть решена н без использования языка программирования.

Пример 4.11. Решение задачи Коши по методу Эйлера без использования языка программирования

v=1

ГН,У):=

>vi:=vh<vy.)

tmax:=3 tmax - L

i:=q.

h:= 0.001

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


Пример 4.12. Задание цикла переменной по вектору значений

П4-0={ 9 25 49 121)

for ie(l 3 5 7 11) 2

0,n

n 4- n + f

С помощью второго оператора ник. in while (Пока) (сочетание клавиш Ctrl-нк]») можно организовать цикл, который будет работать до тех пор, пока выполняется некоторое условие. Оператор while имеет два маркера, в которые вводятся соответственно условие работы цикла и выражения операций, которые должны быть проделаны на каждом его витке:

while

Важным преимуществом цикла while по сравнению с циклом for является то, что количество его витков не нужно определять явно. Итерации будут совершаться до тех нор, пока будет выполняться условие в правам маркере. В принципе, условие может быть истинным всегда. В этом случае цикл будет работать бесконечно долго (в Mathcad нет ограничения на время выполнения кода). Однако пользы от такого цикла не будет. Бесконечные циклы — это одна из наиболее распространенных причин сбоев в программах. Поэтому, если вы обнаружите, что написанный вами алгоритм выполняется слишком долго, проверьте на корректность условие в маркере цикла while.

Пример 4.13. Использование оператора while

IntegratffJOL) :=

(I 4- О П 4- 1)

(*о° *,<-тсх)

(Д>0 4-0 Д 4- 1 )

white Д1 > TOL 2TOL

(V,)

func(x)

AXn i + ДХп

Д1 4- Д*-)

( 4- I + Л1 П4-П+1)

-202

lnteal(func,10~3)- 1.77)61 lrtegral(func.lO"SX 1.77245

1-2

г

fonc(x)dx= 1.77245

В примере 4.13 рассмотрен один из способов численного подсчета интеграла с бесконечными пределами. Произвести такого рода расчете помощью стандартных методов



0 ... 40 41 42 43 44 45 46 ... 177