![](/user_photo/2706_HbeT2.jpg)
- •Аннотация
- •Содержание
- •Интегрированная среда программирования 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.13 Построение заполненных областей изображения
11.13.1 Построение заполненного сектора эллипса
Sector(X,Y, StAngle, EndAngle, XR, YR)
X, Y – центр окружности дуги.
StAngle, EndAngle – начальный и конечный углы, отсчитываемые от горизонтальной оси против часовой стрелки.
Radius – радиус.
Эллипс (сектор эллипса) будет залит цветом по текущему шаблону.
Построение заполненного сектора круга
PieSlice(X,Y, StAngle, EndAngle, Radius)
Сектор круга (круг, если StAngle=0 и EndAngle=359) будет заполнен текущим узором.
11.13.2 Построение заполненного эллипса
FillEllipse(X, Y, XR, YR)
XR, YR – задают горизонтальную и вертикальную оси.
X, Y – координаты центра эллипса
11.13.3 Построение заполненных сложных геометрических фигур
FillPoly(NumPoints, PolyPoints)
Эта процедура по своему действию очень похожа на процедуру DrawPoly и имеет такие же параметры. Различие лишь в том, что многоугольник, который рисуется процедурой FillPoly, всегда замкнутый, а область, ограниченная контуром полученной фигуры, закрашивается.
Пример. Построение геометрических фигур.
Uses Graph, Crt;
VAR
GD,GM:integer;
Radius, I, Width, K:Integer;
Y0, Y1, Y2, X1, X2:integer;
Pattern:FillPatternType;
Points:Array[1..6] Of PointType;
BEGIN
GD:=vga; GM:=1;
Initgraph(gd,gm,'C:\tp7\bgi');
IF GraphResult<>0 then Halt(1);
SetBkColor(0); SetColor(2); {Цвет фона и изображения}
I:=0;
For Radius:=1 to 5 Do Begin {Построение окружностей}
SetColor(radius+4);
Circle(150,150,Radius*25);
Inc(I); If I=4 Then I:=0;
End;
ReadLn;
ClearDevice; SetBkColor(1); SetColor(5);
SetLineStyle(0,0,3); {установка стиля линии}
Ellipse(130,130,0,360,30,50); {Построение эллипса}
ReadLn;
ClearDevice; SetColor(4);
Ellipse(130,130,0,180,100,70); {построение эллиптической дуги}
ReadLn;
ClearDevice; K:=4;
For Radius:=1 to 5 Do Begin
SetColor(K);
Arc(300,100,0,90,Radius*20); {построение дуги}
Inc(K);
End;
ReadLn;
ClearDevice; Width:=20; SetColor(1); SetBkColor(11);
For I:=1 to 5 Do Begin
SetFillStyle(7, I+4); {Определение стиля заполнения}
Bar(I*Width, I*20, Succ(I)*Width, 200); {Построение прямоугольников}
End;
SetFillStyle(5,12);
Bar(150,150,250,250);
ReadLn;
SetFillStyle(8,4); {Построение параллелепипеда с верхней плоскостью}
ClearDevice;
Y1:=100; Y2:=200; X1:=230; X2:=300;
SetLineStyle(3,0,3); {Определение стиля линии}
Bar3d(x1,y1,x2,y2,10,TopOn);
ReadLn;
ClearDevice; {Построение параллелепипеда без верхней плоскости}
SetLineStyle(0,0,1); SetFillStyle(11,1);
Bar3d(X1,Y1,X2,Y2,10,TopOff);
ReadLn;
{Пользовательский шаблон заполнения}
ClearDevice; SetColor(6);
SetLineStyle(0,0,3); { Стиль линии}
pattern[1]:=31; pattern[2]:=62; {заполнение массива}
pattern[3]:=124; pattern[4]:=248;
pattern[5]:=124; pattern[6]:=62;
pattern[7]:=31; pattern[8]:=0;
SetFillPattern(pattern,12); {Задание шаблона пользователя}
Bar(10,10,GetMaxX div 2,GetMaxY div 2);
Rectangle(10,10,GetMaxX div 2, GetMaxY div 2);
ReadLn;
{Построение закрашенного сектора эллипса}
ClearDevice; SetBkColor(3); SetColor(4);
SetFillStyle(7,14);
Sector(100,100,0,90,50,70);
ReadLn;
{Построение закрашенного сектора круга}
ClearDevice; SetFillStyle(1,14);
PieSlice(150,150,90,360,100);
ReadLn;
{Построение эллипса, заполненного текущим цветом}
ClearDevice;
SetFillStyle(6,13); SetLineStyle(3,0,1);
FillEllipse(200,200,50,100);
ReadLn;
{Построение закрашенного многоугольника}
ClearDevice; Randomize;
SetLineStyle(0,0,1); SetFillStyle(11,1);
{Определение случайных координат вершин}
For I:=1 To 5 Do Begin
points[i].X:=random(getmaxX); points[i].y:=random(getmaxY);
End;
points[6].x:=points[1].y; points[6].y:=points[1].y;
FillPoly(6,points);
ReadLn;
CloseGraph;
End.
11.14 Установка цвета
11.14.1 Установка цвета фона
SetBkColor(Color)
Color – новый цвет фона
11.14.2 Установка цвета изображения
SetColor(Color)
Color – новый цвет изображения
11.15 Заполнение областей изображения
FloodFill(X,Y,Border)
Служит для заполнения заданным с помощью SetFillStyle и SetFillPattern стилем области, расположенной либо внутри замкнутого контура, либо вне его.
X,Y – координаты точки внутри или вне замкнутого контура.
Border – задает цвет контура.
В зависимости от расположения указанной точки по отношению к контуру будет производиться заполнение текущим узором либо области, ограниченной контуром, либо части экрана, расположенной вне границ контура. Если указанный контур не является замкнутым, то будет заполнен весь экран.