- •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
- •Использование сопроцессора
Процедуры управления текстовым режимом экрана
Ниже приведены краткие сведения о некоторых процедурах и функциях, используемых для управления текстовым режимом работы экрана. Более подробная информация содержится в [2, 6, 8].
1. Процедура Window(x1,y1,x2,y2:byte);
Процедура устанавливает текущее окно на экране:
При этом должны соблюдаться условия:
1 <
1 <
При нарушении этих условий окно не создается.
Параметр может иметь значения 40 или 80, параметр - 25, 43 или 50 в зависимости от типа адаптера.
После выполнения процедуры Window все действия с экраном относятся к той его части, которая определена координатами . Отсчет строк и столбцов для позиционирования курсора теперь производится в координатах текущего окна, а позиция (1,1) - это левый верхний угол окна. Сразу после выполнения процедуры Window курсор устанавливается в позицию (1,1) созданного окна.
Координаты очередного создаваемого окна всегда даются в абсолютных экранных координатах, а не в относительных координатах последнего текстового окна.
2. Процедура ClrScr.
Процедура очищает текущее текстовое окно, закрашивая его текущим цветом фона. При этом курсор устанавливается в позицию (1,1).
3. Процедура GotoXY(x,y:byte);
С помощью этой процедуры можно устанавливать курсор в столбец и строку текущего окна. При этом последующая операция вывода текста на экран разместит первый символ выводимой строки в позицию (). Процедура GotoXY использует систему координат текущего текстового окна. При выводе символов или другой информации по мере необходимости на экране происходит прокрутка, или сдвиг, изображения. Это всегда имеет место при выводе кодов конца строки (код #10) в последней строке окна операторами Write и Writeln или когда выводимая строка не помещается в последней строке текстового окна. В то же время вывод типа
GotoXY(5,25); Write('строка');
не вызовет сдвига вверх, потому что оператор Write не переводит строки. Однако вывод хотя бы одного символа в правый нижний угол текстового окна вызовет прокрутку:
GotoXY(80,25); Write('*');
и символ '*' окажется уже в 24-ой строке, а не в 25-ой.
Устранить указанный эффект можно с помощью прокрутки экрана вниз после вывода символа в последней позиции последней строки (например, с помощью процедуры InsLine).
4. Функции WhereX и WhereY.
Используются для программного опроса текущего положения курсора в текстовом окне.
5. Процедура ClrEOL.
Эта процедура может использоваться как для стирания "хвостов" строк, так и для раскраски чистого экрана в полоску максимально быстрым способом. Процедура стирает все символы в строке, начиная с текущей позиции курсора и до правого края текущего окна. Вместо стираемых символов она ставит пробелы, при этом цвет строки определяется цветовым атрибутом фона.
6. Процедуры InsLine и DelLine.
Эти процедуры позволяют "прокручивать" часть текстового окна или весь экран вверх и вниз. InsLine вставляет пустую строку на место той, где находится в текущий момент курсор. Все нижние строки, начиная с нее, смещаются вниз на одну строку. Самая нижняя строка уйдет за нижнее поле окна и исчезнет.
Процедура DelLine удаляет строку, в которой находится курсор, подтягивая на ее место все нижестоящие строки. При этом освобождается самая нижняя строка экрана.
Все строки, которые освобождаются при работе процедур InsLine и DelLine, закрашиваются текущим цветом фона.
И С П О Л Ь З О В А Н И Е П Р Е Р Ы В А Н И Й
Многие из процедур работы с экраном не могут быть выполнены путем применения только средств Турбо Паскаля. Для реализации таких процедур, как ввод-вывод в ненулевые страницы видеопамяти, управление курсором и др., необходимо использовать функции операционной системы MS DOS. Обращение к таким функциям осуществляется через так называемые прерывания, которые представляют собой стандартные подпрограммы базовой системы ввода-вывода (BIOS) операционной системы MS DOS.
Обращение к программным прерываниям выполняется с помощью процедуры Intr, заголовок которой имеет вид