标题说明了一切。
Function
a和 a有什么区别Procedure
?
我什么时候应该使用哪一个?
答案1
据称algpseudocode
,除了名称不同之外,这两者在结构上是相同的:
\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}%
从编程角度来看,差异嵌入在语言中,并具有以下常用的结构(外行人能理解的):
- 程序: 指令集
- 功能:一组指令,也会返回一些内容
一个简单的例子,说明它们的典型用法:
\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}
答案2
这根本不是一个与 TeX 相关的问题,但是函数返回一个值,而过程不返回(void
在 C++ 中)。过程仅执行某些操作,它因其副作用而被调用。