Algoritmos no LaTeX em Português

LaTeX
LaTeX. Fonte: http://latex-project.org

Pacotes

Caso esteja se perguntando “como colocar algoritmos na minha monografia, dissertação, tese feita em LaTeX em português”? Calma que é simples! 😀

Existem alguns pacotes para facilitar a vida de quem precisa listar algoritmos no meio do texto ( como por exemplo: algorithm e algoritmic). No entanto, geralmente os comandos estão em inglês.
Para utilizar os comandos em  português, recomendo incluir o pacote Algorithm2e.sty ao seu documento LaTeX (pode clicar aqui para baixar e mande salvar na mesma pasta que está seu texto, se quiser uma solução rápida).

Pode incluir desse jeito lá no início do documento passando entre as opções a palavra “portugues” (sem acento!):

\usepackage[portugues,ruled,lined]{algorithm2e}

Obs: inclusão de pacotes é feita depois da definição da classe (\documentclass[opcoes]{nomedaclasse} e antes do início do documento \begin{document})

Inclua também o pacote algorithmic citado acima que é utilizado junto ao algorithm2e.

\usepackage{algorithmic}

Feito isso, no local que quiser incluir a listagem com o algoritmo, escreva o código que quiser (existem comandos pré-definidos olhe mais abaixo nesse post) dentro do ambiente “algorithm” usando comandos já em português graças ao algorithm2e.

Segue um exemplo:

\begin{algorithm}[H]
\Entrada{o proprio texto}
\Saida{como escrever algoritmos com \LaTeX2e }
\Inicio{
inicializa\c{c}\~ao\;
\Repita{fim do texto}{
leia o atual\;
\uIf{entendeu}{
vá para o próximo\;
próximo se torna o atual\;}
\Else{volte ao início da seção\;}
}
}
\caption{Como escrever algoritmos no \LaTeX2e}
\end{algorithm}

O código acima gera a seguinte listagem de algoritmo no documento:

Algoritmo

Na versão que baixei do arquivo Algorithm2e.sty  tive um problema justamente com o trecho que define os nomes em português. Parece que os parâmetros estavam desatualizados. Mas só tive que substituir os parâmetros e funcionou perfeitamente!

Abra o arquivo Algorithm2e.sty e procure por “declareoption” (está na parte inicial do pacote).

Basta substituir o texto abaixo onde tiver a opção “\DeclareOption{portugues}”:


\DeclareOption{portugues}{%
 \renewcommand{\listalgorithmcfname}{Lista de Algoritmos}%
 \renewcommand{\algorithmcfname}{Algoritmo}%
 \renewcommand{\algocf@typo}{}%
 \renewcommand{\@algocf@procname}{Procedimento}
 \renewcommand{\@algocf@funcname}{Fun\c{c}\~{a}o}
 }

Substituindo esse trecho no arquivo Algorithm2e.sty garanto que resolve!

Comandos

Para saber quais são os comandos possíveis basta olhar no arquivo algorithm2e.sty mas se não tiver tanta intimidade com código LaTeX, vou dar uma colher de chá. Os comandos em português que podem ser utilizados para montar seu algoritmo são:

  • \Inicio
  • \Entrada
  • \Saida
  • \Dados
  • \Resultado
  • \Ate
  • \Retorna
  • \Repita

Agora é só escrever seus próprios algoritmos!

Qualquer dúvida ou sugestão deixe um comentário!

ATENÇÃO: Existem comandos atualizados nos comentários abaixo! Muito obrigada pelas colaborações!

Referências (em inglês):

O que é o LaTeXhttp://latex-project.org/intro.html

Blog bem completo com dicas sobre LaTeX: http://texblog.org/

Link para Algorithm2e.sty: http://www.mit.edu/~avp/sse/1.1.1/algorithm2e.sty

Sempre a wikipedia! http://en.wikibooks.org/wiki/LaTeX/Algorithms_and_Pseudocode

Mais exemplos: http://www.math-linux.com/latex-26/faq/latex-faq/How-to-write-algorithm-and

Bibliotecas em C

Assunto que gera dúvidas para quem está aprendendo a programar em qualquer linguagem é o uso das Bibliotecas. Neste post pretendo dar uma ideia do que são e como usar as principais bibliotecas da linguagem de programação C.

Biblioteca
Biblioteca Nacional Austríaca (fonte)

O que são Bibliotecas?

Para exibir uma mensagem na tela, ao invés de programar uma função inteira que faça isso para mim, basta que eu importe um arquivo que já contém essa função pronta -> A Biblioteca!

