Кнопки управления структурой окна

Три кнопки управления структурой окна, находящиеся в самом низу палитры инструментов, предназначены для изменения режима отображения окна на экране. Кнопка слева представляет обычный режим окна. Щелчок на средней кнопке приведет к тому, что окно займет весь экран. Правая кнопка также развернет окно на весь экран, кроме этого исчезнут абсолютно все меню. Чтобы быстро пе­рейти из одного режима к другому, нажмите <F> на клавиатуре.

Пример использования:

Кнопки управления структурой окна - student2.ru "Кровавый полдень в кровавом ущелье". Техника следующая - создаем красно-черные облака, доделываем их повторением Difference Clouds до получения достаточно мелкой фактуры, далее применяем Filters/Distorb/Twirl градусов на 50 и фильтр Pinch порядк а 70. Следующий - Filters/Distorb/Polar Coordinates и Polar to Rectangural. Немного притемняем изображение путем уменьшения Transparency слоя (Layer), предварительно подложив под слой с облаками чисто черный слой. Дальше надо придать лишь завершаюший шарм - солнце. Для этого сначала Filters/Render/Lighting Effects создаем Omni источник на месте предполагаемого светила, так чтобы это место слегка осветилось, а другие районы слегка затемнились. Потом Lense Flare, сначала 105 мм интенсивностью 50, и поверх 35 мм на 60 единицах.

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

1. Что такое слои?

2. Назовите основные инструменты для ретуширования изображений?

3. Можно ли в Photoshop редактировать векторные изображения?

4. Для чего необходим режим «быстрой маски»?

Задание:

1. Создайте новый файл, в нем нарисуйте некий рисунок с применением многослойной структуры.

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

3. Откройте уже готовый рисунок и испробуйте средства по изменению и ретушеровке изображения.

ЛАБОРАТОРНАЯ РАБОТА № 4

Тема: Математический пакет Mathcad 8 Pro.

Цель: Показать возможности программирования с помощью математического пакета Mathcad 8 Pro.

Панель программирования

 
  Кнопки управления структурой окна - student2.ru

В Mathcad, по сути, не встроен язык программирования, а просто снято ограничение на использование составных операторов в теле алгоритмических управляющих конструкций выбора (if) и повторения (until). Кроме того, введено понятие локальной переменной, добавлен цикл с параметром for, операторы досрочного выхода из цикла break и continue, а также оператор досрочного выхода из программы return. Алгоритмические конструкции в среде Mathcad вводятся не традиционным набором через клавиатуру ключевых слов if, then, else, while и т.д., а нажатием одной из кнопок панели программирования (Programming):

Рис. 4.1 - Панель программирования Mathcad

Щелчок по одной из этих кнопок создает на дисплее заготовку соответствующей программной конструкции.

Опишем их.

Кнопки управления структурой окна - student2.ru Кнопка – эта команда добавления строки в программу, в тело цикла, в плечо альтернативы и т.д. Этим действием снимается вышеупомянутое ограничение на число операторов во вложенных конструкциях языка:

Кнопки управления структурой окна - student2.ru

Было

Кнопки управления структурой окна - student2.ru

стало

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

Кнопки управления структурой окна - student2.ru Кнопка – это оператор присвоения значения локальной переменной. На языке Pascal мы пишем А:= В + С, на языке BASIC – А = В + С, а на языке Mathcad – А ← B + С. Почему?

A:= A:= B + C (Pascal),

В Mathcad-выражении: A:= A ← B + C все более-менее ясно: локальной переменной A (она в середине между символами «:=» и «←») присваивается значение суммы двух переменных B и C, значение которых уже задано выше в Mathcad-документе (глобальные переменные). Затем эта сумма передается глобальной переменной A (она слева от знака «=»).

 
  Кнопки управления структурой окна - student2.ru

Простейший пример, показывающий разницу между глобальной и локальной переменной:

Негативное изображение переменной В будет свидетельствовать о том, что ее значение вне программы (В ← 3) неопределенно. Благодаря локальным переменным можно создавать объемные Mathcad-документы, поручая разработку отдельных функций и операторов разным программистам и не заботясь о разделении переменных: в разных программах переменные могут совпадать по имени, но при этом они не будут перебегать дорогу друг другу (технология программирования «сверху вниз»).

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

Кнопки управления структурой окна - student2.ru

 
  Кнопки управления структурой окна - student2.ru

Нажав на кнопку мы получим на экране заготовку цикла с предпроверкой – слово while с двумя пустыми квадратиками:

В первый квадратик (правее while) нужно будет записать булево выражение (переменную), управляющее циклом, а во второй (ниже while) – тело цикла, операторы которого будут выполняться, пока булево выражение возвращает значение «Да» (в среде Mathcad – это числовое значение, отличное от нуля). Если в теле цикла более одного оператора (а это основное отличие оператора while от вышеупомянутой функции until), то нужно воспользоваться кнопкой Add Line (см. выше).

Кнопки управления структурой окна - student2.ru

Кнопка позволяет вводить в программу альтернативу с одним плечом. Так, Pascal-конструкция: if A > B then C:= D в среде Mathcad будет выглядеть несколько по-арабски (записана справа налево): С ← D if A > B.

Но если плечо альтернативы – составной оператор, то все встанет на свои места, вернее, будет записано сверху вниз:

Pascal: if A>B then begin E:=F; F:=G end[11];

Mathcad: if A>B

E←F

F←G

Кнопки управления структурой окна - student2.ru

Кнопка - превращает неполную альтернативу в полную.

Pascal: if A > B then C := D else E:= F;

Mathcad: C ←D if A > B

E ←F otherwise

