
- •Аннотация
- •Содержание
- •Интегрированная среда программирования Turbo Pascal 7.0
- •Основные понятия языка Turbo Pascal 7.0
- •Алфавит языка
- •Структура программы
- •Раздел объявления меток
- •Раздел объявления констант
- •Строковые и символьные константы
- •Простые типы данных
- •Выражения Арифметические выражения
- •Математические функции
- •Условные выражения и операции отношения
- •Логические выражения и операции
- •Процедуры ввода – вывода информации Процедуры ввода информации Read, ReadLn
- •Процедуры записи Write, WriteLn
- •Форматы процедуры вывода Write
- •Простые операторы
- •Оператор присваивания
- •Примеры решения задач
- •Оператор безусловного перехода Goto
- •Структурированные операторы
- •Составной оператор
- •Условный оператор If
- •Примеры решения задач
- •Условный оператор Case
- •Примеры решения задач
- •Оператор цикла For
- •Особенности выполнения оператора For
- •Примеры решения задач
- •Оператор цикла Repeat…Until
- •Особенности выполнения оператора Repeat
- •Примеры решения задач
- •Оператор повтора While
- •Особенности выполнения оператора While
- •Примеры решения задач
- •Вложенные циклы
- •Массивы
- •Одномерные массивы Основные понятия
- •Описание массива
- •Заполнение массива
- •6.1.4 Примеры решения задач
- •1. Алгоритмы поиска и присвоения значений элементам массива
- •2. Алгоритмы нахождения суммы, произведения и количества элементов массива. Работа с индексами элементов массива
- •3. Алгоритмы нахождения наибольшего или наименьшего элемента массива и его индекса
- •6.2 Двумерные массивы
- •6.2.1 Основные понятия
- •6.2.2 Описание массива
- •6.1.3 Заполнение и вывод элементов двумерного массива
- •6.1.4 Примеры решения задач
- •1. Алгоритмы действий над элементами двумерного массива
- •2 Алгоритмы формирования одномерного массива
- •3 Алгоритмы нахождения наибольшего и наименьшего элементов двумерного массива
- •7. Множества
- •7. 1 Операции над множествами
- •7.2 Примеры решения задач
- •8. Строки
- •8.1 Строковые выражения
- •8.2 Стандартные процедуры и функции для обработки строковых данных
- •Обнаруживает первое появление в строке St2 подстроки St1. Результат равен номеру той позиции, где находится первый символ подстроки St1.
- •8.3 Примеры решения задач
- •1.Задачи на подсчет символов.
- •2. Задачи на замену символов.
- •3. Задачи на удаление символов.
- •4. Задачи на вставку символов.
- •9. Процедуры и функции, определенные пользователем
- •9.1 Процедуры пользователя
- •1 Вариант
- •2 Вариант
- •9.2 Функции пользователя Формат описания функции:
- •9.3 Параметры
- •9.3.1 Параметры – значения
- •9.3.2 Параметры - переменные
- •10 Модуль crt. Процедуры и функции модуля crt
- •11 Модуль Graph
- •11.1 Классификация типов драйверов и видеорежимов
- •11.2 Инициализация графики
- •11.3 Переключение между текстовым и графическим режимами
- •11.4 Система координат
- •Отображение строк
- •11.5 Управление текущим указателем
- •11.6 Отображение точки на экране
- •11.7 Определение параметров пикселов
- •11.8 Отображение отрезков прямых линий
- •11.9 Вычерчивание линий различных стилей
- •11.10 Построение прямоугольников
- •11.10.1 Построение прямоугольника на плоскости
- •11.10.2 Построение закрашенного прямоугольника
- •11.11 Установка стиля заполнения
- •11.13 Построение заполненных областей изображения
- •11.13.1 Построение заполненного сектора эллипса
- •11.13.2 Построение заполненного эллипса
- •11.13.3 Построение заполненных сложных геометрических фигур
- •Список литературы
11.10 Построение прямоугольников
11.10.1 Построение прямоугольника на плоскости
Rectangle(X1,Y1,X2,Y2)
X1,Y1 – координаты левого верхнего угла
X2,Y2 - координаты правого нижнего угла
Пример. Построение последовательности прямоугольников.
USES Graph,Crt;
VAR
Gd,Gm:Integer;
I:Word;
Begin
Gd:=Detect;
{Инициализация графического режима}
InitGraph(Gd,Gm,'C:\TP7\BGI');
{Обработка ошибки инициализации}
IF GraphResult<>0 THEN Begin
WriteLn(‘Ошибка инициализации’);
HALT(1);
End;
For I:=1 To GetMaxY Do Rectangle(1,1,I,I);
ReadLn;
SetWriteMode(XorPut); {режим вывода}
{построенная последовательность стирается}
For I:=GetMaxY DownTo 2 Rectangle(1,1,I,I);
ReadLn;
CloseGraph;
End.
11.10.2 Построение закрашенного прямоугольника
Внутренняя область прямоугольника залита по текущему шаблону
Bar(X1,Y1,X2,Y2);
X1,Y1 – координаты левого верхнего угла
X2,Y2 - координаты правого нижнего угла
3. Отображение параллелепипеда
Bar3D(X1,Y1,X2,Y2,D3,Top);
отображается параллелепипед, «лицевая сторона» которого заливается по текущему шаблону, а глубина задается в пикселах параметром D3. Параметр Top задает режим отображения верхней плоскости.
TopOn - верхняя плоскость отображается
TopOff - верхняя плоскость не отображается
11.11 Установка стиля заполнения
В модуль Graph включен ряд стандартных шаблонов различных узоров для заполнения внутренних и внешних областей различных геометрических фигур. Узор может быть окрашен в допустимые для установленной палитры цвета. Комбинацию узор-цвет принято называть стилем заполнения.
SetFillStyle(Pattern,Color)
Pattern – значение шаблоно различных узоров
Color – цвет
-
Значение
(Pattern)
Описание узора
0
Сплошной цветом фона
1
Сплошной текущим цветом
2
Типа ---
3
Типа // нормальной толщины
4
Типа // удвоенной толщины
5
Типа \\ удвоенной толщины
6
Типа \\ нормальной толщины
7
Заполнение клеткой
8
Заполнение косой редкой клеткой
9
Заполнение косой частой клеткой
10
Заполнение редкими точками
11
Заполнение частыми точками
12
Определяется пользователем
Пример. Построение прямоугольников, параллелепипеда без верхней плоскости и с верхней плоскостью с различным стилем заполнения.
USES Graph,Crt;
VAR
Gd,Gm:Integer;
X1,X2,Y1,Y2:Word;
Begin
Gd:=Detect;
{Инициализация графического режима}
InitGraph(Gd,Gm,'C:\TP7\BGI');
{Обработка ошибки инициализации}
IF GraphResult<>0 THEN Begin
WriteLn(‘Ошибка инициализации’);
HALT(1);
End;
TextBackGround(1);
{определяются координаты прямоугольника}
X1:=GetMaxX DIV 4;
Y1:=GetMaxY DIV 4;
X2:=2*GetMaxX DIV 3;
Y2:=3*GetMaxY DIV 4;
ClearDevice; {чистка экрана}
{установка стиля заполнения}
SetFillStyle(7,4);
Bar(X1,Y1,X2,Y2); {обычный прямоугольник}
ReadLn;
ClearDevice; {чистка экрана}
{параллелепипед без верхней плоскости}
SetFillStyle(1,2);
Bar3D(X1,Y1,X2,Y2,10,TopOff);
ReadLn;
ClearDevice; {чистка экрана}
{параллелепипед с верхней плоскостью}
SetFillStyle(10,6);
Bar3D(X1,Y1,X2,Y2,10,TopOn);
ReadLn;
CloseGraph;
End.
11.12 Построение многоугольников
Многоугольники можно рисовать самыми различными способами, например с помощью процедур Line или LineTo. В Турбо Паскале имеется процедура DrawPoly, которая позволяет строить любые многоугольники с помощью линий текущего цвета, стиля и толщины.
Формат:
DrawPoly(NumPoints,PolyPoints);
DrawPoly позволяет отображать на экране любую ломаную, заданную совокупность координат некоторого множества точек.
Это может быть как сложная геометрическая фигура, так и график математической функции, заданной в табличном виде.
NumPoints – это количество точек ломаной.
PolyPoints – набор записей, каждая из которых состоит из двух полей, содержащих координаты X и Y очередной точки.
Пример. Построение многоугольников с пятью вершинами. Координаты вершин случайные.
USES Graph,Crt;
VAR
Gd,Gm:Integer;
I:Byte;
Ch:Char;
Points:Array[1..6] Of PointType; {Массив вершин}
Begin
Gd:=Detect;
{Инициализация графического режима}
InitGraph(Gd,Gm,'C:\TP7\BGI');
{Обработка ошибки инициализации}
IF GraphResult<>0 THEN Begin
WriteLn(‘Ошибка инициализации’);
HALT(1);
End;
Randomize;
Repeat
ClearDevice;
{определение случайных координат вершин}
For I:=1 To % Do Begin
Points[I].X:=Random(GetMaxX);
Points[I].Y:=Random(GetMaxY);
End;
{Связь координат первой и последней вершин}
Points[6].X:=Points[1].X;
Points[6].Y:=Points[1].Y;
DrawPoly(6,Points); {построение многоугольника}
Until Ch=#27; {пока не нажата клавиша Esc}
CloseGraph;
End.
Построение дуг, эллипсов и окружностей
Изображение окружности
Circle(X, Y, Radius);
X, Y – координаты центра окружности
Radius – радиус окружности
Изображение дуг
Arc(X, Y, StAngle, EndAngle, Radius);
X, Y – центр окружности дуги.
StAngle, EndAngle – начальный и конечный углы, отсчитываемые от горизонтальной оси против часовой стрелки.
Radius – радиус.
Если StAngle=0 и EndAngle=359, то вычерчивается полная окружность.
Построение эллиптических дуг
Ellipse(X, Y, StAngle, EndAngle, XR, YR)
XR, YR – задают горизонтальную и вертикальную оси.
Если StAngle=0 и EndAngle=359, то вычерчивается полный эллипс.