Процедуры и функции
Автор Владимир Весёлый задал вопрос в разделе Другие языки и технологии
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.
Формат описания процедуры имеет вид:
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 )
Как видите, полное сходство! То есть фукнцмя на Паскале возвращает некоторое значение. Другое дело, чтобы получить это значение, вы должны в теле функции иметь некоторые операторы языка Паскаля, которые в соответсвтии с алгоритмом будут вычислять нужное значение.
То есть вызов функции на Паскале вы можете вставлять в любое выражение, так как результатом работы функции будет некоторое значение.
Процедуры не возвращают значение.
Главная разница между ними также состоит в том, что если я не ошибаюсь, параметры в фукнцию при вызове передаются по значениею. Это значит, что в функцию передаются копии заданных вами аргументов при вызове.
А параметры в процедуру передаются по ссылке. Это значит, что если в процедуре вы меняете значение параметра, то тем самым вы меняете исходное значение в программе.
Забавный ответ у ivantrs. Немножко его скорректировав, можно написать:
"Процедура что-то делает и ничего не возвращает...
а функция ничего не делает и что-то возвращает. ":)
На самом деле фукнция напоминает собой вычисление некоего математического выражения в математике. Когда в математике вы вычисляете какое-то выражение, то вы получаете конкретное число - результат вычисления. Также и функция на Паскале: она возвращает некоторое значение заданного вами типа после выполнения предложений, записанных в ее теле.
Посмотрите сходства между функцией в математике и с вызовом функции на Паскале:
в математике y = sin( x )
на Паскале y = sin( x )
Как видите, полное сходство! То есть фукнцмя на Паскале возвращает некоторое значение. Другое дело, чтобы получить это значение, вы должны в теле функции иметь некоторые операторы языка Паскаля, которые в соответсвтии с алгоритмом будут вычислять нужное значение.
То есть вызов функции на Паскале вы можете вставлять в любое выражение, так как результатом работы функции будет некоторое значение.
Процедуры не возвращают значение.
Главная разница между ними также состоит в том, что если я не ошибаюсь, параметры в фукнцию при вызове передаются по значениею. Это значит, что в функцию передаются копии заданных вами аргументов при вызове.
А параметры в процедуру передаются по ссылке. Это значит, что если в процедуре вы меняете значение параметра, то тем самым вы меняете исходное значение в программе.
Ответ от Aset Shatov[новичек]
Есть очень полезная программа - называется pascal pro, бесплатная программка, решает любые задачи ПАСКАЛЬ. Вводишь условие задачи и он начинает решать за кротчайшее время. Очень удобная программа - русская. В комплекте с программой имеются 5МЛН Типов по решению задач (уже встроены в программу) , вам остается только включить его, ввести что вам дано и ждать около 10 минут! Если задача не совпала он начинает искать подобную ей. Мне кажется ей просто цены нет!
Всю информацию смотрите здесь:
Есть очень полезная программа - называется pascal pro, бесплатная программка, решает любые задачи ПАСКАЛЬ. Вводишь условие задачи и он начинает решать за кротчайшее время. Очень удобная программа - русская. В комплекте с программой имеются 5МЛН Типов по решению задач (уже встроены в программу) , вам остается только включить его, ввести что вам дано и ждать около 10 минут! Если задача не совпала он начинает искать подобную ей. Мне кажется ей просто цены нет!
Всю информацию смотрите здесь:
Ответ от Muriam[гуру]
интересный ответ у Сыроежка Оракул (79431)
интересный ответ у Сыроежка Оракул (79431)
Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: PASCAL. В чем отличие процедур от функций. И любую ли задачу можно решить с помощью функции?