Но если в плечах полной альтернативы по одному оператору, то можно воспользоваться не оператором (кнопкой) if, а функцией if:

C←if(A > B, D, F) или if(A > B, C←D, E←F)

Понять, почему в Mathcad не было использовано традиционное слово else, можно, если принять во внимание то, что операторы if и otherwise позволяют записать в программах алгоритмическую конструкцию множественное ветвление. Разберем ее на примере задачи о расчете налогов (федеральный налог США с недельного заработка).

Функции Tax1 и Tax2 (пункт 1) возвращают налог с холостых и женатых по прогрессивной шкале налогообложения (см. график в пункте 3). В данном примере (и во всех других) без оператора otherwise можно обойтись (сравните окончания функций Tax1 и Tax2). Он необходим в тех случаях, когда булево выражение, объединяющее оставшиеся случаи ветвления, трудно сформировать. Оператор otherwise – это гибрид ключевых слов ELSE, ELSEIF и CASE ELSE языка BASIC.

Когда заранее известно, сколько раз нужно выполнить какую-то часть программы (тело цикла), то используют не цикл while, а цикл for, в заголовке которого пишут не булево выражение, а параметр цикла и указывают, какие дискретные значения он должен принимать в цикле. Эти значения можно перечислить через запятую (1, 2, 3.7) или указать диапазоном (2.. 100) или вектором (V).

 
  Кнопки управления структурой окна - student2.ru

Рис. 4.2 - Решение буквенной головоломки USA+USSR=PEACE (иллюстрация цикла с параметром)

Программа на рис. 4.2 решает буквенную головоломку USA+USSR=PEACE, где требуется указать, какие цифры скрываются за буквами. В программе три цикла с параметром (A, C и S), которые вложены друг в друга. В программе, не мудрствуя лукаво, можно было записать все семь циклов – по числу неизвестных задачи U, S, A, R, P, E и C. Но тогда перебор длился бы нестерпимо долго. Несложный предварительный анализ условий задачи (U ← 9, Р ← 1, Е ← 0 и R ← 10 + A) сокращает число циклов до трех и делает время счета приемлемым. Один из основных недостатков языка Mathcad – это невозможность вывода на дисплей промежуточных результатов расчета. А они не только помогают отлаживать программы, но и в ряде случаев просто необходимы при поиске единственно правильного решения из множества возможных. В Mathcad-программах допустима запись вариантов ответов (промежуточных результатов) в матрицу (в вектор), которую после выполнения программы можно просмотреть, что и сделано на рис. 4.2. При этом в матрицу M записываются не только значения числовых переменных, но и текстовые константы (“+”, “=” и др.), делающие ответ более читабельным. Правильный ответ хранится в первом столбце матрицы M. Вернее, в первой строке – матрица у нас транспонируется для большей компактности. Остальные ответы неверны – там разным буквам соответствуют одинаковые числа.

Цикл с параметром в среде Mathcad более гибок, чем его аналоги в языках BASIC или Pascal. Вот еще варианты заголовков циклов с параметром в среде Mathcad, кроме тех, которые показаны на рис. 4.2 (там специально приведены разные варианты заголовков циклов):

for A Кнопки управления структурой окна - student2.ru V (V – вектор)

for A Кнопки управления структурой окна - student2.ru 5, 4.7, 8.9, 7.3×10-5

for i Кнопки управления структурой окна - student2.ru i1.. i2.

Последний вариант примечателен тем, что переменные i1 и i2 могут принимать любые значения, и необязательно, чтобы i1 было меньше i2. В языках BASIC и Pascal разное соотношение между i1 и i2 требует различного синтаксиса заголовка цикла с параметром:

For i=i1 To i2 или For i=i2 To i1 Step -1 (BASIC)

for i:=i1 to i2 do или for i:=i2 downto i1do (Pascal).

Кнопки управления структурой окна - student2.ru Кнопки управления структурой окна - student2.ru

Кнопки и позволяют досрочно выходить

Кнопки управления структурой окна - student2.ru

из циклов while и for, а кнопка . – совсем из программы.

Ниже приведены другие примеры программ в среде Mathcad.

Рекурсия

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

Числа Фибоначчи, которые связаны с условными кроликами:

Поколение кроликов ... ...
Число кроликов ...  

Приведенный ряд специально начат не с традиционного места (первое поколение), а с четвертого поколения (три кролика), для того чтобы задать читателю вопрос, подобный тому, который стоял в задаче о факториале: «Чему равно минимальное число кроликов в популяции – каково наименьшее число Фибоначчи?» Нормальный ответ, приводимый во всех учебниках, – ноль. Но не будем спешить и напишем программу с двусторонней рекурсией, взяв за базовые числа Фибоначчи не традиционную пару 0 и 1, а 13 и 21.

 
  Кнопки управления структурой окна - student2.ru

Рис. 4.3 - Расчет чисел Фибоначчи (двусторонняя рекурсия)

Ряд кроликов Фибоначчи в «отрицательных поколениях» зеркально отображает значения в «положительных поколениях», но с переменным знаком.

 
  Кнопки управления структурой окна - student2.ru

Числа Фибоначчи в наше время широко применяются в вычислительной математике, в том числе и для иллюстрации рекурсии.

Рис. 4.4 - Расчет изящных чисел Фибоначчи (двусторонняя рекуррентность)

Использование рекурсии для поиска чисел Фибоначчи – это стрельба из пушки по воробьям. Намного эффективнее рассчитывать подобные числа в цикле, рекуррентно. На рис. 4.4 представлена программа, по которой ищутся, если так можно выразиться, изящные (fine) числа Фибоначчи.

Наши рекомендации