Процедуры и функции, работающие с указателями 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Процедуры и функции, работающие с указателями



Для работы с указателями в Паскале предусмотрены стандартные функции, облегчающие выполнение часто встречающихся операций:

- функция addr (x): pointer – возвращает адрес объекта х, в качестве которого может быть указано имя переменной, функции, процедуры. Выполняет те же действия, что и операция «@»;

- функция seg (x): word – возвращает сегментный адрес указанного объекта;

- функция ofs (x): word– возвращает смещение указанного объекта;

- функция cseg: word– возвращает текущее значение сегментного регистра CS – сегментный адрес сегмента кодов;

- функция dseg: word– возвращает текущее значение сегментного регистра DS – сегментный адрес сегмента данных;

- функция ptr (seg, ofs:word):pointer – возвращает значение указателя по заданным сегментному адресу seg и смещению ofs.

Контрольные вопросы

1. Сформулируйте понятие типа указатель.

2. Перечислите виды указателей.

3. Укажите операции применимые к видам указателей.

4. Перечислите функции и процедуры, используемые с указателями.

5. Приведите примеры использования указателей.

Модуль CRT (основные возможности)

Модуль crt относится к стандартным модулям Турбо Паскаля и находится в файле turbo.tpl (Turbo Pascal Library). Для подключения модуля достаточно написать uses crt. Модуль crt содержит средства управления экраном в текстовом режиме и клавиатурой.

На экране используются два активных цвета: цвет текста и цвет фона. Их можно установить с помощью процедур TextColor и TextBackGround, которые имеют по одному параметру: целому числу, задающему номер цвета. Для цвета текста используются числа от 0 до 15, а для цвета фона – от 0 до 7. Обе эти процедуры оказывают влияние только на последующий вывод.

Координаты на экране задаются следующим образом. Левый верхний угол имеет координаты (1,1), а правый нижний (80,25). Можно вводить относительные координаты, объявляя окно с помощью процедуры window (x 1, y 1, x 2, y 2), где x 1, y 1 – абсолютные координаты левого верхнего, а x 2, y 2 – правого нижнего угла окна. После этого все процедуры и функции кроме window используют относительные координаты. Вернуться к работе со всем экраном можно, написав window (1,1,80,25). С помощью процедуры gotoXY (x,y) можно установить курсор в заданную позицию окна, а с помощью пары функций whereX и whereY без параметров можно узнать текущие координаты курсора. Процедура ClrScr не имеет параметров и закрашивает текущее окно цветом фона.

Модуль crt позволяет осуществлять контроль клавиатуры. Известно, что информация о нажатых клавишах поступает сначала в буфер клавиатуры и только затем считывается компьютером. Также известно, что клавиши и комбинации клавиш делятся на обычные, и управляющие. В результате нажатия обычной клавиши в буфер клавиатуры поступает ее код, который может быть от 1 до 255, а при нажатии управляющей клавиши в буфер клавиатуры поступает два кода, первый из которых 0. Функция KeyPressed не имеет параметров и возвращает истинный результат если буфер не пуст. При этом содержимое буфера не изменяется. Функция ReadKey также не имеет параметров и забирает из буфера клавиатуры очередное число, возвращая в программу символ (тип char), код которого соответствует этому числу. В случае, когда буфер пуст, функция ReadKey ожидает нажатия на клавиатуре.

Контрольные вопросы

1. Сформулируйте назначение модуля Crt.

2. Перечислите функции и процедуры модуля Crt.

3. Укажите специфику задания координат.

4. Перечислите стандартные процедуры и функции модуля Crt.

 

Модуль GRAPH (основные возможности)

Экран дисплея ПК представляет собой прямоугольное поле, состоящее из большого количества точек. Дисплей может работать в текстовом и графическом режимах. Но в отличие от текстового режима в графическом режиме имеется возможность изменять цвет каждой точки.

Чтобы сделать процесс графического программирования более эффективным, фирма Borland International разработала специализированную библиотеку Graph (в этом библиотечном модуле содержатся графические процедуры и функции), набор драйверов, позволяющих работать с разными типами мониторов, и набор шрифтов для вывода на графический экран текстов разной величины и формы.

Аппаратная поддержка графики ПК обеспечивается двумя основными модулями: видеомонитором и видеоадаптером.

Видеоадаптер – это сложное электронное устройство. Конструктивно он представляет собой самостоятельную электронную плату или может быть встроен в системную плату.

