- •Содержание
- •1Алгоритмы линейных структур
- •2 Циклы
- •Введение
- •1 Алгоритмы линейных структур
- •1.1 Этапы разработки программы
- •1.2 Основные понятия
- •1.3 Основная структура программы
- •1.4 Алфавит языка
- •1.5 Идентификаторы
- •1.6 Константы
- •1.7 Понятие переменной Типы
- •1.8 Оператор присваивания Арифметические выражения
- •1.9 Операторы ввода и вывода информации
- •1.10 Практические задачи
- •1.11 Примеры решения задач
- •2 Циклы
- •2.1 Цикл с предусловием
- •Цикл с постусловием
- •Цикл со счетчиком
- •2.2 Задачи
- •2.3 Примеры
- •3 Немного об алгоритмах Алгоритм Кнута - Морриса - Пратта
- •Алгоритм Бойера – Мура
- •Алгоритм Рабина
- •Алгоритмы сортировки
- •Метод пузырька.
- •Сортировка выбором
- •Метод Шелла
- •Метод Хoopа
- •3.1 Разветвляющиеся алгоритмы
- •3.2 Задачи Свойства и виды треугольников (задачи 1-4)
- •Свойства и виды четырехугольников (задачи 5, 6)
- •Каким будет значение переменной а после выполнения фрагмента программы с составным оператором?
- •4 Массивы
- •4.1 Объявление массива
- •4.2 Действия над массивами
- •4.3 Вывод массива
- •4.4 Ввод массива
- •4.5 Сортировка массива
- •4.6 Поиск в массиве
- •4.7 Поиск минимального (максимального) элемента массива
- •4.8 Многомерные массивы
- •4.9 Ошибки при использовании массивов
- •4.10 Практические задачи
- •5 Множества
- •5.1 Описание типа множество
- •5.2 Операции над множествами
- •5.3 Группы операций
- •5.4 Упражнения
- •5.5 Задачи Тема: Множества
- •6 Записи
- •6.1 Понятие записи
- •6.2 Оператор присоединения With ... Do
- •6.3 Вариантные записи
- •6.4 Работа с файлами записей
- •6.5 Задачи
- •7 Файлы
- •7.1 Работа с файлами
- •7.2 Текстовые файлы
- •7.3 Типизированные файлы
- •7.4 Нетипизированные файлы
- •7.5 Задачи
- •8 Графика
- •8.1 Графика в Турбо Паскале
- •8.2 Базовые процедуры и функции
- •Процедуры модуля Graph
- •Функции модуля Graph
- •8.3 Экран и окно в графическом режиме
- •8.4 Вывод простейших фигур
- •8.5 Графические процедуры
- •8.6 Построение прямоугольников
- •8.7 Построение многоугольников
- •8.8 Построение дуг и окружностей
- •8.9 Работа с текстом
- •8.10 Построение графиков функций
- •8.11 Циклы в графике. Построение случайных процессов
- •8.12 Создание иллюзии движения
- •Задания
- •Контрольные тесты
- •1. Программирование алгоритмов линейных структур
- •2. Программирование алгоритмов разветвляющейся структуры
- •3. Программирование алгоритмов циклических структур
- •4. Массивы
- •5. Множества
- •6. Записи
- •7. Файлы
- •8. Графика
8 Графика
8.1 Графика в Турбо Паскале
Экран дисплея ПК представляет собой прямоугольное поле, состоящее из большого количества точек. Дисплей может работать в текстовом и графическом режимах. Но в отличие от текстового режима в графическом режиме имеется возможность изменять цвет каждой точки.
Чтобы сделать процесс графического программирования более эффективным, фирма Borland International разработала специализированную библиотеку Graph (в этом библиотечном модуле содержится 79 графических процедур, функций, различных стандартных констант и типов данных), набор драйверов, позволяющих работать с разными типами мониторов, и набор шрифтов для вывода на графический экран текстов разной величины и формы.
Аппаратная поддержка графики ПК обеспечивается двумя основными модулями: видеомонитором и видеоадаптером. Какой бы адаптер ни был установлен на компьютере, мы можем использовать один и тот же набор графических процедур и функций Турбо Паскаля благодаря тому, что их конечная настройка на конкретный адаптер осуществляется автоматически. Эту настройку выполняют графические драйверы.
Запуск и завершение работы в графической системе осуществляется следующим образом:
1. Подключить модуль Graph (библиотеку графических процедур): normal">uses Graph;
2. Установить графический режим:
- описываем переменные, которые определяют графический драйвер и монитор:
var gd, gm: integer;
- задаем команду ПК для самовыбора значений переменных:
gd:=Detect;(значение gm после команды gd:=detect; определяется автоматически)
- инициализируем графический режим:
InitGraph( gd, gm,’ указывается путь к драйверу, чем подробнее, тем лучше’)
С этого момента все графические средства доступны пользователю.
3. Завершить работу в графической системе: CloseGraph;
Графические функции
GetMaxX - определяет максимальный размер экрана по оси x.
GetMaxY - определяет максимальный размер экрана по оси y.
GetX - координата текущей позиции курсора по оси x.
GetY - координата текущей позиции курсора по оси y.
8.2 Базовые процедуры и функции
Для построения изображений на экране используется система координат. Отсчет начинается от верхнего левого угла экрана, который имеет координаты (0,0). Значение Х (столбец) увеличивается слева направо, значение Y (строка) увеличивается сверху вниз. Чтобы строить изображения, необходимо указывать точку начала вывода. В текстовых режимах эту точку указывает курсор, который присутствует на экране. В графических режимах видимого курсора нет, но есть невидимый текущий указатель CP (Current Pointer). Фактически это тот же курсор, но он невидим.
Процедуры модуля Graph
Процедура |
Формат |
Действие |
SetColor |
SetColor (a: word); |
Устанавливает цвет, которым будет осуществляться рисование |
SetBkColor |
SetBkColor (a: word); |
Устанавливает цвет фона |
SetFillStyle |
SetFillStyle (a,b: word); a – стиль закраски, b – цвет |
Устанавливает стиль и цвет закраски |
SetLineStyle |
SetLineStyle (a,b,c: word); а – стиль линии, b- образец построения линии (может устанавливаться пользователем), с-толщина линии |
Устанавливает стиль и толщину линии |
SetTextStyle |
SetTextStyle (a,b,c: word); |
Устанавливает шрифт, стиль и размер текста |
SetFillPattern |
SetFillPattern (Pattern: FillpatternType; Color:word); Pattern- маска |
Выбирает шаблон заполнения, определенный пользователем |
ClearDivice |
ClearDivice |
Очищает экран и устанавливает текущий указатель в начало |
SetViewPort |
SetViewPort (x1, y1 , x2, y2 : integer, Clip:boolean); |
Устанавливает текущее окно для графического вывода |
ClearViewPort |
ClearViewPort |
Очищает окно |
PutPixel |
PutPixel (a,b,c :integer); |
Рисует точку цветом с в (x,y) |
Line |
Line(x1, y1 , x2,y2 :integer); |
Рисует линию от (x1, y1) к (x2,y2) |
Rectangle |
Rectangle (x1, y1 , x2, y2:integer ); |
Рисует прямоугольник с диагональю от (x1, y1) к (x2, y2) |
Bar |
Bar (x1, y1 , x2, y2:integer); |
Рисует закрашенный прямоугольник |
Bar3D |
Bar3D (x1, y1 , x2,y2, d:integer, a:boolean); |
Рисует трехмерную полосу (параллелепипед) |
Circle |
Circle (x,y,r: word); |
Рисует окружность радиуса r с центром в точке (x, y) |
Arc |
Arc(x, y, a, b, R:integer); a, b- начальный и конечный углы в градусах |
Рисует дугу из начального угла к конечному, используя (x,y) как центр |
Ellipse |
Ellipse (x, y, a, b, Rx, Ry: integer); a, b- начальный и конечный углы в градусах |
Рисует эллиптическую дугу от начального угла к конечному, используя (x, y) как центр |
FillEllipse |
FillEllipse (x, y, Rx, Ry:integer); Rx, Ry – вертикальная и горизонтальная оси |
Рисует закрашенный эллипс |
MoveTo |
MoveTo (x, y:integer); |
Передвигает текущий указатель в (x, y) |
MoveRel |
MoveRel(x, y : integer); |
Передвигает текущий указатель на заданное расстояние от текущей позиции на x по горизонтали и на y по вертикали |
OutText |
OutText (text: string); |
Выводит текст от текущего указателя |
OutTextxy |
OutTextxy(x, y: integer, text: string); |
Выводит текст из (x, y) |
Sector |
Sector(x, y, a, b, Rx, Ry: integer); a, b- начальный и конечный углы в градусах |
Рисует и заполняет сектор эллипса |