O ambiente algorithm2e representa uma solução robusta e moderna para a inclusão de pseudocódigos em documentos científicos produzidos em LaTeX. Diferente de pacotes legados que exigem comandos verbosos para definir estados individuais, esta ferramenta oferece uma sintaxe mais próxima da programação imperativa real, facilitando a manutenção e a leitura do código fonte.
Configuração e Dependências
Para habilitar a funcionalidade, é necessário invocar o pacote durante o pré-âmbito do documento. A chamada básica permite ajustes estilísticos através de parâmetros opcionais:
\usepackage[linesnumbered, ruled]{algorithm2e}
Os modificadores alteram a renderização visual final:
- ruled: Posiciona o cabeçalho acima do bloco com linhas delimitadoras superiores e inferiores.
- linesnumbered: Adiciona contagem incremental nas margens esquerda das instruções.
- boxed: Encapsula todo o conteúdo dentro de um retângulo visível.
- vlined: Cria linhas verticais entre os blocos lógicos principais.
Sintaxe de Entrada, Saída e Controle
A estrutura do algoritmo define metadados sobre os dados processados antes da lógica principal começar. Os comandos padrão estabelecem as premissas:
\KwIn{\textit{variável}}: Declara os inputs necessários.\KwOut{\textit{resultado}}: Especifica o output esperado.\KwData: Alternativo para entrada de dados brutos.
Para anotações dentro do fluxo, utilize comentários específicos que não interferem na execução lógica: \tcc para estilos de bloco (similar a C/C++) e \tcp para comentários de linha simples.
Estruturas Condicionais e Iterativas
O controle de fluxo suporta variações dependendo da necessidade de fechamento explícito dos blocos. A distinção fundamental reside nos termindaores end:
- Variante Padrão (
\If,\For): Exige a palavra-chaveendpara fechar o escopo. - Variante Compacta (
\uIf): Blocos que não finalizam comend, úteis para nesting rápido. - Variante Linear (
\lIf): Mantém a condição e a ação na mesma linha horizontal sem quebra automática. - Estrutura Unificada (
\eIf): Combina condição afirmativa e negação compartilhando um único terminador de bloco.
Personalização Avançada
Caso o rótulo padrão "Algorithm" não seja adequado ao contexto acadêmico ou regional, a nomenclatura pode ser sobrescrita globalmente:
\renewcommand{\algorithmcfname}{Processo Computacional}
Uma limitação nativa do pacote é a ausência do constructo Do-While. No entanto, devido à modularidade do sistema, é possível estender a biblioteca definindo novos repetidores via macro:\n
\SetKwRepeat{Repita}{faça}{até}
Com essa definição, pode-se implementar laços que verificam a condição de parada após a primeira execução:\n
\Repita{condição_de_parada}{
operação_lógica;\n incremento;\n}
Abaixo, apresenta-se um exemplo completo integrando as configurações discutidas:
\begin{algorithm}[H]
\caption{Busca Sequencial}\label{alg:busca}
\KwIn{Vetor \$A\$ e valor alvo \$x\$}
\KwOut{Índice encontrado ou -1}
\For{\$i\$ desde 0 até tamanho(\$A\$)}{
\eIf{\$A[i] = x\$}{
retornar \$i$\n }{
continuar\n }
}
retornar -1\;
\end{algorithm}