JavaScript

Lógica de programação básica: 5 exercícios para aprender a pensar antes de codar

Quando alguém começa a estudar programação, costuma perguntar: “Qual código eu preciso usar?”. Mas existe uma pergunta anterior: qual problema eu preciso resolver? Foi com esse raciocínio que trabalhei em uma aula com cinco exercícios de lógica de programação em JavaScript.

Os exemplos usam JavaScript, mas a forma de pensar serve para outras linguagens. Antes de escrever uma condição, um laço ou uma função, precisamos entender os dados de entrada, o resultado esperado e os passos que ligam uma coisa à outra.

O básico é a estrutura que sustenta o restante

Na aula, comentei uma diferença importante: básico não é sinônimo de simples. É a estrutura necessária para avançar. Saber escrever if e for ajuda, mas a lógica aparece quando escolhemos onde usá-los e conseguimos explicar por que o resultado saiu daquele jeito.

Quem pula essa etapa pode até fazer um código funcionar, mas terá mais dificuldade para investigar um erro ou adaptar a solução a outro problema. Por isso, em cada exercício, a sequência foi: entender a situação, escolher os recursos, escrever, executar, comparar o resultado e corrigir quando necessário.

1. Entrada permitida: quando usar if e else?

O primeiro problema pergunta se uma pessoa pode entrar em um local reservado para maiores de idade. A regra é “18 anos ou mais”. O detalhe está no ou mais: alguém com exatamente 18 anos também pode entrar. Em JavaScript, a condição precisa contemplar esse limite:

const idade = 18;

if (idade >= 18) {
  console.log("Entrada permitida");
} else {
  console.log("Entrada não permitida");
}

O teste mais útil aqui não é só executar com 18. Experimente também 17 e 19. Assim você confere o limite, o caso abaixo dele e o caso acima. Durante a aula, mostrei ainda que nem toda condição exige um else: isso depende do que deve acontecer quando a condição é falsa.

2. Situação do aluno: a ordem das condições importa

No segundo exercício, o resultado pode ser aprovado, recuperação ou reprovado. Há mais caminhos possíveis, então precisamos organizar os testes. Se a aprovação começa em 7, podemos verificar primeiro essa faixa e depois a recuperação:

const nota = 6;

if (nota >= 7) {
  console.log("Aprovado");
} else if (nota >= 5) {
  console.log("Recuperação");
} else {
  console.log("Reprovado");
}

Por que uma nota 8 não cai também na condição nota >= 5? Porque a primeira condição verdadeira já determina o caminho desse encadeamento. Essa é uma das partes em que vale prever o resultado no papel antes de executar. Teste notas como 4, 5, 6, 7 e 8 e compare sua previsão com a saída do programa.

3. Lista de produtos: array, índice e repetição

Se precisamos guardar vários produtos, uma variável para cada nome logo se torna inconveniente. Um array reúne os itens em uma lista. A primeira posição tem índice zero, e o laço pode percorrer a lista sem que precisemos escrever um console.log para cada produto.

const produtos = ["Teclado", "Mouse", "Monitor", "Headset"];

for (let i = 0; i < produtos.length; i++) {
  console.log(produtos[i]);
}

Na aula, testei o que acontece ao começar o contador em 1: o primeiro produto fica de fora. Esse pequeno erro ajuda a entender a relação entre índice, length e condição de parada. Depois mostrei o for...of, que percorre diretamente os valores quando não precisamos trabalhar com o índice.

4. Total da compra: para que serve um acumulador?

Agora a lista contém preços. Queremos somar cada valor e apresentar o total somente depois que o laço terminar. Para isso, criamos um acumulador que começa em zero e recebe cada preço:

const precos = [120, 80, 250, 320, 530];
let total = 0;

for (const preco of precos) {
  total += preco;
}

console.log(total); // 1300

Esse exercício trouxe o momento mais interessante da aula. Depois de somar os mesmos preços de outra forma, o resultado apareceu como 2600 em vez de 1300. O problema não estava nos produtos: o acumulador já continha o total da primeira passagem e foi usado de novo sem voltar a zero.

É uma boa demonstração do trabalho real de programação. Encontrar um número inesperado, perguntar de onde ele veio, observar o estado da variável e testar a correção ensina mais do que apenas mostrar o código final funcionando.

5. Carrinho de compras: por que criar objetos?

No último exercício, cada produto tem pelo menos duas informações relacionadas: nome e preço. Um objeto permite manter essas propriedades juntas; o array representa o carrinho que recebe vários produtos. A função organiza a ação de adicionar um item:

const carrinho = [];

function adicionarProduto(nome, preco) {
  const produto = { nome, preco };
  carrinho.push(produto);
}

adicionarProduto("Teclado", 120);
adicionarProduto("Mouse", 80);

console.log(carrinho);

Perceba a progressão: começamos com uma condição, passamos por listas e repetição, calculamos um total e terminamos reunindo array, função e objeto em um problema próximo de uma aplicação real. Não é necessário decorar tudo de uma vez. O importante é entender o papel de cada parte.

Como praticar depois da aula

Assista a cada problema e pause antes da solução. Anote quais dados você precisa, qual resultado espera e que estrutura parece adequada. Escreva sua versão, execute com valores diferentes e explique o que aconteceu. Se o resultado estiver errado, investigue antes de procurar uma resposta pronta.

Essa prática desenvolve o raciocínio que será necessário quando os exercícios crescerem e se transformarem em projetos. Programar é seguir um processo, testar hipóteses e compreender a solução.

Quer seguir uma sequência completa?

Se você quer continuar depois desses exercícios, o curso JavaScript do Zero — Lógica, HTML, CSS e Projeto Prático organiza o aprendizado passo a passo, dos fundamentos até a construção da Dev Store. O livro digital Lógica com JavaScript do Zero está incluído no curso.

Conheça o curso JavaScript do Zero com livro digital incluído.

Assista à aula completa

Leave a Reply

Your email address will not be published. Required fields are marked *