Lógica de Programação

🧠 Fundamentos Essenciais

O que é um Algoritmo?

Um algoritmo é como uma receita de bolo para computadores. É uma sequência lógica e ordenada de passos para resolver um problema específico.

Características principais:
  • 📌 Deve ter um início e fim (bem definidos)
  • 📌 Cada passo precisa ser claro e não ambíguo
  • 📌 Deve produzir resultados consistentes

// Exemplo detalhado: Calcular média de 3 números
function calcularMedia(a, b, c) {
    // 1. Somar os três números
    const soma = a + b + c;
    
    // 2. Dividir pela quantidade de números (3)
    const media = soma / 3;
    
    // 3. Retornar o resultado
    return media;
}
        
Analogia do Dia a Dia:

Fazer um café: 1. Aquecer água ➔ 2. Colocar pó no filtro ➔ 3. Passar água quente ➔ 4. Servir na xícara

Estruturas Básicas

Condicionais (Tomada de Decisão)

São como placas de trânsito do código. Permitem executar ações diferentes baseadas em condições.

Quando usar:
  • Validar dados de entrada
  • Executar ações diferentes por contexto
  • Tratamento de erros

// Exemplo completo: Sistema de clima
let temperatura = 25;
let chuva = false;

if (temperatura > 30) {
    console.log("Dia muito quente! 🥵");
    console.log("Recomendo tomar muita água!");
} else if (temperatura > 20 && !chuva) {
    console.log("Clima agradável! 😎");
    console.log("Bom dia para um passeio!");
} else {
    console.log("Melhor ficar em casa! 🏠");
    if (chuva) {
        console.log("Não esqueça o guarda-chuva! ☔");
    }
}
Dica Importante:

Sempre teste condições extremas (valores mínimos e máximos) para garantir que seu código funciona em todos os cenários!

Laços de Repetição

São como esteira de fábrica - executam a mesma ação várias vezes até atingir uma condição.

Tipos principais:
  • for - Quando sabemos quantas repetições
  • while - Quando depende de condição
  • do...while - Executa pelo menos uma vez

// Exemplo completo: Sistema de caixa eletrônico
let saldo = 1000;
let saque;

do {
    saque = prompt("Quanto deseja sacar? (Máximo R$ 500)");
    saque = Number(saque);

    if (saque > 500) {
        console.log("Valor excede limite máximo!");
    } else if (saque > saldo) {
        console.log("Saldo insuficiente!");
    } else {
        saldo -= saque;
        console.log(`Saque realizado. Novo saldo: R$ ${saldo}`);
    }
} while (saldo > 0 && confirm("Deseja fazer outro saque?"));

console.log("Operação finalizada. Retire seu cartão!");
Cuidado!

Sempre atualize a variável de controle para evitar loops infinitos!

Exercício Prático Detalhado

Vamos implementar passo a passo uma função que verifica números primos:

Passo a Passo:
  1. Números menores que 2 não são primos
  2. Dividir o número por todos inteiros até sua raiz quadrada
  3. Se nenhuma divisão for exata, é primo

function ehPrimo(num) {
    // Passo 1: Verificar números menores que 2
    if (num <= 1) {
        console.log(`${num} não é primo!`);
        return false;
    }

    // Passo 2: Verificar divisibilidade
    for (let i = 2; i <= Math.sqrt(num); i++) {
        if (num % i === 0) {
console.log(`Divisível por ${i} ❌`);
return false;
        }
    }

    // Passo 3: Se passou nos testes, é primo
    console.log(`${num} é primo! ✅`);
    return true;
}

// Testando a função
ehPrimo(7);  // ✅
ehPrimo(12); // ❌
ehPrimo(1);  // ❌
        
Desafio Extra:

Modifique a função para: 1. Retornar todos os primos em um intervalo 2. Contar quantos primos foram encontrados 3. Calcular tempo de execução

🛑 Erros Frequentes de Iniciantes

Armadilhas para Evitar:
  • Esquecer chaves {} em blocos de código
  • Confundir = (atribuição) com == (comparação)
  • Variáveis não inicializadas
  • Off-by-one errors em loops

// Exemplo de erro comum: tentativa de somar números de 1 a 5
let total = 0;
for (let i = 1; i < 5; i++); // Erro: ; extra
{
    total += i; // i não está definido aqui
}

        
 

❌ Código com Problemas:

// Tentativa de somar números de 1 a 5 let total = 0; for (let i = 1; i < 5; i++); // Ponto e vírgula errado { total += i; // Erro: i não está definido aqui } console.log(total); // ReferenceError: i is not defined
O que está errado?
  • ➔ Ponto e vírgula após o for() termina o loop prematuramente
  • ➔ A variável i só existe dentro do loop
  • ➔ Escopo de bloco não está sendo respeitado
 

✅ Versão Corrigida:

// Soma correta de 1 a 5 let totalCorrigido = 0; // 1. Remove o ponto e vírgula após a declaração do for // 2. Ajusta a condição para <= 5 for (let j = 1; j <= 5; j++) { // 3. Mantém a lógica dentro do bloco do loop totalCorrigido += j; } console.log(totalCorrigido); // Resultado correto: 15
Princípios Aplicados:
  • 📌 Blocos de código devem estar entre {}
  • 📌 Variáveis de loop têm escopo local
  • 📌 Condições de parada devem ser inclusivas (usar <= quando necessário)

🎓 Curso de Lógica de Programação

Conteúdo produzido e distribuído pelo Prof. Gustavo Guanabara
Direitos autorais © 2013-2023 Curso em Vídeo
Esta apresentação contém trechos da playlist oficial disponível em Curso de Algoritmos - Curso em Vídeo