برای نوشتن الگوریتم، استفاده از بسته algorithmic
و algorithm
را توصیه میکنم. در این بسته دستورات \REQUIRE
و \ENSURE
برای ورودی و خروجی میتواند مورد استفاده قرار گیرد. البته آنچه را که این دستورات چاپ مینماید به ترتیب require و ensure است که میتوان آنها را با استفاده از دستورات زیر تغییر داد:
\renewcommand{\algorithmicrequire}{\textbf{Input:}}
\renewcommand{\algorithmicensure}{\textbf{Output:}}
همچنین برای رسم خط میان دو بخش میتوانید از دستور زیر استفاده کنید:
\vskip.5\baselineskip\hrule height 0.4pt\vskip.5\baselineskip
که خطی به ارتفاع 0.4pt رسم مینماید.
با این تفاسیر، کد نمونه زیر را در نظر بگیرید:
\documentclass{article}
\usepackage{algorithmic}
\usepackage{algorithm}
\renewcommand{\algorithmicrequire}{\textbf{Input:}}
\renewcommand{\algorithmicensure}{\textbf{Output:}}
\begin{document}
\begin{algorithm}
\caption{Calculate $y = x^n$}
\label{alg1}
\begin{algorithmic}[1]
\REQUIRE $n \geq 0 \vee x \neq 0$
\ENSURE $y = x^n$
\vskip.5\baselineskip\hrule height 0.4pt\vskip.5\baselineskip
\STATE $y \leftarrow 1$
\IF{$n < 0$}
\STATE $X \leftarrow 1 / x$
\STATE $N \leftarrow -n$
\ELSE
\STATE $X \leftarrow x$
\STATE $N \leftarrow n$
\ENDIF
\WHILE{$N \neq 0$}
\IF{$N$ is even}
\STATE $X \leftarrow X \times X$
\STATE $N \leftarrow N / 2$
\ELSE[$N$ is odd]
\STATE $y \leftarrow y \times X$
\STATE $N \leftarrow N - 1$
\ENDIF
\ENDWHILE
\end{algorithmic}
\end{algorithm}
\end{document}
که خروجی آن به صورت زیر است:
برای اطلاع بیشتر از نحوه استفاده از بسته algorithmic و algorithm به مستندات آن مراجعه نمایید.