Какой бы адаптер ни был установлен на компьютере, мы можем использовать один и тот же набор графических процедур и функций Турбо Паскаля благодаря тому, что их конечная настройка на конкретный адаптер осуществляется автоматически. Эту настройку выполняют графические драйверы.

Запуск и завершение работы в графической системе осуществляется следующим образом:

· подключить модуль Graph (библиотеку графических процедур): uses Graph;

· установить графический режим: описываем переменные, которые определяют графический драйвер и монитор:

var d,m:integer;
- задаем команду ПК для самовыбора значений переменных:

d:=Detect; (detect - драйвер сам определяет лучший режим)
- инициализируем графический режим:

InitGraph(d,m,’указывается путь к драйверу’);
С этого момента все графические средства доступны пользователю.
Завершить работу в графической системе: CloseGraph;

 

Базовые процедуры и функции

Для построения изображений на экране используется система координат. Отсчет начинается от верхнего левого угла экрана, который имеет координаты (0,0). Значение Х (столбец) увеличивается слева направо, значение Y (строка) увеличивается сверху вниз. Чтобы строить изображения, необходимо указывать точку начала вывода. В текстовых режимах эту точку указывает курсор, который присутствует на экране. В графических режимах видимого курсора нет, но есть невидимый текущий указатель CP (Current Pointer). Фактически это тот же курсор, но он невидим.

Таблица 22.1

Процедуры модуля Graph

Процедура Формат Действие
     
SetColor SetColor(a: word); Устанавливает цвет, которым будет осуществляться рисование
SetBkColor SetBkColor(a: word); Устанавливает цвет фона
SetFillStyle SetFillStyle(a, b: word); a - стиль закраски, b - цвет Устанавливает стиль и цвет закраски
SetLineStyle SetLineStyle(a, b, c: word); а - стиль линии, b- образец построения линии (может устанавливаться пользователем), с-толщина линии Устанавливает стиль и толщину линии
SetTextStyle SetTextStyle(a, b, c: word); Устанавливает шрифт, стиль и размер текста
SetFillPattern SetFillPattern(Pattern: FillpatternType; Color: word); Pattern – маска Выбирает шаблон заполнения, определенный пользователем
ClearDevice ClearDevice; Очищает экран и устанавливает текущий указатель в начало
SetViewPort SetViewPort(x1, y1, x2, y2: integer, Clip: oolean); Устанавливает текущее окно для графического вывода
ClearViewPort ClearViewPort Очищает окно
Продолжение таблицы 22.1
     
PutPixel PutPixel(a, b, c: integer); Рисует точку цветом с в (x,y)
Line Line(x1, y1, x2, y2: integer); Рисует линию от (x1,y1) к (x2,y2)
Rectangle Rectangle(x1, y1, x2, y2: integer); Рисует прямоугольник с диагональю от (x1,y1) к (x2,y2)
Bar Bar(x1, y1, x2, y2: integer); Рисует закрашенный прямоугольник
Bar3D Bar3D(x1, y1, x2, y2, d: integer; a: oolean); Рисует трехмерную полосу (параллелепипед)
Circle Circle(x, y, r: word); Рисует окружность радиуса r с центром в точке (x,y)
Arc Arc(x, y, a, b, R: integer); a, b- начальный и конечный углы в градусах Рисует дугу из начального угла к конечному, используя (x,y) как центр
Ellipse Ellipse(x, y, a, b, Rx, Ry: integer); a, b – начальный и конечный углы в градусах Рисует эллиптическую дугу от начального угла к конечному, используя (x,y) как центр
FillEllipse FillEllipse(x, y, Rx, Ry: integer); Rx, Ry – вертикальная и горизонтальная оси Рисует закрашенный эллипс
MoveTo MoveTo(x, y: integer); Передвигает текущий указатель в (x,y)
MoveRel MoveRel(x, y: integer); Передвигает текущий указатель на заданное расстояние от текущей позиции на x по горизонтали и на y по вертикали
OutText OutText(text: string); Выводит текст от текущего указателя
OutTextxy OutTextxy(x, y: integer; text: string); Выводит текст из (x, y)
Окончание табл.22.1
     
FloodFill FloodFill (x,y,: integer; цвет: word); Заполняет ограниченную область, используя текущий шаблон и цвет заполнения
Sector Sector (x, y, a, b, Rx, Ry: integer); a, b - начальный и конечный углы в градусах Рисует и заполняет сектор эллипса

 

Таблица 22.2

Функции модуля Graph



Поделиться:


Последнее изменение этой страницы: 2016-09-19; просмотров: 360; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.19.56.114 (0.007 с.)