Процедуры и функции
Вспомогательные алгоритмы (подпрограммы) создаются тогда, когда возникает необходимость в многократном использовании одного и того же набора действий при решении сложных задач.
Подпрограмма (п/п) – это независимая именованная часть программы, которую можно вызывать по имени по мере необходимости.
ПроцедурыФункции Подпрограммы выполняют некоторые действия. выполняют некоторые действия и в результате вычисляют единственное значение.
Все процедуры и функции в ТР делятся на стандартные и пользовательские.
Пример стандартных процедур: функций: clrscr; readln(a,b,c); delete(st,i,n); sqrt(x) random(25) length(st) writeln(sqrt(x));
При вызове процедура используется как оператор, а функция как операнд (переменная с параметрами) в выражении.
Формат описания пользовательских процедур procedure < имя > ( формальные параметры ) ; const … ; t ype … ; var … ; begin ; end; Разделы описания локальных объектов
Формат описания пользовательских функций function < имя > ( форм. пар-ры ): < тип рез. > ; const … ; t ype … ; var … ; begin ; end; Разделы описания локальных объектов В разделе операторов должен быть хотя бы один оператор, присваивающий имени функции значение.
Формальные и фактические параметры
Параметры служат для передачи данных из главной программы в подпрограмму и возврата результата из подпрограммы в главную программу.
Формальные параметры – это параметры, определённые в заголовке подпрограммы.
Фактические параметры – выражения или переменные, задающие конкретные значения при обращении к подпрограмме.
Между формальными и фактическими параметрами должно быть соответствие: При вызове подпрограммы её формальные параметры замещаются фактическими. 1. количества параметров, 2. порядка следования, 3. типа параметров.
Параметры- значения Параметры- переменные Формальные параметры Служат для передачи данных из главной программы в п/п. Служат для передачи результатов из п/п в главную программу. Фактическим параметром может быть выражение. Фактическим параметром может быть только переменная. (перечисляются через, для одного типа, через ; для разных типов, через : указывается тип.) (перечисляются после var через, для одинаковых типов с указанием типа через :.)
При вызове п/п в параметры- значения передаются лишь копии фактических параметров, а в параметры- переменные передаётся сама переменная, что может привести к изменению значения этого фактического параметра.
Рекурсия
Рекурсия – это способ организации алгоритма, при котором процедура или функция вызывает сама себя.
Рекурсию удобно использовать для вычисления рекуррентных последовательностей.
Рекуррентное соотношение – формула, выражающая очередной член последовательности через один или несколько предыдущих.
Пример рекуррентных последовательностей a i =a i-1 + d Арифметическая прогрессия b i =b i-1 * q Геометрическая прогрессия Р е к ф у о р р м е у н л т ы н ы е
1. В рекурсивных вычислениях важно в первую очередь оформлять выход из рекурсии. 2. Использование рекурсии приводит к большим затратам памяти и может вызвать переполнение программного стека, в котором размещаются локальные переменные п/п. !!!