O GLOBO - Informática Etc.
Carlos Alberto Teixeira - C@T

O paraíso dos algoritmos

Artigo: 494

Repositório reúne soluções lógicas consagradas para
os principais problemas da computação

Publicado em:  2001-04-16
Escrito em:  2001-04-04

 

Computador não pensa. Ele apenas desempenha funções bem rudimentares atendendo a ordens muito simples que lhe são dadas através de comandos escritos apenas com os números zero e um. No entanto, um computador é capaz de executar essas tarefinhas banais de uma forma tão ligeira que acaba nos dando a impressão de que está operando atos de mágica. Atualmente, ninguém na verdade programa uma máquina usando 0 e 1. Usa-se linguagens de alto-nível, verdadeiros idiomas técnicos que traduzem verbos de comando e seus parâmetros em instruções binárias de máquina. Exemplos de linguagens: Pascal, C, Basic, etc. Mas antes de se poder sentar e escrever o código de um programa numa dessas linguagens, é preciso construir a estrutura lógica com que se vai abordar a questão.

Para resolver um dado problema do mundo real, é preciso programar o computador de modo que ele colete informações de entrada, execute o processamento desses dados e produza uma saída, seja lá qual for: uma tela, o acionamento de um dispositivo, uma saída impressa, tanto faz. Esta programação é feita definindo-se os passos ou as atitudes que o processador do computador tem que tomar e em que posições de memória ele vai guardando os dados temporários de trabalho e as informações finais que irão desencadear os efeitos que darão por resolvido o problema.

Quando compramos uma engenhoca eletrônica novinha em folha e temos o cuidado de ler o manual, coisa que todo consumidor deveria sempre fazer, estamos de certa forma funcionando como computadores. Se seguirmos rigorosamente as instruções do manual, seremos capazes de operar o novo produto sem o menor problema. Logicamente alguns manuais são mal escritos e também existe gente com nojo de manual, mas em média o esquema funciona muito bem. Num manual a ser lido por humanos, as instruções não precisam ser exageradamente esmiuçadas. 

O exemplo clássico é o de um aparelhinho chinês cujo manual ensinava a trocar as pilhas: 

  1. abra o aparelho; 

  2. retire as pilhas velhas; 

  3. coloque as pilhas novas; 

  4. feche o aparelho. 

Chega a ser comicamente simples. Mas pegue agora o manual de montagem de um computador onde se instalará uma versão de Linux. Aí sim, a coisa complica.

No mundo dos programas de computador essa complicação é usual. Por sorte, um problema complexo pode ser quebrado em probleminhas menores, muitos dos quais já têm soluções consagradas pela experiência da comunidade mundial de programadores. Estas soluções se expressam sob a forma de algoritmos, ou seja, seqüências lógicas bem objetivas visando atacar uma certa aplicação.

Se a leitora se interessa por programação, recomendo visitar o dicionário de algoritmos, estruturas de dados e problemas em <http://hissa.nist.gov/dads/>, oferecido gratuitamente pelo National Institute of Standards and Technology dos EUA. Trata-se de uma lista alfabética em hipertexto, relacionando termos ligados a técnicas e funções algorítmicas, estruturas, problemas arquetípicos e outras definições. A maioria dos algoritmos oferece exemplos de implementações codificadas em linguagens de alto-nível, geralmente incluindo diagramas e até animações em alguns casos. Comece conhecendo um dos mais simples algoritmos, o da ordenação por bolhas, listado como "bubble sort". Se seguir os links, irá cair numa demonstração em Java do algoritmo em funcionamento, em <http://java.sun.com/applets/jdk/1.0/demo/SortDemo/example1.html>. Outro bom site sobre algoritmos é o do Dr. Ricardo Baeza-Yates, da Universidade do Chile, no endereço <www.dcc.uchile.cl/~rbaeza/handbook>.


É assustadora a quantidade de matérias que pipocam a cada dia na mídia tratando do assunto internet e afins. Como se não bastasse, um camarada meio pancada da cabeça, de nome Brian Riggs <[email protected]>, criou um gerador aleatório de mini-artigos sobre tecnologia. O endereço é <http://bbspot.com/toys/slashtitle> e para obter o próximo artigo produzido randomicamente, clique em "next story". É sem dúvida uma verdadeira bestialidade, mas que às vezes produz uns textos bem engraçados. Com base numa lista de empresas e uma relação de verbos e palavras de ligação, Brian bolou o SSG (Slashdot Story Generator), uma brincadeira interessante escrita em PHP empregando outra maluquice que ele chamou de KGE (Kozzmo Generation Engine) que, por sua vez, é responsável pela inserção proposital de erros de digitação. Segundo Brian, esses erros supostamente aumentariam o realismo dos textinhos. A programação da engenhoca ficou a cargo de Kris Koskelin <[email protected]>.


A conceituada área de downloads da ZDNet homologou um software shareware brasileiro para distribuição. Trata-se de uma precisa e rápida calculadora financeira, o programa KissFC versão 1.5.2. O autor dessa notável peça é o veterano Paulo Sérgio Pinto <[email protected]>, responsável pelo primeiro BBS a funcionar aqui no Brasil. Basta digitar "kissfc" sem as aspas no campo "Search For:" da página <www.zdnet.com/downloads> e baixar o software que, zipado, ocupa 476 kB. A página web do KissFC é <www.highway.com.br/users/ppinto/KissFC>. O download é grátis, mas se o usuário decidir ficar com o programa deve se registrar, pagando a taxa única de R$ 13,00 ou US$7,00. Basta acionar o programa que logo se nota ser um produto feito com máximo esmero, com alto profissionalismo e visando essencialmente a simplicidade. Aliás, o próprio nome KissFC traduz este objetivo, significando "Kiss Financial Calculator", onde o kiss vale por "Keep It Simple, Stupid!". Engenheiro estrutural de renome, Paulo entrou para a História como Sysop do legendário BBS do Pinto, cuja criação é muito bem descrita num artigo de Renato Sabbatini em <www.epub.org.br/correio/corr268.htm>.

[ Voltar para o índice de artigos de 2001 ]

[ O Globo | Informática Etc. | coluna mais recente | enviar email
página pessoal C@T
| assinar lista InfoEtc | assinar GoldenList do C@T ]


powered by FreeFind