🚀 Capítulo 06: Estruturas de Repetição (While, Do-While e For) em C
🎯 Objetivos da Aula
Ao final desta aula, você será capaz de:
- Automatizar a repetição de código utilizando o laço
while. - Garantir a execução de pelo menos uma iteração com a estrutura
do-while. - Construir laços contados e finitos com a estrutura
for. - Utilizar
breakpara interromper laços precocemente econtinuepara saltar iterações.
🧠 1. Estruturas de Repetição em C
Os laços de repetição (loops) permitem executar o mesmo bloco de código repetidas vezes enquanto uma condição permanecer verdadeira.
flowchart TD subgraph LoopWhile ["Laço While (Pré-testado)"] W_Cond{"Condição é Verdadeira?"} -- SIM --> W_Bloco["Executa Bloco & Atualiza Contador"] --> W_Cond W_Cond -- NÃO --> W_Fim([Sai do Loop]) end subgraph LoopDoWhile ["Laço Do-While (Pós-testado)"] D_Bloco["Executa Bloco de Código"] --> D_Cond{"Condição é Verdadeira?"} D_Cond -- SIM --> D_Bloco D_Cond -- NÃO --> D_Fim([Sai do Loop]) end
Resumo das 3 Estruturas de Laço:
while (condicao): Testa a condição antes de entrar no bloco. Recomendado quando não sabemos o número exato de repetições.do { ... } while (condicao);: Executa o bloco pelo menos uma vez antes de testar a condição no final (ideal para menus de usuário).for (inicializacao; condicao; incremento): Condensa inicialização, teste e passo de incremento em uma única linha. Ideal para contagens conhecidas.
💻 2. Prática Guiada: Tabuada e Validação de Entrada em C
Vamos escrever o programa lacos_exemplo.c para demonstrar a utilização do for e do do-while:
#include <stdio.h>
int main() {
int numero = 0;
// 1. Uso do do-while para VALIDAÇÃO DE ENTRADA (Número de 1 a 10)
do {
printf("Digite um numero inteiro entre 1 e 10 para ver a tabuada: ");
scanf("%d", &numero);
if (numero < 1 || numero > 10) {
printf(">> Numero invalido! Tente novamente.\n");
}
} while (numero < 1 || numero > 10);
// 2. Uso do for para a REPETIÇÃO DETERMINADA (1 a 10)
printf("\n=========================================\n");
printf(" TABUADA DO NUMERO %d \n", numero);
printf("=========================================\n");
for (int i = 1; i <= 10; i++) {
printf(" %d x %2d = %3d\n", numero, i, numero * i);
}
printf("=========================================\n");
return 0;
}⚔️ 3. Desafios Práticos (Exercícios 30/50/20)
🥉 Nível Bronze (Fixação)
- Qual a principal diferença de comportamento entre o laço
whilee o laçodo-while? - Para que serve a instrução
continuedentro de um laçofor?
🥈 Nível Prata (Aplicação)
- Escreva um programa em C que utilize um laço
whilepara ler números inteiros digitados pelo usuário até que o número0seja digitado. Ao final, exiba o somatório de todos os números digitados.
🥇 Nível Ouro (Desafio)
- Escreva um programa que imprima os primeiros 20 números pares utilizando um laço
for. Se o número for múltiplo de 10, utilize a instruçãoprintfpara destacar “Múltiplo de 10 encontrado!“.
💡 Gabaritos Sanfonados de Resposta
💡 Ver Gabarito do Nível Bronze
- O
whileavalia a condição antes de executar o bloco (pode rodar 0 vezes). Odo-whileexecuta o bloco pelo menos 1 vez antes de testar a condição no final. - O
continuepula o restante do código da iteração atual e passa diretamente para o próximo passo do laço.
💡 Ver Gabarito do Nível Prata & Ouro (Código C)
#include <stdio.h>
int main() {
int valor = -1;
int soma = 0;
printf("Digite numeros para somar (0 para encerrar):\n");
while (valor != 0) {
printf("Numero: ");
scanf("%d", &valor);
soma += valor;
}
printf("Soma Total: %d\n", soma);
return 0;
}📚 Referências Teóricas Oficiais
- KERNIGHAN, Brian W.; RITCHIE, Dennis M.. A Linguagem de Programação C. 2ª Edição. Campus, 1989. Cap. 3 (Controle de Fluxo — Laços).
- ISO/IEC 9899:2018. C17 Language Specification — Iteration Statements.
⬅️ Capítulo Anterior (Condicionais) | Voltar ao Sumário | Próximo Capítulo (Arrays e Vetores) ➡️