Вопрос№16 5.2. Программирование разветвляющихся алгоритмов в подпрограмме-функции

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

Для программирования разветвляющихся алгоритмов в подпрограмме-функции Mathcad можно использовать условную функцию и условный оператор if. Используя эти конструкции, можно «изменить» последовательное выполнение операторов. Условная функция if была рассмотрена в п. 3.2, поэтому перейдем к изучению условного оператора if.

Условный оператор.Этот оператор используется только РІ теле Рџ-Р¤ Рё для его РІРІРѕРґР° необходимо щелкнуть РЅР° РєРЅРѕРїРєРµ ifВпалитры программирование. РќР° экране появляется конструкция с двумя полями РІРІРѕРґР°, изображенная РЅР° СЂРёСЃ. 5.2.1.

 
 


ВВВВВВ ВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВ В

ВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВ РРёСЃ. 5.2.1. Структура условного оператора if

Р’ поле 2 вводится логическое выражение РЈРЎР› (РІ простейшем случае это выражение отношений). Р’ поле 1 вводится конструкция ВЫР1 (как правило, арифметическое выражение), которая выполняется, если проверяемое логическое выражение принимает значение 1. Если РЈРЎР› = 0, то Р’Р«Р1 РЅРµ выполняется. Это соответствует условной структуре, называемой ЕСЛИ – РўРћ.

Для получения условной структуры ЕСЛИ – РўРћ – ИНАЧЕ используется оператор otherwise, вводимый СЃ палитры РџРРћР“РАММИРОВАНИЕ, РІ поле которого размещается конструкция Р’Р«Р2, которая выполняется, если проверяемое логическое выражение принимает значение 0 (СЃРј. СЂРёСЃ. 5.2.2). Оператор otherwise непосредственно следует после условного оператора if.

 
 


ВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВ

ВВВВВВВВВВВВВВВВВВВВВВВ

РРёСЃ. 5.2.2. Реализация структуры ЕСЛИ – РўРћ – ИНАЧЕ

ВВВВВВВВВВВВВВВВВВВВВВВВВВВВВ ВВВВВВВВВ

Для РІРІРѕРґР° Р’Р«Р2В РІ поле оператораВВ otherwise необходимо:

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

·щелкнуть на кнопке otherwise палитры программированиЕ;

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

В

ВВВВВВВВВВВВВВВВВВВВВВ Пример 5.2.1.Составим описание Рџ-Р¤, вычисляющей функцию y(x), заданную РІ примере 3.2.1. Описание Рё вызов Рџ-Р¤ приведены РЅР° СЂРёСЃ. 5.2.3. ВЁ

ВВВВВВВВВВВВВВВВВВВВВВВВ

РРёСЃ. 5.2.3. Реализация разветвляющегося алгоритма примера 3.2.1

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

Пример 5.2.2.Составим описание П-Ф для вычисления переменной z(t) по формуле

 

ВВВВВВВВВВВВВВВВВВВВВВВВВВВ z(t) =

 

Описание П-Ф и ее вызов приведены на рис. 5.2.4.

ВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВ

ВВВВВВВВВВВВВВВВВВВВВВВВВВ

РРёСЃ. 5.2.4. Реализация разветвляющегося алгоритма примера 5.2.2

Из описания РІРёРґРЅРѕ, что функция z(t) получит значение ln(t) только тогда, РєРѕРіРґР° РЅРµ выполняются условия, записанные РІ РґРІСѓС… вышестоящих строках тела Рџ-Р¤. Внимание!Если РІ строке 3 ввести просто ln(t), то этовыражение Вбудет вычисляться всегдавне зависимости РѕС‚ выполнения заданных выше условных операторов. ВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВ5.3. Программирование циклических алгоритмовВВВВВВВВВВВВ РІ подпрограмме-функции

Напомним, что циклические алгоритмы (циклы) содержат повторяющиеся вычисления, зависящие РѕС‚ некоторой переменной. Такая переменная называется параметром цикла, Р° сами повторяющиеся вычисления составляют тело цикла. ВЦиклы можно условно разделить РЅР° РґРІРµ РіСЂСѓРїРїС‹:

· циклы типа арифметической прогрессии;

· итерационные циклы.

Особенности этих циклов были рассмотрены в п. 3.3.

 

