Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
pnayavka_quest.doc
Скачиваний:
6
Добавлен:
25.09.2019
Размер:
182.78 Кб
Скачать

Рекурсия

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

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

Рекурсия — способ общего определения множества объектов или функций через себя, с использованием ранее заданных частных определений. Рекурсия используется, когда можно выделить самоподобие задачи

Область видимости идентификаторов

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

Область видимости (scope) идентификатора – множество операторов, в которых этот идентификатор может быть использован.

В Паскале идентификатор может быть использован в пределах <блока>, в котором он был объявлен. Максимальная область видимости идентификатора – это оператор BEGIN, размещенный внутри PROCEDURE или PROGRAM, содержащих объявление идентификатора. Например, для переменных объявленных в разделе объявлений программы это ее главный оператор BEGIN и операторы BEGIN всех процедур программы.

Однако область видимости может быть меньше, если существует вложенный блок, внутри которого объявлен идентификатор с тем же именем.

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

Область видимости идентификатора раз и навсегда определяется синтаксисом программы, в которой он объявлен, и все вопросы о его области видимости могут быть разрешены исходя из текста программы.

Ну, или вот так :

1. Глобальные переменные они везде глобальные, только если не перекрыты локальными в процедуре

2. Локальные переменные, создаваемые в процедурах и функциях видны только изнутри, после выхода из функции/процедуры они уничтожаются

3. Если в процедуре процедура, то переменные, созданные во внутренней не доступны внешней, а созданные во внешней доступны внутренней

Лексикографический порядок строк

Лексикографический порядок строк – это их порядок появления как слов в словаре – алфавитный порядок, где алфавит – набор символов Паскаль-машины. Из двух строк различной длины, имеющих одинаковые последовательности символов, короткая предшествует. Например, †ABC† предшествует †ABCDEF†, но †XYZ† предшествует †YZ†.

Определять лексикографический порядок строк простое дело: сравнивать их символы попарно, пока не встретятся неравные символы или одна из строк не закончится.

Включающий комментарий для процедуры

Когда процедуры из библиотеки будут использоваться в проекте, будет удобно включать их имена и комментарий. Комментарий к процедуре в библиотеке должен в основном отражать информацию о том, как используется процедура, т.е. что она делает не как, хотя можно упомянуть и о некоторых моментах реализации важных с точки зрения использования. Например, о том, что вызов процедуры потребует больших затрат процессорного времени. Комментарий должен быть достаточен для корректного использования каждой процедуры. Такой комментарий обычно называют комментарием включения (include comment). Например, если мы включаем в проект Lexico, комментарий может быть следующим:

{Включить PROCEDURE Lexico(VAR F1, F2: TEXT; VAR Result: CHAR);

Result 0, 1, 2 если лексикографический порядок F1 =, <, > чем F2 соответственно. Фактические параметры, соответствующие F1 и F2, должны быть различными}

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

------------------------------------------------------------

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]