Line(X1,Y1,X2,Y2:integer) - Рисует линию от точки (X1,Y1) к точке с
координатой Х2,У2;
MoveTO(X,Y: integer) - Смещает текущий указатель к точке с координатой Х,У;
MoveRel(DX,DY: integer) - Смещает текущий указатель к точке, заданной
приращением координат;
Rectangle(X1,Y1,X2,Y2:integer) - Рисует прямоугольник, используя
текущий цвет и тип линии по верхней левой и нижней правой точкам;
Bar(X1,Y1,X2,Y2:integer) - Рисует закрашенный прямоугольник, используя установку SetFillStyle;
Bar3D(X1,Y1,X2,Y2:integer;Depth:word;Top:Bolean) - Рисует закрашенный паpаллелипипед. Depth - глубина в Pixel (1/4 ширины).
Если Тор=True, то рисуется верхняя грань пеpеллелипипеда;
circle(X,Y:integer;R:word) - Рисует окружность радиуса R, используя
X,Y как координаты центра;
Fillellipse(X,Y: integer; XR,YR: word) - Рисует защтpихованный эллипс,
используя X,Y как центр и XR,YR как горизонтальный и
вертикальный радиусы.
RestorCRTMode - Восстанавливает текстовый режим работы экрана;
OutText(Text: string) - Выводит текстовую строку на экран.
OutTextXY(X,Y: integer; Text: string) - Выводит текст в заданное
место экрана.
Пример программы построения графика функции у=2+х*х.
program graphik; {файл grafikf.pas}
uses graph; {подключениемодуля GRAPF}
var a,b,x,y: integer; {a,b-переменные, определяющие тип драйвера и
видеорежим соответственно}
begin
detectgraph(a,b); {авто определение типа драйвера и видеорежима}
initgraph(a,b,'E:\TP\BGI'); {инициализация графического режима}
setgraphmode(2); {установка нового режима (2), очистка экрана}
setBKcolor(0); {основной цвет фона - черный}
setcolor(4); {основной цвет рисования - красный}
moveTO(100,100); {смещает курсор}
lineRel(50,50); {вычерчивание линии по приращению от текущего указателя}
readln; {пауза до нажатия клавиши }
setcolor(2); {основной цвет рисования - зеленый}
line(100,100,100,50);{рисует линию от т.Х1,У2 до т.Х2,У2}
readln; {пауза до нажатия }
setcolor(5); {основной цвет рисования - фиолетовый}
putPixel(0,0,12); {выводит точку цветом 12 с координатой 0,0}
readln; {пауза до нажатия }
moveTO(1,2); {смещает курсор к точке с координатой 1,2}
for x:=0 to 20 do
begin
y:=2+ x*x;
lineTO(x,y); {рисует линию от текущего указателя к точке с координатой Х,У}
end;
readln; {пауза до нажатия ввода}
Settextstyle(1,0,5);
OutTextXY(50,400,'график функции у=2+х*х'); {выводит текст в заданное место экрана}
readln; {пауза до нажатия }
putPixel(639,479,14);{выводит точку цветом 14 с координатой 639,479}
readln; {пауза до нажатия }
closegraph;{закрывает графический режим и восстанавливает текстовый}
end.
Модуль CRT включает процедуры и функции, которые управляют текстовым режимом
работы дисплея. С помощью подпрограмм модуля можно перемещать курсор
по экрану дисплея, менять цвет выводимых символов и фона, создавать
окна на экране, управлять звуком, работать с клавиатурой.
Функции управления клавиатурой:
KeyPressed: Boolean; - возвращает True, если в текущий момент на клавиатуре была нажата клавиша, иначе False. Не приостанавливает выполнение программы. Используется при организации работы циклов.
ReadKey: Char; - читает и возвращает в программу символ с клавиатуры (без отображения на экране). Приостанавливает исполнение программы до нажатия на любую клавишу символа. Используется в операторах IF для проверки символов.
WhereX: Byte; - возвращает горизонтальную координату текущей позиции курсора относительно окна.
WhereY: Byte; - возвращает вертикальную координату текущей позиции курсора относительно окна.
Процедуры управления дисплеем
AssignCrt(Var F: Text); - связывает с файловой переменной устройство CON (клавиатуру для ввода и дисплей для вывода).
ClrEol; - удаляет все символы справа от курсора до конца строки без перемещения курсора.
ClrScr; - очищает экран (окно на экране) и помещает курсор в верхний левый угол.
Delay(D: word); - приостанавливает работу программы на D миллисекунд.
GotoXY(X,Y: byte); - перемещает курсор в нужное место экрана (окна). Левый верхний угол экрана (окна) имеет координаты (1,1). Отсчет координат идет слева направо и сверху вниз. Количество символов в строке и самих строк зависит от типа дисплея (обычно 25 строк и 80 символов).
InsLine; - вставляет пустую строку в позицию курсора.
HighVideo; - устанавливает высокую яркость символов.
LowVideo; - устанавливает низкую яркость символов.
NormVideo; - устанавливает нормальную яркость символов.
Window(X1,Y1,X2,Y2:byte); - определяет размеры окна на экране для вывода текста. X1,Y1 - координаты левого верхнего угла, X2,Y2 - правого нижнего угла.
TextBackGround(Color: byte); - устанавливает цвет фона экрана (окна) от 0 (черный) до 15 (белый).
TextColor(Color: byte); - устанавливает цвет символа.
TextMode(Mode: word); - устанавливает нужный текстовый режим:0,1,2...
Управление звуковым генератором
Sound(F: word); - включает звук генератора, F - частота звука в герцах.
Delay(T: word); - устанавливает продолжительность звучания в миллисекундах.
NoSound; - выключает звук генератора.
Процедурные типы – гибкое средство для передачи функций и процедур в качестве фактических параметров обращения к другим процедурам и функциям.
Type p1=procedure(a, b, c: real; var d: real);
F= function: string;
Любые процедуры или функции, передаваемые в качестве фактических параметров объявляется директивой far.
Стандартные процедуры или функции ТП могут передаваться рассмотренным образом. В программе могут быть объявлены переменные процедурных типов.
Varp1:proc1;
F: func2;
Ap: array [1..n] of proc1;
Переменные процедурных типов допускается присваивать в качестве значений имена соответствующих подпрограмм=> переменные становятся синонимом имени подпрограммы.
Динамическая память – это оперативная память ПК, представляемая программно при её работе , за вычетом сегмента данных 164 Кбайта ,стёка(обычно 16 Кбайт) и собственно тела программы (>200-300 Кбайт)
Д.п. - это практически единственная возможность обработки массивов данных большой размерности.
Сегмент данных - это непрерывная область оперативной памяти в которой размещаются все переменные, объявленные в программе.
Д. размещение данных – означает использование Д.П. непосредственно при работе программы.
ОЗУ ПК представляет собой совокупность ячеек для хранения информации - байтов, каждый из которых имеет собственный номер. Эти номера – называются адресами ,позволяющими обращаться к любому байту памяти.
Указатели – гибкое средство управления Д.П.. Это переменная, которая в качестве своего значения содержит адрес байта памяти. В ПК адреса задаются сегментами и 16 разрядными смещениями.
Сегмент – это участок памяти имеющий длину 65536(64Кбайта) и начинается с физического адреса , кратного 16.
Смещение – указывает, сколько байт от начала сегмента нужно отступить, чтобы обратиться к нужному адресу. Адресное пространство 1 Мбайт – стандартная память ПК. Для адресации в пределах 1 Мбайта нужно 20 двоичных разрядов, которые получаются из 2-х 16 разрядных слов (сегмента и смещения типа word ) =>содержимое сегмента смещается на 4 разряда , освободившиеся правые заполняются нулями.
Структура памяти: SYS область – КУЧА – SYS область
I^:=2;{в область памяти I заносится 2}
Функции:
ADDR (x) – возвращает результат типа pointer,в котором содержится адрес аргумента,x- любой объект программы (переменная , процедура, функция)
CSEG- возвращает значение, хранящееся в регистре CS микропроцессора. Результат в слове типа word.
DSEG - возвращает значение, хранящееся в регистре DS микропроцессора. Результат в слове типа word.
MAXAVAIL-возвращает размер в байтах наибольшего непрерывного участка кучи .MAXAVAIL(LONGINT).
За вызов процедуры NEW или GETMEM нельзя зарезервировать памяти больше, чем значение, возвращаемое этой функцией.
MEMAIAIL(LONGINT)- возвращает размер в байтах общего свободного пространства кучи
OFS(Х)-возвращает значение типа WORD, содержащее смещения адреса указанного объекта.(Х)-выражение любого типа или процедура.
PTR(seg , ofs) - возвращает значение типа POINTER, по заданному сегменту и смещению
SEG(X) - возвращает значение типа WORD, содержащее сегмент адреса указанного объекта.
SIZEOF(X)- возвращает длину в байтах внутреннего представления указанного объекта.X- имя переменной, функции или типа.
Процедуры:
DISPOSE- возвращает в кучу фрагмент динамической памяти ,который был ранее зарезервирован за типизированным указателем.
DISPOSE(TP) – типизированный указатель
FREEMEM - возвращает в кучу фрагмент динамической памяти ,который был ранее зарезервирован за нетипизированным указателем
FREEMEM(P,SIZE) – P-нетипизированный указатель ,SIZE-длинна освобождающегося размера.
GETMEM(P,SIZE) – резервирует за нетипизированным указателем фрагмент Д,П, требуемого размера(не более 65521)
MARK(PTR) – запоминает текущее значение указателя кучи. PTR- указатель любого типа
NEW - резервирует фрагмент кучи для размещения переменной .
NEW(TP) - тип указатель
RELISE(PTR) – освобождает участок кучи .PTR – указатель любого типа,в котором предварительно было сохранено процедурой MARK значение указателя кучи.
Д.П. широко используется для временного запоминания данных при работе с графикой и звуком в ПК.
Меню run
Run- запуск на исполнение
Stepover-пошаговое исполнение программы
Traceinto- пошаговое исполнение программы только подпрограммы выполняются оператор за оператором
Gotocursor – выполнение до курсора
Programreset- завершение процесса отладки
Parameters- окно для ввода параметров для отладки
Меню compile
Compile- компиляция файла, находящегося в активном окне редактирования.
Make – условная компиляция изменённых модулей в ЕХЕ файл
Build- безусловная компиляция многомодульной программы с созданием ЕХЕ файла
Target…-выбор в окне таргет целевой платформы для приложения
Primaryfile…-открывает окно для указания главного файла, компилируемой программы.
Меню Debug:
Breakpoints- установка точек условного и безусловного перехода