Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции информатика.doc
Скачиваний:
61
Добавлен:
11.04.2015
Размер:
2.47 Mб
Скачать

7. Стандартные модули Турбо-Паскаля

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

В составе Турбо-Паскаль 6.0 имеются 8 стандартных модулей:

  • system

  • dos

  • crt

  • printer

  • overlay

  • graph

  • Турбо3

  • graph3

  • strings модули Турбо-Паскаль 7.0. используются для совместимости с другими

  • windows языками и средой Windows

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

uses имя модуля1 [, имя модуля2, …];

Модуль system подключается автоматически.

7.1 Модули турбо3 и graph3

Обеспечивают совместимость с программами, разработанными ранее для ТР 3.0

7.2 Модуль overlay

Предоставляет средства для разработки оверлейных программ (размер которых превышает объем доступной оперативной памяти, и которые загружаются в память по частям)

7.3 Модуль dos

Содержит средства доступа к операционной системе DOS (процедуры и функции для работы с дисками, файлами, системной датой, временем).

7.4 Модуль system

Содержит процедуры и функции стандартного Паскаля и некоторые другие основные процедуры и функции.

inc (x[,n]) – увеличение значения переменной x на n единиц (инкремент).

dec (x[,n]) – уменьшение значения переменной x на n единиц (декремент).

Пример:

x:=x+1; inc(x);

x:=x+5; inc(x,5);

y:=y-1; dec(y);

y:=y-6; dec(y,6);

high(x) – получение максимального значения величины х; если х – массив, то максимального значения индекса.

Пример:

var y: word;

writeln(high(y)); 65535

low(x) – получение минимального значения величины х; если х – массив, то минимального значения индекса.

Пример:

var y: integer;

writeln(low(y)); -32768

exit – немедленный выход из подпрограммы.

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

Пример:

writeln(‘Введите x>0’);

readln(x);

if x<=0 then halt;

7.5 Модуль printer

Делает доступным вывод результатов работы программы на печатающее устройство, связывая стандартную переменную LST с принтером.

Пример:

uses printer;

var a: integer;

begin

a:=20;

writeln(lst,’a=’,a); {вывод на принтер a=20}

end.

7.6 Модуль crt

Содержит процедуры и функции управления экраном в текстовом режиме, управления звуком и работы с клавиатурой.

При работев текстовом режиме весь экран разбивается на позиции (25 строк по 80 позиций в каждой). Для каждой позиции можно задать цвет фона и цвет символа, символ можно сделать мерцающим.

Координаты 1 позиции (верхний левый угол) – (1,1), последней позиции (нижний правый угол) – (80,25).

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

Процедуры и функции модуля CRT (управление звуком и клавиатурой)

keypressed: boolean; - возвращает true, если была нажата любая клавиша (кроме ^, shift, alt…) и false в противном случае. Не останавливает программу в ожидании нажатия клавиши, поэтому можно repeat…until keypressed; (вместо readln;)

readkey: char; - считывает символ нажатой клавиши (без отображения на экране). Приостанавливает выполнение программы до нажатия любой клавиши, кроме служебных (ctrl, alt, shift…)

if keypressed then ch:=readkey:

Код обычных клавиш (цифры, алфавит) хранится в 1 байте, коды функциональных клавиш (F1…F12) – в двух байтах: первый = 0, второй – код клавиши. Поэтому, чтобы считать код функциональной клавиши, надо 2 раза вызвать функцию readkey: при первом вызове она считает 0, при втором – непосредственно код клавиши.

Пример:

uses Crt;

var ch:char;

begin

writeln(‘Нажмите клавишу’);

ch:=readkey;

if ch<>#0 then writeln(‘Клавиша ’, ch)

else begin

ch:=readkey;

writeln(‘функциональная клавиша ’, ord(ch));

end;

end.

delay (t); - приостанавливает работу программы на время t (милисекунд).

sound (f); - включает звук заданной частоты (в Гц).

nosound; - выключает звук

Пример:

sound(440); delay(500); nosound;

Пример: Имитация музыкального инструмента.

uses crt;

const m: array [1..8] of integer = (262,294,330,350,392,440,494,523);

var i: integer;

ch: char;

begin

writeln(‘Играйте на клавишах 1-8; 0 - выход’);

while true do

begin

ch:=readkey;

case ch of

#49: i:=1;

#50: i:=2;

#56: i:=8;

#48: halt;

end;

sound(m[i]);

delay(1000);

nosound;

end;

end.

Константы модуля CRT (коды цветов и режимов)

