Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


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

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

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

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

F= function: string;

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

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

Var p1: 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 значение указателя кучи.

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

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

Меню run

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

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

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

Go to cursor – выполнение до курсора

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

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

Меню compile

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

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

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

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

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

Меню Debug:

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

Call stack – показывает процедуры выполнявшиеся ранее.

Register – информация о регистрах процессора

Watch – окно значений переменных

Output – окно результатов работы программы

User screen – просмотр результатов включая графику

Evaluate/ modify.. – окно изменения значений выражений

Add watch – окно значений и переменных вовремя отладки

Add breakpoint.. – окно установки точек прерывания программы 

Модульное программирование. Оформление модуля в ТП.

Модульное программирование – это организация программы как совокупности небольших независимых блоков, называемых модулями, структура и поведение которых подчиняется определенным правилам.

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

Использование модулей – прекрасный инструмент для разработки библиотек прикладных программ и мощное средство модульного программирования.

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

Структура модулей:

UNIT< имя> -зарезервированное слово (единица), начинает заголовок модуля

INTERFACE< интерфейсная часть> - начинает интерфейсную часть

IMPLIMENTAITION< исполняемая часть>

BEGIN < инициируемая часть> END.

Модуль состоит из заголовка и трёх частей, любая из которых может быть пуста.

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

 Имя модуля должно совпадать с именем файла, в котором находится исходный текст модуля (исходник). Имя модуля служит для связи с др. модулями и основной программой. Связь устанавливается спец. объявлением:

USES< имя вспомогательного модуля > - список связываемых модулей.

Интерфейсная часть –содержит объявление всех глобальных объектов модуля (типов, констант, переменных и программ), которые должны доступными основной программе или другим модулям. В интерфейсной части указываются только их заголовки. Объявление подпрограмм в интерфейсной части авто компилируется с использованием дальней модели памяти {far и near}, что обеспечивает доступ к подпрограмме из основной программы и др. модулей.Const, var объявленные в интерфейсной части модуля, как и глобальные константы и переменные помещаются в общий сегмент данных(max 65536 байт).

Исполняемая часть – содержит описания программ, объявленных в интерфейсной части. Разрешается объявление локальных для модуля вспомогательных типов, констант, переменных. Заголовок – обязательно, список формальных параметров можно опустить. Все параметры размещаются в сегменте данных.

Инициирующая часть – завершает модуль, может отсутствовать или быть пустой. Размещение исполняемых операторов, фрагменты программы. Операторы исполняются до передачи управления основной программе и для подготовки её работы. При пустой инициирующей части лучше всего её попустить.

Стандартные модели:

SYSTEM, DOS, CRT, GRAPH, PRINTER, OVERLAY, TURBO3, GRARH3


Поделиться:



Последнее изменение этой страницы: 2020-02-17; Просмотров: 69; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.037 с.)
Главная | Случайная страница | Обратная связь