Jump to content
Sign in to follow this  
Dark Skyllen

#3~2 - Loops, estruturas de repetição

Recommended Posts

Dark Skyllen    7
Dark Skyllen

Loops

pt2

 

 

Link para última aula -> Aulas de C++ [Parte 3 aula 1]

 

 

  • While

 

O loop while não é muito diferente do loop for. Ambos ficarão em um loop até que X condições sejam falsas. Não há muito segredo, desde que você tenha aprendido o comando for, o while ficará muito fácil.

 

 

Exemplo simples:

 


#include <iostream.h>

using namespace std;

int main(int argc, char *argv[])
{

cout << "Contando de 0 até 10 \n";
int contador = 0;
while (contador <= 10)
{
cout << contador << endl;
contador++;
}

system("PAUSE");
return EXIT_SUCCESS;
}

Nesse exemplo simples e práticos criamos um loop que executará enquanto a variável contador for <= 10. Quando a variável for maior do que 10 ele não entra no loop, pulando para o system("pause").

 

 

Erro bastante comum:

contador++;
Erros de loops infinitos são bastante comuns, principalmente quando esquecemos da linha acima. Sem ela, nosso contador passaria a ser sempre 0, o que criaria um loop que não teria fim. Isso causa o travamento do aplicativo. Então sempre analise seu for ou while para que os mesmos não se executem infinitamente (à menos que você realmente queira isso)

 

 

 

 

 

  • Usando o continue

 

O continue é uma estrutura usada para que antes do fim do loop, voltemos ao ínicio do mesmo.

 

 

Exemplo simples:

 


#include <iostream.h>

using namespace std;

int main(int argc, char *argv[])
{

cout << "Contando de 0 até 10 \n";
int contador = 0;
std::string opcao; // Declaramos uma variavel string, da classe std.
while (contador <= 10)
{
cout << "Recomeçar?" << endl;
cin >> opcao;
if (opcao == "s") // Manuseamos essa variavel string
{
cout << "Começando..." << endl;
contador = 0; // Volta o contador para o 0.
continue; // Volta ao começo do loop.
}
else
{
cout << contador << endl;
contador++;
}
}

system("PAUSE");
return EXIT_SUCCESS;
}

 

 

 

  • Loop while infinito

As vezes precisamos declarar um loop infinito, mas sempre atenção ao criarem loops infinitos.

 

Exemplo simples:

 


#include <iostream.h>

using namespace std;

int main(int argc, char *argv[])
{
std::string opcao;

while(true)
{
cout << "Estou rodando meu programa! Pressione Q para sair." << endl;
cin >> opcao;
if (opcao == "q" || opcao == "Q")
{
cout << "Saindo ... " << endl;
break;
}

}

system("PAUSE");
return EXIT_SUCCESS;
}

Criamos um loop infinito que só será parado de executar se o usuário apertar Q ou q.

 

 

 

  • Do .. While

O do...while faz a mesma coisa que o loop while, porém com propósito diferentes. Nesse comando a verificação é feita por último ao invéz de se fazê-la no começo, ou seja, quando usarmos o do...while ele fará o código pelo menos 1 vez.

 

Exemplo simples:

 


#include <iostream.h>

using namespace std;

int main(int argc, char *argv[])
{
int contador = 0;
do
{
cout << "Contador está no " << contador << endl;
contador++;
}
while(contador = 0);


system("PAUSE");
return EXIT_SUCCESS;
}

 

 

Exercício:

 

Faça um programa que peça pra você digitar P ou p por 10 vezes, caso o usuário digite um valor diferente de P ou p o programa volta pro início e começa a contar novamente. Se ele digitar o valor 10 vezes corretamente o programa fecha.

[spoiler=Correção do exercício]


#include <iostream.h>

using namespace std;

int main(int argc, char *argv[])
{
std::string opcao;
int contador = 0;
while(contador < 10)
{

cout << "Digite a tecla secreta" << endl;
cin >> opcao;
if (opcao == "p" || opcao == "p")
{
contador++;
cout << "Você já digitou a senha correta: " << contador << " vezes." << endl;
}
else
{
contador = 0;
system("cls");
continue;
}
}

system("PAUSE");
return EXIT_SUCCESS;
}

 

Edited by Dark Skyllen

Share this post


Link to post
Share on other sites
Mickfern    32
Mickfern

