Pular para o conteúdo principal
Programação

Lógica de Programação: O Que É e Como Aprender do Jeito Certo

Aprenda lógica de programação do jeito certo: variáveis, condicionais, loops e funções explicados com exemplos práticos.

12 min de leitura
FISApp Academy

O que é lógica de programação — e por que ela vem antes de tudo?

Imagine que você precisa explicar para alguém que nunca cozinhou como fazer um ovo frito. Você não pode simplesmente dizer "faz o ovo". Precisa detalhar cada passo: pegar a frigideira, acender o fogo, colocar óleo, esperar esquentar, quebrar o ovo, colocar sal...

Programação funciona exatamente assim. O computador é muito rápido, mas muito burro. Ele faz exatamente o que você manda — nem mais, nem menos. A lógica de programação é a habilidade de traduzir uma solução em passos claros, precisos e na ordem certa.

Se você está começando sua jornada na programação (e se ainda não leu, recomendamos nosso guia definitivo para começar em programação do zero), este artigo vai te dar a base mais importante de todas: a lógica.

Em termos simples: Lógica de programação é pensar em passos. É a habilidade de pegar um problema, dividi-lo em partes menores e organizar essas partes em uma sequência que resolve o problema. Não é matemática — é raciocínio organizado.


Os 4 pilares da lógica de programação

Toda linguagem de programação, sem exceção, é construída sobre estes quatro conceitos fundamentais. Domine eles e você consegue programar em qualquer linguagem.


1. Variáveis — onde guardamos informações

Uma variável é um espaço na memória do computador onde você armazena um valor. Pense em caixas etiquetadas: cada caixa tem um nome e guarda algo dentro.

Tipos de variáveis mais comuns

| Tipo | O que guarda | Exemplo | |------|-------------|---------| | int | Números inteiros | 42, -7, 0 | | double | Números com decimais | 3.14, 99.90 | | string | Textos | "Maria", "Olá, mundo!" | | bool | Verdadeiro ou falso | true, false | | char | Um único caractere | 'A', 'z' |

Exemplo prático

Vamos criar variáveis para representar um aluno:

// Declarando variáveis
string nome = "Carlos";
int idade = 22;
double nota = 8.5;
bool aprovado = true;

// Usando as variáveis
Console.WriteLine($"Aluno: {nome}");
Console.WriteLine($"Idade: {idade} anos");
Console.WriteLine($"Nota: {nota}");
Console.WriteLine($"Aprovado: {aprovado}");

Saída:

Aluno: Carlos
Idade: 22 anos
Nota: 8.5
Aprovado: True

Regras para nomear variáveis

  • Use nomes descritivos: idadeDoUsuario em vez de x
  • Comece com letra (nunca com número)
  • Use camelCase em C#: nomeCompleto, dataNascimento
  • Não use espaços nem caracteres especiais (exceto underscore _)

Erro comum: Dar nomes genéricos como a, b, x, temp para variáveis. Quando o código cresce, você não lembra o que cada variável representa. Use nomes que descrevam o conteúdo: precoProduto, quantidadeEstoque, emailCliente.


2. Condicionais — tomando decisões no código

Na vida real, tomamos decisões o tempo todo: "Se estiver chovendo, levo guarda-chuva. Senão, vou sem." Condicionais fazem exatamente isso no código.

A estrutura if/else

if (condicao)
{
    // Executa se a condição for verdadeira
}
else
{
    // Executa se a condição for falsa
}

Operadores de comparação

| Operador | Significado | Exemplo | |----------|-------------|---------| | == | Igual a | idade == 18 | | != | Diferente de | nome != "Admin" | | > | Maior que | nota > 7 | | < | Menor que | saldo < 0 | | >= | Maior ou igual | idade >= 18 | | <= | Menor ou igual | preco <= 100 |

Exemplo prático

Sistema de classificação de idade para cinema:

int idade = 15;

