Laços: while, for, do-while
Repita trabalho com laços, controle-os com break e continue e evite o clássico erro de um a mais ou a menos.
- Escrever laços
while,foredo-while - Escolher o laço certo para cada tarefa
- Usar
breakecontinuee perceber erros de um a mais ou a menos
Computadores são bons em fazer a mesma coisa muitas vezes. Um laço repete um bloco de código enquanto uma condição continua verdadeira. O C tem três tipos.
while
1#include <stdio.h>
2
3int main(void) {
4 int n = 3;
5 while (n > 0) {
6 printf("%d...\n", n);
7 n--;
8 }
9 printf("Liftoff!\n");
10 return 0;
11}3... 2... 1... Liftoff!
Um laço while verifica a condição antes de cada passada. Se a condição for falsa desde o início, o corpo nunca roda. Algo dentro do corpo precisa, em algum momento, tornar a condição falsa - aqui, n-- -, senão o laço roda para sempre.
for
Laços de contagem são tão comuns que o C tem uma forma dedicada que coloca a preparação, a condição e a atualização numa única linha:
1#include <stdio.h>
2
3int main(void) {
4 for (int i = 1; i <= 5; i++) {
5 printf("%d squared is %d\n", i, i * i);
6 }
7 return 0;
8}1 squared is 1 2 squared is 4 3 squared is 9 4 squared is 16 5 squared is 25
for (init; condition; update) roda o init uma vez e depois repete: verifica a condition, roda o corpo, roda o update. Declarar int i dentro dos parênteses mantém o escopo dela restrito ao laço, o que é uma boa prática.
Acumulando um resultado
Um padrão muito comum: começar uma variável num valor neutro e atualizá-la a cada passada. A soma começa em 0, o produto em 1, o máximo no primeiro valor.
1#include <stdio.h>
2
3int main(void) {
4 int sum = 0;
5 for (int i = 1; i <= 100; i++) {
6 sum += i;
7 }
8 printf("1 + 2 + ... + 100 = %d\n", sum);
9 return 0;
10}1 + 2 + ... + 100 = 5050
do-while
Um laço do { ... } while (condition); verifica a condição depois do corpo, então o corpo sempre roda pelo menos uma vez. Ele combina com "faça algo e depois decida se repete" - como pedir uma entrada até ela ser válida. Repare no ponto e vírgula depois do while (...) de fechamento.
break e continue
O break sai do laço imediatamente. O continue pula o resto da passada atual e vai para a próxima (num laço for, a atualização ainda roda).
1#include <stdio.h>
2
3int main(void) {
4 for (int i = 1; i <= 10; i++) {
5 if (i % 2 == 0) {
6 continue; // skip even numbers
7 }
8 if (i > 7) {
9 break; // stop entirely
10 }
11 printf("%d ", i);
12 }
13 printf("\n");
14 return 0;
15}1 3 5 7
Laços aninhados
Um laço pode conter outro laço. O laço interno roda por completo a cada passada do externo - perfeito para grades e tabelas:
1#include <stdio.h>
2
3int main(void) {
4 for (int row = 1; row <= 4; row++) {
5 for (int col = 1; col <= row; col++) {
6 printf("*");
7 }
8 printf("\n");
9 }
10 return 0;
11}* ** *** ****
Principais conclusões
O
whileverifica primeiro; odo-whileroda pelo menos uma vez; oforjunta inicialização, condição e atualização para laços de contagem.for (int i = 0; i < n; i++)roda exatamente n vezes. Confira o primeiro e o último valor para evitar erros de um a mais ou a menos.O
breaksai do laço; ocontinuepula para a próxima passada. Garanta que todo laço possa terminar.
Quiz da aula
6 perguntas · aprovação com 5 acertos · até 50 XP
Ao passar, você conclui a aula e mantém sua sequência. As perguntas erradas voltarão em sessões de revisão.
Pratique: escreva código em C
Estes exercícios rodam de verdade. Escreva o programa, clique em “Executar testes” e leia o que o compilador informa: aprender a ler as mensagens do compilador é metade do aprendizado de C.
Tabuada
Leia um inteiro n e imprima a tabuada dele de 1 a 5, uma linha para cada, formatada exatamente assim para n = 7:
17 x 1 = 7
27 x 2 = 14
37 x 3 = 21
47 x 4 = 28
57 x 5 = 35- Tabuada do 7
- Tabuada do 3
Seu código é compilado com gcc 14 (-Wall -Wextra) e executado no Compiler Explorer (godbolt.org), um serviço público gratuito.
Soma dos dígitos
Leia um inteiro não negativo e imprima a soma dos dígitos dele. Para 4096, a resposta é 19 (4 + 0 + 9 + 6).
Use um laço while com % 10 (último dígito) e / 10 (descartar o último dígito).
- 4096
- 7
- 0
Seu código é compilado com gcc 14 (-Wall -Wextra) e executado no Compiler Explorer (godbolt.org), um serviço público gratuito.
Dúvidas sobre esta lição
Travou em algum ponto? Pergunte. Descobriu algo? Compartilhe. Explicar também é uma ótima forma de aprender.
Carregando publicações…