Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Библиотечный модуль CRT. Работа с клавиатурой, экраном, звуковым генератором. ⇐ ПредыдущаяСтр 5 из 5
Модуль 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; Нарушение авторского права страницы