3
respostas

Dúvida execução mental e funcionamento dos for encadeados, Aula 6.

Não consegui acompanhar o raciocínio ao tentar executar mentalmente o código:

        //*
        //**
        //***
        //****
        //*****
        //******
        // Desenhando * com o "break":

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

Fiquei bastante confuso ao tentar entender o funcionamento desse sistema. Pq para mim parece que ele deveria sempre escrever somente 2 * por linha. To quebrando a cabeça...

3 respostas

Meu Deus, após 3h fritando o CPU da cabeça consegui entender!!!. Se mais alguém estava com essa dúvida, a explicação é que o "for" interno sempre recomeça no "0", então ocorre o loop até que o "if" seja "true". Obrigado senhor!!! ;D

Apenas reforçando... a incrementação do contadorColuna só ocorre quando termina o loop. Logo, como tem o break, caso a condição seja verdadeira, contadorColuna não é incrementado, fazendo assim, com que o asterisco só seja impresso a quantidade de vezes menor ou igual ao tamanho da linha.

Tive o mesmo problema do Felipe. Mas para entender eu coloquei um breakpoint e fiquei rodando o código, assim pude ver os valores que as variáveis estavam naquele momento, e bingo! Consegui ver que o for interno sempre se inicia com zero.