La

Laços em C++

12 exercícios

Sobre Laços

Os laços servem para executar uma lógica repetidas vezes. Os dois tipos mais comuns são o while loop (repetição indefinida) e o for loop (repetição definida, ou contada). Existe também o laço for each, que vai aparecer em um conceito mais adiante.

Sintaxe geral

O for loop é composto por um cabeçalho e um bloco de código que contém o corpo do laço envolvido em chaves. O cabeçalho é composto por 3 componentes separados por ponto e vírgula ;: a instrução de inicialização, a condição e outra expressão. Cada um deles pode ficar vazio.

for (init-statement; condition; expression) {
  some_statement;
}
  • O componente init é um código que roda apenas uma vez, antes de o laço começar.
  • O componente condition deve ser uma expressão que resulta em um Boolean e que controla quando o laço deve parar. O código dentro do laço roda enquanto essa condição for verdadeira. Assim que essa expressão for avaliada como falsa, nenhuma outra iteração do laço vai rodar.
  • O componente expression é um código que roda ao final de cada iteração.

O while loop executa seu corpo enquanto sua condição for verdadeira. O trecho de código abaixo mostra como transformar um laço for em um laço while.

init-statement;
while(condition) {
    some_statement;
    expression;
}

Interlúdio: incrementos e decrementos

Ao trabalhar com laços, muitas vezes é preciso somar 1 ou subtrair 1 de uma variável contadora. Isso é tão comum que a operação tem operadores especiais: ++ e --.

Eles vêm em uma forma prefixada e uma forma pós-fixada. A forma prefixada altera a variável antes do uso na instrução, e a pós-fixada, depois. Na maioria das vezes, você provavelmente vai querer a versão prefixada.

int a{3};
int b{--a};
// b is 2, a is now 2
int c{a++};
// c is 2, a is now 3

Laços for: um exemplo

O componente init normalmente prepara uma variável contadora, a condição verifica se o laço deve continuar ou parar, e o componente post normalmente incrementa o contador ao final de cada repetição.

int sum{0};
for (int i{1}; i < 10; ++i) {
  sum += i;
}

Este laço soma os números de 1 a 9 (incluindo o 9).

break e continue

Dentro do corpo de um laço, você pode usar a palavra-chave break para interromper totalmente a execução do laço:

int sum{2};
while(true) {
    sum *= 2;
    if (sum > 1000)
        break;
}
// sum is now 1024

Já a palavra-chave continue apenas interrompe a execução da iteração atual e segue para a próxima:

int equal_sum{0};
for (int i{1}; i < 7; ++i) {
  if  (n%2 == 1) {
    continue;
  }
  equal_sum += i;
}
// equal_sum is now 12

Observação: normalmente é mais fácil entender a lógica do laço quando o uso de break e continue é minimizado ou evitado por completo.

Editar via GitHub O link abre em uma nova janela ou aba

Aprenda Laços

A prática está bloqueada

Desbloqueie mais 4 exercícios para praticar Laços