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

Como acontece o incremento quando o for encontra o break?

Galera, vi que temos um tópico sobre isso já, porém não consegui responder pois é muito antigo (2018).

Não entendi como funciona o incremento para o segundo for (o que contém o break).

for (int contadorLinha = 0; contadorLinha < 10; contadorLinha++)
            {
                for (int contadorColuna = 0; contadorColuna < 10; contadorColuna++)
                {
                    Console.Write("*");
                    if (contadorColuna >= contadorLinha)
                    {
                        break;
                    }
                }
                Console.WriteLine();
            }

Ambos iniciam em 0, até aí ok. Ao entrar no segundo FOR o * será escrito e verifica-se a condição 0>=0, portando BREAK. A dúvida é, nesse momento não ocorre o incremento do contadorColuna justamente por ter saído do segundo FOR?

Não ficou claro pra mim...

2 respostas
solução!

Oi, Khayan. Tudo bom?

A dúvida é, nesse momento não ocorre o incremento do contadorColuna justamente por ter saído do segundo FOR? Exatamente. O break abandona o laço de repetição do bloco em execução e então não há incremento contadorColuna++ ou verificação contadorColuna < 10.

Agora, me alongando um pouco e pra explicar com mais detalhes o que está acontecendo...

Seu código começa em um laço for. Neste momento, é criado a variável contadorLinha com o valor 0.

A primeira coisa que este for (vamos chamar de for-1) faz é começar outro for (vamos chamar de for-2)!

Neste momento, o for-2 cria a variável contadorColuna e começa sua execução. Ele escreve o '*' e verifica se contadorColuna >= contadorLinha. Se esta condição for verdadeira, então executamos um break que encerra o laço de repetição que executou este comando, ou seja, o for-2. Como seu código está abandonando o laço de repetição, o C# não executa o incremento contadorColuna++ ou verifica se contadorColuna < 10, justamente porque já estamos explicitamente abandonando este laço.

Ao sair do laço for-2, a variável contadorColuna deixa de existir, ela foi criada para ser usada apenas dentro do for-2.

Neste momento, voltamos ao for-1, incrementamos contadorLinha++ e caso a condição contadorLinha < 10 seja verdadeira, continuamos a execução. A execução, como já vimos, é iniciar o for-2 e aí a variável contadorColuna será criada novamente e começa com o valor 0 de novo.

O que você acha? Ficou mais claro?

Abs.

Perfeito, Guilherme! Fiquei alguns minutos, depois que enviei a pergunta refletindo sobre o código. Fui anotando tudo manualmente em uma folha (como se eu estivesse executando o programa), e, dessa forma, cheguei exatamente nessa solução/explicação que você propôs. Muito obrigado por responder! Abraço!