Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции 17.19.doc
Скачиваний:
2
Добавлен:
11.07.2019
Размер:
85.5 Кб
Скачать

5. Использование модулей в программах.

Модули являются высокоэффективным средством прикладного программирования задач для самых различных областей. Они позволяют накапливать знания в виде соответствующих реализаций процедур, функций, типов, объектов, констант, характерных для тех или иных предметных областей, и делать эти знания доступными для использования в программах. Хотя механизм модулей не предполагает никаких ограничений на то, какие компоненты следует объединять в одном модуле, обычно модули создаются по функциональному принципу, объединяя лишь родственные компоненты.

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

В Турбо Паскале имеется целая группа стандартных модулей: system, dos, crt, printer, overlay, graph и др. Первые пять этих модулей объединены в библиотечный файл со стандартным именем turbo.tpl. Этот файл является одним из обязательных для работы с системой Турбо Паскаль.

Основным стандартным модулем библиотеки turbo.tpl является модуль system, в котором сосредоточены процедуры и функции для всех стандартных типов данных (таких как integer, real, string и др.), а также многие подпрограммы общего назначения. Модуль system является единственным стандартным модулем, не требующим для работы с ним uses-описания (он подключен к любой программе по умолчанию). Все остальные стандартные модули из tubo.tpl становятся доступными только после их uses-описания в программе, как и для всех других модулей.

Стандартный модуль dos содержит средства доступа к операционной системе MS DOS, осуществляя интерфейс между системой Турбо Паскаль и MS DOS.

Стандартный модуль printer - самый простой из стандартных модулей. Он содержит лишь переменную Lst , осуществляющую связь с принтером для процедур вывода write и writeln.

Стандартный модуль overlay обеспечивает организацию оверлейных программ - программ с перекрытием в оперативной памяти (т.е. позволяющих использовать программы, размер которых превышает объем доступной оперативной памяти).

Особое место в Турбо Паскале занимают стандартные модули CRT и GRAPH. Модуль CRT содержит средства для управления экраном дисплея в текстовом режиме, а также ввода информации с клавиатуры, управления звуком и задержкой. Модуль GRAPH содержит несколько десятков процедур и функций для управления экраном дисплея в графическом режиме. Этот модуль работает совместно с графическими драйверами дисплея (файлами с расширением bgi), обеспечивая создание графических программ практически для всех типов адаптеров SVGA, VGA, EGA и других. Модули CRT и GRAPH ниже будут рассмотрены подробнее.

6. Стандартный модуль сrt.

Некоторые простейшие средства управления экраном из модуля CRT были уже рассмотрены ранее (при изучении простых операторов Турбо Паскаля). Здесь мы более подробно рассмотрим средства модуля CRT в целом.

В текстовом режиме экран рассматривается как матрица из строк и столбов, в каждую позицию которой может быть помещен символ из кодовой таблицы ASCII. Координаты экрана измеряются от верхнего левого угла, имеющего координаты (1,1), и возрастают слева направо и сверху вниз. Число строк и столбцов зависит от режима экрана (обычный режим - 25 строк и 80 столбцов). Позиция экрана характеризуется также визуальными свойствами: цветом фона, цветом линий символа и яркостью (нормальная, низкая, высокая).

Модуль CRT содержит ряд процедур, функций, константы цветов, режимов экрана и некоторые переменные. Все средства модуля CRT можно разделить на несколько групп: установки режима экрана, ввода с клавиатуры, управления курсором, управления окном, управления цветом и яркостью, управления звуком.

Установка режима экрана: процедура TextMode(mode:word) устанавливающая режим (число строк и столбцов экрана, монохромный или цветной режим) в соответствии с константами режима. Константа последнего установленного режима сохраняется в стандартной переменной lastmode. К этой группе относится также процедура AssignCrt(var F:text), осуществляющая связь с файловой переменной F клавиатуры для ввода, либо экран для вывода текста.

Ввод с клавиатуры: функции без аргументов KeyPressed (с результатом булевского типа) и ReadKey (с результатом типа char). Функция KeyPressed фиксирует сам факт нажатия на любую клавишу, возвращая true, если клавиша была нажата и false - в противном случае. Функция ReadKey осуществляет "слепое чтение" кода нажатой клавиши, приостанавливая выполнение программы до нажатия клавиши и возвращая в качестве результата код клавиши (без отображения его на экране). Это более гибкое средство ввода с клавиатуры, чем операторы read и readln.

Управление курсором: процедуры GotoXY(x,y:byte), CtrlEol, DelLine, InsLine; функции без параметров whereX, whereY. Эти процедуры позволяют установить курсор в позицию (x,y); удалить символы от курсора до конца строки; удалить текущую строку, сдвинув вверх все остальные строки и, очистив нижнюю строку; вставить пустую строку в позицию курсора. Функции whereX, whereY позволяют определить текущее положение курсора на экране (или в окне экрана) и возвращают позицию курсора как целое типа byte.

Управление цветом и яркостью: процедуры TextBackGround(color:byte), TextColor(color:byte), ClrScr, NormVideo, HighVideo, LowVideo. Первые три процедуры уже были описаны раннее среди простых средств управления экраном, а остальные предназначены для установки нормальной, высокой или низкой яркости символов и относятся к последующему выводу символов на экран.

Управление окнами: процедура window(x1,y1,x2,y2:byte) предназначена для установки окна на экране и была уже описана ранее. В дополнении к ней в модуле CRT имеются переменные windmin и windmax типа word, в которых, хранятся координаты текущего окна (верхнего левого и нижнего угла).

Управление звуком: процедуры sound(f:word), nosound, delay(d:word). Эти процедуры соответственно включают генератор звука с частотой f, выключают генератор звука, устанавливают задержку (приостановку работы программы) на d миллисекунд. Для иллюстрации использования средств модуля CRT приведем пример программы, реализующей "бегущую строку":

program animal_string_m;

{Программа демонстрации "бегущей" строки}

uses CRT;

var str:string; {Вводимая строка}

x,y,x0,x1:byte;j,k,r:byte;

procedure write_anim(s:string);

{ Анимированный посимвольный вывод строки }

var i:byte;

begin for i:=1 to length(s) do begin write(s[i]);delay(300) end;

end{write_anim};

BEGIN textbackground(cyan);textcolor(white);clrscr;

write_anim(' Программа "бегущей" строки');

repeat repeat window(25,10,55,11);textbackground(green);

textcolor(black);clrscr;

write_anim('Введите строку:');writeln;x:=whereX;y:=whereY;

Lowvideo;k:=0;gotoXY(x,y);readln(str);r:=length(str);

for j:=1 to r do if str[j]=' ' then inc(k);

until k<r;

gotoXY(x,y);Highvideo;write_anim(str);

x0:=Lo(windmin);x1:=Lo(windmax); r:=x1-x0-r;

{ Имитация "бегущей строки"}

for j:=1 to r do { Сдвиг строки вправо на один символ}

begin str:=' '+str;gotoXY(x,y);write(str);delay(300) end

until readkey=#13;

END { animal_string_m}.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]