Программирование в программе-функции циклических алгоритмов

Циклические алгоритмы (или проще циклы) содержат повторяющиеся вычисления, зависящие от некоторой переменной. Такая переменная называется параметром цикла, а сами повторяющиеся вычисления составляют тело цикла.

Классификация циклов.Циклы можно условно разделить на две группы:

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

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

Характерной чертой первой группы циклов является то, что количество повторений тела цикла можно определить до начала выполнения программы, реализующей цикл, т.е. априори.

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

ПримерВычислить значение x= Программирование в программе-функции циклических алгоритмов - №1 - открытая онлайн библиотека , используя итерационную процедуру

xn=0.5(xn--1+a/xn-1), n=1,2,3,..,x0=a.

В качестве приближенного значения корня квадратного берется такое значение xn, которое удовлетворяет условию

Программирование в программе-функции циклических алгоритмов - №2 - открытая онлайн библиотека Программирование в программе-функции циклических алгоритмов - №3 - открытая онлайн библиотека ,

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

Видно, что задав исходные данные, например, a = 9, Программирование в программе-функции циклических алгоритмов - №3 - открытая онлайн библиотека = 10-3, нельзя, не выполняя итерационные вычисления, определить количество повторений тела цикла.

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

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

Поле 1
Поле 2

Поле 3
Программирование в программе-функции циклических алгоритмов - №6 - открытая онлайн библиотека

Рис. 2.4. Структура оператора цикла for

· в поле ввода 1 введите имя параметра цикла;

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

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

ПримерДля x меняющего от -2 до 2 с шагом 0.5 вычислить значение f(x) = e-x . Cos ( 2x ) и сформировать из этих значений вектор y, т.е. y1 = f(-2), y2 = f(-1.5) и т.д.

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

Программирование в программе-функции циклических алгоритмов - №7 - открытая онлайн библиотека

где xk , x0 - конечное и начальное значение параметра цикла, d - шаг его изменения. Подставив значения, получаем (2 - (-2) )/0.5+1=9.

Описание программы-функции имеет вид

Программирование в программе-функции циклических алгоритмов - №8 - открытая онлайн библиотека

В этом варианте описания программы-функции формальные параметры используются для задания диапазона изменения параметра цикла (переменная x). Для изменения индекса у элемента массива y вводится переменная i целого типа внутри программы-функции. Обращение к описанной программе-функции может иметь вид

Программирование в программе-функции циклических алгоритмов - №9 - открытая онлайн библиотека n

