Управление экраном в текстовом режиме
Модуль СRT
Стандартные модули
END.
Implementation
{--------------------------------------------------------------------------------------------------------------}
Procedure MAT_1;{создание матрицы "B", транспонированной к "A"}
var i, j: word;
begin for i:=1 to N do for j:=1 to N do b[i,j]:=a[j,i]
end;
{-------------------------------------------------------------------------------------------------------------}
Procedure MAT_2;{расчет квадратов диагональных элементов}
var i, j: word;
begin for i:=1 to N do b[i]:=a[i,i]*a[i,i]
end;
{---------------------------------------------------------------------------------------------------------------}
Пояснение работы:
В основной программе PR_1 подключается модуль MATR_1 и используются процедуры MAT_1 и MAT_2.
Program PR_1;
Uses MATR_1;
Type MM = M; MM1 = M1;
Var a1,a2,a3: MM; b1,b2: MM1; i,j,n: word;
Begin Writeln('введите размерность матрицы N='); Readln(n);
Randomize;
for i:=1 to n do for j:=1 to n do a1[i,j]:=random(20)+1;
MAT_1(a1, a2, n); MAT_1(a2, a3, n);
MAT_2(a1, b1, n); MAT_2(a2, b2, n) end.
В результате двойного транспонирования исходной матрицы "a1" (из "a1" в "a2", из "a2" в "a3") получается матрица "a3" тождественная "a1" .
Матрицы "b1" и "b2" содержат квадраты диагональных элементов матриц "a1" и "a2". Типы массивов фактических параметров должны соответствовать типам массивов формальных параметров, описанных в модуле MATR_1. Можно использовать имена типов, заданные в интерфейсной части модуля или задавать новые имена типов.
Uses CRT;
Табл. 1
Наименование процедуры | Параметры процедуры | Результат выполнения процедуры |
TextMode(N); N=0 | N - тип Word (40x25)-CGA- ч. б. | Задание текстового режима работы монитора. |
N=1 | (40x25) -CGA, | Экран очищается, курсор устанавливается в позицию 1, 1. Цвета исходные: белые символы на черном экране Наибольшие значения координат Хm:= Lo(WindMax)+1; Ym:= Hi(WindMax)+1; |
N=2 | (80x25) -EGA, VGA, | |
N=3 | (80x25) цветной | |
N=N+256 | (80x43)-EGA цветной | |
Ym | (80x50)-VGA цветной | |
N=7 | (80x25)-монохромный; (80 колонок х 25 строк ); | |
Window(x1, y1, x2, y2); | x1, y1, x2, y2 - тип Byte 1 <= x1 < x2 <= Xm, 1 <= y1 < y2 <= Ym в системе координат экрана. | Задание окна на экране. Курсор устанавливается в позицию (1, 1) в системе координат окна. Превышение координат экрана игнорируется. |
TextBackGround(N); | N - тип Byte, 0 <=N<= 7 | Назначение цвета фона.При N>7 N:= N mod 8 |
Clrscr; | Использование процедуры после TextBackGround(N); закрашивает активное окно | Очистка активного окна,экрана курсор устанавливается в позицию (1, 1).Закрашивание окна. |
TextColor(N); | N - тип Byte 0 <=N<= 15 а также при N:= N + 128 вывод мерцающих символов - | Назначение цвета символов. При N>15, N:= N mod 16, |
GotoXY(x, y); | x, y - тип Byte | Установка курсора в позицию ( x, y )в системе координат активного окна, экрана. |
InsLine; | Вставка пустой строки. | |
DelLine; | Удаление строки в позиции курсора. | |
ClrEol; | Стирание символов от позиции курсора до конца строки. |
Процедуры управления яркостью символов:
повышенная (HighVideo;),
пониженная (LowVideo;)
нормальная (NormVideo;)
Функции, возвращающие номер текущего столбца (WhereX;) и строки (WhereY;), типа - Byte.
В процедурах TextBackGround(N); и TextColor(N); параметр N назначает цвета:
Табл. 2
Black,черный | DarkGray,темно-серый | ||
Blue, синий | LightBlue,ярко-синий | ||
Green, зеленый | LightGreen,ярко-зеленый | ||
Cyan, голубой | LightCyan,ярко-голубой | ||
Red,красный | LightRed,ярко-красный | ||
Magenta,фиолетовый | LightMagenta,ярко-фиолетовый | ||
Brown,коричневый | Yellow,желтый | ||
LightGray, ярко-серый | White,белый |
Мерцание символов можно получить, также задавая: N:= N + 128;
В процедурах TextBackGround(N);иTextColor(N);вместо N можно использовать наименование цвета, например:
N:=1; TextColor(N); {либо} TextColor(Blue);