- •Алгоритмы.
- •Условие
- •Типы данных.
- •Целые числа.
- •Вещественный тип данных.
- •Символьные и строковые типы данных.
- •Булевские данные.
- •Указатели.
- •Идентификаторы.
- •Операторы.
- •Операторы присваивания.
- •Арифметические операторы.
- •Побитовые операторы.
- •Операторы отношений.
- •Логические операторы.
- •Адресные операторы.
- •Операторы над множествами.
- •Строковые операторы.
- •Создание программ в среде turbo pascal Структура программ.
- •1: WriteLn(' I меньше 10 ');
- •Тип константы компилятор определяет по типу значения. Описание типов используется при создании типов данных, отличных от базовых.
- •Обзор управляющих структур языка pascal
- •Интегрированная среда turbo pascal Назначение и состав среды.
- •Строка статуса
- •Справочник.
- •Работа с блоками текста
- •Компиляция и выполнение
- •Выполнение по шагам и трассировка
- •Управляющие структуры языка Паскаль. Условные операторы.
- •Пустой оператор
- •Условный оператор
- •If Flag then Writeln(‘Истинно’)
- •If not Flag then Writeln(‘Ложно’)
- •Оператор выбора
- •Операторы цикла Оператор цикла с предусловием (while)
- •Оператор цикла с постусловием (repeat…until)
- •Оператор цикла с параметром (for...Do)
- •I : Integer; { описание параметров циклов}
- •Процедуры и функции.
- •Структура процедуры и функции.
- •Локальные и глобальные элементы.
- •I : Integer; {I - глобальная}
- •I : Integer; {I - локальная }
- •Параметры.
- •I : Integer; {I - локальная }
- •Var { описание переменных }
- •Var { описание внутренних переменных}
- •Структурированные типы данных языка паскаль Перечисляемый тип.
- •Структурированные типы
- •Массивы
- •If eq then Write(“Массивы одинаковы”);
- •Множества
- •Совместимость и преобразование типов.
- •Символы и строки Символы:
- •Строки.
- •Строка- это массив символов.
- •Доступ к файлам.
- •Логические устройства
- •Открытие файла
- •Процедуры и функции для работы с файлами.
- •Текстовые файлы.
- •Типизированные файлы.
- •Нетипизированные файлы.
- •Модуль graph.
- •Драйверы.
- •Координатная система.
- •Текущий указатель.
- •Фигуры и стили.
- •Окна и битовые образы.
- •Обработка ошибок.
- •Пример простой программы:
- •Справочник по модулю Graph
- •Модуль crt
- •Ввод данных с клавиатуры. Более подробно о cтандартных операторах ввода.
- •Функции crt.
- •Текстовый вывод на экран.
- •Некоторые процедуры модуля crt.
- •Программирование звукового генератора.
- •Указатели.
- •Динамические переменные.
- •Проблема ограничения памяти.
Фигуры и стили.
Существует большое число программ для рисования и заполнения фигур, включая точки, линии, окружности, дуги, эллипсы, прямоугольники, многоугольники, полосы, 3-х мерные полосы и сектора. Использование SetLineStyle позволяет управлять толщиной линий и типом: сплошная, точками или тип, определенный Вами.
Использование SetFillStyle и SetFillPattern и FloodFill позволяет заполнять многоугольник штриховкой или другим стилем.
Окна и битовые образы.
Процедура SetViewPort заставляет все выводные команды работать относительно прямоугольной области экрана (окна или поля вывода). Точки, линии, фигуры - весь графический вывод - зависит от определения окна (его координат) до тех пор, пока окно не будет изменено. Другие программы обеспечивают очистку окна и чтение текущего определения окна. Если отсечение активно, весь графический вывод отсекается по границам текущего окна. Заметим, что CP никогда не отсекается.
GetPixel и PutPixel обеспечивают чтение пикселов. GetImage и PutImage могут быть использованы для сохранения и вывода на экран прямоугольной области экрана. Они обеспечивают полный набор битовых операции (копирование, xor, or, and, not).
Обработка ошибок.
Внутренние ошибки в модуле Graph возвращаются функцией GraphResult. GraphResult возвращает код ошибки последней графической операции. Заметим, что GraphResult устанавливается в ноль после его вызова. Следовательно, программист должен запомнить значение GraphResult во временной переменной, а затем проверять его.
Пример простой программы:
program GraphText;
uses
Graph;
var
GraphDriver, GraphMode, ErrorCode : Integer;
begin
GraphDriver :=Detect;
InitGraph(GraphDriver, GraphMode,'c:\tp7\bgi');
ErrorCode :=GraphResult;
if ErrorCode <> grOK then {ошибка }
begin
Writeln('Ошибка инициализации графики');
Writeln('Код ошибки - ',ErrorCode);
ReadLn;
Halt(1);
end;
Rectangle(0,0,639,479);
Line(0,0,639,479);
Line(0,479,639,0);
OutTextXY(100,200,’Нажмите клавишу Enter’);
Readln;
CloseGraph;
end.
Программа начинается с вызова InitGraph, который автоматически определяет аппаратуру и загружает соответствующий графический драйвер. Если графическое устройство не распознано или во время инициализации произошла ошибка, выдается сообщение об ошибке и программа завершается. Иначе, чертится прямоугольник по краю экрана и в центре экрана выводится текст.
Вызов CloseGraph вoсстанавливает видеорежим, который был установлен до вызова InitGraph и освобождает память, используемую графическим драйвером.
Справочник по модулю Graph
Константы, типы и переменные модуля Graph.
Таблица 1.2. Значения ошибок GraphResult.
-------------------------------------------------------------------
Константа Значение Описание
-------------------------------------------------------------------
grOk 0 нет ошибок
grNoInitGraph -1 графика не инициализированна
(используйте InitGraph)
grNotDetected -2 графическое устройство не обнаружено
grFileNotFound -3 файл драйвера устройства не найден
grInvalidDriver -4 неправильный файл драйвера устройства
grNoLoadMem -5 не достаточно памяти для загрузки
драйвера
grNoScanMem -6 выход за пределы памяти при заполнении
(scan fill)
grNoFloodMem -7 выход за пределы памяти при заполнении
(flood fill)
grFontNotFound -8 файл шрифта не найден
grNoFontMem -9 не достаточно памяти для загрузки
шрифта
grInvalidMode -10 неверный графический режим для этого
драйвера
grError -11 графическая ошибка
grIOerror -12 ошибка графического ввода/вывода
grInvalidFont -13 неверный файл шрифта
grInvalidFontNum -14 неверный номер шрифта
-------------------------------------------------------------------
SetPalette и SetAllPalette
Используйте эти константы цветов с SetPalette и SetAllPalette:
-------------------------------
Константа Значение
-------------------------------
Black 0
Blue 1
Green 2
Cyan 3
Red 4
Magenta 5
Brown 6
LightGray 7
DarkGray 8
LightBlue 9
LightGreen 10
LightCyan 11
LightRed 12
LightMagenta 13
Yellow 14
White 15
-------------------------------
SetRGBPalette.
Эти константы цветов могут быть использованы с SetRGBPalette
для выбора стандартных EGA цветов на графическом адаптере IBM 8514:
-------------------------------
Константа Значение
-------------------------------
EGABlack 0 темные цвета
EGABlue 1
EGAGreen 2
EGACyan 3
EGARed 4
EGAMagenta 5
EGABrown 20
EGALightGray 7
EGADarkGray 56 светлые цвета
EGALightBlue 57
EGALightGreen 58
EGALightCyan 59
EGALightRed 60
EGALightMagenta 61
EGAYellow 62
EGAWhite 63
-------------------------------
Константы типов линий.
Используйте эти константы типов линий с GetLineSettings и
SetLineStyle:
-------------------------------
Константа Значение
-------------------------------
SolidLn 0
DottedLn 1
CenterLn 2
DashedLn 3
UserBitLn 4 Тип линии, определяемый пользователем
NormWidth 1
ThickWidth 3
-------------------------------
Константы управления шрифтом.
Используйте эти константы с GetTextSettings и SetTextStyle:
-------------------------------
Константа Значение
-------------------------------
DefaultFont 0 8x8 битовый шрифт
TriplexFont 1 Штриховые шрифты
SmallFont 2
SansSerifFont 3
GothicFont 4
HorizDir 0 слева направо
VertDir 1 снизу вверх
UserCharSize 0 размер символа, определяемый
пользователем
-------------------------------
Константы выравнивания.
Эти константы управляют горизонтальным и вертикальным
выравниванием для SetTextJustify:
-------------------------------
Константа Значение
-------------------------------
LeftText 0
CenterText 1
RightText 2
BottomText 0
CenterText 1 (уже определена выше)
TopText 2
-------------------------------
Константы отсечения.
Используйте эти константы с SetViewPort для управления
отсечением. При ClipOn графический вывод будет отсекаться по
границе окна:
-------------------------------
Константа Значение
-------------------------------
ClipOn True
ClipOff False
-------------------------------
Константы полосы.
Эти константы используются с Bar3D, чтобы указать будет ли 3-х
мерная вершина рисоваться на верху полосы:
-------------------------------
Константа Значение
-------------------------------
TopOn True
TopOff False
-------------------------------
Константы шаблона заполнения.
Эти шаблоны заполнения используются GetFillSettings и
SetFillStyle. Используйте SetFillPattern для определения Вашего
собственного стиля заполнения, затем вызовите
SetFillStyle(UserFill, SomeColor) и сделайте свой шаблон активным:
--------------------------------------------------------------
Константа Значение
--------------------------------------------------------------
EmptyFill 0 заполняет цветом фона
SolidFill 1 заполняет основным цветом
LineFill 2 --- заполнение
LtSlashFill 3 /// заполнение
SlashFill 4 /// заполнение толстыми линиями
BkSlashFill 5 \\\ заполнение толстыми линиями
LtBkSlashFill 6 \\\ заполнение
HatchFill 7 редкая штриховка
XHatchFill 8 плотная штриховка
InterleaveFill 9 пересекающиеся линии
WideDotFill 10 редкие точки
CloseDotFill 11 плотные точки
UserFill 12 определенный пользователем стиль
--------------------------------------------------------------
Битовые операторы.
Используйте эти битовые операторы с PutImage и SetWriteMode:
--------------------------------------
Константа Значение
--------------------------------------
CopyPut 0 { MOV }
XORPut 1 { XOR }
Используйте эти операции только с PutImage:
OrPut 2 { OR }
AndPut 3 { AND }
NotPut 4 { NOT }
--------------------------------------
Константа палитры.
Эта константа используется GetPalette, GetDefault,
SetAllPalette и определяет запись PaletteType:
-------------------------------
Константа Значение
-------------------------------
MaxColors 15
-------------------------------
Типы
Эта запись используется с GetPalette, GetDefaultPalette и
SetAllPalette:
type
PaletteType = record
Size : Byte;
Colors : array (0.. MaxColors) of Shortint;
end;
Эта запись используется с GetLineSettings:
type
LineSettingsType = record
LineStyle : Word;
Pattern : Word;
Thickness : Word;
end;
Эта запись используется с GetTextSettings:
type
TextSettingsType = record
Font : Word;
Direction : Word;
CharSize : Word;
Horiz : Word;
Vert : Word;
end;
Эта запись используется с GetFillSettings:
type
FillSettingsType = record
Pattern : Word;
Color : Word;
end;
Эта запись используется с GetFillPattern и SetFillPattern:
type
FillPatternType = array [1..8] of Byte; { определяемый
пользователем стиль }
Этот тип определен для Вашего удобства. Заметим, что оба поля
типа Integer:
type
PointType = record
X,Y: Integer;
end;
Эта запись используется с GetViewSettings для получения данных
о текущем окне:
type
ViemPortType = integer;
X1, Y1, X2, Y2: Integer;
Clip : Boolean;
end;
Эта запись используется с GetArcCoords и может быть
использована для получения информации о последнем вызове Arc или
Ellipse:
type
ArcCoordsType = record
X, Y : Integer;
Xstart, Ystart: Integer;
Xend, Yend : Integer;
end;
Переменные.
Эти переменные указывают на программы управления кучей модуля
Graph. Если Ваша программа использует собственные программы
управления памятью, присвойте адреса Ваших программ распределения и
освобождения памяти переменным GraphGetMemPrt и GraphFreeMemPrt:
--------------------------------------------------------------
Переменная Значение
--------------------------------------------------------------
GraphGetMemPrt Pointer (распределение кучи)
GraphFreeMemPrt Pointer (освобождение кучи)
--------------------------------------------------------------
Процедуры.
Таблица 12.3. Процедуры модуля Graph.
-------------------------------------------------------------------
Arc Рисует дугу от начального угла к конечному,
используя (X,Y) как центр
Bar Рисует полосу, используя текущий стиль и цвет.
Bar3D Рисует 3-х мерную полосу, используя текущий
стиль и цвет.
Circle Рисует окружность, используя (X,Y) как центр.
ClearDevice Очищает экран и устанавливает текущий указатель
(CP) в начало.
ClearViewPort Очищает окно.
CloseGraph Закрывает графическую систему.
DetectGraph Проверяет аппаратуру и определяет какой
графический драйвер и в каком режиме
используется.
DrawPoly Рисует многоугольник текущим цветом и типом
линии.
Ellipse Рисует эллиптическую дугу от начального угла
к конечному, используя (X,Y) как центр.
FillEllipse Рисует заполненный эллипс, используя (X,Y) как
центр и XRadius и YRadius как горизонтальные
и вертикальные оси.
FillPoly Заполняет многоугольник, используя
сканирование.
FloodFill Заполняет ограниченную область, используя
текущий шаблон и цвет заполнения.
GetArcCoords Позволяет запросить координаты команды Arc.
GetAspectRatio Возвращает разрешение экрана из которого может
быть вычислен относительный аспект
(Xasp/Yasp).
GetFillPattern Возвращает шаблон заполнения, установленный
последним вызовом SetFillPattern.
GetFillSettings Позволяет запросить текущий шаблон и цвет,
установленные SetFillStyle или SetFillPattern.
GetImage Сохраняет битовый образ указанной части экрана
в буфере.
GetLineSettings Возвращает текущие стиль, шаблон и толщину
линии, установленные SetLineStyle.
GetModeRange Возвращает минимальный и максимальный
графические режимы для данного драйвера.
GetPalette Возвращает текущую палитру и ее размер.
GetTextSettings Возвращает текущий шрифт, направление, размер
и выравнивание текста, установленные
SetTextStyle и SetTextJustify.
GetViewSettings Позволяет запросить текущие параметры окна и
отсечения.
GraphDefaults Устанавливает текущий указатель (CP) в начало
и переустанавливает графическую систему.
InitGraph Инициализирует графическую систему и
устанавливает устройство в графический режим.
Line Рисует линию от (X1,Y1) к (X2,Y2).
LineRel Рисует линию от текущего указателя (CP) к
точке, лежащей на заданном растоянии.
LineTo Рисует линию от текущего указателя к (X,Y).
MoveRel Передвигает текущий указатель (CP) на заданное
расстояние от его текущей позиции.
MoveTo Передвигает текущий указатель (CP) в (X,Y).
OutText Выводит текст на экран от текущего указателя.
OutTextXY Выводит текст на экран.
PieSlice Рисует и заполняет сектор, используя (X,Y) как
центр и рисуя от начального угла к конечному.
PutImage Выводит битовый образ на экран.
PutPixel Рисует точку (пиксел) в (X,Y).
Rectangle Рисует прямоугольник, используя текущий цвет и
тип линии.
RestoreCRTMode Восстанавливает видеорежим, который был до
инициализации графики.
Sector Рисует и заполняет сектор эллипса.
SetActivePage Устанавливает активную страницу для
графического вывода.
SetAllPalette Изменяет цвет палитры.
SetAspectRatio Изменяет значение относительного аспекта.
SetBkColor Устанавливает цвет фона.
SetColor Устанавливает основной цвет, которым будет
осуществляться рисование.
SetFillPattern Выбирает шаблон заполнения, определенный
пользователем.
SetFillStyle Устанавливает шаблон заполнения и цвет.
SetGraphBufSize Позволяет изменить размер буфера для функций
заполнения.
SetGraphMode Переводит систему в графический режим и
очищает экран.
SetLineStyle Устанавливает текущие толщину и стиль линии.
SetPalette Изменяет один цвет палитры, указанный через
ColorNum и Color.
SetRGBPallete Позволяет модифицизовать палитру для IBM 8514
и VGA.
SetTextJustify Устанавливает выравнивание текста,
используемое OutText и OutTextXY.
SetTextStyle Устанавливает текущий шрифт, стиль и размер
текста.
SetUserCharSize Позволяет изменить ширину и высоту символа
для штрихового шрифта.
SetViewPort Устанавливает текущее окно для графического
вывода.
SetVisualPage Устанавливает номер видимой графической
страницы.
SetWriteMode Устанавливает режим вывода (копирование или
XOR) для линий, рисуемых с DrawPoly, Line,
LineRel, LineTo, Rectangle.
-------------------------------------------------------------------
Функции
Таблица 12.4. Функции модуля Graph.
-------------------------------------------------------------------
GetBkColor Возвращает текущий фоновый цвет.
GetColor Возвращает текущий цвет.
GetDefaultPalette Возвращает аппаратную палитру в записи
PaletteType.
GetDriverName Вoзвращает строку с именем текущего драйвера.
GetGraphMode Возвращает текущий графический режим.
SetMaxColor Возвращает максимальный цвет, который можно
задать в SetColor.
GetMaxMode Возвращает номер максимального режима текущего
загруженного драйвера.
GetMaxX Возврашает максимальный Х (разрешение по
горизонтали) для текущего графического
драйвера и режима.
GetMaxY Возвращает максимальный Y (разрешение по
вертикали) для текущего графического
драйвера и режима.
GetModeName Возвращает строку с именем указанного
графического режимаю.
GetPaletteSize Возвращает размер таблицы палитры.
GetPixel Возвращает цвет точки в (X,Y).
GetX Возвращает координату X текущей позиции (CP).
GetY Возвращает координату Y текущей позиции (СР).
GraphErrorMsg Возвращает строку сообщения об ошибке для
заданного кода ErrorCode.
GraphResult Возвращает код ошибки для последней
графической операции.
ImageSize Возвращает число байт, требуемое для
заполнения прямоугольной области экрана.
InstallUserDriver Устанавливает пользовательский драйвер
устройства в BGI таблицу драйверов устройств.
InstallUserFont Устанавливает новый шрифт, который не встроен
в BGI систему.
RegisterBGIdriver Регистрирует драйвер BGI для графической
системы.
RegisterBGIfont Регистрирует шрифт BGI для графической
системы.
TextHeight Возвращает высоту строки в пикселах.
TextWidth Возвращает ширину строки в пикселах.
-------------------------------------------------------------------