if (idade >= 18)
{
    Console.WriteLine("Entrada permitida para qualquer filme.");
}
else if (idade >= 16)
{
    Console.WriteLine("Entrada permitida para filmes até 16 anos.");
}
else if (idade >= 14)
{
    Console.WriteLine("Entrada permitida para filmes até 14 anos.");
}
else if (idade >= 12)
{
    Console.WriteLine("Entrada permitida para filmes até 12 anos.");
}
else
{
    Console.WriteLine("Entrada permitida apenas para filmes livres.");
}

Combinando condições com operadores lógicos

Você pode combinar múltiplas condições:

  • && (E) — ambas precisam ser verdadeiras
  • || (OU) — pelo menos uma precisa ser verdadeira
  • ! (NÃO) — inverte o valor
int idade = 25;
bool temCarteira = true;

if (idade >= 18 && temCarteira)
{
    Console.WriteLine("Pode dirigir!");
}
else
{
    Console.WriteLine("Não pode dirigir.");
}

3. Loops — repetindo ações de forma inteligente

Imagine que você precisa imprimir os números de 1 a 1000. Você não vai escrever 1000 linhas de código. Para isso existem os loops (laços de repetição).

Loop for — quando você sabe quantas vezes repetir

for (int i = 1; i <= 10; i++)
{
    Console.WriteLine($"Número: {i}");
}

Decompondo:

  • int i = 1 — começa em 1
  • i <= 10 — continua enquanto i for menor ou igual a 10
  • i++ — incrementa 1 a cada repetição

Loop while — quando você não sabe quantas vezes repetir

string resposta = "";

while (resposta != "sair")
{
    Console.Write("Digite algo (ou 'sair' para parar): ");
    resposta = Console.ReadLine()!;
    Console.WriteLine($"Você digitou: {resposta}");
}

Loop foreach — para percorrer coleções

string[] frutas = { "Maçã", "Banana", "Laranja", "Manga" };

foreach (string fruta in frutas)
{
    Console.WriteLine($"Fruta: {fruta}");
}

Exemplo prático

Calculadora de média de notas de uma turma:

double[] notas = { 7.5, 8.0, 6.5, 9.0, 5.5, 7.0, 8.5 };
double soma = 0;

foreach (double nota in notas)
{
    soma += nota;
}

double media = soma / notas.Length;
Console.WriteLine($"Média da turma: {media:F1}");

// Contar aprovados e reprovados
int aprovados = 0;
int reprovados = 0;

foreach (double nota in notas)
{
    if (nota >= 7.0)
        aprovados++;
    else
        reprovados++;
}

Console.WriteLine($"Aprovados: {aprovados}");
Console.WriteLine($"Reprovados: {reprovados}");

Erro comum: Criar loops infinitos acidentalmente. Se a condição de parada nunca for atingida, o programa trava. Sempre verifique se o seu loop tem uma saída clara. Exemplo de loop infinito: while (true) { } — sem nenhum break dentro.


Quer dominar esses fundamentos com projetos reais?

Entender a teoria é o primeiro passo. Mas a lógica de programação só se solidifica na prática, construindo programas de verdade.

O curso Programação do Zero ao Avançado - Start da FISApp Academy dedica um módulo inteiro aos fundamentos de lógica, com exercícios progressivos e projetos práticos que fixam cada conceito. Nada de aula de 3 horas sem praticar — cada conceito vira código real.

Comece agora pelo PZA Start


4. Funções — organizando e reutilizando código

Funções são blocos de código que realizam uma tarefa específica e podem ser reutilizados quantas vezes você quiser. Em vez de repetir o mesmo código em vários lugares, você encapsula em uma função e chama pelo nome.

Anatomia de uma função

// tipo_retorno NomeDaFuncao(parametros)
double CalcularMedia(double nota1, double nota2)
{
    double media = (nota1 + nota2) / 2;
    return media;
}
  • Tipo de retorno (double): o que a função devolve
  • Nome (CalcularMedia): como você chama a função
  • Parâmetros (nota1, nota2): as informações que ela precisa receber
  • Retorno (return media): o resultado que ela entrega

