Ajude nosso projeto a se manter online.

As instruções BREAK e CONTINUE do C++

Neste tutorial, vamos aprender duas instruções, ou comandos, muito importantes: o break e o continue, em C++.

Instrução BREAK em C++

Se você fez direitinho e na ordem, o curso C++ Progressivo, já deve conhecer este comando break, pois usamos no tutorial:
Switch, case e break

Lá, quando esse comando era executado, ele simplesmente encerrava o teste condicional SWITCH.
Aqui, ele faz a mesma coisa, mas no caso ele serve para interromper um laço, a qualquer instante.

No código abaixo, o C++ fica pedindo um número ao usuário e calculando seu quadrado.
Se em algum momento o usuário digitar 0, o IF se torna verdadeiro e o comando break é acionado, interrompendo sumariamente o laço WHILE:
#include <iostream>
using namespace std;

int main()
{
    int num;

    while(true){
        cout<<"Numero: ";
        cin >>num;

        if(num==0)
            break;

        cout<<num*num<<endl;
    }

    return 0;
}
Ou seja, quando queremos, em algum momento, interromper um laço, usamos a instrução BREAK, que geralmente vem dentro de um teste condicional, dentro de algum looping.

Se tivermos um laço dentro de outro, e dentro deste estiver uma instrução BREAK, somente esse laço mais interno que será interrompido, ok?

O seguinte código fica pedindo notas para o usuário, para calcular a média.
Caso o usuário digite uma nota que não é válida (abaixo de 0 ou acima de 10), o laço WHILE é encerrado e fornecemos a média dos números digitados dessa nota inválida:

#include <iostream>
using namespace std;

int main()
{
    int aux=0;
    float num, sum=0;

    while(true){
        cout<<"Nota: ";
        cin >> num;

        if(num<0 || num>10)
            break;

        sum+=num;
        aux++;
    }

    cout<<"Média: "<<(sum/aux)<<endl;
    return 0;
}
Note que garantimos que os números fornecidos sejam corretos (entre 0 e 10), pois caso contrário o laço é encerrado.

O comando CONTINUE em C++

Se o BREAK encerra o teste condicional ou estrutura de controle, o comando CONTINUE encerra apenas a iteração.

Ou seja, pula pra próxima iteração.

Vamos somar todos os números de 1 até 100, exceto os múltiplos de 4:
#include <iostream>
using namespace std;

int main()
{
    int num, sum=0;

    for(num=1; num<=10 ; num++){
        if(num%4==0)
            continue;
        sum += num;
    }

    cout<<"Total: "<<sum<<endl;
    return 0;
}
Dentro do laço verificamos se o número é divisível por 4, se for, essa iteração é pulada, não rodando o código seguinte ao CONTINUE, vai pra próxima iteração normalmente.

Assim como o BREAK, o comando CONTINUE geralmente ocorre sob determinado teste condicional, quando você quer excluir uma iteração específica do looping.

Vamos refazer o código que calcula a média.
Agora, ao invés de parar a execução, ele pula a iteração, não somando aquela nota inválida na soma:
#include <iostream>
using namespace std;

int main()
{
    int aux=0;
    float num, sum=0;

    while(true){
        cout<<"Nota: ";
        cin >> num;

        if(num>10){
            cout<<"Nota acima de 10 são inválidas"<<endl;
            continue;
        }
        if(num<0){
            cout<<"Nota negativa, encerrando cálculos e exibindo a média: ";
            break;
        }

        sum+=num;
        aux++;
    }

    cout<<(sum/aux)<<endl;
    return 0;
}
Note que a média é calculada apenas para números válidos. Para encerrar o looping, você precisa digitar um valor negativo.

Nenhum comentário:

Postar um comentário