- •1. Двоичная система счисления.
- •2. Восьмеричная система счисления.
- •3. Шестнадцатеричная система счисления.
- •4. Сложение и вычитание в 2, 8 и 16 c/c.
- •2. Вещественные числа (числа с плавающей запятой).
- •3. Логические данные.
- •2. Зарезервированные слова.
- •X a8 alpha Massiv z52d9 eps Res_52_a ___75
- •6. Метка.
- •2. Целые типы данных.
- •4. Вещественные типы.
- •1. Раздел описания меток.
- •2. Раздел описания констант.
- •3. Раздел описания типов.
- •4. Раздел описания переменных.
- •6. Раздел операторов.
- •7. Последовательность разделов.
- •1. Формульно-словесный способ.
- •2. Блок-схемный способ.
- •Ввод - вывод одномерного массива
- •2. Ввод массива из текстового файла.
- •3. Вывод одномерного массива на экран.
- •Примеры обработки одномерных массивов
- •1. Параметр цикла должен быть ординального типа.
- •2. Параметр должен быть описан в том же блоке, где находится сам оператор цикла.
- •5. В теле цикла параметр не должен изменяться.
- •6. Начальное и конечное значения параметра цикла вычисляются только один раз, до начала цикла.
- •7. При нормальном завершении цикла значение его параметра считается неопределенным.
- •Контроль ординальных переменных
- •Вставка элемента в упорядоченный массив
- •Удаление элементов из массива
- •«Школьный» алгоритм сортировки
- •Группировка массива методом прямой выборки
- •Группировка массива методом прямого обмена
- •Var c : array[1..10,1..15,1..8] of real.
- •1. Ввод элементов матрицы с клавиатуры.
- •2. Ввод матрицы из текстового файла.
- •3. Вывод матрицы на экран.
- •Тождественные и совместимые типы
- •Обработка в процедуре одномерных массивов с различными именами типов
- •Обработка в процедуре матриц с различными именами типов
- •Var s : string[V],
- •Процедуры и функции для обработки строк
- •Определение битовой структуры поля памяти
- •Процедуры и функции для файлов любого типа
- •Var p : pointer;
- •1. Формирование стека из текстового файла.
- •7. Определение значения и местоположения максимального элемента в стеке.
- •8. Удаление из стека максимального элемента.
- •9. Добавление элемента в упорядоченный стек.
- •2. Добавление нового элемента в очередь.
- •3. Удаление элемента из очереди.
- •6. Удаление произвольного элемента из очереди.
- •7. Добавление нового элемента в произвольное место очереди.
- •1. Формирование дека.
- •Var sin : integer;
- •Процедура заполнения FillChar
- •Процедура перемещения данных move
- •Управление экраном в текстовом режиме
- •Сохранение и восстановление экрана
- •Interface
- •Implementation
- •Процедуры управления текстовым режимом экрана
- •Intr(n:byte; Var Reg:Registers),
- •If KeyPressed then
- •Автоматическая оптимизация программ
- •1. Свертывание констант.
- •2. Слияние констант.
- •3. Вычисление по короткой схеме.
- •4. Удаление неиспользуемого кода.
- •If false then
- •5. Эффективная компоновка.
- •Оверлейная структура программы
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Использование сопроцессора
Управление экраном в текстовом режиме
Аппаратная реализация вывода текста или изображения на экран осуществляется видеомонитором, который включает в себя экран дисплея вместе с электронно-лучевой трубкой (ЭЛТ) или жидкокристаллической (ЖК) панелью, а также комплекс технических средств, обеспечивающих появление изображения на экране. В ЭЛТ при соударении пучка электронов с поверхностью экрана, покрытой люминофором, образуется светящаяся точка, которую называют пикселем. Электронный луч обегает экран слева направо и сверху вниз 25 раз в секунду, формируя множество близко расположенных пикселей. ЖК-панель представляет собой совокупность ЖК-ячеек, каждая из которых генерирует один пиксель. Программист может управлять светимостью экрана в любом его месте вплоть до отдельного пикселя.
Наиболее важные электронные компоненты видеомонитора - это контроллер (схема управления электронно-лучевой трубкой или ЖК-панелью), порты ввода-вывода, запоминающее устройство для генерации символов и видеопамять. Эти компоненты располагаются на одной печатной плате, которая называется дисплейным адаптером.
Для получения на экране цветного изображения требуется, чтобы видеомонитор имел цветной адаптер и цветную ЭЛТ или ЖК-панель.
Изображение, выводимое на экран, предварительно формируется в видеопамяти. Эта память имеет два входа (два порта). Один порт используется сравнительно медленной программой для чтения или записи информации в видеопамять. Второй порт предназначен для быстродействующей схемы развертки изображения, обеспечивающей его регенерацию с частотой 25 гц.
Первый видеоадаптер (MDA), обладавший довольно скромными возможностями, появился в 1981 г. В дальнейшем его сменили все более совершенные модели (HEC, CGA, EGA, VGA, SVGA). Они отличаются друг от друга по количеству пикселей, объему видеопамяти, количеству цветов и другим параметрам. При этом в качестве стандартного режима вывода текста был принят режим, реализованный в адаптере CGA.
Типичный экран ПЭВМ имеет 200 строк по 640 пикселей в строке, т.е. 128000 пикселей. В монохромном режиме для каждого пикселя в видеопамяти требуется один бит, который определяет максимальную или минимальную яркость этого пикселя. Тогда видеопамять должна иметь объем 128000/8 = 16000 байт. В цветном мониторе каждый пиксель формируется как совокупность трех цветных точек: красной, зеленой и синей. В этом случае объем видеопамяти должен быть соответственно больше.
Различают два режима работы с экраном: текстовый и графический. Эти режимы существенно отличаются друг от друга способом использования видеопамяти.
В текстовом режиме на экран выводятся только символы, которые заранее предопределены таблицей, содержащей 256 их возможных вариантов. Для изображения символа на экране используется матрица из 8 8 = 64 пикселей, которую называют знакоместом. Первые 8 строк развертки образуют 80 знакомест первой текстовой строки экрана, следующие 8 строк развертки - это символы второй текстовой строки и т.д. Поэтому при выводе символа достаточно указать лишь его номер, для чего требуется один байт. Используя этот номер, электронные схемы развертки находят в специальной области памяти одну из 256 матриц 88 разрядов и вычерчивают соответствующий символ.
Примечание. В зависимости от типа адаптера количество пикселей в знакоместе может быть различным. Например, для EGA оно равно , для VGA .
В видеопамяти для каждого знакоместа на самом деле отводится не один, а два байта: один байт (байт символа) определяет номер символа, второй байт (байт атрибутов) используется для указания о цвете символа и цвете окружающего фона.
Таким образом, для хранения "карты" экрана в текстовом режиме требуется 80 25 2 = 4000 байт видеопамяти.
Объем видеопамяти любой ПЭВМ составляет не менее 16000 байт. Целиком эта память необходима лишь при выводе графической информации. В текстовом режиме используется часть видеопамяти, которая называется страницей текстового экрана. Если емкость экрана 25 80 знакомест, то одна страница - это 80*25*2 = 4000 байт.
Байт атрибутов имеет следующую структуру:
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
B b a c k H t e x t
Здесь back - цвет фона, text - цвет символа. Каждый разряд в разделах back и text - это один из основных цветов монитора: красный, зеленый или синий. Смешивание основных цветов дает 8 цветовых комбинаций. H - разряд интенсивности цвета. С учетом интенсивности получаем 16 цветов для отображения символа (темные и светлые). Для фона возможны только темные цвета. Разряд B управляет мерцанием символа: если B = 1, символ мигает с частотой около 2 гц.
К видеопамяти можно обращаться из программы с помощью адресов. Для нее в ПЭВМ зарезервированы адреса с сегментной частью от $A000 до $DFFF, т.е. 256 Кбайт.
В стандартном модуле Crt определены константы для всех 16 значений цветового атрибута в соответствии с приведенной ниже таблицей.
Бит Н |
Бит цвета кр. зел. син. |
Десятич. значение |
Имя константы |
Цвет | ||
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 |
0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 |
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 |
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 |
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Black Blue Green Cyan Red Magenta Brown LightGray DarkGray LightBlue LightGreen LightCyan LightRed LightMagenta Yellow White |
Черный Синий Зеленый Голубой Красный Фиолетовый Коричневый Светло-серый Темно-серый Ярко-синий Ярко-зеленый Ярко-голубой Розовый Малиновый Желтый Белый |
|
128 |
Blink |
Мерцание символа |
В этом же модуле определена переменная TextAttr типа byte, которая задает значение текстового атрибута.
Пример 1.
TextAttr:=Yellow+16*Brown+Blink;
Writeln('Мерцание желтых символов на коричневом фоне');
Аналогично:
TextAttr:=14+16*6+128;
Writeln('Мерцание желтых символов на коричневом фоне');
Для управления цветом символов и цветом фона могут быть использованы также следующие две процедуры:
1) TextColor(Color:byte) - текущий цвет для символов; если Color > 16, то принимается Color := Color div 16 и добавляется мерцание символа.
2) TextBackGround(Color:byte) - текущий цвет фона.
Пример 2.
TextColor(Yellow+Blink); TextBackGround(Brown);
Writeln('Мерцание желтых символов на коричневом фоне');
Аналогично:
TextColor(14+128); TextBackGround(6);
Writeln('Мерцание желтых символов на коричневом фоне');