Skip to content

Fluxo de Controle 2 - Loops

Uso de estruturas de repetição

Loops

Uma loop ou uma estrutura de repetição é um comando de uma linguagem de programação que permite a execução das mesmas linhas de código repetidas vezes.

As estruturas de repetição mais comuns em linguagens de programação são o while e o for.

while

O while executa o mesmo comando enquanto sua condição for verdadeira. Ele sempre tem a forma:

while(condição) comando
````

Assim como o `if`, o comando pode ser substituído por uma sequência de comandos com o uso de `{}`. Seguem alguns exemplos de uso do `while`:

```cpp
int x = 0;
while(x < 5) {
    cout << x << ' ';
    x++;
}
cout << '\n';
// 0 1 2 3 4
int x = 8;
while(x != 1) {
    cout << x << ' ';
    x /= 2;
}
cout << '\n';
// 8 4 2
int x = 2;
while(x < 1000) {
    cout << x << ' ';
    x *= x;
}
cout << '\n';
// 2 4 16 256
while(true) {
    cout << a;
}
// aaaa...

Loops podem executar infinitamente, caso a condição permita.

while(false) {
    cout << a;
}
// (nunca executa)
int x = 5;
while(x) {
    cout << x << ' ';
    x--;
}
cout << '\n';
// 5 4 3 2 1

for

O for faz o mesmo que o while, mas sua estrutura permite a declaração de uma ou mais variáveis do mesmo tipo e um comando para a alteração de valores a cada iteração. Ele sempre tem a forma:

for(declaração; condição; alteração) comando

Quando o programa chega ao for, são executadas a declaração e a condição. Caso a condição seja verdadeira, o comando é executado. Após o comando, o comando de alteração é executado e a condição é verificada novamente. Quando a condição for falsa, o programa continua após o for. Seguem exemplos de uso:

for(int i = 0; i < 5; i++) {
    cout << i << ' ';
}
cout << '\n';
// 0 1 2 3 4
for(int i = 0, j = 10; i != j; i++, j--) {
    cout << i << ' ' << j << '\n';
}
// 0 10
// 1 9
// 2 8
// 3 7
// 4 6

Loops Aninhados

É possível aninhar loops dentro de outros loops:

for(int i = 0; i < 5; i++) {
    cout << i << '\n';
    for(int j = 0; j < 3; j++) {
        cout << "    " << j << '\n';
    }
}
// 0
//     0
//     1
//     2
// 1
//     0
//     1
//     2
// 2
//     0
//     1
//     2
// 3
//     0
//     1
//     2
// 4
//     0
//     1
//     2

break

O comando break pode finalizar a execução de um loop:

for(int i = 0; i < 5; i++) {
    if(i == 3) break;
    cout << i << ' ';
}
cout << '\n';
// 0 1 2
while(true) {
    string entrada;
    cin >> entrada;
    if(entrada == "PARE!") break;
}

continue

O comando continue pode pular para a próxima iteração de um loop:

for(int i = 0; i < 5; i++) {
    if(i == 3) continue;
    cout << i << ' ';
}
cout << '\n';
// 0 1 2 4