Algoritmos (ADS) – Aula 02

ALGORITMOS – AULA 02 DE 100

Unidade 1 – Fundamentos e estruturas de controle
Bloco Algoritmos e lógica (aulas 1 a 6)
Duração e tipo 45 minutos – teórica
Aula anterior Aula 01 – O que é um programa
Próxima aula Aula 03 – Diagrama de blocos I: símbolos e fluxo sequencial

1 Objetivos da aula

  1. Definir algoritmo e diferenciá-lo de programa.
  2. Reconhecer as propriedades de um algoritmo: entrada, saída, finitude, definição, efetividade e correção.
  3. Analisar algoritmos do cotidiano, encontrando ambiguidades, passos faltantes e erros de ordem.
  4. Escrever um algoritmo simples em passos curtos e numerados.

2 Roteiro da aula

Tempo Momento Atividade
0–5 min Retomada Comparação, em duplas, das instruções para trocar uma lâmpada (tarefa da Aula 01).
5–20 min Exposição dialogada Conceito de algoritmo, algoritmo e programa, propriedades de um algoritmo.
20–32 min Atividade em duplas Revisão do algoritmo da lâmpada com base nas propriedades.
32–41 min Exemplo computacional Algoritmo da média: entradas, saídas e passos elementares.
41–45 min Síntese e ponte Resumo da aula e apresentação da tarefa para a Aula 03.

3 Conhecimentos prévios

Aula 01: o que é um programa, o modelo entrada, processamento e saída e a atividade do desenho por instruções, que mostrou por que as instruções para um computador precisam ser precisas.

4 Conteúdo

4.1 Retomando a tarefa: trocar uma lâmpada

Na Aula 01 você escreveu instruções para trocar uma lâmpada queimada. Compare a sua resposta com a de um colega. É provável que vocês encontrem problemas como estes:

  • Ambiguidade: “pegue uma lâmpada” (qualquer uma? de que potência e tipo de rosca?).
  • Passo faltando: ninguém mandou desligar o interruptor, e esse passo é uma questão de segurança.
  • Ordem errada: “coloque a lâmpada nova” antes de “retire a lâmpada queimada”.
  • Fim indefinido: as instruções não dizem quando a tarefa termina (e se a lâmpada nova também não acender?).

Esses problemas não são detalhes. Uma pessoa resolve sozinha boa parte deles, porque tem bom senso. Um computador não tem: ele faz exatamente o que está escrito. Por isso precisamos de uma ideia mais rigorosa de “passo a passo”: o algoritmo.

4.2 O que é um algoritmo

Definição

Algoritmo é uma sequência finita de passos bem definidos que, executados na ordem indicada, resolvem um problema ou realizam uma tarefa.

Repare em três partes da definição: sequência finita (os passos têm ordem e acabam), passos bem definidos (cada passo tem um único significado e pode ser executado) e resolve um problema (o algoritmo existe para chegar a um resultado).

Algoritmos não são exclusivos da computação. Uma receita de bolo, as instruções de montagem de um móvel e o procedimento para sacar dinheiro num caixa eletrônico são algoritmos escritos para pessoas. A palavra vem do nome do matemático persa al-Khwarizmi (século IX), cujos textos sobre cálculo com algarismos indo-arábicos se espalharam pela Europa.

Algoritmo e programa

Algoritmo e programa estão ligados, mas não são a mesma coisa. O algoritmo é a ideia da solução: os passos, independentemente da linguagem em que forem escritos. O programa é um algoritmo escrito em uma linguagem de programação, pronto para o computador executar. Um mesmo algoritmo pode virar programas em Python, Java ou C, assim como uma receita pode ser escrita em português ou em inglês sem mudar o bolo.

Aspecto Algoritmo Programa
O que é A solução, em passos A solução escrita numa linguagem de programação
Para quem Pessoas (e, depois, programadores) O computador
Forma Linguagem natural, diagrama de blocos, pseudocódigo Código em Python, Java, C etc.
Depende da linguagem? Não Sim

4.3 Propriedades de um algoritmo

