Professor Muniz Educação & Programação

Trilha: Linguagem C

Voltar aos conteúdos
Apostila de Apoio Didático

Estruturas Condicionais em Linguagem C

Compreenda o fluxo de tomada de decisão na Linguagem C utilizando as estruturas if, else if e else, além dos operadores relacionais.

MÓDULO 1

O que é uma Estrutura Condicional?

Até o momento, os algoritmos criados executavam suas linhas de instrução de maneira estritamente sequencial, sem desvios. Com as estruturas condicionais, adicionamos lógica e "tomada de decisão" ao programa.

Esse fluxo permite que o computador escolha caminhos e comandos diferentes baseando-se em condições preestabelecidas que são avaliadas como verdadeiras ou falsas.

“Se estiver chovendo, levo um guarda-chuva; senão, uso óculos de sol.”

Em programação, qualquer comparação lógica complexa sempre será reduzida a apenas dois estados possíveis: Verdadeiro (True) ou Falso (False).

MÓDULO 2

Os Operadores Relacionais

Para construir essas condições lógico-matemáticas em C, utilizamos os operadores relacionais que comparam variáveis e valores:

Operação Símbolo em C Exemplo em C Significado Lógico
Maior > altura > 1.60 Verifica se a altura é estritamente maior que 1.60
Maior ou igual >= salario >= 2500 Verifica se o salário é igual ou superior a 2500
Menor < idade < 18 Verifica se a idade é estritamente menor que 18
Menor ou igual <= velocidade <= 120 Verifica se a velocidade é de no máximo 120
Igual == opcao == 1 Verifica se a opção é idêntica a 1 (usa-se duplo "=")
Diferente != codigo != 10 Verifica se o código não é igual a 10
MÓDULO 3

Condicional Simples: O Bloco if

O condicional simples executa as instruções dentro das chaves { } somente quando a expressão lógica avaliada for verdadeira. Se for falsa, todo o bloco é simplesmente ignorado.

Sintaxe:

if (expressao_logica) {
    // Código executado apenas se a expressão for VERDADEIRA
}

Exemplo de Uso:

if (idade < 18) {
    printf("Menor de idade\n");
}
MÓDULO 4

Condicional Composta: if - else

Quando precisamos definir claramente o que o sistema deve fazer em ambos os casos (se a condição for verdadeira, faça algo; se for falsa, faça outra coisa), usamos a estrutura composta if-else.

Sintaxe:

if (expressao_logica) {
    // Executado se for VERDADEIRO
} else {
    // Executado se for FALSO
}

Exemplo de Uso:

if (idade >= 16) {
    printf("Pode votar.\n");
} else {
    printf("Não pode votar.\n");
}
MÓDULO 5

Condicional Encadeada: if - else if - else

Para fluxos com múltiplas condições e mais de duas alternativas possíveis, encadeamos novos testes de condição usando o else if.

Comportamento importante: O compilador de C analisa os testes sequencialmente de cima para baixo. Assim que encontra a primeira condição verdadeira, ele processa o bloco interno e sai imediatamente de toda a estrutura condicional, ignorando as validações seguintes. O bloco else ao fim do código é opcional e serve para acolher qualquer caso que falhou em todas as verificações anteriores.

Sintaxe:

if (expressao_logica_1) {
    // Executado se a lógica 1 for VERDADEIRA
} else if (expressao_logica_2) {
    // Executado se a lógica 2 for VERDADEIRA
} else if (expressao_logica_3) {
    // Executado se a lógica 3 for VERDADEIRA
} else {
    // Executado se TODAS as lógicas anteriores forem FALSAS
}
MÓDULO 6

Dicas de Ouro e Evitando Erros Clássicos

Escopo das Chaves { }

Na Linguagem C, se o bloco de comandos internos após o if ou else tiver apenas uma linha de código, o uso de chaves é opcional. No entanto, é considerada uma prática de codificação muito mais segura utilizá-las sempre.

Lixo de Memória

Ao declarar variáveis como int idade;, o sistema operacional reserva o espaço físico correspondente na memória, mas não apaga o que estava lá antes. Esse conteúdo antigo é conhecido como "lixo de memória". Lembre-se sempre de inicializar ou preencher suas variáveis antes de lê-las para evitar erros inesperados!

Operador de Endereço (&) no scanf

Ao ler dados do teclado via scanf, deve-se usar o caractere & imediatamente antes do nome da variável (exemplo: scanf("%i", &idade);). Ele repassa ao compilador o endereço de memória onde o valor deve ser armazenado.

Comparação (==) vs Atribuição (=)

Muito cuidado: para atribuir um valor, usamos =. Para fazer uma comparação lógica de igualdade, devemos obrigatoriamente usar ==. O uso de apenas um sinal de igual dentro de um teste if (valor = 10) causará um bug lógico, atribuindo 10 à variável e retornando sempre verdadeiro.

MÓDULO 7

Caderno de Exercícios Propostos

Exercício 1
Radar de Trânsito

