Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida relacionado ao FOR (JAVA)

Olá

Estou bastante dificuldade de entender o raciocínio do FOR, principalmente na utilização de dois deles em um laço.

Separei esse código de um exercício:

public class testaLaços2 {

    public static void main(String [] args) {

        for (int linha = 0; linha < 5; linha++) {
            for (int coluna = 0; coluna < 5; coluna ++) {
                if (coluna > linha) {
                    break;
                }                    
                System.out.print(coluna+1);
            }            
            System.out.println();                
        }    
    }
}

O resultado seria:

1 12 123 1234 12345

E eu definitivamente não consigo entender o racional por trás desse resultado.

1 resposta
solução!

Oioi João Pedro! Tudo bem com você?

Vamos começar com um exemplo menor. Suponha que queremos imprimir os números 1 a 3. Para isso, podemos fazer o código:

for(int i = 1; i < 4; i++){
    System.out.println(i);
}

Foi feito o seguinte: na primeira linha do for, foi criada uma variável i com valor 1. O for é um tipo de laço de repetição, então ele precisa de uma condição pra parar, certo? Senão ele vai rodar infinitamente, e a gente não vai ver o que aconteceu com o programa. Nesse caso, quando fazemos i<4, essa é a condição para parar. Enquanto i for menor que 4, o que acontece dentro das chaves vai ser executado. No nosso programa, é quando imprimimos o i. Depois de executar o que está lá dentro, precisamos atualizar o i, pra trabalhar com valores diferentes. Senão ficaríamos para sempre no i=1 e não iríamos imprimir o 2 e o 3. Para isso que serve o i++ na declaração do for.

Agora um exemplo com o for aninhado (um dentro do outro):

for(int i = 1; i < 4; i++){
    for(int j = 5; j < 7; j++){
        System.out.println(ij);
    }
}

Nesse caso, funciona da mesma forma, mas temos duas variáveis para trabalhar. O fluxo seria o seguinte:

  • começa com i = 1. Como 1<4, então ele entra no for.
  • temos outro for. Ele começa com j=5. Como 5<7, ele também entra no for.
  • lembra que a variável i=1? Ela ainda não foi atualizada. Então vai ser impresso o número 15.
  • o j é incrementado. Assim, agora j vale 6. Repara que não estamos mexendo no i ainda. Fazemos todo o for de dentro para depois mexer no de fora. Assim, j= 6, e como 6<7, entramos de novo no loop.
  • imprimimos 16 e incrementamos o j. Agora o j vale 7. Como 7 não é menor que 7 (porque é igual), nosso loop acabou.
  • saímos do loop interno e vamos para o de fora. Agora sim incrementamos o i.
  • i=2, e como 2<4, entramos no loop externo. Caímos no loop interno de novo.
  • imprimimos 25 e 26, e saímos do loop interno.
  • seguimos a lógica, incrementando o i, e terminamos imprimindo 35 e 36, e o fluxo termina.

Desculpa o textão hahaha, espero que tenha ficado mais claro! Fica tranquilo que esse entendimento vai acontecendo à medida que você praticar. Acho que uma forma de entender, é pegar papel e caneta e ir anotando os passos que o programa faz à medida que o loop é executado, de uma forma parecida com o que eu fiz de exemplo. Inclusive, você pode começar por esse código que apresentou aqui!

Qualquer dúvida, estou aqui. Fique à vontade para perguntar!

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!