Conheça a iniciativa da Biblioteca dos Desenvolvedores  
Índice da Biblioteca  
Área dos Usuários  
Fórum de Discussão  
Forúm
 
 

16 - Estruturas de repetição

Agora iremos aprender um assunto que é muito usado durante o desenvolvimento de um jogo.
Uma estrutura de repetição permite ao programador especificar que uma ação deve ser repetida enquanto alguma condição for verdadeira.  

Exemplo:
  Enquanto existir itens na minha lista de compras
     Compra próximo item e Excluí-lo da minha lista.

O exemplo acima mostra que enquanto existir um item na minha lista de compras o programa vai executar a função compra mais itens e a função excluir da minha lista.

Somente após não existir mais itens em minha lista a condição se torna falsa e a estrutura é desfeita.

Dessa forma podemos dar um exemplo de um loop principal de um jogo:
  Enquanto não for pressionado ESC
     Executa movimentos, animações, controle de periféricos, tratamento de mensagens...


Dessa forma fica fácil de perceber a importância da estrutura de repetição dentro de um jogo.
Ao total temos 3 tipos de estruturas de repetição.

Em C++ são eles:

  • while () {}
  • do while () {}
  • for () {}


WHILE (){}

O comando while é precedido de uma condição para que o looping aconteça. Traduzindo ao pé da letra while significa “Enquanto”.



CÓDIGO...

// Exemplo de while

#include <iostream>

using namespace std;

int main()
{
   int iNumero = 0;

   while ( iNumero != 9 )
   {   
      cout << "Digite um numero.: ";
      cin >> iNumero;
   }   
   
   cout << "PROGRAMA FINALIZADO" << endl;
   system("pause");
   return 0;
}


FIM DE CÓDIGO...

Se você executar o código acima irá perceber que enquanto o usuário digitar números diferentes de nove o programa continua escrevendo a mensagem “Digite um numero.: ”. Assim que o 9 for digitador o programa escreve a mensagem “PROGRAMA FINALIZADO” e pausa o resultado para o usuário analisar.

 

DO WHILE (){}

O comando do while é precedido do código em seguida de uma condição para que o looping aconteça.

Basicamente o código abaixo tem a mesma função que o anterior só que ao invés de declarar a condição no topo da estrutura ela é declarada no final da estrutura.

O comando do while não é muito utilizado, é mais facil usar o while comum.


CÓDIGO...

#include <iostream>

using namespace std;

int main()
{
   int iNumero = 0;

   do
   {   
      cout << "Digite um numero.: ";
      cin >> iNumero;
   } while ( iNumero != 9 );

   cout << "PROGRAMA FINALIZADO" << endl;

   system("pause");
   return 0;
}


FIM DE CÓDIGO...

O resultado do código acima é semelhante ao resultado do código escrito com a estrutura while.

A estrutura de repetição do/while é semelhante à estrutura while.
Na estrutura while a condição de continuação do laço é testada no principio do laço antes do corpo do laço ser executado.

A estrutura do/while testa a condição de continuação do laço depois do corpo do laço a ser executado; assim, o corpo do laço será executado pelo menos uma vez. Note que não é necessário usar chaves no comando do/while, mas nós usamos para uma melhor visualização do código e para evitar confusão com o comando while.

 


FOR () {}

O comando for é um contador, ele é precedido de uma expressão.
Para determinar essa expressão precisamos prestar atenção para os seguintes itens:

  1. O nome de uma variável de controle do contador
  2. O valor inicial da variável
  3. A condição que testa a condição final da variável
  4. O incremento ou decremento pelo qual a variável de controle é modificada a cada execução do laço.

Nessa estrutura o laço é controlado por um contador. Ou seja, nos dois exemplos acima nós dependíamos de uma intervenção do usuário ou de algum resultado para tornar no a condição do laço satisfatória. Agora, nosso laço terá, inicio, meio e fim que nós iremos pré-determinar.


CÓDIGO...

#include <iostream>

using namespace std;

int main()
{
   int i = 0;

   for ( i=0; i<10; i++ )   
   {   
      cout << "Contador.: " << i << endl;
   }   

   cout << endl;

   for ( i=9; i>=0; i-- )
   {
      cout << "Contador.: " << i << endl;
   }

   cout << "PROGRAMA FINALIZADO" << endl;
   system("pause");

   return 0;
}


FIM DE CÓDIGO...

No exemplo acima declaramos a variável i como sendo nosso contador.

Ao declarar a estrutura for na primeira vez iniciamos o contador com 0, testamos se ele é menor que 10, em seguida incrementamos a variável. Dessa forma o programa acima irá escrever os números de 0 a 9 na tela. No segundo comando for fizemos o contador mostrar o número em ordem decrescente.

 

Comando break

O comando break altera o fluxo de controle da estrutura de repetição. Dessa forma, podemos parar a execução do laço de imediato assim que uma condição for satisfatória. A execução do programa continua com o primeiro comando depois da estrutura.


CÓDIGO...

#include <iostream>

using namespace std;

int main()
{
   int x = 0;

   for ( x=0; x<10; x++ )
   {   
      if (x == 5 )
      {   
         break;
      }
      
      cout << "Valor de X.: " << x << endl;
   }

   cout << "A estrutura saiu do laco com x igual a " << x << endl;
   system("pause");

   return 0;

}


FIM DE CÓDIGO...

Note que sem usarmos o comando break a estrutura deveria imprimir na tela uma numeração de 0 a 9. No entanto, incluímos uma estrutura de seleção if para sair do laço assim que o valor de x for igual a 5.

Dessa forma, todos os comandos dentro da estrutura de repetição após o break são ignorados e o próximo comando a ser executado passa a ser o primeiro comando após o laço for, nesse caso, a mensagem que mostra o valor de x após a saída do laço.

 

Comando continue

O comando continue quando executado numa estrutura de repetição também altera o fluxo de controle. Dessa forma, salta os comandos restantes no corpo dessa estrutura e prossegue com a próxima repetição do laço. Diferente do comando break que sai da estrutura, a execução do programa com o comando continue continua com o primeiro comando dentro da estrutura de repetição.

 


CÓDIGO...

#include <iostream>

using namespace std;

int main()
{
   int x = 0;  

   for ( x=0; x<10; x++ )
   {   
      if ( x == 5 )
      {   
         continue;
      }
   
      cout << "Valor de X.: " << x << endl;
   }

   cout << "A estrutura saiu do laco com x igual a " << x << endl;
   system("pause");
   
   return 0;
}


FIM DE CÓDIGO...

O código acima deverá imprimir na tela números de 0 a 9 com exceção do numero 5.

Esse exemplo utiliza o mesmo código que o primeiro exemplo com o comando break.

Só que ao invés de sair do laço quando o valor de x é igual a 5 o programa pula a impressão do numero 5 na tela e continua imprimindo os outros valores. Dessa forma temos todos os números de 0 a 9 na tela com exceção do número 5.



Contribuidor
Bruno A. Rovela
01/06/2007


 

« Anterior

 

Próximo »

 
 

01/06/2007 (C) Copyright. Todos os Direitos Reservados. Leia a política de privacidade do portal.
É proibida a cópia de conteúdo deste site de acordo com a Lei Brasileira de Direitos Autorais.