ЗамечаниеЕсли значение индексов у элементов массива меняется начиная с 1 ( как в этом примере ), то начальное значение индекса необходимо установить равным 1 ( для этого обратиться к пункту MATHкоманде Built-inVariables, а затем в поле ввода Originввести значение 1 ( вместо установленного по умолчанию значения 0 ).

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

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

Поле 1

Поле 2
Программирование в программе-функции циклических алгоритмов - №10 - открытая онлайн библиотека

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

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

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

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

ПримерСоставим программу-функцию, реализующую итерационную процедуру приближенного вычисления корня квадратного, описанную в примере 2.9.

Программирование в программе-функции циклических алгоритмов - №11 - открытая онлайн библиотека

Как видно из текста программы-функции нет необходимости хранить в памяти все приближенные решения x0, x1, x2 , ... , и т.д. Достаточно хранить предыдущее ( “старое” ) значение xc и последующее (“новое”) значение xn.

Обращение к описанной программе будет иметь вид

Программирование в программе-функции циклических алгоритмов - №12 - открытая онлайн библиотека Программирование в программе-функции циклических алгоритмов - №13 - открытая онлайн библиотека

Программирование в программе-функции циклических алгоритмов - №14 - открытая онлайн библиотека n

К сожалению организация итерационного цикла с помощью оператора while , без дополнительных средств контроля может привести к зацикливанию. Например, задав при обращении к программе eps < 0 получаем зацикливание.

Поэтому в Mathcad имеется специальный оператор break, который позволяет выйти из цикла или приостановить исполнение программы при выполнении заданного в операторе break условии. Для ввода оператора break необходимо щелкнуть на кнопке break панели Программирования(нельзя вводить этот оператор с клавиатуры по символам). Оператор breakиспользуется в левом поле ввода условного оператор if, а в правом размещается

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

Следующий пример показывает написание не зацикливающей программы с оператором break.

Пример 2.13.Составим программу-функцию, реализующую итерационную процедуру вычисления корня квадратного (см. пример 2.9) без зацикливания. Описание такой программы-функции имеет вид :

Программирование в программе-функции циклических алгоритмов - №15 - открытая онлайн библиотека

В этой программе число повторений тела ограничено 1000. Если за это число итераций приближенное значение корня с заданной точностью не найдено, то параметр ierr получает значение 1, что говорит об ошибке вычислительного процесса ( если были выполнены 1000 итераций ) . Так как через имя программы передается значение только одной переменной, то для передачи двух значений xn, ierr используется вектор, проекции которого формируются внутри программы.

Найденный корень
Значение ierrнужно проверять после обращения к программе sqroot1. Например,

Значение ierr
Программирование в программе-функции циклических алгоритмов - №16 - открытая онлайн библиотека Программирование в программе-функции циклических алгоритмов - №17 - открытая онлайн библиотека

Ошибочное задание а ( должнобыть > 0 )
Программирование в программе-функции циклических алгоритмов - №18 - открытая онлайн библиотека Программирование в программе-функции циклических алгоритмов - №19 - открытая онлайн библиотека

Графические редакторы.

Отметим некоторые области применения компьютерной графики: оформление визиток и объявлений, иллюстративная и деловая графика, под­готовка рисунков для отчетов, статей, книг; моделирование реально не суще­ствующих объектов; построение трехмерных сцен и анимационных фильмов; создание рекламных роликов и др.

Для составления подобных документов служат специальные приклад­ные программы - графические редакторы (ГР).

ГР снабжены набором инструментов для инвертирования, зеркального отображения, ретуширования изображения, формирования текстовых сооб­щений, имитации различных манер живописи, изменения яркости и контра­стности, создания иллюзии движения и др.

Разработаны ГР для построения двумерных (плоских) и трехмерных, статических и динамических объектов.

Все ГР можно разделить на два класса: растровые и векторные. В растровыхГР (по-другому называются Bitmap - графические редакторы) изо­бражение строится на растре маленьких, равных по величине, квадратиков (элементов изображений, пикселей).

В векторныхГР все линии определяются начальными точками и формулами, описывающими эти линии.

Растровая графика (РГ) получается в результате сканирования фото­графий, иллюстраций, в результате съемки с помощью цифрового фотоаппа­рата или цифровой видеокамеры. Растровый рисунок можно создать с по­мощью растрового графического редактора.

Основным элементом РГ является точка (ее положение, яркость, цвет). Растровое изображение формируется из множества отдельных точек (пикселей), расположенных на пересечении столбцов и строк. Слева показана буква, нарисованная с помо­щью растровой графики.

Термину «растровая графика» в английском языке соответствует термин «Bitmap - графика». В переводе это означает графику, основанную на карте (плане) расположения битов. Приведенный рисунок подтверждает справедливость такого на­ Программирование в программе-функции циклических алгоритмов - №20 - открытая онлайн библиотека звания.

Качество точечного изображения характеризует разрешающая спо­собность,которая измеряется в точках на дюйм (dotsperinch - dpi). Поли-Тафическое качество печати требует разрешения порядка 250 dpi

Фотоснимок размером 10x12 см будет содержать примерно 1000 х 1200 пикселей. Если для кодирования цвета каждого пикселя исполь­зовать 24 бита (это дает более 16 миллионов цветовых оттенков), то для хра­нения всей информации о такой фотографии потребуется более 3,4 Мбайта. Приведенное число говорит о том, что для запоминания растрового изобра­жения требуется большой объем памяти. Большой объем файла является первым недостатком растровых рисунков.

Еще одним недостатком растровых рисунков является искажение изо­бражения при изменении масштаба изображения. При увеличении появляют­ся пиксели, а при уменьшении происходит искажение пропорций. При ис­пользовании растровой графики на линиях и кривых, имеющих наклон, про­сматриваются более или менее заметные «ступеньки».

Достоинства растрового способа представления информации заклю­чаются в почти неограниченных возможностях изменения формы и цвета объекта.

Типичным представителем этого класса ГР является графический ре­дактор Paint, входящий в состав операционной системы Windows.

Растровымиредакторамитакжеявляются Adobe Photoshop, Pho-tostyler, Adobe Photo-Paint, Picture Publisher, Corel Photo-paint идр.

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

Векторными графическими редакторами являются AdobeIllustrator, MacromediaFreehand и CorelDraw и др.

Основным элементом векторной графики (ВГ) являются линия и ма­тематическая формула, которая описывает эту линию.

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

При использовании векторной графики запоминается формула, поэто­му независимо от длины все линии одинаковой формы занимают одинаковое место в памяти. С помощью дополнительных параметров задаются цвет, толщина линии и ее вид (сплошная, пунктирная, штрих-пунктирная и т. д.).

Изменение масштаба изображения не приводит к искажениям вектор­ного изображения.

Векторы представляют собой математическое описание объектов. Чтобы компьютер нарисовал прямую линию, нужно указать координаты Двух точек. Для изображения окружности достаточно указать координаты Центра и радиус и т. д.

Наибольшее распространение в векторной графике получили кривыеБезье - разновидность кривых третьего порядка.

Динамическое изображение создают с помощью редакторов 3D StudioMAX, CorelDraw и AnimatorPro.

В пакете 3D StudioMAX используется следующая схема формирова­ния изображения: задается небольшое количество ключевых кадров (keyframes), а все остальные связывающие их кадры пакет строит автомати­чески посредством интерполяции (математическая операция восстановления, Реконструкции недостающих данных).

Редактор 3D StudioMAX позволяет выполнять следующие преобразо-Вания изображаемых объектов: перемещение вдоль заданной траектории; вРащение; деформацию (сжатие или растяжение); морфинг (плавная транс-

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

Форматы графический файлов

Знание файловых форматов и их возможностей является одним из ключевых факторов в допечатной подготовке изданий, подготовке изображений для web и в компьютерной графике вообще. Да, сегодня нет такого калейдоскопа расширений, как в начале 90-х, когда каждая компания-производитель редакторов изображений считала своим долгом создать свой файловый тип, а то и не один, однако это не означает, что "все нужно сохранять в TIFF, а сжимать JPEG'ом". Каждый, из утвердившихся сегодня форматов, прошел естественный отбор, доказал свою жизнеспособность и нужность. Все они имеют какие-то характерные особенности и возможности, делающие их незаменимыми в работе. Знание особенностей, тонкостей технологии важно для современного дизайнера так же, как для художника необходимо разбираться в различиях химического состава красок, свойствах грунтов, типов металлов и породах дерева.

Основное назначение Знания, по большому счету, это расширение возможностей человека, увеличение степени его свободы, когда человек поступает так, как считает нужным, а не так, как вынуждают его обстоятельства.

Все графические данные в компьютере можно разделить на на две большие ветви: растровую и векторную. Векторы представляют из себя математическое описание объектов относительно точки начала координат. Проще говоря, чтобы компьютер нарисовал прямую нужны координаты двух точек, которые связываются по кратчайшей, для дуги задается радиус и т.д. Таким образом, векторная иллюстрация это набор геометрических примитивов. Большинство векторных форматов могут так же содержать внедрённые в файл растровые объекты или ссылку на растровый файл (технология OPI). Сложность при передаче данных из одного векторного формата в другой заключается в использовании программами различных алгоритмов, разной математики при построении векторных и описании растровых объектов.

OPI (Open Prepress Interface) - технология, разработанная фирмой Aldus, позволяющая импортировать не оригинальные файлы, а их образы, создавая в программе лишь копию низкого разрешения (эскиз) и ссылку на оригинал. В процессе печати на принтер, эскизы подменяются на оригинальные файлы. Применение OPI, вместо простого внедрения, (embedding) дает возможность экономить ресурсы компьютера (прежде всего, память), заметно повышая его производительность. OPI является основной работы с импортированными графическими файлами в таких программах, как FreeHand и QuarkXPress, широко применяется в других продуктах.

Растровый файл устроен проще (для понимания, по крайней мере). Он представляет из себя прямоугольную матрицу (bitmap), разделенную на маленькие квадратики - пикселы (pixel - picture element). Растровые файлы можно разделить на два типа: предназначенные для вывода на экран и для печати.

Разрешение файлов таких форматов как GIF, JPEG, BMP зависит от видеосистемы компьютера. В старых Маках на квадратный дюйм экрана приходилось 72 пиксела (экранное разрешение), на Windows единого стандарта не сложилось, но сегодня чаще всего употребляется значение 96 пикселов на квадратный дюйм экрана. Реально, однако, эти параметры теперь стали довольно условными, так как почти все видеосистемы современных компьютеров позволяют изменять количество отображаемых на экране пикселов. Растровые форматы, предназначенные исключительно для вывода на экран, имеют только экранное разрешение, то есть один пиксел в файле соответствует одному экранному пикселу. На печать они выводятся так же с экранным разрешением.

Растровые файлы, предназначенные для допечатной подготовки изданий имеют, подобно большинству векторных форматов, параметр Print Size - печатный размер. С ним связано понятие печатного разрешения, которое представляет из себя соотношение количества пикселов на один квадратный дюйм страницы (ppi, pixels per inch или dpi - dots per inch, - термин не совсем верный, но часто употребимый). Печатное разрешение может быть от 130 dpi (для газеты) до 300 (высококачественная печать), больше почти никогда не нужно.

Растровые форматы, так же отличаются друг от друга способностью нести дополнительную информацию: различные цветовые модели, вектора, Альфа-каналы или каналы плашковых (spot)-цветов, слои различных типов, интерлиньяж (черезстрочная подгрузка), анимация, возможности сжатия и другое.

оглавление