Da Solução ao Algoritmo: Representando Problemas
Tema da aula
Como transformar uma solução em um algoritmo organizado?
Na aula anterior descobrimos que:
- computadores não pensam;
- precisamos fornecer instruções;
- essas instruções formam um algoritmo;
- antes de escrever qualquer algoritmo devemos compreender o problema.

Hoje responderemos outra pergunta:
Como organizar essas informações para que possamos escrever algoritmos corretamente?
Objetivos da aula
Ao final desta aula o estudante deverá ser capaz de:
- identificar corretamente um problema;
- separar dados importantes de dados irrelevantes;
- identificar entradas;
- identificar saídas;
- definir o processamento;
- construir algoritmos simples em linguagem natural;
- escrever seus primeiros algoritmos em Portugol utilizando entrada e saída.
Revisão da Aula 01
Perguntas
- O que é um algoritmo?
- Todo passo a passo é um algoritmo?
- O computador pensa?
- O que significa algoritmo finito?
- O que significa algoritmo correto?
- Quais eram as quatro perguntas que todo programador faz?
Motivação
“Quanto custa pintar uma parede?”
“Como responder essa pergunta?”
Possíveis respostas:
- depende do tamanho;
- depende da tinta;
- depende da mão de obra;
- depende da quantidade de demãos.
Pergunta:
Qual dessas informações realmente precisamos?
Todo problema possui informações
Todo algoritmo resolve um problema.
Mas nenhum algoritmo consegue resolver um problema sem informações.
Essas informações podem ser:
- fornecidas pelo usuário;
- medidas;
- consultadas em um banco de dados;
- calculadas por outro algoritmo.
Essas informações recebem um nome muito importante:
Dados de entrada.
Modelo Universal dos Algoritmos
Quadro:
ENTRADA
↓
PROCESSAMENTO
↓
SAÍDA
Então:
Todo algoritmo, dos mais simples aos mais complexos, pode ser entendido por esse modelo.
Entrada
São as informações necessárias para resolver o problema.
Exemplos:
- idade;
- salário;
- nota;
- peso;
- altura;
- temperatura.
Sem entrada não há problema a resolver.
Como analisar qualquer problema
Sempre que precisar desenvolver um algoritmo, utilize a seguinte sequência de raciocínio:
PROBLEMA
↓
Quais são as entradas?
↓
Como esses dados serão processados?
↓
Qual será a saída?
↓
Escrever o algoritmo
↓
Validar a solução (Teste de Mesa)
Processamento
É o conjunto de operações realizadas com os dados.
Pode envolver:
- cálculos;
- comparações;
- decisões;
- repetições;
- organização de informações.
O processamento representa o “trabalho” executado pelo computador.
Saída
É o resultado produzido pelo algoritmo.
Exemplos:
- média do aluno;
- valor do salário;
- preço final;
- mensagem;
- relatório.
Sem saída, o algoritmo não entrega valor ao usuário.
Estudo de Caso 1 — Média Escolar
Problema: Calcular a média de duas notas.
Qual é a entrada?
- Nota 1
- Nota 2
Qual é o processamento?
média ← (nota1 + nota2) / 2
Qual é a saída?
média
Esquema:
Entrada
nota1
nota2
↓
Processamento
média ← (nota1 + nota2)/2
↓
Saída
média
Estudo de Caso 2 — Área de um Terreno
Problema:
Calcular a área de um terreno retangular.
Pergunta:
O que precisamos saber?
Resposta:
- comprimento;
- largura.
Processamento:
área ← comprimento × largura
Resultado:
área
Estudo de Caso 3 — Consumo de Combustível
Problema:
Um automóvel percorreu 480 km consumindo 40 litros de combustível.
Calcule o consumo médio.
Perguntas:
Entrada?
- distância;
- litros.
Processamento:
consumo ← distância ÷ litros
Saída:
consumo médio
Nem toda informação é importante
Problema:
João, estudante do IFPE, possui 19 anos, mora em Palmares, mede 1,80 m e tirou 8,5 e 9,0 em Lógica de Programação.
Pergunta:
Queremos calcular a média.
Quais informações realmente interessam?
Abstração: identificar apenas os dados relevantes para resolver um problema.
Exercício de Abstração
Um posto de saúde deseja calcular o Índice de Massa Corporal (IMC) de um paciente.
Durante o atendimento foram registrados os seguintes dados:
- Nome;
- CPF;
- Peso;
- Altura;
- Estado civil;
- Cor dos olhos;
- Número do cartão do SUS;
- Idade.
Pergunta
Quais informações são realmente necessárias para calcular o IMC?
Resposta esperada
As únicas informações necessárias são:
- Peso;
- Altura.
As demais informações podem ser importantes para o cadastro do paciente, mas não participam do cálculo do IMC.
Essa capacidade de selecionar apenas os dados relevantes recebe o nome de abstração.
Segundo exercício de abstração
Local de inserção:
Imediatamente após o exercício anterior.
Exercício de Abstração
Uma locadora deseja calcular o valor do aluguel de um veículo.
As seguintes informações estão disponíveis:
- Nome do cliente;
- CPF;
- Modelo do veículo;
- Cor do veículo;
- Quantidade de diárias;
- Valor da diária;
- Quilometragem inicial;
- Quilometragem final;
- Cidade onde o cliente mora.
Pergunta
Quais informações são necessárias para calcular o valor do aluguel?
Discussão
Observe que algumas informações são importantes para o cadastro do cliente, mas não para resolver o problema proposto. Um bom programador identifica apenas os dados realmente necessários para cada situação.
Construindo Algoritmos em Linguagem Natural
Problema:
Calcular a idade de uma pessoa.
Algoritmo:
- Ler o ano de nascimento.
- Ler o ano atual.
- Calcular a diferença entre os anos.
- Mostrar a idade.
Pergunta:
- Está claro?
- Está completo?
- Pode melhorar?
Introdução ao Portugol
O Portugol é uma forma padronizada de escrever algoritmos (linguagem de programação).
Estrutura mínima:
Algoritmo "Nome"
Var
Inicio
FimAlgoritmo
Primeiro Algoritmo com Entrada e Saída
Problema:
Ler o nome de uma pessoa e exibir uma mensagem.
Algoritmo "BoasVindas"
Var
nome : caractere
Inicio
Escreva("Digite seu nome: ")
Leia(nome)
Escreva("Olá ", nome)
FimAlgoritmo
Comandos:
Escreva→ mostra informações.Leia→ recebe informações.nome→ espaço para armazenar um dado.
Exercícios em Sala
Organize em três níveis.
Nível 1 — Identificação
Para cada problema, identifique:
- Entrada
- Processamento
- Saída
Problemas:
- Calcular o dobro de um número.
- Calcular a idade de uma pessoa.
- Calcular o perímetro de um retângulo.
- Calcular o salário com aumento de 10%.
- Converter horas em minutos.
Nível 2 — Linguagem Natural
Escreva o algoritmo em linguagem natural para:
- calcular a área de um círculo;
- calcular o IMC;
- calcular o troco de uma compra.
Nível 3 — Portugol
Escreva em Portugol:
- Ler dois números e mostrar sua soma.
- Ler comprimento e largura e calcular a área.
- Ler um nome e uma idade e exibir uma mensagem personalizada.
Estudo de Caso — Folha de Pagamento
Uma empresa paga aos seus funcionários um salário-base e um adicional por hora extra.
Pergunta:
Quais informações precisamos conhecer?
Possíveis repostas:
- salário-base;
- quantidade de horas extras;
- valor da hora extra.
Perguntas:
- Qual será o processamento?
- Qual será a saída?
Escreva o algoritmo.
Erros Frequentes
Durante a construção de algoritmos, alguns erros são muito comuns entre os iniciantes.
Evite os seguintes equívocos:
- Confundir entrada com saída;
- Esquecer alguma informação necessária para resolver o problema;
- Utilizar informações desnecessárias no processamento;
- Escrever o algoritmo antes de compreender completamente o problema;
- Colocar o resultado do problema como dado de entrada;
- Esquecer de apresentar o resultado ao usuário.
Sempre que terminar um algoritmo, revise cada etapa e confirme se ela está coerente com o problema proposto.
Desafio
Uma locadora cobra:
- R$ 120,00 por diária de um veículo;
- R$ 0,80 por quilômetro rodado.
Sem escrever o algoritmo, identifique:
Entrada
Processamento
Saída
Observe que o problema não fornece a fórmula pronta. Antes de escrever qualquer algoritmo, é necessário compreender quais informações serão utilizadas e como elas se relacionam para produzir o resultado esperado.
Exercício – Validação da Solução (Teste de Mesa)
Depois de construir um algoritmo, o próximo passo é verificar se ele realmente resolve o problema proposto. Uma das maneiras mais simples de fazer isso é por meio do teste de mesa, que consiste em simular manualmente a execução do algoritmo, acompanhando o valor das variáveis a cada etapa.
Problema
Uma papelaria deseja calcular o valor final de uma compra.
O algoritmo recebe o preço de um produto e a quantidade comprada. Em seguida, calcula o valor total da compra e exibe o resultado.
Algoritmo em Portugol
Algoritmo "Valor_da_Compra"
Var
preco, total : Real
quantidade : Inteiro
Inicio
Escreva("Preço do produto: ")
Leia(preco)
Escreva("Quantidade: ")
Leia(quantidade)
total <- preco * quantidade
Escreva("Valor total = R$ ", total)
FimAlgoritmo
Teste de Mesa
Considere os seguintes valores de entrada:
-
Preço do produto = R$ 12,50
-
Quantidade = 4
Complete a tabela abaixo.
| Etapa | Preço | Quantidade | Total |
| Após a leitura do preço | |||
| Após a leitura da quantidade | |||
| Após o cálculo do total | |||
| Valor exibido ao usuário |
Perguntas
-
Qual será o valor final exibido pelo algoritmo?
-
O algoritmo resolveu corretamente o problema?
( ) Sim
( ) Não
Justifique.
-
O que aconteceria se a quantidade fosse igual a 0?
-
O algoritmo continuaria funcionando se o preço fosse R$ 8,90 e a quantidade 12? Faça um novo teste de mesa para confirmar.
Desafio
Teste de mesa utilizando:
-
Preço = R$ 35,90
-
Quantidade = 3
Preencha a tabela.
| Etapa | Preço | Quantidade | Total |
| Após a leitura do preço | |||
| Após a leitura da quantidade | |||
| Após o cálculo do total | |||
| Valor exibido ao usuário |
Conclusão
Um algoritmo não deve ser considerado correto apenas porque “parece certo”. Antes de implementá-lo em uma linguagem de programação, é importante validá-lo utilizando diferentes conjuntos de dados. O teste de mesa permite identificar erros de lógica, confirmar se os cálculos estão corretos e verificar se o algoritmo realmente produz os resultados esperados. Essa técnica é amplamente utilizada no ensino de algoritmos e no desenvolvimento de software como etapa inicial de verificação da solução.
Resumo da Aula
Nesta aula você aprendeu que:
- Todo algoritmo resolve um problema.
- Todo problema precisa de informações para ser resolvido.
- Essas informações podem ser classificadas como entrada, processamento e saída.
- Nem toda informação disponível é relevante para resolver um problema; selecionar apenas os dados importantes é um processo chamado abstração.
- Um algoritmo pode ser escrito inicialmente em linguagem natural e, posteriormente, em Portugol.
- Antes de implementar uma solução, é importante verificar se ela funciona corretamente utilizando o teste de mesa.
Fechamento
O modelo central da aula:
PROBLEMA
↓
ENTRADA
↓
PROCESSAMENTO
↓
SAÍDA
↓
ALGORITMO
Ideia central:
Todo algoritmo começa pela compreensão do problema. Antes de pensar em comandos, um bom programador identifica quais dados serão utilizados, como serão processados e qual resultado deve ser produzido. A sintaxe vem depois; o raciocínio vem primeiro.
Fim da aula
