Algoritmos - Histórico e Conceitos

De Aulas

Links relacionados: Lógica de Programação


Algoritmos

Um algoritmo é um conjunto finito de regras que fornece uma sequência de operações para resolver um problema específico. É algo como uma receita, ou uma rotina.

Para resolver um problema em um computador, de modo semelhante ao que fazemos para resolver um problema do nosso cotidiano, devemos encontrar uma maneira de descrever esse problema de uma forma clara e precisa, através de uma sequência de passos a serem seguidos até que se atinja a solução procurada (CRUZ; KNOPMAN, 2001).

O uso de algoritmos surgiu como uma forma de indicar o caminho para a solução dos mais variados problemas.

Essa estruturação deve seguir uma determinada lógica para se atingir um objetivo.

Dado um problema, as principais funções de um programador são:

  • Entender perfeitamente o problema;
  • Escolher métodos para sua solução;
  • Desenvolver um algoritmo baseado nos métodos;
  • Codificar o algoritmo na linguagem de programação disponível.

Como estudar algoritmos?

O aprendizado de algoritmos não se consegue a não ser através de muitos exercícios.

Algoritmos não se aprendem:

  • Copiando algoritmos
  • Estudando algoritmos

Algoritmos só se aprendem:

  • Construindo algoritmos
  • Testando algoritmos

Ação

Ação é um evento que ocorre num período de tempo finito, estabelecendo um efeito intencionado e bem definido.

Exemplo:

  • Colocar o livro em cima da mesa;
  • Atribuir o valor 3,1416 em uma variável;

Observação

Toda ação deve ser executável em um tempo finito (do instante t0 até o instante t1);

  • O que realmente interessa é o efeito produzido na execução da ação;
  • Pode-se descrever o efeito de uma ação comparando o estado no instante t0 com o estado no instante t1.

Estado

Estado de um dado sistema de objetos é o conjunto de propriedades desses objetos que são relevantes em uma situação considerada.

Exemplo:

  • Livro na estante ou sobre a mesa;
  • Conjunto de valores das variáveis do programa num certo instante da execução;

Processo

Processo é um evento considerado como uma seqüência temporal de (sub) ações, cujo efeito total é igual ao efeito acumulado dessas (sub) ações.

Padrão de Comportamento

Em todo o evento pode-se reconhecer um padrão de comportamento, isto é, cada vez que o padrão de comportamento é seguido, o evento ocorre.

Exemplo - Uma dona-de-casa descasca as batatas para o jantar:

  • Passo 1: traz a cesta com batatas do porão;
  • Passo 2: traz a panela do armário;
  • Passo 3: descasca as batatas;
  • Passo 4: devolve a cesta ao porão;

Essa descrição pode ser usada para descrever eventos distintos (dias diferentes, batatas diferentes etc.). Isso só é possível porque os eventos possuem o mesmo padrão de comportamento.

O efeito de um evento fica totalmente determinado pelo padrão de comportamento e eventualmente pelo estado inicial.

Exemplo 1 - Receita de Bolo

INÍCIO

  • Passo 1: Receber os ingredientes

Ingredientes:

  • 2 xícaras de açúcar;
  • 3 ovos;
  • 50g de margarina;
  • 3 xícaras de farinha de trigo;
  • 1 e ½ colher de fermento;
  • 1 xícara de leite.

Modo de preparo:

  • Passo 2: aqueça o forno a 180 graus;
  • Passo 3: bata as claras em neve e reserve;
  • Passo 4: em uma travessa, bata o açúcar, a manteiga e as gemas;
  • Passo 5: misture a farinha e o leite;
  • Passo 6: bata bem, até ficar bem homogêneo;
  • Passo 7: com a ajuda de uma colher, acrescente o fermento;
  • Passo 8: por último, adicione as claras em neve e mexa cuidadosamente;
  • Passo 9: coloque em uma forma untada com manteiga e farinha de trigo e leve ao forno médio para assar por aproximadamente 35 minutos ou até que, ao espetar um palito, esse saia seco;
  • Passo 10: após assado, desligue o forno e deixe o bolo esfriar;
  • Passo 11: desenforme e saboreie.

FIM

Características dos Algoritmos