Escreva um programa para monitoramento de tráfego. O programa deve receber via teclado a velocidade atual de um veículo. Caso a velocidade lida ultrapasse 120 km/h, imprima no console a palavra: "MULTADO".

Exercício 2
Detecção de Sinal

Construa um algoritmo que leia do teclado um número inteiro de entrada e identifique se ele é positivo (maior que zero) ou negativo (menor que zero).

Exercício 3
Situação Eleitoral

Crie um programa que determine a elegibilidade de voto de um cidadão baseado na idade informada, seguindo os parâmetros oficiais:

  • Menores de 16 anos: Não pode votar.
  • Idades de 16 ou 17 anos: Voto opcional.
  • Idades entre 18 e 70 anos completos: Voto obrigatório.
  • Maiores de 70 anos: Voto opcional.
Exercício 4
Painel de Festival

Um festival de música precisa de um programa gerenciador. Ao ler o código numérico de apresentação, exiba a banda e o palco correspondente conforme o mapeamento:

  • Código 10: Dilsinho (Palco Mundo)
  • Código 20: Trio Dona Zefa (Palco Forró)
  • Código 30: Dj Denis (Palco Funk)
  • Código 40: Nós do Morro (Palco Supernova)

Se qualquer outro número for informado, retorne: "Código inválido".

Exercício 5
Quitanda de Frutas

Uma quitanda vende peras a R$ 1,20 por unidade. No entanto, se o cliente comprar mais do que uma dúzia (ou seja, 13 unidades ou mais), o valor unitário cai para R$ 1,05. Faça um algoritmo para ler a quantidade de peras adquiridas e calcular o preço final da compra.

MÓDULO 8

Gabarito Comentado (Códigos de Solução)

Solução Exercício 1: Radar de Trânsito
#include <stdio.h>

int main() {
    float velocidade;

    printf("Digite a velocidade registrada pelo radar (km/h): ");
    scanf("%f", &velocidade);

    if (velocidade > 120.0) {
        printf("MULTADO\n");
    }

    return 0;
}
Solução Exercício 2: Detecção de Sinal
#include <stdio.h>

int main() {
    int numero;

    printf("Digite um numero inteiro: ");
    scanf("%i", &numero);

    if (numero > 0) {
        printf("O numero %i e POSITIVO.\n", numero);
    } else if (numero < 0) {
        printf("O numero %i e NEGATIVO.\n", numero);
    } else {
        printf("O numero digitado e ZERO.\n");
    }

    return 0;
}
Solução Exercício 3: Situação Eleitoral
#include <stdio.h>

int main() {
    int idade;

    printf("Digite a sua idade: ");
    scanf("%i", &idade);

    if (idade < 16) {
        printf("Nao pode votar.\n");
    } 
    else if (idade == 16 || idade == 17) {
        printf("Voto opcional.\n");
    } 
    else if (idade >= 18 && idade <= 70) {
        printf("Voto obrigatorio.\n");
    } 
    else {
        printf("Voto opcional.\n");
    }

    return 0;
}
Solução Exercício 4: Painel de Festival
#include <stdio.h>

int main() {
    int codigo;

    printf("Digite o codigo da apresentacao: ");
    scanf("%i", &codigo);

    if (codigo == 10) {
        printf("Show: Dilsinho | Palco: Mundo\n");
    } 
    else if (codigo == 20) {
        printf("Show: Trio Dona Zefa | Palco: Forro\n");
    } 
    else if (codigo == 30) {
        printf("Show: Dj Denis | Palco: Funk\n");
    } 
    else if (codigo == 40) {
        printf("Show: Nos do Morro | Palco: Supernova\n");
    } 
    else {
        printf("Codigo invalido!\n");
    }

    return 0;
}
Solução Exercício 5: Quitanda de Frutas
#include <stdio.h>

int main() {
    int quantidade;
    float precoUnitario, precoTotal;

    printf("Digite a quantidade de peras compradas: ");
    scanf("%i", &quantidade);

    if (quantidade > 12) {
        precoUnitario = 1.05;
    } else {
        precoUnitario = 1.20;
    }

    precoTotal = quantidade * precoUnitario;

    printf("Quantidade comprada: %i peras\n", quantidade);
    printf("Preco por unidade: R$ %.2f\n", precoUnitario);
    printf("Valor total a pagar: R$ %.2f\n", precoTotal);

    return 0;
}

Materiais Complementares de Apoio

Slides: Estruturas Condicionais em C

Baixe os slides de apoio da aula 3 para ver em detalhes a sintaxe e exemplos de if, else if e else.

Baixar Slides
Vídeo: Resumo da Aula 3

Assista a um vídeo explicativo com o resumo dos tópicos e práticas desta terceira aula.

Assistir Vídeo
Repositório de Código Fonte

Explore, acesse e faça o download de todos os códigos-fonte de exemplo e exercícios estruturados nesta trilha.

Abrir Repositório
Voltar aos conteúdos