процедуры



Процедуры и функции

Автор Владимир Весёлый задал вопрос в разделе Другие языки и технологии

PASCAL. В чем отличие процедур от функций. И любую ли задачу можно решить с помощью функции? и получил лучший ответ

Ответ от Krab Вark[гуру]
Из любой функции можно сделать процедуру. Функция отличается тем, что ее имени можно присвоить изнутри функции значение и использовать это имя как обычную переменную с параметрами в скобках, а процедуру нужно вызывать отдельным оператором. Вот и все.
Любую задачу можно решить с использованием функций, или процедур, или без того и другого. Это просто удобный способ оформления частей программы, делающий программу более понятной.

Ответ от Ivantrs[гуру]
Процедура что-то делает и ничего не возвращает...
а функция что-то делает и возвращает результат своей работы

Ответ от Анастасия Данилова[новичек]
главное наверное в количестве выходных данных
у процедуры может быть несколько или вообще не быть выходных данных
а у функции выходное всегда одно и его значение записывается в имя функции

Ответ от Владимир Чурилов[новичек]
Функция – это подпрограмма, которую вызывают, чтобы выполнить какие-то расчеты или проверки. Когда она завершает работу, то возвращает управление вызывающей программе и передает ей результат расчета.

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

Ответ от Ляпин Евгений[гуру]
Формат описания процедуры имеет вид:

procedure имя процедуры (формальные параметры) ;
раздел описаний процедуры
begin

исполняемая часть процедуры

end;

Формат описания функции:

function имя функции (формальные параметры): тип результата;
раздел описаний функции
begin

исполняемая часть функции

end;

Рассмотрим использование процедуры на примере программы поиска максимума из двух целых чисел.

var x,y,m,n: integer;

procedure MaxNumber(a,b: integer; var max: integer);
begin
if a>b then max:=a else max:=b;
end;

begin
write('Введите x,y ');
readln(x,y);
MaxNumber(x,y,m);
MaxNumber(2,x+y,n);
writeln('m=',m,'n=',n);
end.

Аналогичную задачу, но уже с использованием функций, можно решить так:

var x,y,m,n: integer;

function MaxNumber(a,b: integer): integer;
var max: integer;
begin
if a>b then max:=a else max:=b;
MaxNumber := max;
end;

begin
write('Введите x,y ');
readln(x,y);
m := MaxNumber(x,y);
n := MaxNumber(2,x+y);
writeln('m=',m,'n=',n);
end.

Ответ от Vermaxt[активный]
Грубо говоря процедура это функция не возвращающая значения. Поэтому сможете.

Ответ от Ёыроежка[гуру]
Забавный ответ у ivantrs. Немножко его скорректировав, можно написать:
"Процедура что-то делает и ничего не возвращает...
а функция ничего не делает и что-то возвращает. ":)

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

в математике y = sin( x )
на Паскале y = sin( x )

Как видите, полное сходство! То есть фукнцмя на Паскале возвращает некоторое значение. Другое дело, чтобы получить это значение, вы должны в теле функции иметь некоторые операторы языка Паскаля, которые в соответсвтии с алгоритмом будут вычислять нужное значение.
То есть вызов функции на Паскале вы можете вставлять в любое выражение, так как результатом работы функции будет некоторое значение.
Процедуры не возвращают значение.
Главная разница между ними также состоит в том, что если я не ошибаюсь, параметры в фукнцию при вызове передаются по значениею. Это значит, что в функцию передаются копии заданных вами аргументов при вызове.
А параметры в процедуру передаются по ссылке. Это значит, что если в процедуре вы меняете значение параметра, то тем самым вы меняете исходное значение в программе.

Ответ от Aset Shatov[новичек]
Есть очень полезная программа - называется pascal pro, бесплатная программка, решает любые задачи ПАСКАЛЬ. Вводишь условие задачи и он начинает решать за кротчайшее время. Очень удобная программа - русская. В комплекте с программой имеются 5МЛН Типов по решению задач (уже встроены в программу) , вам остается только включить его, ввести что вам дано и ждать около 10 минут! Если задача не совпала он начинает искать подобную ей. Мне кажется ей просто цены нет!
Всю информацию смотрите здесь:

Ответ от Muriam[гуру]
интересный ответ у Сыроежка Оракул (79431)

Ответ от 22 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: PASCAL. В чем отличие процедур от функций. И любую ли задачу можно решить с помощью функции?
Процедура на Википедии
Посмотрите статью на википедии про Процедура
Функция программирование на Википедии
Посмотрите статью на википедии про Функция программирование
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*