# 6.1 - Loops
Loops em C++ são condições que irão ser repetidas até que uma condição retorne false
Em C++,temos três loop's padrões: while
(enquanto), do while
(faz ... enquanto) e for(for é uma versão com recursos extras do while
,iremos falar sobre o for
na seção de vetores).
Exemplo:
#include <iostream>
int main ()
{
/*|--------------------------------------|
*| |
*| He4rt Developers |
*| |
*|--------------------------------------|
*/
int i = 0;
while(i < 10) // Enquanto i for menor que 10, ele irá repetir este escopo
{
std::cout << i << " "; // Exibição de i com um espaçamento
i++; // A cada repetição, irá iterar 1 em i,ou seja: 0 1 2 3 4 5.. até a condição do while retornar falso
}
std::cout << std::endl << "O numero final de i e: " << i << std::endl;
// Exibição: 0 1 2 3 4 5 6 7 8 9
// O numero final de i e: 10
// Após a exibição de 9, i é iterado e se torna 10, mas 10 < 10 é uma condição falsa, então o loop acaba saindo de seu escopo.
}
# Do while
#include <iostream>
int main ()
{
/*|--------------------------------------|
*| |
*| He4rt Developers |
*| |
*|--------------------------------------|
*/
int i { 0 } , j = { 0 };
std::string st = "Oi!";
do // Faz
{
std::cout << "i: "<< i++ << " / j: " << ++j << std::endl; // Interaçoes
}while(i < 10);// Enquanto
std::cout << std::endl; // Até aqui tem o mesmo efeito do que se utilizando apenas o while
do
{
std::cout << st << std::endl;
}while(st == "Ola!"); // Neste caso, st ainda sim será mostrado pois está anteriormente a condição, e o loop apenas retorna falso na condição.
}
Com estes conhecimentos, já podemos fazer algoritmos mais rebuscado,como por exemplo:
Construir um programa que leia o peso e o sexo masculino e feminino, de um conjunto de várias pessoas. O usuário irá informar a quantidade exata de pessoas. Calcular e escrever o menor peso do grupo de pessoas, maior peso dos homens e média de peso das mulheres
#include <iostream>
int main ()
{
int peso, menor_peso, maior_peso_homens, media_peso_mulheres = 0, quantidade_mulheres = 0;
std::string sexo;
int pessoas;
int i = 0;
std::cout << "Digite o numero de pessoas: \n";
std::cin >> pessoas;
while(i < pessoas)
{
std::cout << "Digite o peso da pessoa " << (i + 1) << ":\n";
std::cin >> peso;
std::cout << "Digite o sexo da pessoa " << (i + 1) << ":\n";
std::cin.ignore();
std::getline(std::cin, sexo);
if(menor_peso > peso || i == 0) // (|| i == 0) Para sempre entrar de primeira
{
menor_peso = peso;
}
if((maior_peso_homens < peso && sexo == "masculino") || i == 0) // Primeiramente ira verificar a condição entre (), e depois o || i == 0
{
maior_peso_homens = peso;
}
if(sexo == "feminino")
{
media_peso_mulheres += peso; // Somar todos os pesos de mulheres
quantidade_mulheres++; // Quantas mulheres tem
}
i++; // Iteracao necessaria
}
media_peso_mulheres /= quantidade_mulheres; // Dividir pela quantidade de mulheres, lembrado que fora do loop pois precisamos de toda a entrada necessária para calcular a media.
std::cout << "O menor peso e: " << menor_peso << std::endl;
std::cout << "O maior peso entre homens e: " << menor_peso << std::endl;
std::cout << "A media de peso entre mulheres e: " << media_peso_mulheres << std::endl;
}
Para não precisar usar (|| i == 0) você poderia inicializar o menor_peso com 999999 e maior_peso_homens com 0, por exemplo.