Velho estou seguindo as aulas, estou entendo um pouco... porém acho que na aula 2 ou 1, voce fez 1 programa para mostrar 2 numero, até aqui tudo bem, o programa mostrou 1 e 6, da onde ele tirou o 6 ? Obrigado, suas aulas é mt boa, consegui aprender o for ( coisa que era dificil ) e estou aprendendo o while // LoL !

Share this post


Link to post
Share on other sites
Dark Skyllen    7
Dark Skyllen
Velho estou seguindo as aulas, estou entendo um pouco... porém acho que na aula 2 ou 1, voce fez 1 programa para mostrar 2 numero, até aqui tudo bem, o programa mostrou 1 e 6, da onde ele tirou o 6 ? Obrigado, suas aulas é mt boa, consegui aprender o for ( coisa que era dificil ) e estou aprendendo o while // LoL !

 

Que bom que achou as aulas boas! Continue seguindo e bom aprendizado.

 

Quanto à sua dúvida, poderia me especificar qual aula certa é? Ai posso resolver sua dúvida com prazer.

 

Abraços,

Dark Skyllen

Share this post


Link to post
Share on other sites
dragonlorde    0
dragonlorde

[spoiler=Exercicio ;D]

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
   std::string opt;
   int count = 0;

while (count < 11)
{
cout<<"Digite P ou p 10 vezes para continuar...\n";
cin>>opt;

if (opt == "P" || opt == "p")
{
count++;
cout<<count;
}
else
{
cout<<"Erro";
count = 0;
continue;
}
if (count == 11)
{
break;
}}

   system("PAUSE");
   return EXIT_SUCCESS;
}

 

 

Share this post


Link to post
Share on other sites
BLackBode    0
BLackBode

Haha.. essa eu consegui mais facil, meu exercicio nao ficou exatamente igual, mas a funçao é a mesma :D

 

As aulas sao otimas, muito boas mesmo..

 

[spoiler= Exercicio]#include <cstdlib>

#include <iostream>

 

using namespace std;

 

int main(int argc, char *argv[])

{

int contagem = 0; // declarando variavel contagem, com valor inicial igual a zero

std::string string; // declarando string string, sem valor inicial

do

{

cout << "Ainda faltam : " << 10-contagem << "\n\nDigite 'P' ou 'p' : "; // Mostra a quantidade necessaria de "P's" ou "p's" Para terminar

cin >> string; // Entrada de dados (string)

if(string == "P" || string == "p") // condiçao string = "P" ou "p"

{

contagem++; // contagem +1

system("cls"); // limpa tela

}

else // condiçao letra errada

{

contagem = 0; // zera contagem

system("cls");

}

}

 

while(contagem != 10); // condiçao para quebrar o loop

 

 

cout << "Saindoo..." << endl;

system("PAUSE");

return EXIT_SUCCESS;

}

 

 

Share this post


Link to post
Share on other sites
Imitador    0
Imitador

O meu foi o que mais ficou diferente.

 

[spoiler=Tarefa]

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[]) {

{
int contador = 1;
std::string sair;

while (contador <= 10) {
cout << "Digite \"p\" ou \"P\" " << 11-contador << " vezes para sair do programa.\n" << endl;
cin >> sair;

if (sair != "p")
{
system("cls");
cout << "Voce digitou um numero diferente de \"p\" ou \"P\".\n" << endl;
contador = 1;
continue;       
} else{
system("cls");
cout << "Voce esta no numero " << contador << ".\n";
contador++;

}

}
system("PAUSE");
return EXIT_SUCCESS;
}
}

 

 

PS: Tenho uma dúvida, porquê eu não posso utilizar if (sair != "p" || sair != "P")?

Porquê eu testei aqui e não funfou, só funfou com uma variavel, do modo que está no meu código.

Share this post


Link to post
Share on other sites
vamppuncker    2
vamppuncker

[spoiler=Exercício]

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
   std::string opcao;
   int contador = 0;
   int vezes = 10;

   while(true)
   {
              system("CLS");
              cout << "Digite P "<<vezes - contador<<" vezes para sair do programa."<< endl;
              cin >> opcao;
              if (opcao == "p" || opcao == "P")
              {
               contador++;
                 if (contador >= 10)
                 {
                 system("CLS");
                 cout << "Saindo ... " << endl;
                 break;         
                 }
              }
   }
   system("PAUSE>NUL");
   return EXIT_SUCCESS;
}

 

 

--edit

 

Esqueci de agradeçer ;x Obrigado! :D

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×