Para que uma sequência de passos seja um algoritmo de verdade, e não apenas uma lista de sugestões, ela precisa ter as propriedades da tabela abaixo. Elas aparecem na literatura com nomes um pouco diferentes. A tabela segue Souza et al. (2019, seção 3.3), separando em duas propriedades (definição e efetividade) a exigência de passos elementares e sem ambiguidade.

Propriedade O que significa Exemplo de falha
Entrada Recebe zero, um ou mais dados para trabalhar. Calcular a média sem dizer de onde vêm as notas.
Saída Produz pelo menos um resultado. Calcular a média e não mostrar nem guardar o valor.
Finitude Termina depois de um número finito de passos. “Repita: mexa a panela” (sem condição de parada).
Definição Cada passo tem um único significado, sem ambiguidade. “Coloque um pouco de sal”.
Efetividade Cada passo é simples o bastante para ser executado. “Descubra a senha do cofre” como um único passo.
Correção Para entradas válidas, produz o resultado esperado. Média de 8 e 6 dando 11.

Atenção

O que é um “passo simples” depende de quem executa. “Ferva a água” é simples para uma pessoa; para um computador, os passos precisam ser operações elementares como ler um valor, fazer uma conta, comparar dois valores ou mostrar um resultado.

4.4 Um algoritmo do cotidiano, revisado

Veja uma versão do algoritmo da lâmpada que respeita as propriedades. Note que ele usa duas ideias que você vai estudar em detalhe nas próximas aulas: decisão (“se”) e repetição (“enquanto”).

  1. Desligar o interruptor da lâmpada.
  2. Se a lâmpada estiver fora de alcance, posicionar uma escada firme sob ela.
  3. Esperar a lâmpada esfriar.
  4. Girar a lâmpada queimada no sentido anti-horário até soltá-la e retirá-la.
  5. Pegar uma lâmpada nova com o mesmo tipo de rosca e a mesma tensão (V).
  6. Rosquear a lâmpada nova no sentido horário até ficar firme.
  7. Ligar o interruptor.
  8. Enquanto a lâmpada não acender e houver lâmpada nova disponível: desligar o interruptor, repetir os passos 4 a 7 com outra lâmpada.
  9. Se a lâmpada acendeu, guardar a escada; senão, chamar um eletricista.

Entradas: a lâmpada nova e as condições do local. Saída: lâmpada funcionando (ou o aviso para chamar um eletricista). O passo 8 garante a finitude: a repetição para quando a lâmpada acende ou quando as lâmpadas acabam.

4.5 Um algoritmo computacional: a média da Aula 01

Agora um algoritmo pensado para o computador. Ele é a base do programa que o professor executou na Aula 01.

  1. Ler a primeira nota e guardá-la como nota1.
  2. Ler a segunda nota e guardá-la como nota2.
  3. Calcular media = (nota1 + nota2) / 2.
  4. Mostrar a media.
  5. Se media for maior ou igual a 7, mostrar “Aprovado”; senão, mostrar “Precisa de recuperação ou prova final”.
Propriedade Onde aparece no algoritmo da média
Entrada Passos 1 e 2: duas notas.
Saída Passos 4 e 5: a média e a situação.
Finitude Cinco passos, sem repetição: sempre termina.
Definição Cada passo tem um único significado; “maior ou igual a 7” não deixa dúvida.
Efetividade Só há leitura, soma, divisão, comparação e exibição.
Correção Com 8 e 6, a média é 7 e a situação é “Aprovado”, como esperado.

4.6 Formas de representar um algoritmo

A linguagem natural é cômoda, mas ambígua. Por isso existem outras formas de representar algoritmos. Nesta disciplina você vai usar três:

Forma Como é Quando usaremos
Linguagem natural Passos numerados em português, como nesta aula. Aulas 01 e 02, para pensar a solução.
Diagrama de blocos Símbolos gráficos padronizados ligados por setas. Aulas 03 a 05 e sempre que um conceito novo pedir.
Linguagem de programação Código em Python, que o computador executa. A partir da Aula 07.

