Смекни!
smekni.com

Вопросы и ответы к экзаменам В-1 (стр. 5 из 6)

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.

41. Библиотечный модуль CRT. Работа с клавиатурой, экраном, звуковым генератором.

Модуль 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; - выключает звук генератора.

42. Процедурные типы. Параметры-функции. Параметры-процедуры.

Процедурные типы – гибкое средство для передачи функций и процедур в качестве фактических параметров обращения к другим процедурам и функциям.

Type p1=procedure(a, b, c: real; var d: real);

F= function: string;

Любые процедуры или функции, передаваемые в качестве фактических параметров объявляется директивой far.

Стандартные процедуры или функции ТП могут передаваться рассмотренным образом. В программе могут быть объявлены переменные процедурных типов.

Varp1:proc1;

F: func2;

Ap: array [1..n] of proc1;

Переменные процедурных типов допускается присваивать в качестве значений имена соответствующих подпрограмм=> переменные становятся синонимом имени подпрограммы.

43. Адресный тип. Динамическая память. Адреса и указатели.

Динамическая память – это оперативная память ПК, представляемая программно при её работе , за вычетом сегмента данных 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 значение указателя кучи.

Д.П. широко используется для временного запоминания данных при работе с графикой и звуком в ПК.

44. Среда ТП. Основные выполняемые функции. Система меню (работа с файлами, запуск, компиляция, отладка (Debug), работа с окнами).

Меню run

Run- запуск на исполнение

Stepover-пошаговое исполнение программы

Traceinto- пошаговое исполнение программы только подпрограммы выполняются оператор за оператором

Gotocursor – выполнение до курсора

Programreset- завершение процесса отладки

Parameters- окно для ввода параметров для отладки

Меню compile

Compile- компиляция файла, находящегося в активном окне редактирования.

Make – условная компиляция изменённых модулей в ЕХЕ файл

Build- безусловная компиляция многомодульной программы с созданием ЕХЕ файла

Target…-выбор в окне таргет целевой платформы для приложения

Primaryfile…-открывает окно для указания главного файла, компилируемой программы.

Меню Debug:

Breakpoints- установка точек условного и безусловного перехода