Коды режимов: Коды цветов:

Имя

Значение

Назначение

BW40

0

25x40 черно-белый

CO40

1

25x40 цветной

BW80

2

25x80 черно-белый

CO80

3

25x80 цветной

Font8x8

256

50x80цветной(EGA/VGA)

Mono

7

25x80 для ч/б адаптера


Имя

Значение

Цвет

Black

0

черный

Blue

1

синий

Green

2

зеленый

Cyan

3

голубой

Red

4

красный

Magenta

5

фиолетовый

Brown

6

коричневый

LightGrey

7

светло-серый

DarkGrey

8

темно-серый

Lightblue

9

светло-синий

Lightgreen

10

светло-зеленый

Lightcyan

11

светло-голубой

Lightred

12

розовый

Lightmagenta

13

светло-фиолетовый

Yellow

14

желтый

White

15

белый

Blink

128

мерцание символа


Процедуры и функции управления экраном

clrscr; - очистка активного окна и перевод курсора в верхний левый угол.

clreol; - очистка строки активного окна от текущей позиции курсора до конца строки.

insline; - вставляет новую пустую строку в позицию курсора, заполняет ее цветом фона.

delline; - удаляет строку, на которой стоит курсор. Остальные строки сдвигаются (↑ или ↓).

highvideo; - переход к более яркому цвету символов (0→8, 1→9,…, 7→15).

lowvideo; - переход к менее яркому цвету символов (8→0, 9→1,…, 15→7).

normvideo; - переход к стандартному цвету символов (7)

textmode (m); - установка текстового режима. По умолчанию - СО80.

textbackground (col); - установка цвета фона (col = 0-7).

textcolor (col); - установка цвета символов (col = 0-15).

window (x1,y1,x2,y2); - определяет текстовое окно на экране.

gotoxy (x,y); - переводит курсор в заданную позицию окна. (х,у) – координаты нового положения курсора.

whereX: byte; - возвращает координату х текущей позиции курсора.

whereY: byte; - возвращает координату у текущей позиции курсора.

Пример 1: Сформировать на экране текстовое окно другого цвета и напечатать в середине окна приветствие.

uses crt;

begin

textmode(3);

textbackground(2);

clrscr;

textcolor(14);

window(20,10,60,15);

textbackground(6);

clrscr;

gotoxy(15,3);

writeln(‘Hello’);

delay(1000);

textmode(3);

end.

Пример 2: Программа выводит на экран последовательность цифр 0..9, стрелками ← → выбирает и подсвечивает любую цифру.

25

13

0

1 2 3 4 5 6 7 8 9

uses crt;

var x,y,i: integer;

ch: char;

procedure Put(x,y,i,col: integer);

begin

textbackground(col);

gotoxy(x+i*3,y);

write(‘ ’,i,’ ’);

gotoxy(x+i*3+1,y);

end;

begin

textmode(3);

clrscr;

y:=13; x:=25;

for i:=0 to 9 do put(x,y,i,1);

i:=0; put(x,y,i,2);

repeat

ch:=readkey;

put(x,y,i,1);

if ch = #75 then dec(i);

if ch = #77 then inc(i);

if i<0 then i:=9;

if i>9 then i:=0;

put(x,y,i,2);

until ch=#27; {esc}

textmode(3);

end.

Вариант без процедуры:

uses crt;

var x,y,i: integer;

ch: char;

procedure Put(x,y,i,col: integer);

begin

gotoxy(x+i*3,y);

write(‘ ’,i,’ ’);

gotoxy(x+i*3+1,y);

end;

begin

textmode(3);

clrscr;

y:=13; x:=25;

textbackground(1);

for i:=0 to 9 do

begin

gotoxy(x+i*3,y);

write(‘ ’,i,’ ’);

end;

i:=0;

textbackground(2);

gotoxy(x+i*3,y);

write(‘ ’,i,’ ’);

gotoxy(x+i*3+1,y);

repeat

ch:=readkey;

if ch = #0 then

begin

ch:=readkey;

textbackground(1);

gotoxy(x+i*3,y); стирает подсветку

write(‘ ’,i,’ ’);

if ch = #75 then dec(i);

if ch = #77 then inc(i);

if i<0 then i:=9;

if i>9 then i:=0;

textbackground(2);

gotoxy(x+i*3,y); подсвечивает другую цифру

write(‘ ’,i,’ ’);

gotoxy(x+i*3+1,y);

end;

until ch=#27; {esc}

textmode(3);

end.