Funções sem retorno (void)

Quando a função apenas executa algo sem precisar devolver um valor:

void ExibirBoasVindas(string nome)
{
    Console.WriteLine($"Bem-vindo(a), {nome}!");
    Console.WriteLine("Pronto para aprender?");
}

// Chamando a função
ExibirBoasVindas("Ana");

Exemplo prático

Vamos criar um mini-sistema com várias funções trabalhando juntas:

// Função que valida se um email é válido (simplificado)
bool ValidarEmail(string email)
{
    return email.Contains("@") && email.Contains(".");
}

// Função que classifica a idade
string ClassificarIdade(int idade)
{
    if (idade < 12) return "Criança";
    if (idade < 18) return "Adolescente";
    if (idade < 60) return "Adulto";
    return "Idoso";
}

// Função que calcula desconto por faixa etária
double CalcularDesconto(int idade, double preco)
{
    string classificacao = ClassificarIdade(idade);

    switch (classificacao)
    {
        case "Criança": return preco * 0.50;   // 50% de desconto
        case "Adolescente": return preco * 0.75; // 25% de desconto
        case "Idoso": return preco * 0.60;       // 40% de desconto
        default: return preco;                    // Sem desconto
    }
}

// Usando as funções
string email = "joao@email.com";
int idade = 15;
double precoIngresso = 40.00;

Console.WriteLine($"Email válido: {ValidarEmail(email)}");
Console.WriteLine($"Classificação: {ClassificarIdade(idade)}");
Console.WriteLine($"Preço com desconto: R$ {CalcularDesconto(idade, precoIngresso):F2}");

Perceba como cada função faz uma coisa só e faz bem. Isso é um princípio fundamental de código limpo que você vai usar durante toda a carreira.


Juntando tudo: um projeto completo

Agora vamos combinar variáveis, condicionais, loops e funções em um projeto real. Vamos criar um sistema de cadastro e consulta de alunos simples:

using System;
using System.Collections.Generic;

class SistemaAlunos
{
    // Lista para armazenar os nomes dos alunos
    static List<string> alunos = new List<string>();
    static List<double> notas = new List<double>();

    static void ExibirMenu()
    {
        Console.WriteLine("\n=== Sistema de Alunos ===");
        Console.WriteLine("1. Cadastrar aluno");
        Console.WriteLine("2. Listar alunos");
        Console.WriteLine("3. Calcular média geral");
        Console.WriteLine("0. Sair");
        Console.Write("Escolha: ");
    }

    static void CadastrarAluno()
    {
        Console.Write("Nome do aluno: ");
        string nome = Console.ReadLine()!;
        Console.Write("Nota do aluno: ");
        double nota = double.Parse(Console.ReadLine()!);

        alunos.Add(nome);
        notas.Add(nota);
        Console.WriteLine($"{nome} cadastrado com sucesso!");
    }

    static void ListarAlunos()
    {
        if (alunos.Count == 0)
        {
            Console.WriteLine("Nenhum aluno cadastrado.");
            return;
        }

        Console.WriteLine("\n--- Lista de Alunos ---");
        for (int i = 0; i < alunos.Count; i++)
        {
            string situacao = notas[i] >= 7 ? "Aprovado" : "Reprovado";
            Console.WriteLine($"{alunos[i]} - Nota: {notas[i]:F1} - {situacao}");
        }
    }

    static void CalcularMediaGeral()
    {
        if (notas.Count == 0)
        {
            Console.WriteLine("Nenhuma nota registrada.");
            return;
        }

        double soma = 0;
        foreach (double nota in notas)
            soma += nota;

        Console.WriteLine($"Média geral: {soma / notas.Count:F1}");
    }

