- •Конспект лекций
- •1.4 Общая структура программы
- •1.5 Стандартные процедуры и функции
- •1.6 Процедуры ввода/вывода
- •2. Простые типы данных
- •2.1 Целые типы
- •2.2 Вещественные типы
- •2.3 Cимвольный тип данных
- •2.4 Логический тип данных.
- •2.5 Ограниченные типы
- •2.6 Перечислимые типы
- •2.7 Описание типов
- •2.8 Преобразование типов
- •2.9 Порядок вычисления выражений
- •3. Операторы языка Паскаль
- •3.1 Оператор присваивания
- •3.2 Составной оператор
- •3.3 Условный оператор
- •3.4 Оператор выбора case
- •3.5 Оператор цикла с параметром (цикл for)
- •3.6 Оператор цикла с предусловием (цикл while)
- •1 Вариант:
- •2 Вариант:
- •3 Вариант:
- •3.7 Оператор цикла с постусловием (цикл repeat)
- •3.8 Вложенные циклы
- •3.9 Оператор перехода goto
- •4. Массивы
- •4.2 Сортировка элементов массива
- •4.3 Многомерные массивы
- •5. Подпрограммы (процедуры и функции)
- •5.1 Процедуры
- •5.2 Функции
- •5.3 Области действия имен
- •5.4 Параметры процедур и функций
- •5.5 Побочные эффекты при использовании подпрограмм
- •5.6 Передача массивов в подпрограммы
- •5.7 Параметры-костанты
- •5.8 Массивы открытого типа
- •5.9 Рекурсия в подпрограммах
- •6. Строковый тип данных
- •6.1 Описание строк
- •6.2 Операции со строками
- •6.3 Процедуры и функции для работы со строками
- •7. Стандартные модули Турбо-Паскаля
- •7.1 Модули турбо3 и graph3
- •7.2 Модуль overlay
- •7.3 Модуль dos
- •7.4 Модуль system
- •7.5 Модуль printer
- •7.6 Модуль crt
- •7.7 Модуль graph
- •8. Записи
- •8.1 Определение записи
- •8.2 Оператор над записями
- •8.3 Вложенные записи
- •8.4 Массив записей
- •8.5 Записи с вариантами
- •9. Файлы
- •9.1 Определение файла
- •9.2 Процедуры и функции для работы с файлами
- •9.3 Нетипизированные файлы
- •10. Интегрированная среда Турбо Паскаля
- •10.1 Как начать работу с Турбо Паскалем
- •10.2 Ваша первая программа
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.