Ir para conteúdo
Entre para seguir isso  
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;
}

 

Editado por Dark Skyllen

Compartilhar este post


Link para o post
Compartilhar em outros 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 !

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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;
}

 

 

Compartilhar este post


Link para o post
Compartilhar em outros 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;

}

 

 

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
Entre para seguir isso  

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×