[Tex/LaTex] Pseudocode: \Function vs. \Procedure

algorithmicalgorithmicxalgorithmspseudocode

The title says it all.

What is the difference between a Function and a Procedure?

When should I use which?

Best Answer

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}