Программирование цикла типа арифметической прогрессии.Для программирования таких циклов используется оператор цикла for (часто называемый оператором цикла с параметром). Для ввода такого оператора необходимо выполнить следующие действия:

· щелкнуть на кнопке for палитры ПрограммированиЕ. На экране появятся поля ввода, изображенные на рис. 5.3.1;

 

 
 


ВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВВ

 

РРёСЃ. 5.3.1. Поля оператора цикла Вfor

 

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

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

·в поле 3 — операторы, составляющие тело цикла. Если одной строки недостаточно, то дополнительные поля ввода (дополнительные строки) создаются щелчком на кнопке Add line палитры программированиЕ, и тогда слева от тела цикла появляется вертикальная черта, охватывающая тело цикла.

ВВВВВВВВВВВВВВВВВВВВВВ Пример 5.3.1.Составить описание Рџ-Р¤, реализующей алгоритм примера 3.3.1.

ВВВВВВВВВВВВВВВВВВВВВВ Описание П-Р¤ Рё ее вызов приведены РЅР° СЂРёСЃ. 5.3.2. Заметим, что значение системной переменной ORIGIN (начальное значение индексного выражения) задается равным 1.В ВЁ

 

В

РРёСЃ. 5.3.2.Подпрограмма-функция формирования вектора

Пример 5.3.2. Для x меняющегося РѕС‚ -2 РґРѕ 2 СЃ шагом 0.5 вычислить значение f(x) = e-x. Cos (2x) Рё сформировать РёР· этих значений вектор y, С‚.Рµ.ВВ y1 = f(-2),В y2 =В f(-1.5)ВВ РёВ С‚.Рґ.

В этом примере количество повторений тела цикла определяется по формуле

где xk, x0 – конечное и начальное значения параметра цикла, d – шаг его изменения. Подставив значения, получаем (2–(–2))/0.5+1=9. Следовательно, сформированный вектор y будет содержать 9 элементов. Необходимо отметить, что алгоритм формирования содержит два параметра цикла: первый параметр – переменная x, определяющая текущее значение аргумента функции f(x); второй – это переменная i, определяющая текущее значение индекса у элемента формируемого вектора. Но между этими двумя параметрами имеется однозначное соответствие, поэтому цикл нужно организовывать только по одному параметру, например, по переменной x, а значение второго параметра будет вычисляться в теле цикла.

Описание П-Ф и ее вызов приведены на рис. 5.3.3. Видно, что в теле цикла выполняется два оператора. Первый оператор формирует элемент массива y, а второй изменяет на 1 значение индекса. ¨

Р’РѕРїСЂРѕСЃв„–17.

1.2.7. Размерные переменные

 

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

Чтобы создать размерную переменную, определяющую, например, силу тока в 10 А, введите выражение, присваивающее переменной i значение 10: i:=10, и затем символ умножения <*>, а потом букву "А". Поскольку все символы, обозначающие единицы измерения, зарезервированы и имеют предустановленные значения (связанные с размерностью), то литера А будет распознана Mathcad как Ампер (листинг 1.17, первая строка). Если ранее вы переопределили переменную А, присвоив ей какое-либо значение, то восприниматься как единица силы тока она уже не будет.

Листинг 1.17. Расчеты СЃ размерными переменными

Вставить единицу измерения можно Рё РїРѕ-РґСЂСѓРіРѕРјСѓ, РЅРµ вручную, Р° РїСЂРё помощи средств Mathcad. Для этого выберите команду Insert / Unit (Вставка / Единица), либо нажмите РєРЅРѕРїРєСѓ СЃ изображением мерного стакана РЅР° стандартной панели инструментов, либо клавиши <Ctrl>+<U>. Затем РІ СЃРїРёСЃРєРµ Unit (Единица измерения) открывшегося диалогового РѕРєРЅР° Insert Unit (Вставка единицы измерений) выберите нужную единицу измерения Ampere (Рђ) Рё нажмите РєРЅРѕРїРєСѓ РћРљ. Если РІС‹ затрудняетесь СЃ выбором конкретной единицы измерения, РЅРѕ знаете, какова размерность переменной (РІ нашем случае это электрический ток), то попробуйте выбрать ее РІ СЃРїРёСЃРєРµ Dimension (Размерность) диалогового РѕРєРЅР° Insert Unit (Вставка единицы измерений). РўРѕРіРґР° РІ СЃРїРёСЃРєРµ Unit (Единица измерения) появятся допустимые для этой величины единицы измерений, РёР· которых выбрать нужную будет легче (СЂРёСЃ. 1.9).

