Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
mathcad_book.pdf
Скачиваний:
52
Добавлен:
23.02.2015
Размер:
3.8 Mб
Скачать

Приложение 2

СПРАВОЧНИК КОМАНД И КОНСТРУКТОВ, ИСПОЛЬЗУЕМЫХ ДЛЯ ПРОГРАММИРОВАНИЯ В MATHCAD

Общие замечания

1. Команды MathCAD НЕЛЬЗЯ набирать литерами. Их можно либо вводить из окошка «Программирование» (меню View ToolbarsProgramming, Вид – Инструменты – Программирование), либо использовать сочетания клавиш (это быстрее). Сочетания клавиш видны в окошке программирования в форме подсказок, см. рис. П 2.1. Если Вам не приходится программировать часто, запоминать сочетания клавиш нецелесообразно.

Всплывающая подсказка («хинт»): оператор for вводится клавишами

<Ctrl>+<кавычки>

а) Окошко с операторами

б) Всплывающие

программирования

подсказки о сочетании

 

клавиш

Рис. П2.1. Команды и операторы программирования.

2. Зоны охвата программных конструктов (for…, while…, if…) ограничиваются линиями, которые придают программе вид легко читаемой структуры (рис. П 2.2). Линия вводится командой Add Line (добавить линию) или клавишей «закрывающая квадратная скобка». Часто такие линии формирует сам MathCAD. Пример структуры программы:

169

max_value(M) :=

max M0

 

 

 

 

 

 

Зона охвата конструкта for

 

 

 

 

 

 

 

 

number_max 0

 

(ДЛЯ КАЖДОГО),

 

 

n rows(M) 1

 

внутри – зона конструкта if

 

 

 

 

 

 

for

k 1.. n

 

 

 

 

 

if Mk > max

 

 

 

 

max Mk

 

 

 

 

 

 

 

 

number_max k

Зона охвата конструкта

 

 

 

if (ЕСЛИ)

 

 

 

max

 

 

 

 

 

 

 

 

 

 

 

 

 

 

number_max

 

 

Рис. П2.2. Структура программы. Линии выделяют зоны действия конструктов.

3. Все MathCAD-программы строятся как программы-функции. Переменные внутри программы являются локальными (действуют только в пределах программы). В конце программы приводится либо скалярная переменная, либо вектор, либо матрица, которые возвращает функция. Например, программа на рис. П 2.2 возвращает вектор из двух значений, которым внутри программы присвоены значения max и number_max.

Команды, конструкты и операторы с примерами их использования.

Оператор присваивания (стрелка справа налево). Пример: number_max 0

Согласно этому оператору ЭВМ проводит следующие действия:

Формирует константу 0;

Находит в основной памяти свободную ячейку;

Присваивает этой ячейке имя (идентификатор) number_max;

Заносит в эту ячейку константу 0.

Оператор читается так: ПРИСВОИТЬ значение НУЛЬ переменной с ИДЕНТИФИКАТОРОМ number_max.

Простой оператор if (ЕСЛИ) и otherwise (В ОСТАЛЬНЫХ СЛУ-

ЧАЯХ). Пример:

m(s) :=

V "No"

if s

 

0

ОБЯЗАТЕЛЬНО жирный знак

 

 

 

V "Yes"

otherwise

равенства <Ctrl>+<=>

170

Программа возвращает No, если s = 0. В других случаях (т. е. если s 0) функция возвращает Yes.

Виды условий: равно (жирный знак равенства <Ctrl>+<=>), не рав-

но (<Ctrl>+<3>), больше, меньше, больше или равно (<Ctrl>+ <закры-

вающая_круглая_скобка>), меньше или равно (<Ctrl>+<открывающая_ круглая_скобка>) или сочетания этих условий через логические функции ИЛИ (обозначается знаком +), И (обозначается знаком умножения, *). Пример:

m(s) :=

V "No"

if [(s

 

0) + (s 5)] (s "April" )

 

 

 

V "Yes"

otherwise

Программа возвращает No, если [ s = 0 ИЛИ s не равно 5] И [s не равно April]. Во всех других случаях программа возвращает Yes.

Сложный оператор (конструкт) if (ЕСЛИ). Содержит последова-

тельность команд, охваченных действием оператора. Для ввода линии, ограничивающей зону действия, нужно установить курсор в левый слот и ввести команду Add Line (можно клавишей «открывающая квадратная

f(g) :=

 

if

 

g

 

4

 

скобка»). Пример приведен

 

 

 

 

слева.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

month "April"

Если g = 4, то

функция

 

 

 

 

 

 

 

 

days 30

 

 

 

 

возвратит:

 

 

 

 

 

 

 

 

 

 

 

"April"

 

 

 

 

 

 

time "Spring"

 

 

 

 

 

if

 

g 4

 

f(4) =

30

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

month "I don't know"

"Spring"

 

 

 

 

 

 

days "I don't know"

Если g не равно 4, то

 

 

 

 

time "I don't know"

 

 

 

 

функция возвратит, например,

 

 

month

