一、相关基础知识

  1)本文编写伪代码调用的是'algorithmic'+'algorithm'宏包,而Latex也存在其他的宏包,像是'algorithm2e'等宏包(更加灵活的排版方式,更多的控制选项和更加优美的输出效果,以后有机会会去介绍)。

  2)一个标准的LaTex文档由如下部分组成:

    1、导言区(Preamble):在'\begin{document}'命令之前的部分。导言区可以设置文档的格式和样式,以及引入其他必要的宏包和设置(document class、packages、commands等)。

    2、正文(Body):在'\begin{document}'和'\end{document}'命令之间的部分。正文部分包括文档的实际内容,如段落、章节、公式、表格、图片等

    3、参考文献(Bibliography):一个单独的部分,包含在文档中引用的所有来源完整引用信息。

    4、附录(Appendix):额外信息的补充,像是代码、公式推导等

    5、注释(Comments):对文档的说明和解释,一般不会被编译。

二、Example

  1)如下给出一个简单的例子,以引出本文的重点——基于Latex的伪代码书写(仅解释伪代码相关内容,其余部分请自行查找相关资料)

\documentclass{article}
\usepackage{algorithm}
\usepackage{algorithmic}
\title{Pseudocode}
\author{Huang}
\date{\today}

\begin{document}

\maketitle

\begin{algorithm}
    \caption{Example Pseudocode}
\end{algorithm}

\end{document}

algorithm 和 algorithmic

  在正文部分引入本文所需要编写的伪代码部分,如下所示:

伪代码 markdown java 伪代码书写规范例子_while循环

  


  2)上文我们构造了一个algorithm块,接下来会去其中嵌入algorithmic块,实现一些变量之前的基本运算。如下所示:

\begin{algorithm}
    \caption{Example Pseudocode}
    \begin{algorithmic}
        \STATE $x\gets0$
    \end{algorithmic}
\end{algorithm}

  编译之后的结果如下所示:

伪代码 markdown java 伪代码书写规范例子_循环结构_02

 

 


  3)代码常见的判断结构(if-else)和循环结构(for, while)是最常见的算法逻辑,下文通过Latex实现一个简单的判断结构:

\IF{$x\leq 0$}
        \STATE $x\gets x+1$
        \ELSIF{$ x\geq 1$}
        \STATE $x\gets x-1$
        \ELSE
        \STATE $x\gets 2x$
        \ENDIF

  生成伪代码如下所示:

伪代码 markdown java 伪代码书写规范例子_while循环_03

  这里可以发现我们只需要'\IF'和'\ENDIF'限制判断结构的范围即可。


  3)类似于if判断结构,我们可以编写相关的循环结构(for、forall等循环结构体):

\begin{algorithmic}
        % while循环
        \WHILE{$ x\leq 0$}
        \STATE $x\gets x+1$
        \ENDWHILE
    \end{algorithmic}

    \begin{algorithmic}
        % for循环
        \FOR{$ x\leq 0$}
        \STATE $x\gets x+2$
        \ENDFOR
    \end{algorithmic}

    \begin{algorithmic}   
        % forall循环
        \FORALL{$ x\leq 0$}
        \STATE $x\gets x+3$
        \ENDFOR
    \end{algorithmic}

  生成的伪代码如下所示:

伪代码 markdown java 伪代码书写规范例子_循环结构_04

 


 

algorithmic

\renewcommand{\algorithmicrequire}{\textbf{Input:}}
    \renewcommand{\algorithmicensure}{\textbf{Output:}}

  之后在算法段书写如下代码:

\begin{algorithmic}
        \ENSURE{$y$}
        \REQUIRE{$x$}
        % while循环
        \WHILE{$ x\leq 0$}
        \STATE $y\gets x+1$
        \ENDWHILE
    \end{algorithmic}

  生成我们想要的伪代码:

伪代码 markdown java 伪代码书写规范例子_伪代码 markdown java_05

 

  至此,我们可以在Overleaf上基于Latex实现简单的伪代码编写,仍需多多练习!!!!