Trilha 3: Estruturas de Repetição (Laços)

Objetivos de Aprendizagem


Resumo Rápido

Comando Quando usar? Característica Principal
for Quando sabemos o número de repetições. Testa no início. Ótimo para contagens.
while Quando a repetição depende de algo acontecer. Testa no início. Pode nem rodar se a condição for falsa.
do-while Para menus e validações obrigatórias. Testa no final. Garante que roda pelo menos 1 vez.

Exemplos Comentados

1. O Laço FOR (Tabuada)

Ideal para contadores fixos (ex: de 1 a 10).


#include <stdio.h>

int main() {
    int i, numero = 5;

    printf("Tabuada do 5:\n");

    // i começa em 1; vai até 10; aumenta de 1 em 1
    for (i = 1; i <= 10; i++) {
        printf("5 x %d = %d\n", i, 5 * i);
    }
    return 0;
}
                

2. O Laço WHILE (Jogo de Adivinhação)

Usamos quando não sabemos quantas vezes o usuário vai tentar. Ele repete enquanto a condição for verdadeira.


#include <stdio.h>

int main() {
    int senhaCorreta = 1234;
    int tentativa = 0; // Valor inicial qualquer diferente da senha

    printf("--- SISTEMA DE SEGURANÇA ---\n");

    // Enquanto a tentativa for DIFERENTE da senha, ele fica preso aqui
    while (tentativa != senhaCorreta) {
        printf("Digite a senha numérico: ");
        scanf("%d", &tentativa);

        if (tentativa != senhaCorreta) {
            printf("Acesso Negado! Tente de novo.\n");
        }
    }

    printf("Acesso Permitido!\n");
    return 0;
}
                

3. O Laço DO-WHILE (Menu Interativo)

A diferença é que ele executa o bloco antes de testar. Perfeito para menus, pois queremos mostrar as opções pelo menos uma vez.


#include <stdio.h>

int main() {
    int opcao;

    // "FAÇA" isso...
    do {
        printf("\n--- MENU ---\n");
        printf("1. Jogar\n");
        printf("2. Configurações\n");
        printf("0. Sair\n");
        printf("Escolha uma opção: ");
        scanf("%d", &opcao);

        if(opcao != 0) {
            printf("Você escolheu a opção %d...\n", opcao);
        }

    // ...ENQUANTO a opção for diferente de 0.
    } while (opcao != 0);

    printf("Fim do programa.");
    return 0;
}
                

Lista de Exercícios

1. Contagem Regressiva (FOR)

Crie um programa que exiba uma contagem de 10 até 0 e imprima "FIM!".

Ver Código Resposta

#include <stdio.h>
int main() {
    int i;
    for (i = 10; i >= 0; i--) {
        printf("%d...\n", i);
    }
    printf("FIM!");
    return 0;
}

2. Soma Acumulada (WHILE)

Peça números ao usuário e vá somando. O programa só para quando digitar 0.

Ver Código Resposta

#include <stdio.h>
int main() {
    int num = -1, soma = 0; // num começa diferente de 0 para entrar no loop
    
    printf("Digite números (0 para sair):\n");
    while (num != 0) {
        scanf("%d", &num);
        soma = soma + num;
    }
    printf("Total: %d", soma);
    return 0;
}

3. Validação de Nota (DO-WHILE)

Faça um programa que peça uma nota (0 a 10). Se o usuário digitar algo inválido (ex: 15 ou -2), peça de novo até ele acertar.

Ver Código Resposta

#include <stdio.h>
int main() {
    float nota;
    do {
        printf("Digite uma nota entre 0 e 10: ");
        scanf("%f", &nota);
    } while (nota < 0 || nota > 10);
    
    printf("Nota válida registrada: %.1f", nota);
    return 0;
}