"I don't know"

 

 

 

 

days

 

 

 

 

 

 

 

 

 

f(9) = "I don't know"

 

 

 

 

 

time

 

"I don't know"

 

 

 

 

Конструкт for (ДЛЯ КАЖДОГО…). Конструкт for предназначен для повторяющихся (циклических) вычислений. Пример: найти сумму всех элементов массива M. Пусть в этом массиве хранятся следующие значения:

171

 

2.2

 

 

1.9

 

 

 

M :=

 

0.6

 

 

 

 

 

2.3

 

 

2.5

 

2.1

sum(M) :=

 

sum 0

– заготовка переменной для суммы (как бы пустой коше-

 

лек)

 

– расчет максимального номера элемента массива

 

 

n rows(M) 1

 

 

 

 

М (по числу строк в массиве), единица учитывает

 

 

for j 0..n

 

нумерацию с нуля

 

 

 

– цикл для каждого значения переменной

 

 

sum sum + M

 

j = 0, 1, .., n (т. е. до последнего элемента массива)

 

 

j

– добавление очередного элемента массива к

 

 

sum

 

уже накопленной сумме

 

 

– значение, возвращаемое функцией

sum(M) = 11.6

Проследим, как работает программа с циклом for и массивом M.

1.До начала цикла sum = 0.

2.Номер последнего элемента n = 6 –1 = 5

3.Первый цикл: j = 0.

a.Формула внутри цикла читается «по-еврейски» – справа нале-

во. Вначале в процессор поступает значение Mj с j = 0, т. е. нулевой элемент 2.2. Затем на другой регистр процессора вызывается ячейка с идентификатором sum (в ней нуль). Затем процессор складывает оба числа (2.2 + 0) = 2.2 и отсылает в ячейку памяти с идентификатором sum. Теперь там число 2.2.

b.Оператор for увеличивает номер цикла на 1 (получается j = 1)

исравнивает c n (равно 5). Поскольку номер цикла меньше 5,

нужен еще один цикл с j = 1.

4.Второй цикл: j = 1.

a.Вначале в процессор поступает значение Mj с j = 1, т. е. первый элемент 1.9. Затем на другой регистр процессора вызывается ячейка с идентификатором sum (в ней 2.2). Затем процессор складывает оба числа (1.9 + 2.2 ) = 4.1 и отсылает в ячейку памяти с идентификатором sum. Теперь там число 4.1.

b.Оператор for увеличивает номер цикла на 1 (получается j = 2)

исравнивает c n (равно 5). Поскольку номер цикла меньше 5, нужен еще один цикл с j = 2.

172

5.Третий цикл: j = 2.

a.Вначале в процессор поступает значение Mj с j = 2, т. е. второй элемент 0.6. Затем на другой регистр процессора вызывается ячейка с идентификатором sum (в ней 4.1). Затем процессор складывает оба числа (0.6 + 4.1 ) = 4.7 и отсылает в ячейку памяти с идентификатором sum. Теперь там число 4.7.

b.Оператор for увеличивает номер цикла на 1 (получается j = 3)

исравнивает c n (равно 5). Поскольку номер цикла меньше 5, нужен еще один цикл с j = 3.

6.Четвертый цикл: j = 3.

a.Вначале в процессор поступает значение Mj с j = 3, т. е. третий элемент 2.3. Затем на другой регистр процессора вызывается ячейка с идентификатором sum (в ней 4.7). Затем процессор складывает оба числа (2.3 + 4.7 ) = 7.0 и отсылает в ячейку памяти с идентификатором sum. Теперь там число 7.0.

b.Оператор for увеличивает номер цикла на 1 (получается j = 4)

исравнивает c n (равно 5). Поскольку номер цикла меньше 5, нужен еще один цикл с j = 4.

7.Пятый цикл: j = 4.

a.Вначале в процессор поступает значение Mj с j = 4, т. е. четвертый элемент 2.5. Затем на другой регистр процессора вызывается ячейка с идентификатором sum (в ней 7.0). Затем процессор складывает оба числа (7.0 + 2.5 ) = 9.5 и отсылает в ячейку памяти с идентификатором sum. Теперь там число 9.5.

b.Оператор for увеличивает номер цикла на 1 (получается j = 5)

исравнивает c n (равно 5). Поскольку номер цикла равен 5, нужен еще один (последний!) цикл с j = 5.

8.Шестой цикл: j = 5.

a.Вначале в процессор поступает значение Mj с j = 5, т. е. пятый элемент 2.1. Затем на другой регистр процессора вызывается ячейка с идентификатором sum (в ней 9.5). Затем процессор складывает оба числа (9.5 + 2.1 ) = 11.6 и отсылает в ячейку памяти с идентификатором sum. Теперь там число 11.6.

b.Оператор for увеличивает номер цикла на 1 (получается j = 6)

исравнивает c n (равно 5). Поскольку номер цикла БОЛЬШЕ 5, циклы прекращаются, и программа возвращает число из ячейки sum (там накопилась сумма всех элементов массива 11.6).

173

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]