Neste tutorial, aprenderemos sobre loops aninhados em C ++. Aprenderemos a usar loops aninhados para, while e do … while em um programa.
Um loop dentro de outro loop é chamado de loop aninhado. Vamos dar um exemplo,
Suponha que desejamos percorrer cada dia da semana por 3 semanas.
Para conseguir isso, podemos criar um loop aninhado para iterar três vezes (3 semanas). E dentro do loop, podemos criar outro loop para iterar 7 vezes (7 dias). Por exemplo,
Exemplo: Aninhado para Loop
// C++ program to display 7 days of 3 weeks #include using namespace std; int main() ( int weeks = 3, days_in_week = 7; for (int i = 1; i <= weeks; ++i) ( cout << "Week: " << i << endl; for (int j = 1; j <= days_in_week; ++j) ( cout << " Day:" << j << endl; ) ) return 0; )
Resultado
Semana: 1 Dia: 1 Dia: 2 Dia: 3… Semana: 2 Dia: 1 Dia: 2 Dia: 3……
Podemos criar loops aninhados com while e do … while de maneira semelhante.
Exemplo: Exibindo um padrão
// C++ program to display a pattern // with 5 rows and 3 columns #include using namespace std; int main() ( int rows = 5; int columns = 3; for (int i = 1; i <= rows; ++i) ( for (int j = 1; j <= columns; ++j) ( cout << "* "; ) cout << endl; ) return 0; )
Resultado
* * * * * * * * * * * * * * * *
Neste programa, o loop externo itera de i == 1
para i == rows
.
O loop interno itera de j == 1
para j == columns
. Dentro do loop interno, imprimimos o caractere '*'
.
interromper e continuar dentro de loops aninhados
Quando usamos uma instrução break dentro do loop interno, ela termina o loop interno, mas não o loop externo. Por exemplo,
int weeks = 3, days_in_week = 7; for (int i = 1; i <= weeks; ++i) ( cout << "Week: " << i << endl; for (int j = 1; j <= days_in_week; ++j) ( // break during the 2nd week if (i == 2) ( break; ) cout << " Day:" << j << endl; ) )
Resultado
Semana: 1 Dia: 1 Dia: 2… Semana: 2 Semana: 3 Dia: 1 Dia: 2…
Este programa não executa o loop interno quando o valor de i é, 2
ou seja, ele não imprime os dias da 2ª semana. O loop externo que imprime as semanas não é afetado.
Da mesma forma, quando usamos uma instrução continue dentro do loop interno, ela ignora a iteração atual apenas do loop interno. O loop externo não é afetado. Por exemplo,
int weeks = 3, days_in_week = 7; for (int i = 1; i <= weeks; ++i) ( cout << "Week: " << i << endl; for (int j = 1; j <= days_in_week; ++j) ( // continue if the day is an odd number if (j%2 != 0) ( continue; ) cout << " Day:" << j << endl; ) )
Resultado
Semana: 1 Dia: 2 Dia: 4 Dia: 6 Semana: 2 Dia: 2 Dia: 4 Dia: 6 Semana: 3 Dia: 2 Dia: 4 Dia: 6
Este programa imprime apenas os dias pares.
Sempre que days_in_week é estranho, a continue
instrução pula essa iteração do loop interno.