Seja Bem-Vindo. Este site tem recursos de leitura de texto, basta marcar o texto e clicar no ícone do alto-falante   Click to listen highlighted text! Seja Bem-Vindo. Este site tem recursos de leitura de texto, basta marcar o texto e clicar no ícone do alto-falante

Lógica de Programação – Teórica – Aula 01

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:

  1. Pegar uma xícara.
  2. Colocar água para aquecer.
  3. Colocar pó de café no filtro.
  4. Despejar a água quente sobre o pó.
  5. Esperar o café passar.
  6. Colocar o café na xícara.
  7. Servir.
  8. 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

  1. Vestir o sapato.

  2. Calçar a meia.

Funciona?

Não.

Agora:

Algoritmo B

  1. Calçar a meia.

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

  1. Qual é o problema?
  2. Quais são as entradas?
  3. Qual é o processamento?
  4. 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:

  1. Qual é o problema que deve ser resolvido?
  2. Quais são os dados de entrada?
  3. Qual processamento deve ser realizado?
  4. Qual será a saída produzida?
  5. 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é:

  1. Coloque água.
  2. Coloque o café na xícara.
  3. 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

  1. Assar o bolo.
  2. 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:

  1. Calcular o salário líquido de um funcionário.
  2. Calcular a média final de um aluno.
  3. 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

  1. Servir o café.
  2. Preparar o café.

Algoritmo B

  1. Pegar uma quantidade suficiente de açúcar.
  2. Misturar.

Algoritmo C

  1. Digitar as notas.
  2. 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

Click to listen highlighted text!