SóProvas


ID
1340272
Banca
CESPE / CEBRASPE
Órgão
BACEN
Ano
2013
Provas
Disciplina
Programação
Assuntos

No que se refere a linguagens e ambientes de programação Java, C# e paradigma de programação orientada a objetos, julgue o  item  subsequente.

Considere a seguinte classe desenvolvida em C#.


          class Teste 
          { 
                static void Main() 
               { 
                   int num = 1; 
                  while (num++ < 6) 
                  { 
                    Console.WriteLine ("num é = {0}", num); 
                   } 
                }
           }



Nessa situação, essa classe produz o seguinte resultado:
num é = 1
num é = 2
num é = 3
num é = 4
num é = 5

Alternativas
Comentários
  • Já no primeiro teste do while  a variável num vai ser incrementada para 2 no num++.

    Então a primeira saída do resultado não poderia nunca ser 1.

  • Como o incremento está do lado direito da variável, o programa compara depois incrementa.

    O resultado será:

    num é = 2 

    num é = 3 

    num é = 4 

    num é = 5

    num é = 6

  • A malícia da questão está no fato de que dentro de um bloco for a saída seria exatamente a exibida na questão.

    Por exemplo, vejam o seguinte trecho de código:

     for(int i = 1; i < 6; i++) {
        System.out.println("num é = " + i); }

    A saída é:

    num é = 1
    num é = 2
    num é = 3
    num é = 4
    num é = 5

    A diferença é que o operador de incremento posterior num++ dentro de um bloco while será computado logo após o teste ser realizado e as instruções do bloco já conterão o valor incrementado. Já o mesmo operador, dentro de um bloco for, devido à natureza do próprio comando será avaliado somente APÓS as instruções dentro do bloco for serem executadas. Isso é tão verdade que se mesmo utilizando um operador pré incremento, o resultado seria o mesmo. Vejam o exemplo:

    for(int i = 1 (1° PASSO ÚNICO) ; i < 6 (2° PASSO); ++i (4° PASSO)) {
     System.out.println("for   ==> num é = " + i); (3° PASSO)  }

    A saída é:

    num é = 1
    num é = 2
    num é = 3
    num é = 4
    num é = 5

    Ou seja, o mesmo resultado. Reparem na ordem de execução do bloco for mostrada acima. Por este motivo, utilizar um operador de pré ou pós incremento tanto faz dentro de um bloco for com esta estrutura demonstrada. Os passos 2, 3 e 4 se repetem, na mesma ordem, de acordo com a quantidade de condições a serem avaliadas. Por último, se quisséssemos o mesmo resultado dentro de um bloco while, utilizar um operador de pré incremento nos levaria à mesma saída exibida na questão, tendo apenas que alterar o valor de entrada da variável num para zero. Vejam:

    int num = 0;
    while (++num < 6)
    {  System.out.println("while ==> num é = " + num);  }

    A saída é:

    num é = 1
    num é = 2
    num é = 3
    num é = 4
    num é = 5

    Isso acontece porque no while o incremento será realizado antes da avaliação da condição, depois a condição será avaliada e por ultimo as instruções dentro do próprio bloco.