Algoritmos (ADS) – Aula 05

ALGORITMOS – AULA 05 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 e prática
Aula anterior Aula 04 – Diagrama de blocos II: decisão e repetição
Próxima aula Aula 06 – Linguagens de programação: níveis, compilação, interpretação e Python

1 Objetivos da aula

  1. Aplicar um método em etapas para ir do enunciado de um problema até o algoritmo.
  2. Identificar entradas, processamento e saídas a partir de um enunciado.
  3. Executar o teste de mesa de diagramas com decisão e repetição.
  4. Escolher casos de teste que revelem erros: típico, limite e inválido.

2 Roteiro da aula

Tempo Momento Atividade
0–5 min Retomada O diagrama dos pares de 2 a 20 (tarefa da Aula 04): como ter certeza de que está certo?
5–20 min Exposição dialogada Método de resolução; entradas, processamento e saídas; teste de mesa; casos de teste.
20–38 min Prática guiada Do enunciado ao diagrama, com teste de mesa, em duplas.
38–42 min Demonstração O computador imprimindo o próprio teste de mesa.
42–45 min Síntese e ponte Resumo e tarefa para a Aula 06.

3 Conhecimentos prévios

Aulas 03 e 04: símbolos do diagrama de blocos, decisão e repetição com contador.

4 Conteúdo

4.1 Um método para resolver problemas

Diante de um enunciado, a tentação é começar a desenhar (ou, mais tarde, a programar) imediatamente. Um método em etapas evita retrabalho. O roteiro abaixo é inspirado no método de resolução de problemas do matemático George Pólya (compreender, planejar, executar e revisar), adaptado à programação:

  1. Entender o problema: ler o enunciado com atenção e reescrevê-lo com suas palavras.
  2. Identificar as entradas, o processamento e as saídas.
  3. Escolher exemplos cuja resposta você já conhece, calculando à mão.
  4. Desenhar o algoritmo (diagrama de blocos; depois, código).
  5. Testar o algoritmo com os exemplos, usando o teste de mesa.
  6. Corrigir o que o teste revelou e testar de novo.

4.2 Do enunciado às entradas, ao processamento e às saídas

O modelo entrada, processamento e saída da Aula 01 é a ferramenta da etapa 2. Uma dica: os substantivos que o enunciado fornece costumam ser entradas; o que ele pede é a saída; as regras e fórmulas descrevem o processamento.

Enunciado Entradas Processamento Saídas
Calcular o valor da conta de luz, dados o consumo do mês (kWh) e o preço do kWh. consumo, preco valor ← consumo × preco valor
Calcular o troco de uma compra, dados o total e o valor pago. total, pago troco ← pago − total troco
Informar se um estudante pode fazer a prova final, dada a média (de 2,0 até abaixo de 7,0). media media ≥ 2 e media < 7 “Pode” ou “Não pode”
Somar todos os números inteiros de 1 até n. n repetir: soma ← soma + cont soma

4.3 Teste de mesa

Definição

Teste de mesa é a simulação manual de um algoritmo, passo a passo, anotando numa tabela o valor de cada variável depois de cada passo, para conferir se a saída é a esperada.

Souza et al. (2019, seção 3.5.5) chamam essa técnica de simulação de algoritmos. A tabela tem uma coluna para cada variável, uma para as condições testadas e uma para as saídas. Cada linha registra um momento da execução.

Exemplo com decisão

No diagrama da média da Aula 04 (Figura 2 daquela aula), três testes cobrem os caminhos possíveis:

Teste nota1 nota2 media media ≥ 7? Saída
1 8 9 8,5 V Aprovado
2 5 6 5,5 F Não aprovado
3 7 7 7,0 V Aprovado

Exemplo com repetição

A Figura 1 soma os números de 1 até n. Veja o teste de mesa com n = 4; a resposta esperada, calculada à mão, é 1 + 2 + 3 + 4 = 10.

Figura 1 – Soma dos números de 1 a n

Momento n soma cont cont ≤ n? Saída
Início 4 – – – –
Inicialização 4 0 1 – –
Volta 1 4 1 2 1 ≤ 4: V –
Volta 2 4 3 3 2 ≤ 4: V –
Volta 3 4 6 4 3 ≤ 4: V –
Volta 4 4 10 5 4 ≤ 4: V –
Saída do laço 4 10 5 5 ≤ 4: F 10

Cada linha “Volta” mostra os valores depois de executar soma ← soma + cont e cont ← cont + 1. O teste de mesa confirma a saída 10. Note que a condição é testada uma vez a mais do que o número de voltas: é a última verificação, falsa, que encerra o laço.

4.4 Escolhendo casos de teste

Um teste só revela um erro se passar pelo trecho errado. Por isso, escolha casos de três tipos:

Tipo de caso O que testa Exemplo no algoritmo da média
Típico Um valor comum, no meio da faixa. Notas 8 e 9 (média 8,5)
Limite Os valores exatamente na fronteira de uma condição. Notas 7 e 7 (média 7,0): aprovado?
Inválido Um valor fora do que o problema admite. Nota 11 ou −2: o algoritmo deveria aceitar?

