Процедуры и функции
Автор Владимир Весёлый задал вопрос в разделе Другие языки и технологии
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. В чем отличие процедур от функций. И любую ли задачу можно решить с помощью функции?
В чем разница между процедурным программирование и объектно-ориентированным?
Процедурное программирование подразумевает возможность создания в
рамках программы локальных
подробнее...
спросили в Radix RTCC
Чем отличаются READLN и READKEY в Паскале?
Во-первых, ReadLn() процедура, а ReadKey - функция. А во-вторых, процедура осуществляет чтение в
подробнее...
Чем отличаются READLN и READKEY в Паскале?
Во-первых, ReadLn() процедура, а ReadKey - функция. А во-вторых, процедура осуществляет чтение в
подробнее...
Получение текущей раскладки клавиатуры и отображение её в Label на форме. Delphi XE7.
Используйте следующие процедуры:
const
CNT_LAYOUT = 2; // количество известных
подробнее...
ПАСКАЛЬ и ГРАФИКА
Подпрограммы для работы с пером
Рисование линий осуществляется текущим пером. Доступ к
подробнее...
спросили в OpenGL Кодры
Delphi и OpenGL
нинаю че там у тя медленно отрисовывается, у мну при использовании аппаратного ускорения (т. е.
подробнее...
Delphi и OpenGL
нинаю че там у тя медленно отрисовывается, у мну при использовании аппаратного ускорения (т. е.
подробнее...
Ответ от 3 ответа[гуру]
Привет! Вот еще темы с похожими вопросами:
что такое процедуры Турбо Паскаля
Чет сегодня засилье вопрососв про паскаль... .
Если в программе возникает необходимость частого
подробнее...
По значению агрегат и аппарат это одно и то же ?
Агрега́т — совокупность механизмов. Выполняет одно определённое действие. Хотя иногда
подробнее...
спросили в Железо
что такое пиксельные шейдеры и зачем они вообще нужны
Ше́йдер (англ. Shader) — это программа для одной из ступеней графического конвейера,
подробнее...
что такое пиксельные шейдеры и зачем они вообще нужны
Ше́йдер (англ. Shader) — это программа для одной из ступеней графического конвейера,
подробнее...
спросили в Железо
паскаль. Почему в некоторых местах мы ставим бегин и энд,а некоторых нет
Бегин/Енд заключают в себя составной оператор.
Составной оператор - это набор команд, в
подробнее...
паскаль. Почему в некоторых местах мы ставим бегин и энд,а некоторых нет
Бегин/Енд заключают в себя составной оператор.
Составной оператор - это набор команд, в
подробнее...
спросили в CBC
Чем открыть и редактировать файлы: *.chm; *.dat; *.dll; *.bin; *.bun; *.cfg; *.izc?
Chm Decompiler 2.90
Это для редактирования *.chm.
подробнее...
Чем открыть и редактировать файлы: *.chm; *.dat; *.dll; *.bin; *.bun; *.cfg; *.izc?
Chm Decompiler 2.90
Это для редактирования *.chm.
подробнее...
Помогите по Visyal Basic Script (VBS)! Как сделать какое-то значение к которому при определенной команде можно бы вернут
Давно доказано, что без GoTo можно прекрасно обходиться.
Просто надо правильно строить
подробнее...
Модульное программирование. что это такое? подскажите пожалуйста!
Если взять сегодняшнюю Java, то можно (как и в большинстве случаев)
увидеть частичный возврат
подробнее...
спросили в POS
строки в Паскале
Доброго времени суток.
Вот теперь видно, что пытались сделать. Можно делать и так.
подробнее...
строки в Паскале
Доброго времени суток.
Вот теперь видно, что пытались сделать. Можно делать и так.
подробнее...
спросили в Borland
Что такое объектно-ориентированное программирование?
Объектно-ориентированное программирование представляет собой метод программирования, который весьма
подробнее...
Что такое объектно-ориентированное программирование?
Объектно-ориентированное программирование представляет собой метод программирования, который весьма
подробнее...