русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Используем в рисовании переменные величины


Дата добавления: 2014-11-27; просмотров: 1289; Нарушение авторских прав


Если вы нарисовали снеговика, то наверное согласитесь, что для этого вам пришлось основательно потрудиться, хотя сам рисунок не слишком богат, в нем всего порядка десяти элементов.

Как заставить Паскаль короткой программой рисовать множество элементов? Ответ: применять циклы, используя в обращениях к графическим процедурам вместо чисел переменные величины и арифметические выражения.

Задача: Нарисовать горизонтальный ряд окружностей радиусом 10 на расстоянии 100 от верхнего края экрана и с такими горизонтальными координатами 50, 80, 110, 140, ¼ , 290.

Как видим, центры соседних окружностей отстоят друг от друга на 30. Вот примитивный фрагмент, решающий эту задачу:

Circle( 50,100,10);

Circle( 80,100,10);

Circle(110,100,10);

Circle(140,100,10);

Circle(170,100,10);

Circle(200,100,10);

Circle(230,100,10);

Circle(260,100,10);

Circle(290,100,10);

При вводе этой программы вас будет раздражать необходимость вводить много раз почти одно и то же. Воспользуйтесь копированием, которое объяснено в параграфе «Копирование и перемещение фрагментов текста» из части IV.

Мы видим, что здесь Паскаль 9 раз выполнит одну и ту же процедуру, причем при каждом следующем обращении первый параметр вырастает на 30.

А теперь решим эту же задачу при помощи цикла.

Придумаем для первого параметра переменную величину, например, х. Чтобы х изменялся, организуем цикл repeat. Вот программа решения задачи:

USES Graph;

VAR x, Device, Mode :Integer;

BEGIN

Device:=0;

InitGraph(Device, Mode, ’<путь к графическим драйверам>’);

x:=50;

repeat

Circle(x,100,10);

x:=x+30;

until x>290;

ReadLn;

CloseGraph

END.

Задание 69:. Попробуйте уменьшить расстояние между центрами окружностей, не изменяя их радиуса, нарисовав их плотнее, чтобы они пересекались, еще плотнее, пока они не образуют “трубу”.



Задание 70:. Удлините трубу налево и направо до краев экрана.

Задание 71:. Увеличьте толщину трубы.

Заставим окружности вести себя посложнее. Например, расположим их не по горизонтали, а по диагонали экрана в направлении от левого верхнего угла в правый нижний. Для этого организуем еще одну переменную - вертикальную координату у - и заставим ее тоже изменяться одновременно с x.

USES Graph;

VAR x, y, Device, Mode : Integer;

BEGIN
Device:=0;

InitGraph(Device, Mode, ’<путь к графическим драйверам>’);

x:=50;

y:=20;

repeat

Circle(x,y,10);

x:=x+30;

y:=y+20;

until x>290;

ReadLn;

CloseGraph

END.

Если мы захотим менять радиус, то организуем переменную R, тоже типа Integer.

Задание 72:. Нарисуйте ряд точек по направлению из левого нижнего угла в правый верхний.

Задание 73:. “Круги на воде”. Нарисуйте пару десятков концентрических окружностей, то есть окружностей разного радиуса, но имеющих общий центр.

Задание 74:. “Компакт-диск”. Если радиус самого маленького “круга на воде” будет порядка 50, а самого большого - во весь экран, и если радиусы соседних окружностей будут различаться на 2-3 пиксела, то на экране вы увидете привлекательный “компакт-диск”. Сделайте его золотым (Yellow).

Задание 75:. Не трогая x, а меняя только y и R, вы получите коническую башню.

Задание 76:. Меняя все три параметра, вы получите трубу, уходящую в бесконечность.

Задание 77:. Разлинуйте экран в линейку.

Задание 78:. А теперь в клетку.

Задание 79:. А теперь в косую линейку.

Задание 80:. Начертите ряд квадратов.

Чтобы получить богатые рисунки, нужно использовать богатые возможности Паскаля: вложенные циклы, ветвление внутри цикла и т.д., например:

Задание 81:. Нарисуйте шахматную доску.

Задание 82:. “Ковер”. В задании 69 вы рисовали горизонтальный ряд пересекающихся окружностей. Теперь нарисуйте один под другим много таких рядов.

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

Задание 83:. Пусть у этого ковра будет вырезан левый нижний угол.

Задание 84:. ¼ и вдобавок вырезан квадрат посередине.

 



<== предыдущая лекция | следующая лекция ==>
Работа с цветом. Заливка. Стиль линий и заливки | Использование случайных величин при рисовании


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.47 сек.