Uma Biblioteca é um arquivo com determinadas funções programadas que está separada em duas partes: um arquivo de cabeçalho e um arquivo com o código-fonte.

  • O arquivo de cabeçalho: é indicado pela extensão .h (vem de header que é cabeçalho em inglês) e contém informações sobre a biblioteca que os programas que a utilizam precisam saber. Em geral, o arquivo de cabeçalho contém constantes e tipos, junto com protótipos de funções disponíveis na biblioteca.
  • O arquivo de código-fonte: possui a implementação das funções propriamente ditas. É como um código normal em C sem o programa principal. Apresenta apenas um conjunto de funções programadas que serão aproveitadas em outros programas.

Como funcionam?

Voltando ao exemplo anterior, para que eu consiga mostrar uma mensagem na tela basta que eu importe uma biblioteca de I/O (Input/Output ou Entrada/saída) para utilizar a função de impressão que a biblioteca oferece.

Programando em C, a biblioteca que oferece essas funções é a stdio.h (acrônimo de standard input/output -> padrão de entrada/saída) que contém entre outras funções, a função de impressão printf. Para importar essa biblioteca, basta escrever no início do programa em C o seguinte:

#include <stdio.h>

Quando for compilar, o compilador vai buscar nessa biblioteca a função para saber como utilizá-la. Obs: se precisar incluir outra(s) biblioteca(s), basta escrever outro(s) comando(s) #include, um abaixo do outro no início do programa em C, por exemplo:

#include <biblioteca_1>

#include <biblioteca_2>

#include <biblioteca_3>

E no local que quero imprimir o texto na tela no meu programa, uso diretamente a função printf seguindo as regras de sintaxe:

printf(“expressao”, argumentos);

Com isso, todas as vezes que precisar imprimir algo na tela basta chamar a função modificando apenas os parâmetros. As bibliotecas surgem dessa necessidade de utilização contínua do mesmo padrão de operações. Ao invés de repetir várias vezes o mesmo conjunto de instruções para realizar ações muito parecidas em locais diferentes, posso usar uma mesma função pronta apenas passando parâmetros diferentes para ela. Usamos aqui o conceito de reutilização de código!


Obs:
O caracter “#” (em inglês: sharp e em português: cerquilha ou tralha) no inicio da linha indica que haverá um pré-processamento (o que é isso? quer dizer que mesmo antes de compilar o programa, os parâmetros necessários para ser criado o arquivo executável serão conhecidos). Lembrando que a inclusão de bibliotecas que iremos utilizar no nosso código deve ser feita sempre no início da programação!


Quais são as principais?

Existem várias bibliotecas e, aquelas que oferecem funções básicas (como por exemplo a stdio) são muito mais utilizadas do que outras. Segue uma pequena (pequena mesmo!) lista de bibliotecas com suas principais funções:

stdlib.h

  • Esta biblioteca é a responsável por conversões de números, alocação na memória e outras tarefas! Com ela podemos: converter um char em um double, converte um char para long, criar um número randômico (aleatório), alocar na memoria, realocar na memória, desalocar da memória, execução de comandos do sistema operacional Respectivamente, as funções citadas são:atof, atol, rand, malloc, realloc, free e system…Também não posso deixar de citar que ela retorna o valor absoluto de um número inteiro usando abs.

stdio.h

  • Esta biblioteca é a responsável pela entrada e saída padrão. Nela, encontramos funções para leitura do teclado, escrita formatada ou não na tela e operações com arquivos. Algumas funções dessas bibliotecas:fprintf, printf, fscanf, scanf, getchar, putc, getc, fopen, fclose…

math.h

  • Esta biblioteca declara funções matemáticas que podem servir para: achar a raiz quadrada, achar o seno, co-seno, tangente, logaritmo na base 10. As funções respectivas são:sqrt, sin, cos, tan, log10.Fora isso, um outro uso para declaração desta biblioteca é a possibilidade de arredondar um número! Para isso usamos a função que retorna o valor absoluto: fabs.

Como disse, essas são apenas algumas bibliotecas e suas funções. Agora que sabemos como utilizar basta pesquisar quais possuem as funções que precisamos e qual a sintaxe para chamar a função!

Outras Fontes:

Principais Bibliotecas em C: Celso Masotti, INED

Biblioteca stdio.h: Quaddro

Criação de bibliotecas: HowStuffWorks

Excelente referência sobre C/C++ online: http://www.cplusplus.com (em inglês)

Para tirar dúvidas ou dar sugestões deixem comentários!