Процедура DrawPoly - раздел Информатика, Технологии программирования Вычерчивает Произвольную Ломаную Линию, Заданную Координатами Точек Излома....
Вычерчивает произвольную ломаную линию, заданную координатами точек излома.
Procedure DrawPoly(N: Word; var Points)
Здесь N – количество точек излома, включая обе крайние точки; Points – переменная типа PointType, содержащая координаты точек излома.
Координаты точек излома задаются парой значений типа Word: первое определяет горизонтальную, второе - вертикальную координаты. Для них можно использовать следующий определенный в модуле тип:
type
PointType = record
х, у : Word
end;
При вычерчивании используются текущий цвет и текущий стиль линий. Вот как, например, можно с помощью этой процедуры вывести на экран график синуса:
Uses Graph;
const
N = 100; {Количество точек графика}
var
d, r, e: Integer;
m : array [O..N+1] of PointType; k : Word;
begin
{Инициируем графику}
d := Detect; InitGraph(d, r, '');
e := GraphResult; if e <> grOk then
WriteLn(GraphErrorMsg(e))
else
begin
{Вычисляем координаты графика}
for k := 0 to N do with m[k] do
begin
x := trunc(k*GetMaxX/N);
у := trunc(GetMaxY*(-sin(2*Pi*k/N)+1)/2)
end;
{Замыкаем график прямой линией}
m[succ(N)].x := m[0] .x;
m[succ(n)].y := m[0] .у;
DrawPoly(N + 2, m);
ReadLn;
CloseGraph
end
end.
В этом примере для проведения горизонтальной прямой используется «замыкание» ломаной – первая и последняя координаты ее точек излома совпадают.
Заметим, что хотя количество точек излома N – выражение типа Word, на самом деле внутри процедуры на этот параметр накладываются ограничения, связанные с конечным размером используемой буферной памяти. Вы можете убедиться в этом с помощью, например, изменения N в предыдущем примере: при N=678 график перестанет выводиться на экран, а функция GraphResult будет возвращать значение -6 (не хватает памяти для просмотра областей). Таким образом, для этой программы пороговое значение количества точек излома составляет 679. В то же время для программы
Uses Graph;
const
N=510; {Предельное значение, при котором на экране еще видна диагональная линия}
var
d,k: Integer;
Coo: array [1..N] of PointType;
begin
d := Detect; InitGraph(d,k,' ') ;
for k := 1 to N do with Coo[k] do
if odd(k) then
begin
X := 0;
Y := 0
end
else
begin
X := GetMaxX;
Y := GetMaxY
end;
DrawPoly(N,Coo);
ReadLn;
CloseGraph
end.
это значение равно 510. В данной программе ломаная задается в виде многократно накладывающихся друг на друга диагональных линий.
Все темы данного раздела:
Учебно-методическое пособие к учебной практике
для студентов специальности (направления) 010502.65 – «Прикладная информатика (в экономике)», 080700.62 – «Бизнес - информатика»
Красноярск
Цель и задачи практики
Учебная практика по технологиям программирования является
а) логическим продолжением дисциплин «Информатика и программирование» и «Вычислительные системы, сети и телекоммун
Организация проведения практики
Учебная практика по технологиям программирования проводится после сдачи летней сессии первого курса (второго семестра). По ее окончании студенты, успешно выполнившие программу практ
Основные требования к оформлению отчета
Отчет оформляется на листах белой бумаги формата А4 (210х297 мм) с одной стороны. Шрифт: Times New Roman 14 – 16 (в схемах алгоритмов допускается использование более мелких шрифтов,
Структура модулей
Модуль имеет следующую структуру:
UNIT <имя>;
INTERFACE
<интерфейсная часть>
IMPLEMENTATION
<исполняемая часть>
BEGIN
Заголовок модуля и связь модулей друг с другом
Заголовок модуля состоит из зарезервированного слова UNIT и следующего за ним имени модуля. Для правильной работы среды Турбо Паскаля и возможности подключения средств, облегчающих разработку крупн
Компиляция модулей
В среде Турбо Паскаля имеются средства, управляющие способом компиляции модулей и облегчающие разработку крупных программных проектов. В частности, определены три режима компиляции: COMPILE, MAKE и
Доступ к объявленным в модуле объектам
Пусть, например, мы создаем модуль, реализующий арифметику комплексных чисел (такая арифметика ни в стандартном Паскале, ни в Турбо Паскале не предусмотрена). К сожалению, в Турбо Паскале нельзя ис
Стандартные модули
В Турбо Паскале имеется восемь стандартных модулей, в которых содержится большое число разнообразных типов, констант, процедур и функций [1-3, 5]. Этими модулями являются SYSTEM, DOS, CRT, PRINTER,
Использование библиотеки CRT
Во многих случаях стандартные для Паскаля возможности ввода/вывода данных с помощью процедур Read, ReadLn, Write, WriteLn оказываются явно недостаточными для разработки удобных в ис
Функция KeyPressed
Возвращает значение типа Boolean, указывающее состояние буфера клавиатуры: False означает, что буфер пуст, a True – что в буфере есть хотя бы один символ, еще не прочитанный программой.
В
Функция ReadKey
Возвращает значение типа Char. При обращении к этой функции анализируется буфер клавиатуры: если в нем есть хотя бы один непрочитанный символ, код этого символа берется из буфера и возвращается в к
Текстовый вывод на экран
Используемое в ПК устройство визуального отображения информации – дисплей – состоит из двух основных частей: монитора, содержащего экран (электронно-лучевую трубку или жидкокристаллическую панель)
Процедура TextMode
Используется для задания одного из возможных текстовых режимов работы адаптера. Заголовок процедуры:
Procedure TextMode(Mode: Word);
Здесь Mode – код текстового режима. В качестве
Процедура TextBackground
Определяет цвет фона. Заголовок:
Procedure TextBackground(Color: Byte);
Единственным параметром обращения к этим процедурам должно быть выражение типа Byte, задающее код нужного ц
Процедура ClrScr
Очищает экран или окно (см. ниже процедуру Window). После обращения к ней экран (окно) заполняется цветом фона и курсор устанавливается в его левый верхний угол. Например:
Uses CRT;
Процедура Window
Определяет текстовое окно – область экрана, которая в дальнейшем будет рассматриваться процедурами вывода как весь экран. Сразу после вызова процедуры курсор помещается в левый верхний угол окна, а
Функции WhereX и WhereY
С помощью этих функций типа Byte можно определить текущие координаты курсора: WhereX возвращает его горизонтальную, a WhereY – вертикальную координаты.
В следующей программе сначала в цент
Процедура AssignCRT
Связывает текстовую файловую переменную F с экраном с помощью непосредственного обращения к видеопамяти (т.е. к памяти, используемой адаптером для создания изображения на экране). В результате выво
Процедура Delay
Обеспечивает задержку работы программы на заданный интервал времени. Заголовок процедуры:
Procedure Delay(T: Word);
Здесь Т – выражение типа Word, определяющее интервал времени (в
Краткая характеристика графических режимов работы дисплейных адаптеров
Настройка графических процедур на работу с конкретным адаптером достигается за счет подключения нужного графического драйвера. Драйвер – это специальная программа, осуществляющая управление теми ил
Процедура InitGraph
Инициирует графический режим работы адаптера. Заголовок процедуры:
Procedure InitGraph(var Driver,Mode: Integer; Path: String);
Здесь Driver – переменная типа Integer, определяет
Функция GraphResult
Возвращает значение типа Integer, в котором закодирован результат последнего обращения к графическим процедурам. Если ошибка не обнаружена, значением функции будет ноль, в противном случае – отрица
Функция GraphErrorMsg
Возвращает значение типа String, в котором по указанному коду ошибки дается соответствующее текстовое сообщение. Заголовок функции:
Function GraphErrorMsg(Code: Integer): String;
Процедура SetGraphMode
Устанавливает новый графический режим работы адаптера. Заголовок:
Procedure SetGraphMode(Mode: Integer);
Здесь Mode – код устанавливаемого режима.
Следующая программа илл
Функция GetModeName
Возвращает значение типа String, содержащее разрешение экрана и имя режима работы адаптера по его номеру. Заголовок:
Function GetModName(ModNumber: Integer): String;
Здесь ModNumb
Процедура GetModeRange
Возвращает диапазон возможных режимов работы заданного графического адаптера. Заголовок:
Procedure GetModeRange(Drv: Integer; var Min, Max: Integer);
Здесь Drv – тип адаптера; Min
Процедура SetViewPort
Устанавливает прямоугольное окно на графическом экране. Заголовок:
Procedure SetViewPort(XI,Y1,X2,Y2: Integer; ClipOn: Boolean);
Здесь X1...Y2 – координаты левого верхнего (XI,Y1)
Процедура ClearViewPort
Очищает графическое окно, а если окно не определено к этому моменту - весь экран. При очистке окно заполняется цветом с номером О из текущей палитры. Указатель перемещается в левый верхний угол окн
Процедура GetAspectRatio
Возвращает два числа, позволяющие оценить соотношение сторон экрана. Заголовок:
Procedure GetAspectRatio(var X,Y: Word);
Здесь X, Y – переменные типа Word. Значения, возвращаемые
Процедура SetAspectRatio
Устанавливает масштабный коэффициент отношения сторон графического экрана. Заголовок:
Procedure SetAspectRatio(X,Y: Word);
Здесь X, Y- устанавливаемые соотношения сторон.
Процедура SetActivePage
Делает активной указанную страницу видеопамяти. Заголовок:
Procedure SetActivePage(PageNum: Word);
Здесь PageNum – номер страницы.
Процедура может использоваться только с
Процедура SetVisualPage
Делает видимой страницу с указанным номером. Обращение:
Procedure SetVisualPAge(PageNum: Word);
Здесь PageNum – номер страницы.
Процедура может использоваться только с ад
Процедура PutPixel
Выводит заданным цветом точку по указанным координатам. Заголовок:
Procedure PutPixel(X,Y: Integer; Color: Word);
Здесь X, Y– координаты точки; Color – цвет точки.
Коорди
Процедура Line
Вычерчивает линию с указанными координатами начала и конца. Заголовок:
Procedure Line(X1,Y1,X2,Y2: Integer);
Здесь XL. .Yl – координаты начала (XI, Y1) и конца (Х2, Y2) линии.
Процедура SetLineStyle
Устанавливает новый стиль вычерчиваемых линий. Заголовок:
Procedure SetLineStyle(Type,Pattern,Thick: Word)
Здесь Type, Pattern, Thick – соответственно тип, образец и толщина линии
Процедура SetWriteMode
Устанавливает способ взаимодействия вновь выводимых линий с уже существующим на экране изображением. Заголовок:
Procedure SetWriteMode(Mode);
Здесь Mode – выражение типа Integer,
Процедура Rectangle
Вычерчивает прямоугольник с указанными координатами углов. Заголовок:
Procedure Rectangle(X1,Y1,X2,Y2: Integer);
Здесь X1... Y2 – координаты левого верхнего (X1, Y1) и правого ниж
Процедура Circle
Вычерчивает окружность. Заголовок:
Procedure Circle(X,Y: Integer; R: Word);
ЗдесьX, Y– координаты центра; R – радиус в пикселях.
Окружность выводится текущим цветом. Толщ
Процедура Arc
Чертит дугу окружности. Заголовок:
Procedure Arc(X,Y: Integer; BegA,EndA,R: Word);
Здесь X, Y – координаты центра; BegA, EndA – соответственно начальный и конечный углы дуги; R –
Процедура GetArcCoords
Возвращает координаты трех точек: центра, начала и конца дуги. Заголовок:
Procedure GetArcCoords(var Coords: ArcCoordsType);
Здесь Coords – переменная типа ArcCoordsType, в которо
Процедура Ellipse
Вычерчивает эллипсную дугу. Заголовок:
Procedure Ellipse(X,Y: Integer; BegA,EndA,RX,RY: Word);
Здесь X, Y – координаты центра; BegA, EndA – соответственно начальный и конечный угл
Процедура SetBkColor
Устанавливает цвет фона. Заголовок:
Procedure SetBkColor(Color: Word);
Здесь Color – цвет фона.
В отличие от текстового режима, в котором цвет фона может быть только темн
Процедура SetPalette
Заменяет один из цветов палитры на новый цвет. Заголовок:
Procedure SetPalette(N: Word; Color: Shortlnt);
Здесь N – номер цвета в палитре; Color – номер вновь устанавливаемого цве
Процедура GetPalette
Возвращает размер и цвета текущей палитры. Заголовок:
Procedure GetPalette(var Palettelnfo: PaletteType);
Здесь Palettelnfo – переменная типа PaletteType, возвращающая размер и цв
Процедура SetAllPalette
Изменяет одновременно несколько цветов палитры. Заголовок процедуры:
Procedure SetAllPalette(var Palette);
Параметр Palette в заголовке процедуры описан как нетипизированный парам
Процедура SetFillStyle
Устанавливает стиль (тип и цвет) заполнения. Заголовок:
Procedure SetFillStyle(Fill,Color: Word);
Здесь Fill – тип заполнения; Color – цвет заполнения.
С помощью заполнен
Процедура SetFillPattern
Устанавливает образец рисунка и цвет штриховки. Заголовок:
Procedure SetFillPattern(Pattern: FillPatternType;Color: Word);
Здесь Pattern – выражение типа FillPatternType; устанавл
Процедура GetFillSettings
Возвращает текущий стиль заполнения. Заголовок:
Procedure GetFillSettings(var Pattlnfo: FillSettingsType);
Здесь Pattlnfo – переменная типа FillSettingsType, в которой возвращаетс
Процедура SetRGBPalette
Устанавливает цветовую гамму при работе с дисплеем IBM 8514 и адаптером VGA. Заголовок:
Procedure SetRGBPalette(ColNum,
RedVal,GreenVal,BlueVal:Integer);
Здесь ColNum – н
Процедура FloodFill
Заполняет произвольную замкнутую фигуру, используя текущий стиль заполнения (узор и цвет). Заголовок:
Procedure FloodFill(X,Y: Integer; Border: Word);
Здесь X, Y – координаты любо
Процедура Bar
Заполняет прямоугольную область экрана. Заголовок:
Procedure Bar(X1,Y1,X2,Y2: Integer);
Здесь XJ...Y2 – координаты левого верхнего (X1, Y1) и правого нижнего (Х2, Y2) углов закраш
Процедура Ваr3D
Вычерчивает трехмерное изображение параллелепипеда и закрашивает его переднюю грань . Заголовок:
Procedure Ваr3D (X1,Y1,X2,Y2,Depth: Integer; Top: Boolean);
Здесь X1... Y2 – коорд
Процедура FillPoly
Обводит линией и закрашивает замкнутый многоугольник. Заголовок:
Procedure FillPoly(N: Word; var Coords);
Здесь N – количество вершин замкнутого многоугольника; Coords – переменна
Процедура Sector
Вычерчивает и заполняет эллипсный сектор. Заголовок: Procedure Sector(X,Y: Integer; BegA,EndA,RX,RY: Word);
Здесь BegA, EndA – соответственно начальный и конечный углы эллипсного сектора.
Процедура PieSlice
Вычерчивает и заполняет сектор окружности. Заголовок:
Procedure PieSlice(X,Y: Integer; BegA,EndA,R: Word);
В отличие от процедуры Sector, указывается лишь один горизонтальный ради
Процедура PutImage
Выводит в заданное место экрана копию фрагмента изображения, ранее помещенную в память процедурой Getlmage. Заголовок:
Procedure Putlmage(X,Y: Integer; var Buf; Mode: Word);
Здесь
Вывод текста
Описываемые ниже стандартные процедуры и функции поддерживают вывод текстовых сообщений в графическом режиме. Это не одно и то же, что использование процедур Write или WriteLn. Дело в том, что спец
Процедура OutText
Выводит текстовую строку, начиная с текущего положения указателя. Заголовок:
Procedure OutText(Txt: String);
Здесь Txt – выводимая строка.
При горизонтальном направлении
Процедура SetTextStyle
Устанавливает стиль текстового вывода на графический экран. Заголовок:
Procedure SetTextStyle(Font,Direct,Size: Word);
Здесь Font – код (номер) шрифта; Direct – код направления; S
Процедура SetTextJustify
Задает выравнивание выводимого текста по отношению к текущему положению указателя или к заданным координатам. Заголовок:
Procedure SetTextJustify(Horiz,Vert: Word);
Здесь Horiz –
Процедура SetUserCharSize
Изменяет размер выводимых символов в соответствии с заданными пропорциями. Заголовок:
Procedure SetUserCharSize(XI,X2,Yl,Y2: Word);
Здесь X1...Y2 – выражения типа Word, определяющ
Процедура GetTextSettings
Возвращает текущий стиль и выравнивание текста. Заголовок:
Procedure GetTextSettins(var Textlnfo: TextSettingsType);
Здесь Textlnfo – переменная типа TextSettingsType, который в м
Функция InstallUserFont
Позволяет программе использовать нестандартный векторный шрифт. Заголовок функции:
Function InstallUserFont(FileName: String): Integer;
Здесь FileName – имя файла, содержащего век
Функция InstallUserDriver
Включает нестандартный графический драйвер в систему BGI-драйверов. Заголовок функции:
Function InstallUserDriver(FileName: String; AutoDetectPtr: Pointer): Integer;
Здесь FileNam
Включение драйвера и шрифтов в тело программы
В Турбо Паскале имеется возможность включения графического драйвера и штриховых шрифтов непосредственно в тело программы. Такое включение делает программу независимой от местоположения и наличия на
Глоссарий
Видеоадаптер (или видеокарта) – это специальное устройство, позволяющее выводить изображение на экран монитора. Видеокарта состоит из следующих частей: видеопамять,
Отчет по учебной практике
«Технологии программирования»
Выполнил(а)
студент(ка) группы _____
_(Фамилия, имя, отчество)_
«___
ПРАВИЛА ВЫПОЛНЕНИЯ СХЕМ
1.1. При выполнении схем алгоритмов и программ отдельные функции алгоритмов и программ, с учетом степени их детализации, отображаются в виде условных графических обозначений – символов по ГОСТ 19.0
ПРАВИЛА ПРИМЕНЕНИЯ СИМВОЛОВ
2.1. Применения символов должно соответствовать указанному в таблице.
Фрагмент схемы
Содержание обозначения
ГОСУДАРСТВЕННЫЙ СТАНДАРТ СОЮЗА ССР
Единая система программной документации
ГОСТ 19.003-80
Взамен ГОСТ 19428-74
СХЕМЫ АЛГОРИТМОВ И ПРОГРАММ. ОБОЗНАЧ
ПЕРЕЧЕНЬ, НАИМЕНОВАНИЕ, ОБОЗНАЧЕНИЕ СИМВОЛОВ И ОТОБРАЖАЕМЫЕ ИМИ ФУНКЦИИ
1.1. Перечень, наименование, обозначение и размеры обязательных символов и отображаемые ими функции в алгоритме и программе обработки данных должны соответствовать указанным в таблице 1.
Т
СООТНОШЕНИЕ ГЕОМЕТРИЧЕСКИХ ЭЛЕМЕНТОВ СИМВОЛОВ
2.1. Размер a должен выбираться из ряда 10, 15, 20 мм. Допускается увеличивать размер a на число, кратное 5. Размер b равен 1,5a.
Примечание. При ручном выполнении схем ал
СИМВОЛЫ, ВЫПОЛНЕННЫЕ С ПОМОЩЬЮ ПЕЧАТАЮЩИХ УСТРОЙСТВ
Наименование
Обозначение
1. Процесс
Новости и инфо для студентов