Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник_Часть_1.doc
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
975 Кб
Скачать
☆

10.3. Виды рекурсивных процедур

В общем случае рекурсивная процедура Recur включает в себя некоторое множество операторов Ор и один или несколько рекурсивных вызовов Recur.

1. Действия выполняются на рекурсивном спуске (до рекурсивного вызова):

procedure Recur;

begin Op;

If условие

then Recur [else recur];

end;

2. Действия выполняются на рекурсивном возврате (после рекурсивного вызова):

procedure Recur;

begin

If условие

then Recur [else recur ];

Op;

end;

3. Действия выполняются как на рекурсивном спуске, так и на рекурсивном возврате:

a) procedure Recur ; б) procedure Recur ;

begin begin

Op1 ; if условие

If условие then Recur ; then begin

Op2 ; Op1 ; Recur ; Op2

end. end;

end:

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

П р и м е р ы рекурсивных подпрограмм.

1. Описать рекурсивную функцию digit без параметров, которая подсчитывает количество цифр в тексте, заданном во входном файле (за текстом следует точка).

program rec_4;

Var k : integer;

function digits : integer;

Var c : char;

d : integer;

begin

read (c);

d := 0;

if c<> ' '

then if (c<='9')and (c>='0')

then d:= 1 + digits

else d:= digits;

digits:= d;

end;

begin

write('Введите текст, последний символ – точка ');

k:= digits;

writeln (k);

end.

  1. Напечатать в обратном порядке заданный во входном файле текст (за текстом следует точка ).

program rec_5;

procedure perevert;

Var c : char;

begin

read (c);

if c <> ' '

then perevert ;

write (c) ;

end;

begin

write(' Введите текст ');

perevert;

end.

11. Графика в паскале

11.1. Основы работы в графическом режиме

Экран дисплея можно рассматривать как прямоугольное поле, состоящее из большого количества точек. Дисплей может работать в двух режимах: текстовом и графическом. В отличие от текстового, в графическом режиме имеется возможность изменить цвет каждой точки, точки могут образовывать линии, тексты и другие изображения. Для эффективности работы с графикой разработана библиотека GRAPH. Библиотечный модуль GRAPH.TPU содержит набор драйверов, который позволяет работать практически со всеми типами видеомониторов, набор шрифтов для вывода на графический экран текстов разной величины и формы, стандартные константы и типы для работы с графикой.

11.1.1. Аппаратная и программная поддержка графики

Аппаратная поддержка графики ПК обеспечивается двумя основными модулями: видеоадаптером и видеомонитором.

Видеомонитор (дисплей) работает как обычный телевизор. Экран в среднем 25–27 раз в секунду формируется заново, за счет чего создаётся иллюзия неподвижного изображения.

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

Видеоадаптер – сложное электронное устройство, управляемое собственным микропроцессором (тоже очень мощным). Это электронная плата, вставляемая в один из свободных разъёмов в системном блоке или встроенная в системную плату. В самом общем виде видеоадаптер состоит из двух частей: контроллера электронно-лучевой трубки (CRT – контроллер) и видеопамяти видеобуфера. Кроме того, наиболее современные видеоадаптеры имеют дополнительные узлы, например, контроллеры графики (специальные контроллеры быстрой манипуляции содержимым видеобуфера).

Видеобуфер. В графическом режиме каждая точка (или пиксель) экрана имеет закреплённую за ней группу битов, задающих цвет пикселя. В совокупности эти биты образуют видеобуфер (память адаптера дисплея). Основное назначение видеобуфера – хранение образа экрана. Чем память адаптера дисплея больше, тем большее число бит отводится под цвет.

Видеостраницы. Память видеобуфера делится на несколько частей – так называемых видеостраниц. Их количество зависит от текущего режима и типа видеоадаптера; нумеруются они с нуля. Та видеостраница, которая постоянно обновляется в данный момент, называется текущей. Видеоадаптер способен выполнять переключение текущей видеостраницы. В каждый отдельный момент на экране может быть изображена только одна видеостраница, называемая видимой (по умолчанию - нулевая). Страница, на которой в данный момент формируется изображение, называется активной. В Паскале имеются специальные функции и процедуры управления режимами работы с дисплеем.

Драйверы. Какой бы набор графических процедур и функций ни был бы установлен на компьютере, мы можем использовать один и тот же набор графических процедур и функций Паскаля благодаря тому, что их конечная настройка на конкретный адаптер осуществляется автоматически. Эту настройку выполняют специальные программы, называемые графическими драйверами. Они находятся в файлах с расширением BGI (например, EGAVGA.BGI) и активизируются при инициализации графического режима.