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

12.Директива Forward. Неявная рекурсия.

Неявная (взаимная) рекурсия – это рекурсия, при которой обращение к подпрограмме содержится в теле другой подпрограммы, к которой

производится обращение из данной подпрограммы. В нерекурсивной подпрограмме механизм выделения памяти в стеке отсутствует. Описание подпрограммы, содержащее вместо блока директиву Forward,

называется опережающим описанием. После этого описания подпрограмма должна определяться с помощью определяющего описания. Определяющее

описание - это описание, использующее тот же заголовок подпрограммы, что и в опережающем описании, но без списка формальных параметров, и в которое

включен блок (разделылокальных описаний и операторов). Опережающее и определяющее описания представляют собор полное описание подпрограммы. Подпрограмма считается описанной с помощью опережающего описания. Определяющее описание может быть внешним описанием, но не может быть внутренним описанием или другим опережающим описанием. Определяющее описание не может содержать директиву Interrupt. Между опережающим и определяющим описаниями могут описываться другие подпрограммы, которые могут обращаться к подпрограмме с

опережающим описанием (рисунок 1.9). Таким образом может быть реализована взаимная (неявная) рекурсия.

Рисунок 1.9 – Организация взаимной рекурсии

13.Записи. Синтаксис задания. Записи без вариантной части. Операции над записями и над полями.

Записи называют еще комбинированным типом данных или типом Record.Запись – это структура данных, состоящая в общем случае из

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

осуществляется не по индексам, а по именам.

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

запись. В этом случае говорят об иерархической записи. Уровень иерархии

(вложенности) не должен превышать 9.

Пример простой (не иерархической) записи – представление

комплексного числа a + b*i – содержит рисунок 3.1.

Пример иерархической записи Anketa представляет рисунок 3.2.

Cинтаксис задания структуры данных типа запись имеет вид, который

иллюстрирует рисунок 3.3

Список полей определяется с помощью синтаксической диаграммы,

которую содержит рисунок 3.4.

Из синтаксической диаграммы (см. рисунок 3.4) видно, что запись может

состоять из общей части и вариантной части. Любая из этих частей является

необязательной.

Записи без вариантной части

Такие записи содержат только общую часть.

Cинтаксис задания общей части записи имеет вид, который содержит

рисунок 3.5.

Рисунок 3.5 – Синтаксическая диаграмма

задания общей части записи

Каждому полю записи дается свое имя и задается тип значения этого поля.Тип поля записи может быть определен двумя способами: непосредственно задан в описании записи или описан предварительно. В

последнем случае указывается имя типа.

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

переменной.Обращение к значению поля осуществляется с помощью идентификатора

полной переменной, идентификаторов всех полей (с учетом их иерархии), в

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

имя называется составным именем.Для полных переменных одного и того же комбинированного типа существует только одна операция – операция присваивания (в качестве

выражения в правой части оператора присваивания может быть использована

только переменная того же типа запись). Составное имя может использоваться везде, где допустимо применение типа поля. Для присваивания полям значений используется оператор

присваивания или ввода.Составные имена можно использовать в операторах ввода-вывода.

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