Observando a receita de bolo, podemos contemplar as cinco características que são inerentes aos algoritmos (CRUZ; KNOPMAN, 2001):

  • Finitude: um algoritmo sempre deve terminar após um número finito de passos. Veja que o algoritmo do nosso exemplo encerra no momento em que o bolo está pronto para ser saboreado.
  • Definição: cada passo do algoritmo deve ser bem definido e sem ambiguidades, ou seja, não deve dar margem para uma interpretação dupla.
  • Entradas: um algoritmo deve ter zero ou mais entradas, que são as informações que devem ser fornecidas antes do algoritmo ser iniciado (no caso da receita de bolo, as entradas são os ingredientes, ou seja, o açúcar, os ovos, etc.).
  • Saídas: um algoritmo deve ter uma ou mais saídas. O número de saídas tem uma relação específica com as entradas. Mais uma vez, observando a nossa receita, vemos que os ingredientes (entradas) são misturados dentro da sequência de passos, gerando uma única saída (o bolo).
  • Efetividade: todo algoritmo deve ser descrito por operações básicas e possíveis de ser realizadas de forma precisa, dentro de um determinado tempo, por qualquer pessoa. Por exemplo, se na receita víssemos uma instrução do tipo “coloque açúcar à vontade”, isso impossibilitaria a sua execução de uma forma precisa.

Exemplo 2 - Cálculo da Média Aritmética de um aluno

Veja agora um exemplo de algoritmo utilizando números e expressões matemáticas.

  • Passo 1: informe a primeira nota;
  • Passo 2: informe a segunda nota;
  • Passo 3: some a primeira nota com a segunda nota;
  • Passo 4: divida o resultado da soma por dois;
  • Passo 5: mostre o resultado obtido.

O algoritmo acima tem início e fim, como no anterior, tem passos bem definidos, tem os dados de entrada (primeira nota e segunda nota), tem uma saída (média) e as instruções de cada passo são precisas, ou seja, reúne também as cinco características que nós mencionamos anteriormente.

Diante de tudo isso, podemos afirmar que a construção de algoritmos é uma atividade que faz parte do nosso cotidiano, pois todas as atividades que realizamos (como tomar banho, ir à escola, voltar para casa) precisam de uma série de entradas para que sejam realizadas (como a hora de acordar, escolher o melhor caminho para ir à escola, escolher o melhor meio de transporte), seguem uma sequência lógica de passos e geram suas respectivas saídas (que são os resultados alcançados).

Exemplo 3

Revisando, um algoritmo é a descrição de um padrão de comportamento, expressado em termos de um repertório bem definido e finito de ações primitivas que, com certeza, podem ser executadas.

Um algoritmo possui caráter imperativo, razão pela qual uma ação em um algoritmo é chamada de comando.

Exemplo de algoritmo para descascar batatas para o jantar:

1. traga a cesta com batatas do porão;
2. traga a panela do armário;
3. descasque as batatas;
4. devolva a cesta ao porão;

Exemplo 4 - Estruturas de Controle

Existem três estruturas de controle:

  • Sequência Simples
  • Alternativa
  • Repetição

A generalização do algoritmo para descascar batatas para o jantar pode ser:

1. traga a cesta com batatas do porão;
2. traga a panela do armário;
3. se saia é clara então
  3.1. coloque avental;
4. enquanto "número de batatas é insuficiente" faça
  4.1 “descasque uma batata;
5. devolva a cesta ao porão;

Técnica para Elaboração de um Algoritmo

A seguir são apresentados os passos para a elaboração de um algoritmo conforme observações de Ascencio e Campos (2002):

  1. ler atentamente o enunciado, destacando os pontos mais importantes;
  2. definir os dados de entrada;
  3. definir que dados de saída se deseja obter;
  4. definir o processamento (de que maneira será ordenada a sequência de passos);
  5. construir o algoritmo;
  6. testar o algoritmo realizando simulações.

Exercícios

  1. Escreva o seu algoritmo usual para ir à faculdade.
  2. Escreva um algoritmo para fritar batatas.
  3. Escreva o seu algoritmo usual para tomar banho.
  4. Escreva um algoritmo que, dado um número, exiba o seu antecessor.
  5. Faça o mesmo para exibir o sucessor do número dado.
  6. Imagine que você é atendente de um caixa de supermercado e chega um cliente. Faça um algoritmo (texto) do processo de atendimento ao cliente até sua finalização. Tenha em mente que um cliente pode ter um ou vários produtos e pode escolher entre diversas formas de pagamentos.
  7. Faça o algoritmo da questão anterior na forma gráfica de fluxograma.

Referências