Ci

Ciclos em C++

12 exercícios

Sobre Ciclos

Os ciclos servem para executar alguma lógica repetidamente. Os dois tipos mais comuns são o while loop (ciclo indefinido) e o for loop (ciclo definido, ou contado). Existe também o ciclo for each, que vai aparecer num 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 ciclo entre chavetas. O cabeçalho é composto por 3 componentes separados por pontos e vírgulas ;: a instrução de inicialização, a condição e outra expressão. Qualquer uma delas pode estar vazia.

for (init-statement; condition; expression) {
  some_statement;
}
  • O componente inicialização é código que corre apenas uma vez, antes de o ciclo começar.
  • O componente condição tem de ser uma expressão que seja avaliada como verdadeira ou falsa e que controla quando o ciclo deve parar. O código dentro do ciclo corre enquanto esta condição for verdadeira. Assim que esta expressão for avaliada como falsa, deixam de correr mais iterações do ciclo.
  • O componente expressão é código que corre no fim de cada iteração.

O while loop executa o seu corpo enquanto a verificação da condição for verdadeira. O excerto de código abaixo mostra como transformar um ciclo for num ciclo while.

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

Interlúdio: incrementos e decrementos

Ao trabalhar com ciclos, é frequente ser preciso somar 1 ou subtrair 1 a um contador. Isto é tão comum que a operação tem operadores especiais: ++ e --.

Existem na forma de prefixo e de sufixo. O prefixo altera a variável antes de esta ser usada na instrução e a versão de sufixo altera-a depois. Na maior parte das vezes, provavelmente queres a versão de prefixo.

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

Ciclos for: um exemplo

O componente de inicialização costuma preparar uma variável de contagem, a condição verifica se o ciclo deve continuar ou parar e o componente posterior costuma incrementar o contador no fim de cada repetição.

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

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

Break e continue

Dentro do corpo de um ciclo, podes usar a palavra-chave break para parar completamente a execução do ciclo:

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

Em contrapartida, a palavra-chave continue apenas interrompe a execução da iteração atual e passa para a seguinte:

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

Nota: normalmente é mais fácil compreender a lógica do ciclo quando o uso de break e continue é reduzido ao mínimo ou evitado por completo.

Editar via GitHub A ligação abre numa nova janela ou separador

Aprende Ciclos

A prática está bloqueada

Desbloqueia mais 4 exercícios para praticares Ciclos