Informática, perguntado por tthai123, 1 ano atrás

Explicação por favor

Considerando a definição e utilização de estruturas de dados em JAVA, analise o programa abaixo, desenvolvido no ambiente NetBeans 7.2.1:

Dentre as opções abaixo, qual apresenta o valor que será impresso por esse programa ao final de sua execução?

O gabarito é 00011

Anexos:

Soluções para a tarefa

Respondido por cledersonbc
2

Explicarei linha a linha, no entanto, tenha paciência e atenção ao ler.


A primeira linha descreve a qual pacote a sua classe pertence. O pacote se chama cap10, que é um diretório no sistema de arquivos que conterá a sua classe chamada CAP10.


A classe possui um método estático, sem retorno e que recebe uma lista de Strings como argumento.

- Estático: significa que esse método pertence à classe e não aos objetos. Isso fica mais claro quando se estuda orientação a objetos com Java, então se ainda não viu isso, não se preocupe.

- Sem retorno: um método, assim como uma função na matemática, pode realizar uma operação e retornar um resultado. Nesse caso, o método não retorna resultados, por isso seu retorno é void (vazio).

- Lista de argumentos: por linha de comando é possível chamar a aplicação passando alguns argumentos, que são armazenados nessa variável chamada args[] e podem ser manipuladao pelo método.


Esse método main é especial. Ele é o primeiro método que é chamado quando sua aplicação é executada, independentemente de quantos ela tenha e em qual ordem eles apareçam.


Dentro desse método ocorre três grandes ações. A primeira é:

- a declaração de uma variável matriz 2x2, do tipo inteira;

- a declaração de uma variável t que é inicializada com 0.


A segunda ação é uma operação que envolve percorrer todas as posições da matriz, efetuar um cálculo, armazená-lo na posição [ i ][ j ] da matriz e acumular o valor para a variável t.


A terceira ação é a exibição do resultado contido em t.


Para entender o que se passa na segunda ação é interessante ter conhecimento de teste de mesa, que é uma simulação da execução de um programa, com uma massa de dados X e olhar o resultado Y segundo o processamento feito.


for (int i = 0; i < matriz.length; i++) // esse trecho significa que estamos declarando uma variável chamada i, do tipo inteira, e inicializando-a com 0. Em seguida, no teste lógico, estamos informando que o laço de repetição continuará seu ciclo enquanto essa variável i for menor que a quantidade de linhas da matriz. Por fim, informamos ao computador que a cada iteração (ou seja, a cada ciclo) a variável i será incrementada de um. i++ é equivalente a i = i + 1.


for (int j = 0; j < matriz[i].length; j++) // esse trecho, dentro do laço de repetição que percorre as linhas da matriz, significa que estamos declarando uma variável chamada j, do tipo inteira, e inicializando-a com 0. Em seguida, no teste lógico, estamos informando que o laço de repetição continuará seu ciclo enquanto essa variável j for menor que a quantidade de colunas da linha especificada em matriz[i] (que é um vetor, ou matriz 1x2). Por fim, informamos ao computador que a cada iteração (ou seja, a cada ciclo) a variável j será incrementada de um. j++ é equivalente a j = j + 1.


t += matriz[i][j] = i * j;


Esse código pode ser reescrito em:

matriz[i][j] = i * j;

t = t + matriz[i][j];


O uso do operador de atribuição += significa que uma variável receberá o seu próprio valor somado de alguma outra coisa. Portanto x += y é igual a x = x + y. Note, também, que os valores da matriz são exibidos através do método print da classe System. Isso influencia na saída. Olhe o anexo que contém o teste de mesa para entender melhor a saída.


Obs.: note que dentro do laço é impresso o valor da matriz na posição [ i ][ j ] e no fim é impresso o valor de t.


Anexos:
Perguntas interessantes