Просмотреть вставку единиц измерения можно и без выхода из диалогового окна Insert Unit, нажимая вместо кнопки ОК кнопку Insert (Вставить). В этом случае вы увидите, что единица измерений появилась в нужном месте документа, и можете поменять ее, оставаясь в диалоге Insert Unit.

РџРИМЕЧАНИЕ

Многие единицы измерения можно представлять в виде различных символов. Например, ампер — как А или amp, Ом — как ohm и т. д.

 

Над размерными переменными можно производить любые разумные СЃ физической точки зрения расчеты. Пример расчета сопротивления через отношение напряжения Рє току приведен РІ листинге 1.17. Работая СЃ размерными переменными, приготовьтесь Рє тому, что Mathcad будет постоянно контролировать корректность расчетов. Например, нельзя складывать переменные разной размерности, РІ противном случае будет получено сообщение РѕР± ошибке "The units in this expression do not match" (Размерности РІ этом выражении РЅРµ совпадают). Тем РЅРµ менее, позволяется складывать, например, амперы СЃ килоамперами Рё величины, размерность которых выражена РІ разных системах измерения (например, СИ Рё СГС).

РРёСЃ. 1.9. Вставка единиц измерения размерной величины

РџРИМЕЧАНИЕ 1

В Mathcad 12 контроль за правильностью совместного применения различных размерных переменных стал еще жестче, что позволяет избежать случайных ошибок. В частности, примененная техника статической проверки размерности запрещает расчет функций, которые, в зависимости от значения аргумента, могут выдавать результат различной размерности, например, f(x=0)=1*m2, a f (x=l)=l*m3, и т. п. Запрещено также возводить размерные переменные в степень, не являющуюся целым числом, например (l*s)2.31, а также выполнять некоторые другие операции.

РџРИМЕЧАНИЕ 2

Можно включить автоматический перевод единиц измерения РІ более простые единицы, как это показано РІ листинге 1.17 (ответ автоматически переводится РІ РѕРјС‹). Для этого перейдите РІ диалоговое РѕРєРЅРѕ Result Format (Формат результата) РЅР° вкладку, посвященную размерностям, СЃ помощью команды Format / Result / Unit Display (Формат / Результат / Отображение размерности). Установите РІ ней флажок Simplify units when possible (Упрощать единицы, РєРѕРіРґР° это возможно).

Единицу измерения в системе СИ любой размерной переменной можно вывести при помощи встроенной функции siunitsof:

· siunitsof (a) — возвращает единицу измерения переменной (в системе СИ):

· а — переменная.

ВНИМАНИЕ!

В прежних версиях Mathcad эта функция имела другое название— UnitsOf (листинг 1.18).


Листинг 1.18. Вывод единицы измерения размерной величины в системе СИ Mathcad 2001-11

Р’РѕРїСЂРѕСЃв„–18.

Машинная графика глубоко проникает в искусство, технику, рекламу, связь. Internet сильно зависит от технологии передачи графики. Многие спецэффектов видео и кинофильмах не обходятся созданы за счет средств машинной графики. В настоящее время компьютерная графика представляет собой важнейшую дисциплину для специалистов из многих областей знания: проектировщиков электронных устройств, инженеров, математиков, физиков, художников.
Р’ промышленном производстве машинная графика лежит РІ РѕСЃРЅРѕРІРµ систем автоматизированного проектирования (РЎРђРџР), предназначенных для выполнения проектных работ СЃ применением компьютерной техники. Р’ качестве РІС…РѕРґРЅРѕР№ информации САПРиспользует технические знания… САПРозначает любое применение компьютера для проектирования отдельных деталей, узлов Рё систем. Незаменимы применения машинной графики для визуализации как РІ строительстве, так Рё РІ телевизионной анимации.


Фундаментом большинства приложений машинной графики являются математические методы, особенно геометрия и способы преобразования точек и линий, а также алгоритмы рисования являются основой машинной графики. Нарисованный объект может быть представлен в нужном масштабе, повернут, преобразован или модифицирован.

