Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Não consigo entender a lógica do for e do for aninhado

Estou tendo dificuldade de entender qual a ordem que o programa lê o código. Ele vai do for externo para o interno depois de adicionar mais 1 a variável, isso?

Não consigo visualizar isso de maneira que faça sentido com o que ta sendo imprimido.

2 respostas
solução!

Oie Matheus, tudo bem contigo?

Funciona da seguinte forma:

  1. O for externo inicia
  2. O for interno roda enquanto a variável "coluna" for menor que 5 ou se a condição do "if" for verdadeira, que ai o "break" para o "for" interno

Ou seja:

public class ProgramaComBreak {

    public static void main(String args[]) {

        for(int linha = 0; linha < 5; linha++) {    // esse "for" inicia todo o processo, e ele vai funcionar enquanto "linha" for menor que 5

                for (int coluna = 0; coluna < 5; coluna++) {    // esse "for" inicia logo após o primeiro, ele vai rodar enquanto "coluna" for menor que 5, e só após a condição "coluna < 5" se tornar falsa que o "for" externo" vai rodar novamente

                        if (coluna > linha) {    // caso a "coluna" for maior que "linha" esse "if" vai ser iniciado
                            break;     // esse break para o "for" de maneira forçada, fazendo com que o "for" externo rode novamente
                }

                System.out.print(coluna+1);  //  é responsável por printar os resultados que vemos no console
            }
            System.out.println(); //  é responsável por quebrar a linha, dando o formato de "escada" para os dados
        }
    }
}

Vendo de maneira lógica:

Por conta do "for" externo ter a condição "linha < 5", serão printados 5 linhas.

No primeiro loop externo (linha = 0):

  • O "loop" interno acontece 2x, no primeiro o número 1 é printado, e no começo do segundo "loop" a variável "coluna" começa valendo 1, fazendo com que a condição do "if" seja verdadeira, fazendo com que o "loop" quebre por conta do "break"

No segundo loop externo (linha = 1):

  • O "loop" interno acontece 3x, no primeiro e segundo os números 1 e 2 são printados, no começo do terceiro "loop" a variável "coluna" começa valendo 2, fazendo com que a condição do "if" seja verdadeira, fazendo com que o "loop" quebre por conta do "break"

No terceiro loop externo (linha = 2):

  • O "loop" interno acontece 4x, no primeiro, segundo e terceiro os números 1, 2 e 3 são printados, no começo do quarto "loop" a variável "coluna" começa valendo 3, fazendo com que a condição do "if" seja verdadeira, fazendo com que o "loop" quebre por conta do "break"

No quarto loop externo (linha = 3):

  • O "loop" interno acontece 5x, no primeiro, segundo, terceiro e quarto os números 1, 2, 3 e 4 são printados, no começo do quinto "loop" a variável "coluna" começa valendo 4, fazendo com que a condição do "if" seja verdadeira, fazendo com que o "loop" quebre por conta do "break"

No quinto loop externo (linha = 4):

  • O "loop" interno acontece 6x, no primeiro, segundo, terceiro, quarto e quinto os números 1, 2, 3, 4 e 5 são printados, no começo do sextp "loop" a variável "coluna" começa valendo 5, fazendo com que a condição do "if" seja verdadeira, fazendo com que o "loop" quebre por conta do "break"

E o resultado final é:

1    - primeiro "for" externo
12  - segundo "for" externo
123 - terceiro "for" externo
1234 - quarto "for" externo
12345 - quinto "for" externo 

Espero ter ajudado!

Se tiver qualquer outra dúvida estou por aqui :)

Muito Obrigado! Me ajudou muito!