Задать вопрос
Yoricrayn
@Yoricrayn
Сектант 1-го уровня

Чем отличаются понятия функции, процедуры и метода в программировании?

Периодически вижу все 3 определения. Это одно и то же или же что-то разное, и какое из понятий правильнее всего употреблять?
  • Вопрос задан
  • 92859 просмотров
Подписаться 5 Простой Комментировать
Решения вопроса 2
@D3lphi
Функция - подпрограмма, выполняющая какие-либо операции и возвращающая значение.
Процедура - подпрограмма, которая только выполняет операции, без возврата значения.
Метод - это функция или процедура, которая принадлежит классу или экземпляру класса.
Ответ написан
Всё это можно свести к понятию - подпрограмма. Бывает, читаешь книгу, там автор пишет о своём куске кода как о методе, потом его начинает называть функцией.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
mindtester
@mindtester
http://iczin.su/hexagram_48
D3lphi
Функция - подпрограмма, выполняющая какие-либо операции и возвращающая значение.
Процедура - подпрограмма, которая только выполняет операции, без возврата значения.
Метод - это функция или процедура, которая принадлежит классу или экземпляру класса.


как бы да, но... только на самом начальном этапе, что бы угомонить хаос в голове новичка ))

в дальнейшем, все интереснее все эти понятия контекстно зависимые, контекстом является парадигма программирования и/или конкретный язык

1 - в контексте парадигм, из данных понятий уникально одно Метод, как уже было сказано D3lphi, это нечто принадлежащее классу. класс, в свою очередь, это фундаментальное понятие ООП основанного на классах (шарм ситуации в том, что ООП бывает тоже разное ;))

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

но .. есть много языков, где понятия метод нет вообще

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

2 - из контекста языков:

понятие процедура в явном виде, чаще всего употребляют преподаватели, которые сами учились на языках типа Fortran, Pascal или родственных, и либо не имели другого опыта вообще, либо иной опыт был на много скромнее

сейчас доминируют языки, основывающиеся на Си синтаксисе, даже java и js в данном вопросе станут родственниками классического Си

а в нем нет понятия процедуры, только функции.. а на случай, когда функция не обязана возвращать какую либо величину, просто указывается тип возвращаемого значения void

смешение всего этого на примере C# - в этом языке, все есть объект. а любой исполняемый код это метод, и методы реализуются только функциями (в тч void функциями)
Ответ написан
@klim76
android/java/sql
тоже поучаствую :)
функции

в фунциональном программировании
процедуры

в процедурном
метода

в ООП
Ответ написан
Griboks
@Griboks
Процедура - подпрограмма в отдельном скоупе.
Функция - процедура, возвращающая значение.
Метод - либо первое, либо второе.
Ответ написан
@awesomer
По сути - ничем.
Фактически - мелочами.

У метода автоматически параметром является объект класса, к которому метод относится.
Но вам никто не мешает передавать объект класса и в явном виде в качестве параметра.
Правда метод класса будет автоматически иметь доступ к внутренним защищенным полям класса, чего не будет иметь функция, в которую этот объект класса передан как параметр.
Но от языка зависит. Для Go, к примеру, если функция определена в том же пакете, то нет никаких ограничений на доступ к внутренним непубличным полям структур.

Функция vs Процедура - результат функции можно непосредственно присвоить переменной
a = function(b)

с другой стороны и с процедурой можно сделать то же самое, но чуток сложнее:
function(&b)
a = b


То есть это чисто для удобства.
Хотя отказываться от этих всех удобств я бы не хотел.

Еще во многих языках используется одно и то же ключевое слово, к примеру, func,
но фактически это может быть и процедура и метод и реально функция.
Что не должно вводить в заблуждение.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы