17

The title says it all.

What is the difference between a Function and a Procedure?

When should I use which?

0

2 Answers 2

19

According to algpseudocode, these two are structurally the same, apart from their name:

\algdef{SE}[PROCEDURE]{Procedure}{EndProcedure}%
   [2]{\algorithmicprocedure\ \textproc{#1}\ifthenelse{\equal{#2}{}}{}{(#2)}}%
   {\algorithmicend\ \algorithmicprocedure}%
\algdef{SE}[FUNCTION]{Function}{EndFunction}%
   [2]{\algorithmicfunction\ \textproc{#1}\ifthenelse{\equal{#2}{}}{}{(#2)}}%
   {\algorithmicend\ \algorithmicfunction}%

From a programming perspective, the difference is embedded in the language and have the following commonly-used structure (in laymen's terms):

  • Procedure: A collection of instructions
  • Function: A collection of instructions that also returns something

A minimal example indicating their typical usage:

enter image description here

\documentclass{article}
\usepackage{algpseudocode}% http://ctan.org/pkg/algorithmicx
\begin{document}
\begin{algorithmic}
\Procedure{name}{params}
  \State body
\EndProcedure
\Function{name}{params}
  \State body
  \State \Return something
\EndFunction
\end{algorithmic}
\end{document}
4
  • should we specify the output of Function somewhere or it is just specified through return?
    – Ahmad
    Commented Jul 9, 2016 at 6:37
  • Is it the standard, if we mention both input and output parameters in {params} Commented Sep 17, 2017 at 1:23
  • @RenjthVRavi: That depends. This is pseudo-code, so as long as it's clear in the presentation.
    – Werner
    Commented Sep 17, 2017 at 17:17
  • A function, depending on definition, also does not modify state (has side-effects). Commented Nov 21, 2018 at 19:36
8

This is not at all a TeX-related question, but a function returns a value while a procedure does not (void in C++). A procedure only performs some actions, it is invoked because of its side effects.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .