O que são loops aninhados em C ++ com exemplos?

O que são loops aninhados em C ++ com exemplos?
Primeiro de tudo, o que é um loop? Um loop é um construto que executa declarações repetidamente até que uma condição especificada seja atendida. As declarações estão no bloco do loop. Em C ++, se houver apenas uma declaração a ser repetida, não haverá bloco (aparelho). Há o loop do dado-while, enquanto o loop e o loop for. Tais construções são chamadas de declarações compostas.

loop do-while

Um loop simples de fazer-while é:

int m = 0;
fazer

cout << m << ";
++m;
while (M<5);

Há uma condição inicial que não faz parte do loop. Esta condição inicial é "int m = 0;". O loop começa com a palavra reservada, faça e termina com um semicolon, após a condição do tempo, “(M<5)”. The loop means to print out integers, beginning from zero until m is equal to 5. When m is equal to 5, no printing takes place.

Com o loop do dado-while, o bloco é executado primeiro, antes que a condição seja verificada. A condição é atendida quando m é igual a 5. Antes disso, o bloco é executado 5 vezes, começando de uma contagem de 0 a 4. Portanto, a saída é:

0 1 2 3 4

loop de enquanto

Com o loop do dado-while, o bloco é executado a cada vez que a condição é verificada. Por outro lado, com o loop while, a condição é verificada primeiro, cada vez, antes do bloco ser executado. O seguinte loop enquanto faz o que o loop de fazer-quando fez:

int m = 0;
enquanto (m<5)

cout << m << ";
++m;

Há uma condição inicial que não faz parte do loop. Esta condição inicial é "int m = 0;". O loop começa com a palavra reservada e termina no segundo e fechamento para o seu bloco. Não há palavra reservada "faça" aqui. A condição do tempo é “(M<5)”, same as in the above code. When the while-condition is false, that is, m equals 5, the block is not executed, and that is the end of the loop. Note that the loop does not end with a semicolon in this case. The output is the same as in the previous code, that is:

0 1 2 3 4

para loop

No loop de frequência acima, existem cinco componentes principais. O primeiro é a declaração de inicialização,

int m = 0;

A repetição da execução do bloco de loop ocorre por 5 números, começando quando M é zero. O próximo componente é a condição enquanto<5). No repetition (no execution of the block) occurs when the while condition results in false. The third component is the loop compound statement itself, which can be imagined as the block. The fourth component is inside the loop compound statement. It is:

cout << m << ";

Imprime o valor de m. E o quinto componente é a declaração de incremento,

++m;

Que está no bloco, no final. Isso causa repetição da execução do bloco. Ele apresenta o próximo número para repetir a execução do bloco. No entanto, a repetição não ocorrerá se a condição enquanto resultar em falsa.

Os diferentes cinco componentes podem ser reorganizados em um loop para seguintes:

para (int m = 0; m<5; ++m)

cout << m << ";

A saída é a mesma, eu.e.

0 1 2 3 4

Existem três declarações nos parênteses do loop for: existe a declaração de inicialização, existe a condição enquanto é uma declaração curta, e há a declaração de incremento. No bloco, desta vez, há apenas uma afirmação, que é a declaração central. A declaração de incremento, que estava no quarteirão, foi levada para os parênteses. Mais declarações podem ser adicionadas a qualquer um dos blocos acima.

O loop do dado-while e o loop while são fundamentalmente os mesmos que o loop for. O loop for coloca o loop em uma forma clássica e simplificada. Qualquer loop precisa de um estado de inicialização, uma condição e um código para causar a próxima repetição, que não ocorrerá quando a condição enquanto resultar em false.

Ao aninhar um loop, esses três recursos devem ser levados em consideração. Este artigo explica diferentes maneiras de nidificar loops em c++. Os formulários de loop básico foram explicados acima.

Conteúdo do artigo

  • Nidificação de loops do dado-while
  • Nidificação de alças enquanto
  • Nidificação para maca
  • Conclusão

Nidificação de loops do dado-while

A partir do programa a seguir, uma tabela de 5 linhas e 4 colunas de caracteres são exibidas. Em C ++, a sequência de letras maiúsculas ou a sequência de letras minúsculas pode ser comparada à medida que números inteiros são comparados, conforme ilustrado no seguinte loop aninhado:

#incluir
usando namespace std;
int main ()

int i = 0;
char j = 'a';
fazer

fazer

cout << j << ";
j ++;
while (j < 'E');
j = 'a';
cout << endl;
i ++;
enquanto eu < 5);
retornar 0;

A saída é:

A B C D
A B C D
A B C D
A B C D
A B C D

