Subsecções


19 Estruturas de Repetição

A linguagem C++ possui comandos para repetir uma sequência de instruções. Estas estruturas de repetição, também conhecidas como laços (do inglês loops). As construções while e for foram vistas na Seção 9. Agora veremos do ... while e novas sentenças associadas a estruturas de repetições.


19.1 A Estrutura de Repetição do...while

Há outro comando de repetição em linguagem C++ . O do...while é bastante parecido com while, com a diferença que a expressão de teste é avaliada DEPOIS que o corpo da repetição é executado.

O formato do do...while é:

do

corpo da repetição

while (expressão teste )

\includegraphics[scale=1.0]{do-while}

O exemplo abaixo usa o do...while:

             int contador = 0;

             do {
                cout <<  "contador = " << contador << endl;
                contador += 1;
             } while( contador < 5 );

             cout << "ACABOU !!!!\n";

A execução deste programa é idêntico ao primeiro exemplo mostrado para o comando while, com a expressão de teste mudada para o final.

Saída:

             contador = 0
             contador = 1
             contador = 2
             contador = 3
             contador = 4
             ACABOU !!!!

O do...while é usado quando o corpo da repetição deve ser executado pelo menos uma vez. Um exemplo comum disto é o processamento da entrada de um programa.

Exemplo 3:

Neste exemplo, o teste do laço é baseado no valor digitado pelo usuário. O laço deve ser executado pelo uma vez antes que o teste sobre o valor seja executado.

#include <iostream>
using namespace std;

int main( ){

  int num;
  
  cout << "Entre com um numero par:\n";
  
  do{
    cin >> num;
  } while( num % 2 != 0 );
  
  cout << "Obrigado.\n";
}

Exemplo de execução:

     Entre com um numero par:
     3
     1
     5
     4
     Obrigado.

Neste caso, o valor da variável num é digitado pelo usuário. Depois disso, o teste é executado para verificar se o número é par (o teste num % 2 != 0 é falso se num é par já que o resto da divisão de qualquer número par por 2 é zero).

É possível escrever o programa acima usando while:

#include <iostream>
using namespace std;

int main( ){

  int num;      // Atribui um numero impar a  num
  
  cout << "Entre com um numero par:\n";
  
  num = 1;
  while( num % 2 != 0 ){
    cin >> num;
  }
  cout << "Obrigado.\n";
}

O problema com este programa é que a variável num deve ser inicializada com um valor que torne o teste do laço verdadeiro. Neste exemplo, é simples encontrar tal valor. Para uma expressão teste mais complicada, isso pode não ser tão fácil.


Créditos: Documento produzido pelo Prof. Armando L.N. Delgado (DINF/ET/UFPR), baseado em revisão sobre material de Prof. Carmem Hara e Prof. Wagner Zola (DINF/ET/UFPR).

Esta obra está licenciada com uma Licença Creative Commons Atribuição-NãoComercial-CompartilhaIgual 4.0 Internacional.  Licença Creative Commons

Armando Luiz Nicolini Delgado
2020-10-20