O que é um algoritmo?

Este é um artigo introdutório sobre lógica de programação, abordando o tema algoritmo bem como sua definição e exemplos. Tem o objetivo de elucidar um pouco sobre essa disciplina, de maneira informal e explicativa.

Vamos pensar e refletir um pouco sobre algoritmo
(Foto: Domínio Público / VisualHunt)

O ato de definir é importante. Por definição, aprendemos o que algo venha a ser e até qual é a sua função. E em relação ao aprendizado, podemos aprender algo de duas maneiras bem simples: convivência ou teoria.

Exemplo 1: defina, com suas palavras, pombo.
Por convivência, você sabe o que é um pombo e pode defini-lo como uma ave urbana, geralmente cinza ou branca e que voa em baixas altitudes.

Exemplo 2: defina, com suas palavras, anjo.
Por teoria, você sabe o que é um anjo e que pode ser definido como um ser celestial, alado e que usa vestes brancas, por exemplo.

Mas e se lhe for perguntado: defina, com suas palavras, ponto. Sabe-se o que é um ponto por convivência, mas é difícil defini-lo. É difícil aprender o que é um ponto, somente por teoria, pois, é preciso vivenciar. Da mesma maneira é difícil aprender o que é um algoritmo só por definição e teoria, portanto, será apresentado a definição de algoritmo a seguir mas será somente por convivência e muita prática, que esta definição se tornará natural, intuitiva e clara.

A palavra deriva do nome do matemático Al-khwarizmi, no qual também deu origem a outra palavra conhecida por nós como algarismo. Segundo a definição do dicionário Aurélio:
Algoritmo é um conjunto de regras e operações bem definidas e ordenadas, destinadas à solução de um problema ou classe de problemas em um número finito de etapas.

A primeiro momento, essa é uma definição muito formal, "um algoritmo é uma sequência de passos lógicos a serem seguidos de maneira finita para resolver um determinado problema em busca de um objetivo". Mas ao final desse artigo, a definição se tornará mais clara.

Problema

Problema é uma questão não solvida, objeto de discussão. É algo que nos impede de atingir um determinado objetivo com eficiência e eficácia (Manzano e Oliveira, 2005).

A eficiência, são os meios de se chegar ao objetivo. E a eficácia, são os fins que podem resultar no objetivo. Um bom algoritmo que solucione um problema, não é apenas eficiente ou eficaz, mas, ambos ao mesmo tempo e por isso a frase a seguir será recorrente no processo de aprendizagem de algoritmos: não é porque funcionou, que está certo.

Proposta de Problema

João deseja atravessar a rua, no ponto A e chegar ao ponto B, como mostra a figura abaixo.

Exemplo de problema

O problema é que João precisa atravessar a rua, no ponto A e chegar no ponto B. O algoritmo poderia ser:
  1. João atravessa a rua

    Simples, um algoritmo que em um único passo resolveu o nosso problema. Certo? Negativo, é um algoritmo ineficiente e ineficaz. Antes de atravessar a rua, João precisa ficar atento se não está vindo carros a sua esquerda, só para depois atravessar.
    1. João olha para a esquerda
      1. Se não houverem carros vindo, atravessar
      2. Senão, esperar

    Mesmo que não haja veículos vindo na esquerda, podem haver carros vindo na direita caso o semáforo esteja aberto. E o semáforo é outro detalhe a se ficar atento.
    1. João olha para o semáforo
    2. Se o semáforo estiver fechado para carros, olhar para a esquerda
      1. Se os carros estiverem parados, olhar para a direita
        1. Se não houverem carros vindo, atravessar
        2. Senão, esperar
    3. Senão, se o semáforo estiver aberto para os carros, esperar

    Este é um algoritmo eficiente para atravessar a rua. Através dele, João poderá atravessar a rua muitas vezes, pois ele funciona. Mas, e se houver uma bicicleta vindo? Ou uma moto? Bem, isso não está no nosso algoritmo, portanto ele não será eficaz, logo, este é um exemplo de que não é porque funcionou que está certo. Funciona, apenas sob uma condição ou conjunto de critérios específicos. Mas é um começo e não vamos nos ater a isso agora.

    Perceba que a maneira de resolver o problema acima, foi uma sequência de passos (já que foram enumerados) de maneira lógica e seguidos de maneira finita (porque o algoritmo tem um fim quando João atravessa a rua) e que resolve o problema alcançando o seu objetivo (que é atravessar a rua). Agora você já é apto a ler o que foi escrito no comecinho do artigo e entender a definição de algoritmo, retornemos a ela:
    Algoritmo é um conjunto de regras e operações bem definidas e ordenadas, destinadas à solução de um problema ou classe de problemas em um número finito de etapas.


    O que você aprendeu

    Neste artigo vimos um pouco sobre o conceito de algoritmo e aprendemos a sua definição. Aprendemos:
    • O que é um algoritmo.
    • O que é problema.
    • Como resolver um problema utilizando um algoritmo.

    No próximo artigo: Aplicação de um Algoritmo

    Referência Bibliográfica
    MANZANO, J. A. N. G.; OLIVEIRA, J. F. Algoritmos: lógica para Desenvolvimento de Programação de Computadores. 17. ed. São Paulo: Érica, 2005. 219 p.

    FORBELLONE, A. L. V.; EBERSPÄCHER, H. F. Lógica de programação: a construção de algoritmos e estrutura de dados. 3. ed. São Paulo: Prentice Hall, 2005. 208 p.


    Para citar esse artigo:

    Comentários