РћСЃРЅРѕРІРѕР№ для понимания формы трехмерного объекта является способность визуализировать или изображать пространственный объект. Важна способность вращать Рё строить РІРёРґС‹ проекций объекта, Р° также строить разрезы его плоскостями. Восприятию глубины объекта способствует перспективное преобразование. Р’ технике используется восстановление РІРёРґР° объекта РїРѕ заданным чертежам его проекций. Решение всех этих задач основано РЅР° матричных преобразованиях координат. Для того, чтобы построить РїРѕ заданным координатам точек , соединяющую РёС… линию применяются методы интерполяции: вместо ломанной линию, соединяющую дискретные точки строят плавную РєСЂРёРІСѓСЋ, заданную аналитически. Наиболее распространены методы кубических сплайнов, параболическая интерполяция, использование кривых Безье Рё РёС… обобщения РґРѕ B-сплайнов.

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

Для того, чтобы изображение выглядело более реалистично применяются еще модели освещенности предмета от одного или нескольких источников света. Основные модели освещенности: по Ламберту, по Гуро, по Фонгу. Учет отражения света, излучательной способности предмета и т.д.

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

Задача визуализации в реальном времени требует больших ресурсов компьютера.
Пример: картинка из 1000 линий представляется матрицей 1000.84 координат конечных точек линий. Вращение представляется умножением этой матрицы на матрицу преобразований размером 4*4. Для проведения матричного умножения потребуется выполнить 16000 операций умножения и 1000 операций деления вещественных чисел. Допустим операция умножения будет выполняться с быстродействием 3.6 мкс, сложения - за 2.6 мкс и деления со скоростью 5.2 мкс. Тогда такое матричное умножение будет выполнено за 0.1 с. Чтобы картинка на экране двигалась, она должна перерисовываться не менее 30 раз в секунду. на это потребуется очень много времени.

Основные задачи машинной графики:

· представление изображений

· подготовка изображений для вывода

· визуализация предварительно подготовленных изображений

· взаимодействие и изображением

 

Для взаимодействия и изображением, а также для ввода и вывод графических данных служат внешние диалоговые графические устройства.
Простейшие устройства для ввода данных:

· клавиатура,

· манипулятор мышь,

· графический двух или трехкоординатный планшет (дигитайзер), который используется как оцифровыватель для получения координат. ),

· сканер ,

· цифровые фотоаппарат и видеокамера (существуют и другие устройства).


Простейшие устройства для манипуляции с графическим изображением :

· клавиатура,

· манипулятор мышь,

· трекбол и т. д.

 

Простейшие устройства для вывода графических данных:

· принтеры

· плоттеры

Подробно cмотрите в разделах Средства ввода графической информации" и Средства вывода графической информации".

Форматы графических данных

Для того, чтобы компьютер мог обрабатывать изображения, они должны быть представлены в цифровом виде (закодированы).

Представление пространственных данных - это способ цифрового описания пространственных объектов, тип структуры пространственных данных. Под графическим форматом понимается способ машинной реализации представления пространственных данных.

Наиболее употребительными форматами хранения и формирования компьютерных изображений являются: векторное и растровое. Достаточно распространены также регулярно-ячеистое и квадротомическое (квадродерево). К менее распространенным или применяемым для представления пространственных объектов определенного типа относятся также гиперграфовая модель, модель типа TIN и ее многомерные расширения. Известны гибридые представления пространственных данных.

Формат квадротомических деревьев является специализированными используется в геоинформационных системах (ГИС). Он основан на основаной на принципе рекурсивного иерархического разбиения пространства и является компромиссным вариантом между растровым и векторным, поскольку в растровом формате информация занимает слишком много места, а векторный формат не может обеспечить быстрый доступ к информации. Это позволяет одновременно уменьшить объем хранимой информации и облегчить доступ к ней. Кроме того, квадродеревья удобно использовать в качестве структуры для организации баз пространственных данных. В рамках этого пособия данный формат подробно не рассматривается.

Регулярно-ячеистое представление пространственное данных (cellular data model, tessellation) - цифровое представление пространственных объектов РІ РІРёРґРµ совокупности ячеек регулярной сети СЃ присвоенными РёРј значениями класса объекта РІ отличие РѕС‚ растрового представления как совокупности элементов растра (пикселов). Р’ цифровой картографии этому соответствует матричная форма представления цифровой картографической информации. Ипользуется РІ геоинформационных системах.

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