Разница между процедурой и функцией в программировании

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

Содержание статьи

Определение

Функция в программировании — подпрограмма, вызываемая из других подпрограмм необходимое число раз.

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

к содержанию ↑

Сравнение

Основная разница между функцией и процедурой — в возвращаемом результате. По сути, и функции, и процедуры представляют собой логически неделимые блоки, из которых складывается код программы. Функция возвращает значение, процедура в большинстве языков программирования — нет, либо (в Си, например) возвращает пустое значение. В последнем случае (в Си) процедура считается подчиненной разновидностью функции.

Заголовок функции содержит слово “function”, идентификатор (собственное имя функции), вариативно список параметров и обязательно — тип результата. В теле функции обязательно прописывается оператор, присваивающий значение имени функции, которое она вернет в качестве результата. Заголовок процедуры содержит слово “procedure”, идентификатор (имя процедуры) и вариативно список параметров. Вызов функции осуществляется в составе выражений там, где эти выражения применяются, вызов процедуры требует отдельного оператора. Вызов процедуры осуществляется только по имени, имя функции же связано с ее значением. На схемах алгоритмов вызов функции изображается в блоке вывода или в блоке процесса, вызов процедуры — в специальном блоке “предопределенный процесс”.

к содержанию ↑

Выводы TheDifference.ru

  1. Функция возвращает значение, процедура — нет.
  2. Заголовок функции обязательно содержит тип результата.
  3. В теле функции обязательно наличие оператора, присваивающего значение имени функции.
  4. Вызов процедуры требует отдельного оператора, вызов функции возможен в составе выражений.
  5. Имя процедуры необходимо для вызова, имя функции — для присвоения значения.
  6. На схемах алгоритмов вызов процедуры изображается в отдельном блоке, вызов функции — в блоке процесса или вывода.