domingo, 13 de janeiro de 2013

Pseudo-código no LaTeX em Português

Para escrever pseudo-código no LaTeX em Português vamos fazer algumas configurações no pacote algpseudocode.

Carregue os pacotes
\usepackage{algpseudocode,algorithm}

Em seguida, digite
% Declaracoes em Português
\algrenewcommand\algorithmicend{\textbf{fim}}
\algrenewcommand\algorithmicdo{\textbf{faça}}
\algrenewcommand\algorithmicwhile{\textbf{enquanto}}
\algrenewcommand\algorithmicfor{\textbf{para}}
\algrenewcommand\algorithmicif{\textbf{se}}
\algrenewcommand\algorithmicthen{\textbf{então}}
\algrenewcommand\algorithmicelse{\textbf{senão}}
\algrenewcommand\algorithmicreturn{\textbf{devolve}}
\algrenewcommand\algorithmicfunction{\textbf{função}}

% Rearranja os finais de cada estrutura
\algrenewtext{EndWhile}{\algorithmicend\ \algorithmicwhile}
\algrenewtext{EndFor}{\algorithmicend\ \algorithmicfor}
\algrenewtext{EndIf}{\algorithmicend\ \algorithmicif}
\algrenewtext{EndFunction}{\algorithmicend\ \algorithmicfunction}

% O comando For, a seguir, retorna 'para #1 -- #2 até #3 faça'
\algnewcommand\algorithmicto{\textbf{até}}
\algrenewtext{For}[3]%
{\algorithmicfor\ #1 $\gets$ #2 \algorithmicto\ #3 \algorithmicdo}

Veja os exemplos:
\begin{algorithm}
\caption{Valor Absoluto}
\begin{algorithmic}[1]
\Function{Absoluto}{x}
  \If {$x < 0$}
    \State \Return $-x$
  \Else
    \State \Return $x$
  \EndIf
\EndFunction
\end{algorithmic}
\end{algorithm}

\begin{algorithm}
\caption{Exemplo do \texttt{for}}
\begin{algorithmic}[1]
\For{i}{1}{n}
  \State {$A[i] \gets i + 1$} \Comment{Preenche o vetor}
\EndFor
\end{algorithmic}
\end{algorithm}

\begin{algorithm}
\caption{Exemplo do \texttt{while}}
\begin{algorithmic}[1]
  \While {$i \mei n$}
    \State $i \gets i + 1$
  \EndWhile
\end{algorithmic}
\end{algorithm}

Baixe pseudocodigo.zip
Mais informações em texdoc algpseudocode e Pseudocode.

4 comentários:

  1. saida de: http://www.tldp.org/HOWTO/Portuguese-HOWTO-6.html#SEC:LATEX
    Problemas com alguns pacotes do teTeX

    Há um problema com o pacote algorithm do LaTeX, que não é suportado pelo babel, fazendo com que a lista de algoritmos saia com o título ``List of Algorithms'' e o título de cada um deles seja impresso como ``Algorithm #''. Para evitar esse problema, coloque no preâmbulo de seu documento LaTeX, após o comando ``\usepackage{algorithm}'' o seguinte:

    \makeatletter
    \renewcommand{\ALG@name}}{Algoritmo}}
    \makeatother
    \renewcommand{\listalgorithmname}}{Lista de Algoritmos}}

    ResponderExcluir
  2. O condigo informado apresenta problemas no while.

    ResponderExcluir
    Respostas
    1. Pelo meu conhecimento de programação, acredito q deveria ser um < ou um <=, então acredito que deveria trocar por um \leq.

      Excluir