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.
- 📌 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;
}
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.
- 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! ☔");
}
}
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.
for- Quando sabemos quantas repetiçõeswhile- Quando depende de condiçãodo...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!");
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:
- Números menores que 2 não são primos
- Dividir o número por todos inteiros até sua raiz quadrada
- 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); // ❌
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
- 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
- ➔ 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
- 📌 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
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