    static void Main()
    {
        string opcao;
        do
        {
            ExibirMenu();
            opcao = Console.ReadLine()!;

            switch (opcao)
            {
                case "1": CadastrarAluno(); break;
                case "2": ListarAlunos(); break;
                case "3": CalcularMediaGeral(); break;
                case "0": Console.WriteLine("Até logo!"); break;
                default: Console.WriteLine("Opção inválida."); break;
            }
        } while (opcao != "0");
    }
}

Esse projeto usa todos os 4 pilares: variáveis (nome, nota, soma), condicionais (if, switch), loops (do-while, for, foreach) e funções (ExibirMenu, CadastrarAluno, etc.).


Exercícios para praticar agora

A melhor forma de fixar lógica é praticando. Aqui vão exercícios em ordem de dificuldade:

Nível 1 — Básico

  1. Crie um programa que recebe o nome e a idade do usuário e exibe uma mensagem personalizada
  2. Faça um programa que converte Celsius para Fahrenheit
  3. Crie uma calculadora que faz as 4 operações básicas

Nível 2 — Intermediário

  1. Faça um programa que verifica se um número é primo
  2. Crie um programa que encontra o maior e o menor número de uma lista
  3. Faça um gerador de tabuada para qualquer número

Nível 3 — Desafiante

  1. Crie um jogo da forca simplificado no terminal
  2. Faça um programa que ordena uma lista de números (sem usar métodos prontos)
  3. Crie um sistema de caixa de supermercado com produtos, quantidades e total

Se você quer aprofundar na teoria por trás da lógica, nosso artigo sobre algoritmos e pseudocódigo explica como pensar antes de codificar.


Resumo rápido

  • Variáveis armazenam dados — use nomes descritivos e o tipo correto
  • Condicionais (if/else) permitem que o programa tome decisões
  • Loops (for, while, foreach) repetem ações de forma eficiente
  • Funções organizam código em blocos reutilizáveis
  • Esses 4 conceitos são universais — funcionam em qualquer linguagem
  • A lógica se aprende praticando, não apenas assistindo aulas
  • Nomeie variáveis com clareza — seu eu do futuro agradece
  • Comece com problemas simples e aumente a complexidade gradualmente

O que estudar depois

Depois de dominar a lógica de programação, você está pronto para avançar. Aqui estão seus próximos passos:


Domine a lógica com projetos reais

A lógica de programação é o primeiro módulo do curso Programação do Zero ao Avançado - Start da FISApp Academy. Lá, cada conceito é ensinado com exemplos práticos e projetos que você realmente vai construir — não é teoria solta.

Se você quer sair do "entendo mas não consigo fazer" para o "consigo resolver qualquer problema com código", o PZA Start é o caminho.

Fundamentos sólidos agora = velocidade no futuro.

Quero dominar lógica de programação com o PZA Start

Perguntas Frequentes

O que é lógica de programação?

Lógica de programação é a capacidade de organizar pensamentos em uma sequência de passos claros para resolver um problema. É como criar uma receita detalhada que um computador consiga seguir, usando conceitos como variáveis, condicionais, loops e funções.

Preciso aprender lógica antes de escolher uma linguagem?

Sim, é altamente recomendado. A lógica de programação é universal — funciona em qualquer linguagem. Quando você domina a lógica primeiro, aprender a sintaxe de uma linguagem específica se torna muito mais fácil e rápido.

Quanto tempo leva para aprender lógica de programação?

Com estudo focado de 1-2 horas por dia, a maioria dos iniciantes domina os fundamentos da lógica em 4 a 8 semanas. O segredo é praticar diariamente com exercícios, não apenas assistir aulas.

Qual o melhor exercício para treinar lógica de programação?

Resolver problemas do cotidiano em forma de algoritmo é excelente. Comece descrevendo em passos detalhados atividades como fazer café, trocar um pneu ou organizar uma lista de compras. Depois, traduza esses passos para pseudocódigo e, por fim, para uma linguagem de programação.

Quer aprender na prática?

Conheça o curso que vai te levar do zero ao avançado com projetos reais.

Conhecer o curso

Continue lendo