- •Программирование на алгоритмическом языке паскаль
- •Программирование на алгоритмическом языке паскаль
- •Рецензенты:
- •Содержание
- •Структура паскаль-программы
- •Краткие теоретические сведения
- •Программирование линейного вычислительного процесса
- •Краткие теоретические сведения
- •Краткие теоретические сведения
- •Программирование разветвляющегося вычислительного процесса
- •Программирование цикла с параметром
- •Краткие теоретические сведения
- •Программирование итерационного цикла
- •Краткие теоретические сведения
- •Программирование матричных операций
- •Краткие теоретические сведения
- •Программирование с использованием подпрограмм
- •Краткие теоретические сведения
- •Программирование операций с графикой
- •Краткие теоретические сведения
- •Список рекомендуемой литературы
Программирование операций с графикой
Цель работы: Изучение основных возможностей языка Паскаль по программированию операций с графикой. Получение навыков визуализации (графического представления) результатов работы программы.
Краткие теоретические сведения
Графический режим ПК существенно отличается от текстового как по принципам функционирования, так и по возможностям. Графика применяется практически во всех серьезных программных разработках, так как позволяет увидеть результаты расчетов в виде чертежей, графиков, иллюстраций в движении. В программе PascalABCиспользуется библиотека графических функций в модулеGraphABC. Функции и процедуры, входящие в его состав, обеспечивают взаимодействие программ с графическими устройствами.
Подключение графической библиотекипри программировании в среде PascalABCпроизводится оператором:
usesGraphABC;
Модуль GraphABCсодержит константы, типы, процедуры, функции и классы для рисования вграфическом окне. Они подразделяются на следующие группы: действия с графическим окном,графические примитивы,действия с цветом,действия с пером,действия с кистью,действия со шрифтоми другие. Система координат, с которой работают графические функции имеет следующий вид (рисунок 7).

Рисунок 7 – Система координат графического окна
Действия с графическим окном
procedure ClearWindow;
Очищает графическое окно белым цветом.
procedure ClearWindow(c: ColorType);
Очищает графическое окно цветом c.
function WindowWidth: integer;
Возвращает ширину графического окна.
function WindowHeight: integer;
Возвращает высоту графического окна.
procedure SetWindowWidth(w: integer);
Устанавливает ширину графического окна.
procedure SetWindowHeight(h: integer);
Устанавливает высоту графического окна.
procedure SetWindowSize(w,h: integer);
Устанавливает ширину и высоту графического окна.
procedure SetWindowCaption(s: string);
Устанавливает заголовок графического окна.
procedure CloseWindow;
Закрывает графическое окно.
function ScreenWidth: integer;
Возвращает ширину экрана.
function ScreenHeight: integer;
Возвращает высоту экрана.
procedure CenterWindow;
Центрирует графическое окно по центру экрана.
procedure MaximizeWindow;
Максимизирует графическое окно на экране.
procedure NormalizeWindow;
Восстанавливает положение графического окна на экране.
Все размеры устанавливаются и возвращаются в пикселах. Это обстоятельство необходимо учитывать в практических задачах. Например, при построении графика функции значения аргумента и функции должны быть масштабированы под размер окна и обязательно округлены до ближайшего целого числа. Для этого используются функции Round(x) и Trunc(x).
Основные графические примитивы
procedure SetPixel(x,y,color: integer);
Закрашивает один пиксел с координатами (x,y) цветом color.
function GetPixel(x,y): integer;
Возвращает текущее значение цвета для пиксела с координатами (x,y).
procedure MoveTo(x,y: integer);
Передвигает невидимое перо к точке с координатами (x,y); эта функция работает в паре с функцией LineTo(x,y).
procedure LineTo(x,y: integer);
Рисует отрезок от текущего положения пера до точки (x,y); координаты пера при этом также становятся равными (x,y).
procedure Line(x1,y1,x2,y2: integer);
Рисует отрезок с началом в точке (x1,y1) и концом в точке (x2,y2).
procedure Circle(x,y,r: integer);
Рисует окружность с центром в точке (x,y) и радиусом r.
procedure Rectangle(x1,y1,x2,y2: integer);
Рисует прямоугольник, заданный координатами противоположных вершин (x1,y1) и (x2,y2).
procedure Arc(x,y,r,a1,a2: integer);
Рисует дугу окружности с центром в точке (x,y) и радиусом r, заключенной между двумя лучами, образующими углы a1 и a2 с осью OX (a1 и a2 – вещественные, задаются в градусах и отсчитываются против часовой стрелки).
procedure TextOut(x,y: integer; s: string);
Выводит строку s в позицию (x,y) (точка (x,y) задает верхний левый угол прямоугольника, который будет содержать текст из строки s).
procedure FillRect(x1,y1,x2,y2: integer);
Заливает прямоугольник, заданный координатами противоположных вершин (x1,y1) и (x2,y2), цветом текущей кисти.
procedure Polygon(var a; n: integer);
Строит ломаную по n точкам, координаты которых заданы в массиве a элементов типа Point.
procedure Polyline(var a; n: integer);
Строит замкнутую ломаную по n точкам, координаты которых заданы в массиве a элементов типа Point.
Пример. Программа, демонстрирующая возможности графических функций (рисование пикселов случайного цвета).
program sky;
uses GraphABC, crt;
var
Gx, Gy, xc, yc, i: integer;
begin
Randomize;
Gx:=WindowWidth;
Gy:=WindowHeight;
Repeat
i:= RGB(random(256),random(256),random(256));
SetPenColor(i);
xc:= random(Gx);
yc:= random(Gy);
SetPixel(xc, yc, i);
Until KeyPressed;
end.
Задание на работу
Построить график функции для заданного варианта (таблица 15). Представить все элементы: сам график, оси координат, подписи числовых делений (рисунок 8). Построение графика должно сопровождаться выводом значений аргумента и функции в отдельное окно.

Рисунок 8 – Общий вид графика функции
Таблица 15 – Варианты заданий
|
Номер варианта |
Исходные данные |
Аргумент |
Функция |
|
0 |
|
|
|
|
1 |
|
|
|
|
2 |
|
|
|
|
3 |
|
|
|
|
4 |
|
|
|
|
5 |
|
|
|
|
6 |
|
|
|
|
7 |
|
|
|
|
8 |
|
|
|
|
9 |
|
|
|



