Re,Im: Real end;
Var
File_1: Text;
File_2: File of Complex;
X: Complex;
FileName: String;
BEGIN
Write('Введите имя текстового файла: ');
Readln(FileName);
Assign(File_1,FileName)
Write('Введите имя файла комплексных чисел: ');
Readln(FileName);
Assign(File_2,FileName);
Reset(File_1);
Rewrite(File_2);
While not Eof(File_1) do
Begin
ReadLn(File_1,X.Re,X.Im);
Write(File_2,X)
End;
Close(File_1);
Close(File_2) END.
В языке Turbo Pascal модуль (Unit) по определению считается отдельной программой. Если подпрограмма является структурным элементом Pascal-программы и не может существовать вне ее, то модуль представляет отдельно хранимую и независимо транслируемую единицу. Модуль является совокупностью констант, типов, переменных и подпрограмм, предназначенных для использования другими программами и модулями. Сам по себе модуль не является исполняемой программой, так как его объекты используются другими программами.
В языке Turbo Pascal существуют правила построения и разработки модулей. Но чаще всего используются программные средства следующих стандартных модулей, в которых содержатся все стандартные процедуры и функции языка:
SYSTEM – основная библиотека подпрограмм;
DOS – содержит подпрограммы для работы с операционной системой;
CRT – содержит подпрограммы для работы с клавиатурой и дисплеем; PRINTER – содержит средства для работы с печатающим устройством; OVERLAY – содержит средства для разработки оверлейных программ; GRAPH – библиотека графических подпрограмм.
Модуль GRAPH хранится в файле GRAPH.TPU, остальные из перечисленных модулей входят в состав библиотечного файла TURBO.TPL. Только модуль SYSTEM подключается к любой программе автоматически, все остальные становятся доступны после указания их имен в разделе объявления модулей, начинающемся со слова Uses.
Самый простой по содержанию – модуль PRINTER, который делает доступным вывод текстовых файлов на печатающее устройство. В нем определяется файловая переменная Lst типа Text, связанная с устройством PRN. После подключения модуля вывод на печать может производиться через файловую переменную Lst.
Пример. Вывод на печатающее устройство.
Uses Printer;
. . .
WriteLn(Lst,'Вывод на печатающее устройство');
Достаточно часто на практике используются константы, переменные и подпрограммы модуля CRT, с помощью которых разрабатываются средства управления текстовым выводом на дисплей, вводом с клавиатуры и звуковым генератором.
При работе с дисплеем через модуль CRT весь экран разбивается на строки, а каждая строка – на позиции, в каждую из которых можно поместить один символ. Для каждой позиции можно задать цвет фона (задний план) и цвет символа (передний план). В текстовом режиме цвет символа может иметь код от 0 до 15, цвет фона – от 0 до 7. При необходимости символ можно сделать мерцающим, для чего следует к коду цвета символа прибавить 128.
В режиме текстового вывода используются следующие координаты экрана: левый верхний угол имеет координаты (1,1); горизонтальная координата возрастает слева направо, вертикальная – сверху вниз. Если на экране определено окно, все координаты отсчитываются относительно границ окна.
Управление звуковым генератором строится по схеме Sound–DelayNoSound.
Списки констант и переменных модуля CRT приведены в табл. 6.10, 6.11, 6.12. Если логической переменной модуля CRT присвоить значение True, происходит разрешение того или иного режима работы программы; значение False запрещает этот режим.
Таблица 6.10 Константы режимов работы дисплея
Имя | Значение | Режим работы дисплея |
BW40 BW80 Mono CO40 CO80 Font8x8 | 0 2 7 1 3 256 | Черно-белый, 40 символов, 25 строк Черно-белый, 80х25 Монохромный, 80х25 Цветной, 40х25 Цветной, 80х25 Цветной, для видеоадаптера EGA/VGA, 43/50 строк |
Таблица 6.11 Константы цветов модуля CRT
Имя | Значение | Цвет | Имя | Значение | Цвет |
Black Blue Green Cyan Red Magenta Brown LightGray DarkGray | 0 1 2 3 4 5 6 7 8 | Черный Синий Зеленый Голубой Красный Фиолетовый Коричневый Светло-серый Темно-серый | LightBlue LightGreen LightCyan LightRed LightMagenta Yellow White Blink | 9 10 11 12 13 14 15 128 | Ярко-синий Ярко-зеленый Ярко-голубой Розовый Малиновый Желтый Белый Мерцание |
Таблица 6.12
Переменные модуля CRT
Имя | Тип | Значение |
CheckBreak CheckEof CheckShow DirectVideo LastMode TextAttr WindMin WindMax | Boolean Boolean Boolean Boolean Word Byte Word Word | Разрешение/запрещение Ctrl+Break Разрешение/запрещение Ctrl+ZРазрешение/запрещение "снега" на экране Разрешение/запрещение прямого доступа к видеопамяти Код последнего видеорежима Значение текущего байта атрибутов символов Координаты левого верхнего угла и правого нижнего угла текущего окна соответственно |
Функции модуля CRT:
KeyPressed – логическая, возвращает значение "истина", если на клавиатуре была нажата какая-либо клавиша, или "ложь" – в противном случае. Если к моменту обращения к функции не была нажата ни одна клавиша, программа приостанавливает свою работу;
ReadKey – типа Char, читает один символ с клавиатуры, не отображая его на дисплее. Приостанавливает исполнение программы до нажатия на любую клавишу, кроме Shift, Ctrl, Alt, CapsLock, NumLock, ScrollLock;
WhereX – типа Byte, возвращает горизонтальную координату текущей позиции курсора относительно границ текущего окна;
WhereY – типа Byte, возвращает вертикальную координату текущей позиции курсора относительно границ текущего окна.
Процедуры модуля CRT:
ClrEol – удаляет все символы от текущей позиции курсора до конца строки без перемещения курсора;
ClrScr – очищает экран (окно) и помещает курсор в левый верхний угол экрана (окна);
DelLine – удаляет строку, в которой находился курсор, и перемещает все нижестоящие строки на одну позицию вверх;
InsLine – вставляет пустую строку в позицию курсора;
Delay(T) – задерживает выполнение программы на T миллисекунд;
GotoXY(X,Y) – перемещает курсор в заданную точку экрана (окна), где
X – номер столбца, Y – номер строки;
HighVideo – устанавливает повышенную яркость символов; LowVideo – устанавливает пониженную яркость символов;
NormVideo – устанавливает нормальную яркость символов;
TextBackGround(Color) – устанавливает цвет Color фона;
TextColor(Color) – устанавливает цвет Color символов;
TextMode(Mode) – устанавливает текстовый режим;
Sound(F) – генерирует звук с частотой F герц;
NoSound – выключает звук;
Window(x1,y1,x2,y2) – определяет текстовое окно на экране, x1, y1 – координаты левого верхнего угла, x2, y2 – правого нижнего угла.
Пример. Использование возможностей модуля CRT.
Program DemoWindow;
Uses CRT;
Var i: Byte;
Ch: Char;
BEGIN
ClrScr;
TextBackGround(LightGray);{Установка цвета фона окна}
TextColor(Black); {Установка цвета символов}
Window(20,8,60,17); {Определение первого окна}
ClrScr;
WriteLn;
WriteLn('********ТЕХНОЛОГИЧЕСКИЙ ФАКУЛЬТЕТ*******'); WriteLn;
WriteLn('*******Пакет программ "Статистика"******');
Window(55,25,77,25); {Определение второго окна}
ClrScr;
Write('Нажмите клавишу ENTER ');
ReadLn;
TextMode(CO80) {Очистка экрана и установка режима} END.
Модуль DOS содержит большое количество специальных процедур и функций, ориентированных на использование возможностей операционной системы MS-DOS. Большинство подпрограмм модуля предназначено для опытных программистов. На начальном уровне программирования можно воспользоваться следующими подпрограммами из модуля DOS:
GetDate(Year,Month,Day,DayOfWeek) – процедура возвращает текущую дату со встроенных часов компьютера (год, месяц, число, день недели);
GetTime(Hour,Minute,Second,Sec100) – процедура возвращает текущее время со встроенных часов компьютера (часы, минуты, секунды, сотые доли секунды);
DiskFree(Disk) – функция типа LongInt вычисляет число
свободных байтов на указанном дисковом накопителе;
DiskSize(Disk) – функция типа LongInt вычисляет полный объем указанного дискового накопителя в байтах.
Функции имеют параметры типа Word. Если Disk=0, то анализируется текущий накопитель, Disk=1 соответствует накопителю A:, Disk=2 – накопителю B: и т.д. Если параметр Disk не соответствует номеру накопителя компьютера, обе функции возвращают значение –1.