Другие языки программирования и технологии

Pascal (процедуры и функции)

Объясните в чем отличие? и в чем вообще плюс их использования в программе? недавно прочитал учебник по паскалю, не понятно как функция или процедура получает данные и что получается на выходе(одно значение? или несколько?) и как потом они используются в программе?
Пожарский хорошо написал о процедурах и функциях, я тебя просвещу насчет рекурсии.
Рекурсия - это вызов процедурой самой себя. Необходимым условием правильной рекурсии является наличие условия выхода из рекурсии. В том смысле, что процедура не должна вызывать саму себя бесконечное количество раз - это в какой-то степени равносильно бесконечному циклу. Как пример рекурсии часто приводят функцию вычисления факториала. Напомню, что факториал
n!=1*2*3...*(n-2)*(n-1)*n
Введено также следующее исключение: 0!=1
Функция вычисления факториала обычно пишется так:

function Fac(n:integer):longint;
begin
if n<=1 then begin
Fac:=1;
exit;
end;
Fac:=n*Fac(n-1);
end;

Классика: функция вызывает саму себя, уменьшая аргумент на еденицу, с предусмотренным выходом по достижении аргументом значения 1.
Основное применение рекурсии - обработка древовидных структур данных.
Ограничение рекурсии - размер стека. Стек - это область памяти, в которую заносится состояние регистров и флагов (а в случае с рекурсией - и локальных статических переменных) перед вызовом функции. Турбо паскаль, помнится, использовал самый настоящий стек, размером в 65536 байт. В более современных языках размер стека задается в свойствах проекта.
Сергей Беломытцев
Сергей Беломытцев
83 996
Лучший ответ
У функция возвращает значение.
Т. е.
a:=exec(b);
низя для процедуры а для функции - как повезёт.
получают они данные из аргументов (то что в скобках, в моём примере - b)
Плюсы использования в проге:
1) одинаковые (близкие) по назанчению куски кода можно вынести
2) мень ше хлама в коде
Евгений Фоменко спасибо за помощь)