A primeira linha do programa inclui a biblioteca iostream no programa. Esta biblioteca é necessária para imprimir o texto. A próxima linha é uma declaração, garantindo que qualquer nome usado seja do espaço de nome padrão, a menos que indicado de outra forma.

É útil pensar em um loop aninhado em duas dimensões. Ambos os loops agem em cada célula. O loop interno é responsável pelas colunas, enquanto o loop externo é responsável pelas linhas.

É assim: enquanto o loop externo aponta para a primeira linha, o loop interno imprime um valor de célula, por coluna, para a primeira linha. Enquanto o loop externo aponta para a segunda linha, o loop interno imprime um valor de célula, por coluna, para a segunda linha. Isso continua até que a última linha seja impressa.

No programa acima, o estado de inicialização do loop externo é,

int i = 0;

O estado de inicialização do loop interno é,

char j = 'a';

Observe que todo o loop interno foi colocado logo após a cinta de abertura do loop externo. Apenas uma declaração imprime cada caractere, e essa afirmação deve estar no loop interno. Isso ocorre porque os loops acessam uma célula por iteração combinada. A afirmação é:

cout << j << ";

O alfabeto em maiúsculas pode ser manuseado como números inteiros (números inteiros positivos).

A condição do tempo para o loop interno é,

enquanto (j < 'E')

No final do núcleo do loop interno, mas não no final do código do loop interno. Isso significa que a quinta letra 'e' e além não deve ser exibida. Depois que o loop interno exibiu 4 elementos seguidos, o estado inicial é redefinido ou reinicializado com a declaração,

j = 'a';

que não é precedido pela palavra reservada, char. Acendendo com a palavra reservada, Char declarará uma nova variável, que não fará parte da iteração bidimensional. A declaração depois disso, eu.e.

cout << endl;

força o cursor da tela para a próxima linha para que a próxima linha possa ser impressa na próxima linha.

Após esta afirmação, o código essencial para o loop externo começa. A condição do tempo para o loop externo é,

(eu < 5)

o que significa que as linhas são contadas como 0, 1, 2, 3, 4, ainda cinco números.

O código para o loop interno, para causar a impressão do próximo personagem (repetição da coluna) na mesma linha, é:

j ++;

Quando a condição do tempo para o loop interno resulta em false, nenhum caractere é impresso. O código para o loop externo causar a impressão da próxima linha (repetição de linha) é:

i ++;

Quando a condição do tempo para o loop externo resulta em False, nenhuma linha adicional é impressa.

E assim, a variável, eu fui usada para o loop externo, as linhas; e a variável, J foi usada para o loop interno, os caracteres da linha.

Nidificação de alças enquanto

O programa a seguir faz a mesma coisa que o programa acima:

#incluir
usando namespace std;
int main ()

int i = 0;
char j = 'a';
enquanto eu < 5)

enquanto (j < 'E')

cout << j << ";
j ++;
;
j = 'a';
cout << endl;
i ++;
;
retornar 0;

A saída é:

A B C D
A B C D
A B C D
A B C D
A B C D

O algoritmo deste código é quase o mesmo que o do anterior. A principal diferença é que, aqui, para cada iteração para o loop interno ou externo, a condição enquanto é verificada antes que o corpo do loop seja executado. No código anterior, o corpo é executado antes da condição enquanto a condição é verificada.

Nidificação para maca

O programa a seguir faz a mesma coisa que o programa acima:

#incluir
usando namespace std;
int main ()

para (int i = 0; i < 5; i++)

para (char j = 'a'; j < 'E'; j++)

cout << j << ";

cout << endl;

retornar 0;

A saída é:

A B C D
A B C D
A B C D
A B C D
A B C D

Há certas coisas a serem observadas aqui: o loop aninhado é mais curto de altura do que seus outros colegas. A declaração de incremento para o loop interno foi removida de seu corpo e levada para os parênteses para o seu loop para. A declaração de incremento para o loop externo foi removida de seu corpo e levada para os parênteses para o seu loop para. A reinicialização (redefinição) da variável do loop interno, j não é mais necessária como uma declaração para o loop externo; Porque a declaração de inicialização para o loop interno se reinicaliza para cada iteração do loop externo.

Não se esqueça que o loop for uma forma clássica e simplificada dos outros dois loops.

Conclusão

Um loop tem três características importantes: um estado de inicialização, a condição e o empurrão para a próxima repetição do corpo do loop. Quando um loop está aninhado em outro, esses três recursos devem ser considerados para cada um dos loops correspondentes. Todos os loops acima de aninhados são loops de ninho de um nível. É útil pensar em um ninho de um nível, de loops, como um layout bidimensional. O código do loop aninhado é o que acessa cada célula para o layout 2D. Este tutorial deu ao leitor o básico do ninho de loop.