Introdução
Vivemos em uma sociedade profundamente dependente da tecnologia. Sistemas computacionais controlam bancos, hospitais, indústrias, redes de transporte, telecomunicações, comércio eletrônico, serviços públicos e praticamente todas as atividades econômicas. Nesse cenário, a capacidade de compreender como esses sistemas funcionam deixou de ser um conhecimento restrito aos profissionais de Tecnologia da Informação e passou a representar uma competência valorizada em diversas áreas do mercado de trabalho. Mais do que aprender a utilizar computadores, torna-se fundamental desenvolver a capacidade de analisar problemas, organizar informações e construir soluções de maneira estruturada.
A Lógica de Programação é a porta de entrada para esse desenvolvimento. Antes de aprender qualquer linguagem de programação, é necessário aprender a pensar de forma lógica, organizada e sistemática. Um algoritmo nada mais é do que uma sequência finita e ordenada de passos para resolver um problema ou realizar uma tarefa. Ao estudar algoritmos, o estudante aprende a decompor problemas complexos em problemas menores, identificar entradas e saídas, estabelecer regras, testar soluções e avaliar seus resultados. Essa forma de raciocínio constitui a base do pensamento computacional, uma habilidade reconhecida internacionalmente como essencial para a formação de profissionais e cidadãos na sociedade digital.
Entretanto, o pensamento computacional vai muito além da programação de computadores. Ele desenvolve uma maneira disciplinada de raciocinar que pode ser aplicada à resolução de problemas em qualquer área do conhecimento e da vida cotidiana. Planejar uma viagem, organizar um projeto, administrar recursos, elaborar uma pesquisa científica ou tomar decisões estratégicas são atividades que se beneficiam de um pensamento estruturado, lógico e orientado por etapas. Assim, ao longo desta disciplina, o objetivo não será apenas aprender a escrever algoritmos em Portugol, mas principalmente desenvolver uma forma de pensar que permitirá analisar problemas de maneira eficiente, propor soluções bem fundamentadas e enfrentar desafios cada vez mais complexos, independentemente da área profissional escolhida.
Algoritmo
Hoje vocês vão aprender por que computadores são “burros”.
O que é um algoritmo?
Antes de aprender qualquer linguagem de programação, precisamos responder a uma pergunta simples:
Como ensinar um computador a resolver um problema?
A resposta é:criando um algoritmo.
Um algoritmo é uma sequência finita, lógica e ordenada de instruções que descreve como realizar uma tarefa ou resolver um problema.
Observe três palavras importantes dessa definição:
-
Sequência: existe uma ordem para executar as instruções.
-
Lógica: cada passo deve fazer sentido.
-
Finita: o algoritmo precisa terminar em algum momento.
Se qualquer um desses três requisitos não for atendido, dificilmente teremos um algoritmo correto.
Algoritmos fazem parte da nossa vida
Embora associemos algoritmos aos computadores, eles existem muito antes deles.
Todos os dias seguimos algoritmos sem perceber.
Por exemplo:
- uma receita de bolo;
- um manual de montagem de um móvel;
- as instruções de uma prova prática de direção;
- o procedimento para sacar dinheiro em um caixa eletrônico;
- um protocolo médico;
- um plano de voo.
Em todos esses casos existe uma sequência organizada de passos que conduz a um objetivo.
O computador faz exatamente a mesma coisa.
A diferença é que ele exige que todas as instruções sejam extremamente precisas.
Um exemplo cotidiano
Imagine o problema:
Preparar uma xícara de café.
Uma pessoa provavelmente diria:
Faça um café.
Mas isso não serve para um computador.
Ele precisa saber absolutamente tudo.
Um algoritmo poderia ser:
- Pegar uma xícara.
- Colocar água para aquecer.
- Colocar pó de café no filtro.
- Despejar a água quente sobre o pó.
- Esperar o café passar.
- Colocar o café na xícara.
- Servir.
- Perceba que nenhum passo pode ficar implícito.
O computador não possui bom senso.
Características de um bom algoritmo
Nem toda sequência de instruções é um bom algoritmo.
Um algoritmo deve possuir algumas características importantes.
Correto
Resolve corretamente o problema.
Exemplo:
Calcular a média de um aluno.
Se o algoritmo calcula errado, ele não serve.
Claro
Cada instrução deve possuir apenas um significado.
Por exemplo:
❌ “Pegue um número grande.”
O que significa “grande”?
Já:
✅ “Leia um número inteiro.”
é uma instrução perfeitamente clara.
Ordenado
A ordem influencia o resultado.
Observe:
Algoritmo A
-
Vestir o sapato.
-
Calçar a meia.
Funciona?
Não.
Agora:
Algoritmo B
-
Calçar a meia.
-
Vestir o sapato.
Agora funciona.
A lógica depende da sequência.
Finito
Um algoritmo deve terminar.
Por exemplo:
Enquanto verdadeiro faça
escreva("Olá")
FimEnquanto
Esse algoritmo nunca termina.
Logo, não atende à definição clássica de algoritmo (embora programas desse tipo existam em sistemas operacionais e servidores, cuja finalidade é justamente permanecer em execução).
Eficiente
Existem várias maneiras de resolver o mesmo problema.
Algumas são melhores.
Imagine procurar um nome em uma lista telefônica.
Você pode:
-
começar na primeira página;
-
começar na última;
-
abrir aproximadamente no meio.
Todas resolvem o problema.
Mas algumas resolvem muito mais rápido.
Na Ciência da Computação, buscamos algoritmos que resolvam corretamente o problema utilizando menos tempo e menos recursos computacionais.
Esse conceito será aprofundado mais adiante na disciplina.
Todo algoritmo possui três partes
Independentemente do problema, praticamente todo algoritmo pode ser dividido em três etapas.
ENTRADA
│
▼
PROCESSAMENTO
│
▼
SAÍDA
Entrada
São os dados fornecidos ao algoritmo.
Exemplos:
- idade;
- salário;
- nota;
- quantidade;
- nome.
Processamento
É o conjunto de operações realizadas sobre os dados.
Pode envolver:
- cálculos;
- comparações;
- decisões;
- repetições.
É aqui que acontece o “raciocínio” do algoritmo.
Saída
É o resultado produzido.
Pode ser:
- uma mensagem;
- um valor;
- uma decisão;
- um relatório.
Exemplo em Portugol
Problema: calcular a área de um retângulo.
Entrada
- base
- altura
- Processamento
área ← base × altura
Saída
mostrar área
Agora em Portugol:
Algoritmo "AreaRetangulo"
Var
base, altura, area : real
Inicio
Escreva("Digite a base: ")
Leia(base)
Escreva("Digite a altura: ")
Leia(altura)
area <- base * altura
Escreva("Área = ", area)
FimAlgoritmo
Como um programador pensa?
Uma dúvida muito comum entre os estudantes iniciantes é:
“Professor, como eu sei o que escrever no algoritmo?”
Essa é uma excelente pergunta.
Muitos acreditam que programadores experientes decoram algoritmos ou conseguem escrever códigos complexos de memória. Na realidade, isso raramente acontece.
O que diferencia um bom programador não é sua capacidade de decorar comandos, mas sim sua capacidade de analisar um problema antes de tentar resolvê-lo.
Em outras palavras, antes de escrever qualquer linha de algoritmo, um programador procura compreender completamente o problema que precisa resolver.
Por isso, nesta disciplina, adotaremos sempre o mesmo roteiro de raciocínio.
Sempre que um novo problema for apresentado, faremos quatro perguntas fundamentais.
Primeira pergunta
Qual é o problema?
Pode parecer uma pergunta simples, mas muitos erros surgem porque o estudante começa a pensar na solução antes mesmo de compreender o problema.
Imagine o seguinte enunciado:
Desenvolva um algoritmo que calcule a média de um aluno.
Antes de pensar em fórmulas ou comandos, devemos compreender exatamente o que está sendo pedido.
O objetivo não é imprimir as notas.
Também não é verificar se o aluno foi aprovado.
O problema consiste apenas em calcular a média.
Somente quando o objetivo estiver perfeitamente claro devemos prosseguir.
Segunda pergunta
Quais informações eu preciso?
Todo algoritmo trabalha com informações.
Essas informações são chamadas de dados de entrada.
Nesse problema, pergunte aos alunos:
Para calcular uma média, quais informações precisamos conhecer?
Normalmente surgirão respostas como:
- a primeira nota;
- a segunda nota.
As entradas do algoritmo são:
Entradas
- nota1
- nota2
Terceira pergunta
O que deve ser feito com essas informações?
Agora já sabemos quais dados teremos.
Precisamos descobrir o processamento.
Pergunta:
Como vocês calculam a média de duas notas?
Resposta:
Somando as notas e dividindo por dois.
O processamento será:
média ← (nota1 + nota2) / 2
O computador não cria informações. Ele apenas transforma dados de entrada em novos resultados.
Quarta pergunta
O que deve ser apresentado ao usuário?
Depois que o computador termina os cálculos, alguém precisa receber o resultado.
Pergunta:
O que o usuário deseja saber?
Resposta:
A média.
Logo:
Saída
-
média
Montando a solução
Somente agora reunimos todas as respostas.
Observe que ainda não escrevemos um algoritmo.
Primeiro organizamos o raciocínio.
| Etapa | Resposta |
| Problema | Calcular a média de um aluno |
| Entradas | nota1, nota2 |
| Processamento | média ← (nota1 + nota2) / 2 |
| Saída | média |
Depois de preencher essas quatro etapas, escrever o algoritmo torna-se muito mais simples.
Agora sim, escrevemos o algoritmo
Algoritmo "MediaAluno"
Var
nota1, nota2, media : real
Inicio
Leia(nota1)
Leia(nota2)
media ← (nota1 + nota2) / 2
Escreva(media)
FimAlgoritmo
O algoritmo não surgiu do nada. Ele foi consequência do raciocínio desenvolvido anteriormente.
Um segundo exemplo
Antes que os alunos pensem que isso funciona apenas para médias, apresente outro problema.
Problema
Calcular a área de um retângulo.
Não escreva nenhuma linha de algoritmo.
Faça novamente as quatro perguntas.
Qual é o problema?
Calcular a área.
Quais informações preciso?
- base
- altura
Qual processamento?
área ← base × altura
Qual será a saída?
área
Somente depois escreva o algoritmo.
Um terceiro exemplo
Repita o processo.
Problema:
Calcular o salário de um funcionário após um aumento de 15%.
Novamente:
| Pergunta | Resposta |
| Problema | Calcular o novo salário |
| Entrada | salário atual |
| Processamento | aumento ← salário × 0,15novo_salário ← salário + aumento |
| Saída | novo salário |
Existe um padrão?
Criando um hábito mental
Independentemente da complexidade do problema, o processo será sempre o mesmo.
- Qual é o problema?
- Quais são as entradas?
- Qual é o processamento?
- Qual será a saída?
Esse método evita que o programador iniciante comece a programar de maneira impulsiva, reduz significativamente os erros de lógica e aproxima sua forma de pensar daquela utilizada por programadores experientes.
Antes de escrever qualquer algoritmo…
Adotaremos, ao longo de toda a disciplina, uma metodologia de análise do problema. Antes de programar, responderemos sempre às seguintes perguntas:
- Qual é o problema que deve ser resolvido?
- Quais são os dados de entrada?
- Qual processamento deve ser realizado?
- Qual será a saída produzida?
- Existe mais de uma maneira de resolver esse problema? Qual delas parece mais simples ou eficiente?
Erros comuns na construção de algoritmos
Mesmo conhecendo a definição de algoritmo, é comum que iniciantes cometam erros ao elaborar uma solução para um problema. Muitas vezes, esses erros não estão relacionados à linguagem de programação, mas sim ao próprio raciocínio utilizado para construir a sequência de instruções.
Conhecer esses erros ajuda o estudante a evitá-los desde o início da disciplina.
1. Omitir etapas
Um dos erros mais frequentes é deixar etapas implícitas, imaginando que o computador será capaz de “adivinhar” o que deve ser feito.
Por exemplo, considere o algoritmo abaixo para fazer um café:
- Coloque água.
- Coloque o café na xícara.
- Sirva.
O algoritmo está incompleto.
Perguntas importantes permanecem sem resposta:
- Onde colocar a água?
- A água deve estar quente?
- Como preparar o café?
- Em que momento utilizar o filtro?
Enquanto uma pessoa consegue imaginar essas etapas, o computador não possui essa capacidade.
2. Executar etapas na ordem errada
A ordem das instruções influencia diretamente o resultado.
Observe o exemplo:
Algoritmo incorreto
- Assar o bolo.
- Misturar os ingredientes.
Claramente o algoritmo não funciona.
A simples troca da ordem altera completamente o resultado.
3. Utilizar instruções ambíguas
Um algoritmo deve ser preciso.
Expressões como:
- Pegue um número grande.
- Espere um pouco.
- Faça rapidamente.
- Coloque bastante açúcar.
não possuem significado exato.
O computador precisa de informações objetivas.
Por exemplo:
- Leia um número inteiro.
- Aguarde 30 segundos.
- Adicione 10 gramas de açúcar.
4. Esquecer o objetivo do problema
É comum que o estudante comece a escrever instruções antes de compreender exatamente qual problema deve ser resolvido.
Sempre pergunte:
Qual é o objetivo do algoritmo?
Um algoritmo só pode ser considerado correto quando resolve exatamente o problema proposto.
Algoritmos e o pensamento computacional
A construção de algoritmos está diretamente relacionada ao desenvolvimento do pensamento computacional.
O pensamento computacional consiste em utilizar estratégias organizadas para compreender problemas e construir soluções eficientes.
Embora tenha origem na Ciência da Computação, ele pode ser aplicado em praticamente qualquer área do conhecimento.
Seus quatro pilares são:
Decomposição
Consiste em dividir um problema complexo em problemas menores.
Por exemplo, organizar uma viagem pode envolver:
- escolher o destino;
- comprar passagens;
- reservar hospedagem;
- preparar a bagagem.
Resolver pequenas partes costuma ser mais fácil do que resolver o problema inteiro de uma só vez.
Reconhecimento de padrões
Após resolver diversos problemas, percebemos que muitos deles apresentam características semelhantes.
Por exemplo:
Calcular a média de um aluno e calcular a média de uma turma utilizam praticamente a mesma lógica.
Identificar padrões permite reutilizar soluções já conhecidas.
Abstração
Abstrair significa concentrar-se apenas nas informações importantes para resolver o problema.
Imagine um algoritmo para calcular a média de um aluno.
Informações como:
- cor da camisa;
- número do sapato;
- cor do cabelo;
não possuem importância para esse problema.
Já as notas do aluno são essenciais.
Abstrair significa separar o que é relevante do que não é.
Construção de algoritmos
Depois de compreender o problema, identificar padrões e selecionar apenas as informações importantes, construímos um algoritmo capaz de produzir a solução.
Esses quatro pilares serão utilizados continuamente durante toda a disciplina.
Um problema pode possuir várias soluções
Uma característica importante da programação é que um mesmo problema pode ser resolvido de diversas maneiras.
Por exemplo, para calcular a área de um retângulo, diferentes programadores podem escrever algoritmos diferentes.
Desde que produzam o resultado correto, todos podem ser considerados válidos.
Entretanto, alguns serão:
- mais simples;
- mais organizados;
- mais rápidos;
- mais fáceis de compreender;
- mais fáceis de manter.
Ao longo da disciplina, aprenderemos a comparar soluções e identificar quais apresentam melhor qualidade.
A importância de testar um algoritmo
Escrever um algoritmo não garante que ele esteja correto.
É necessário verificar seu funcionamento utilizando diferentes situações.
Essa verificação recebe o nome de teste de mesa.
O teste de mesa consiste em executar o algoritmo manualmente, simulando cada instrução e anotando os valores assumidos pelas variáveis.
Essa técnica permite identificar erros antes mesmo de executar o algoritmo em um computador.
Durante toda a disciplina, realizaremos testes de mesa antes da implementação dos algoritmos.
Exercícios de fixação
Exercício 1
Identifique a entrada, o processamento e a saída dos seguintes problemas:
- Calcular o salário líquido de um funcionário.
- Calcular a média final de um aluno.
- Calcular o consumo médio de combustível de um veículo.
Exercício 2
Analise os algoritmos abaixo e identifique quais erros eles apresentam.
Algoritmo A
- Servir o café.
- Preparar o café.
Algoritmo B
- Pegar uma quantidade suficiente de açúcar.
- Misturar.
Algoritmo C
- Digitar as notas.
- Mostrar a média.
Exercício 3
Escreva um algoritmo, em linguagem natural, para:
- escovar os dentes;
- trocar um pneu;
- enviar uma mensagem utilizando um aplicativo;
- fazer um sanduíche.
Depois responda:
- Existe alguma etapa faltando?
- Alguma instrução está ambígua?
- A ordem está correta?
- O algoritmo termina?
Exercício 4 (Desafio)
Escolha uma atividade do seu cotidiano e escreva um algoritmo com, no mínimo, quinze passos.
Depois peça para um colega analisá-lo.
Caso ele tenha dúvidas sobre qualquer instrução, significa que seu algoritmo ainda pode ser melhorado.
Fim da Aula