Existe ainda o pseudocódigo (ou português estruturado), uma escrita intermediária entre o português e uma linguagem de programação. Ele aparece em vários livros, mas nesta disciplina passaremos direto do diagrama de blocos para o Python.

5 Atividade em sala

Revisão do algoritmo da lâmpada (em duplas, 12 minutos).

  1. Juntem as duas versões que vocês trouxeram e escrevam uma única versão melhorada, em passos curtos e numerados.
  2. Troquem a folha com outra dupla.
  3. A outra dupla lê o algoritmo como se fosse um computador: marca cada passo ambíguo, cada passo faltante e qualquer ponto em que a execução poderia não terminar.
  4. Devolvam a folha e corrijam o que foi marcado.

Para discutir

  • Qual propriedade foi violada com mais frequência na turma?
  • Algum passo era simples para uma pessoa, mas impossível de executar sem mais detalhes?
  • O algoritmo de vocês ficou correto para o caso em que a lâmpada nova também está queimada?

6 Síntese

  1. Algoritmo é uma sequência finita de passos bem definidos que resolve um problema; programa é um algoritmo escrito numa linguagem de programação.
  2. Um algoritmo tem entrada, saída, finitude, definição, efetividade e correção.
  3. A linguagem natural é ambígua; por isso usaremos diagramas de blocos e, depois, Python.

7 Exercícios de fixação

  1. Explique, com suas palavras, a diferença entre algoritmo e programa. Dê um exemplo.
  2. Indique a propriedade violada em cada caso: (a) “Misture os ingredientes até ficar bom.” (b) “Repita: some 1 ao contador.” (c) Um algoritmo calcula a área de um retângulo e não mostra o resultado. (d) “Resolva a equação.”
  3. Escreva um algoritmo, em passos numerados, para preparar um copo de suco a partir de suco concentrado e água.
  4. Escreva um algoritmo, em passos numerados, que leia dois números e mostre o maior deles. O que o seu algoritmo faz se os dois números forem iguais?
  5. Identifique as entradas e as saídas de um algoritmo que calcula o valor de uma conta de luz a partir do consumo do mês (em kWh) e do preço do kWh.
  6. Um mesmo algoritmo pode dar origem a programas diferentes? Justifique.

8 Para a próxima aula

Aula 03 – Diagrama de blocos I: símbolos e fluxo sequencial. Vamos representar algoritmos com símbolos gráficos padronizados, começando pelos que não têm decisão nem repetição.

  • Tarefa: escreva, em passos numerados, um algoritmo que leia a quantidade comprada de um produto e o preço unitário e mostre o valor total da compra. Ele será transformado em diagrama de blocos na Aula 03.
  • Leitura recomendada: SEVERANCE (2020), Python para Todos, capítulo 1, seções “Entendendo programação” e “O que é um programa?”. Download gratuito: http://do1.dr-chuck.com/pythonlearn/PT_br/pythonlearn.pdf.
  • Leitura complementar: SOUZA et al. (2019), capítulo 3, seções 3.1 a 3.4; MANZANO e OLIVEIRA (2019), capítulo 2, seções 2.1 e 2.2; LOPES e GARCIA (2002), capítulo 1.

Referências

  1. LOPES, Anita; GARCIA, Guto. Introdução à programação: 500 algoritmos resolvidos. Rio de Janeiro: Elsevier, 2002.
  2. MANZANO, José Augusto N. G.; OLIVEIRA, Jayr Figueiredo de. Algoritmos: lógica para desenvolvimento de programação de computadores. 29. ed. São Paulo: Érica, 2019.
  3. SEVERANCE, Charles R. Python para todos: explorando dados com Python 3. Tradução: Yuri Loia et al. [S. l.: s. n.], 2020. Licença CC BY-NC-SA 3.0. Disponível em: http://do1.dr-chuck.com/pythonlearn/PT_br/pythonlearn.pdf. Acesso em: 9 out. 2026.
  4. SOUZA, Marco Antonio Furlan de et al. Algoritmos e lógica de programação. 3. ed. São Paulo: Cengage Learning, 2019.
Click to listen highlighted text!