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

1.Подпрограммы процедуры. Все переменные описанные в программе до процедуры называются глобальными. Глобальные переменные действуют во всей программе и в любой ее подпрограмме (если они там не описаны заново). Локальные переменные описываются в процедуре. Локальные переменные действуют внутри процедуры. Данные для обработки могут передаваться процедуре через глобальные имена или через аргументы процедуры. В процедуре каждый аргумент имеет свое имя – формальный параметр, описываемый в заголовке процедуры по схеме:

• Procedure ИмяПроцедуры (формальные параметры);

• раздел описаний;

• begin

• раздел операторов;

• end;

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

Параметры процедур могут быть трех видов:

• параметры-значения (входные параметры) - параметры по значению;

• параметры-переменные (выходные параметры) – параметры по ссылке;

• параметры процедурного типа;

Описание входных параметров процедуры в списке формальных параметров имеет такой вид:

список_переменных 1: тип 1; список_переменных 2: тип 2;…

Описание выходных параметров:

Var список_переменных 1: тип 1; список_переменных 2: тип 2;…

Вызов процедуры в основной программе производится оператором вида: ИмяПроцедуры(фактические_параметры);

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

Функция оформляется аналогично процедуре и отличается от нее по структуре только заголовком, общий вид которого такой:

function ИмяФункции(формальные_параметры) : тип;

Другие отличные особенности функции следующие:

• обычно функция имеет только один результат выполнения (но может иметь несколько входных параметров);

• результат обозначается именем функции. Поэтому в разделе операторов функции обязательно должен присутствовать оператор присваивания, в левой части которого стоит имя этой функции;

• в заголовке функции обязательно должен быть указан тип функции;

• вызов функции в основной программе осуществляется непосредственно внутри выражения по ее имени с указанием фактических параметров.

2.Рекурсия.Определение и понятия. Итерация — способ организации обработки данных, при котором определенные действия повторяются многократно, не приводя при

этом к рекурсивным вызовам программ.

Рекурсия – это определение объекта через обращение к самому себе.

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

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

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

сохраняются. Формально рекурсию для функции F(X) можно описать следующим образом:

IF X = <начальное значение> THEN

F := <начальное значение функции>

ELSE

F := W(F) ; где конструкция

F := <начальное значение функции> называется глубиной рекурсии, a

F := W (F) определяет способ обращения функции в точке Хn к своим

значениям для меньших значений аргумента Хn - 1, Хn - 2 и т. д.

♣Параметризация задачи

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

• Рекурсивная база

Совокупность наборов значений параметров и соответствующих им решений задачи или

простых правил для получения этих решений. Выделение базы - один из основных этапов

решения задачи с помощью рекурсии. База может быть динамической, то есть меняться в

процессе вычислений.

• Декомпозиция

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

3.Сегмент стека. Вся оперативная память, выделяемая для работы программы делится на сегменты. Сегмент стека служит в основном для размещения локальных данных подпрограмм и внутренних данных модулей. По умолчанию максимальный размер стека в Delphi равен 1 МБ . При каждом обращении к рекурсивной функции в стек добавляются новые локальные переменные с теми - же именами. Поиск переменных в стеке начинается с конца стека. Первая найденная переменная останавливает дальнейший поиск. При выходе из подпрограммы её локальные переменные удаляются из стека. Большое количество локальных переменных и/или большая глубина рекурсии могут привести к ошибке работы приложения - переполнению стека (EStackOverflow) .