O caso limite é o que mais revela erros: trocar ≥ por > muda apenas o resultado da média exatamente 7,0, como você viu no exercício 4 da Aula 01. Casos inválidos mostram que o algoritmo ainda não se protege de entradas erradas; a validação de entrada será estudada na Aula 24.

4.5 Encontrando um erro com o teste de mesa

A Figura 2 é quase igual à Figura 1, mas tem um erro. Faça o teste de mesa com n = 4 antes de ler a resposta.

Figura 2 – Soma de 1 a n com um erro escondido

Momento soma cont cont < n? Saída
Inicialização 0 1 – –
Volta 1 1 2 1 < 4: V –
Volta 2 3 3 2 < 4: V –
Volta 3 6 4 3 < 4: V –
Saída do laço 6 4 4 < 4: F 6

A saída é 6, mas o esperado é 10: o número 4 nunca é somado, porque a condição cont < n fica falsa quando cont chega a 4. A correção é usar cont ≤ n. Esse tipo de erro, em que o laço executa uma vez a menos (ou a mais) do que deveria, é tão comum que tem nome em inglês: off-by-one.

5 Prática guiada

Para cada problema, em duplas (18 minutos): (a) identifique entradas, processamento e saídas; (b) escolha dois casos de teste e calcule a resposta à mão; (c) desenhe o diagrama de blocos; (d) faça o teste de mesa.

  1. Ler o total de uma compra e o valor pago e mostrar o troco. Se o valor pago for menor que o total, mostrar “Valor insuficiente”.
  2. Ler a média de um estudante e mostrar “Aprovado”, “Prova final” ou “Reprovado”, pela regra da disciplina. Inclua os casos limite 7,0 e 2,0.
  3. Desafio: ler 5 números e mostrar quantos são positivos.

6 Demonstração: o computador fazendo o teste de mesa

O professor vai executar o programa abaixo, que segue a Figura 1 e imprime uma linha a cada volta, como no teste de mesa. Mais adiante, nas aulas de depuração (16, 29 e 65), você vai acompanhar os valores das variáveis com uma ferramenta do VS Code, sem precisar desses print.

n = int(input("n: "))
soma = 0
cont = 1
print("cont | cont <= n | soma")
while cont <= n:
    soma = soma + cont
    print(f"{cont:4} | {'V':>9} | {soma:4}")
    cont = cont + 1
print(f"{cont:4} | {'F':>9} | {soma:4}")
print("Soma:", soma)

Uma execução possível (o valor 4 foi digitado pelo usuário):

n: 4
cont | cont <= n | soma
   1 |         V |    1
   2 |         V |    3
   3 |         V |    6
   4 |         V |   10
   5 |         F |   10
Soma: 10

Atenção: o programa imprime o valor de cont antes de atualizá-lo, por isso a coluna cont aparece deslocada em relação ao teste de mesa da seção 4.3, que registra os valores depois de cada volta. Os valores de soma são os mesmos.

7 Síntese

  1. Resolver problemas em etapas: entender, identificar entradas, processamento e saídas, escolher exemplos, desenhar, testar e corrigir.
  2. O teste de mesa simula o algoritmo à mão, registrando os valores das variáveis a cada passo.
  3. Bons casos de teste incluem valores típicos, limites e inválidos; o caso limite revela os erros mais comuns.

8 Exercícios de fixação

  1. Identifique entradas, processamento e saídas: (a) calcular o IMC (peso dividido pelo quadrado da altura); (b) converter um valor em reais para dólares, dada a cotação; (c) informar se um ano tem mais de 365 dias.
  2. Faça o teste de mesa da Figura 1 com n = 1 e com n = 0. As saídas fazem sentido?
  3. Faça o teste de mesa da Figura 3 com n = 5 e com n = 6. O que muda na última volta?
  4. Escolha três casos de teste (típico, limite e inválido) para o diagrama do maior de dois números (Figura 4). Faça o teste de mesa e diga o que o diagrama mostra quando os números são iguais.
  5. Faça o teste de mesa do diagrama dos pares de 2 a 20 que você trouxe como tarefa. Ele exibe exatamente dez números?

Figura 3 – Contagem regressiva (exercício 3)

Figura 4 – Maior de dois números (exercício 4)

9 Para a próxima aula

Aula 06 – Linguagens de programação: níveis, compilação, interpretação e Python. Até aqui os algoritmos foram executados por nós. Na próxima aula veremos como um algoritmo vira algo que o computador executa.

  • Tarefa: pesquise o nome de três linguagens de programação e para que cada uma é usada. Use sites ou livros, sem IA, e anote a fonte de cada informação.
  • Leitura recomendada: SEVERANCE (2020), Python para Todos, capítulo 1, seções “Arquitetura de hardware de computadores” e “Terminologia: interpretador e compilador”. Download gratuito: http://do1.dr-chuck.com/pythonlearn/PT_br/pythonlearn.pdf.
  • Leitura complementar: SOUZA et al. (2019), capítulo 3, seção 3.5.5.

Referências

  1. 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.
  2. 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!