TA345/531 TP257 Informática Aplicada à Engenharia de Alimentos.


 

Aula 03 – Parte A: Os conjuntos homogêneos denominados Arrays e o condicional if () {} e if () {} else {}

 

3.1. Arrays

A coisa mais importante sobre arrays é que em Java eles são considerados “objetos”.

Dessa maneira, tudo o que diz respeito a objetos também se aplica a arrays.

 

Em linhas gerais, um array é um grupo de posições contíguas na memória, que possuem o mesmo nome e o mesmo tipo de dado.

Como possuem o mesmo nome, as posições são identificadas por um índice (subscrito) que se inicia com o subíndice zero.

 

Os Arrays podem conter qualquer tipo de elemento valorado (tipos primitivos ou objetos),

mas você não pode armazenar diferentes tipos em um simples Array.

Em outras palavras: você pode ter um Array de inteiros, ou um Array de strings, ou um Array de Arrays,

mas você não pode ter um Array que contenha variáveis de tipo diferente, por exemplo Strings e inteiros.

A restrição acima descrita significa que os Arrays implementados em Java são genéricos homogêneos,

ou seja, um único Array pode armazenar qualquer tipo de objeto com a restrição que todos os objetos sejam da mesma classe.

 

3.1.1. Como declarar um Array

 

Há três passos na definição de um array:

 

1)     A declaração:

int [ ] meuArray; // declarando um array do tipo inteiro (int)

 

2)     A construção:

meuArray = new int [10]; // construindo um array com dez elementos

 

3)     A iniciação:

meuArray [0] = 100; //iniciando o primeiro elemento do array

 

Eventualmente, e muito provavelmente, os três passos acima poderão se transformar em dois ou até mesmo em um único passo:

int [ ] meuArray = new int [10];

Vemos que a declaração e a construção foram realizadas em um só passo.

 

Na instrução abaixo, declaração, construção e iniciação fazem parte da mesma instrução:

int [ ] meuArray = {100, 101, 102, 103, 104};

A instrução declara, constrói e inicia um array de inteiros com 5 elementos. Observe que a iniciação de valores entre chaves ({e}) somente pode ser utilizada como mostra a instrução acima.

 

Exemplos de declaração:

String difficult [ ];

Point hits[ ];

int temp[ ];

 

Forma alternativa de declaração: 

String[ ] difficult;

Point[ ] hits;

int[ ]  temp;

 

3.1.2. Como criar objetos Arrays

Um array é um conjunto de dados de tipo primitivo ou de objetos de uma Classe empacotadora

 

Para criar uma nova instância de um Array, se utiliza usar o operador new:

int [ ] temps = new int [ 99];

 

Quando você cria um objeto Array usando o operador new, todos os elementos índices são inicializados automaticamente (0 para Arrays numéricos, falso para boolean, “\0” para caracteres e NULL para objetos).

 

Você também pode criar e inicializar um Array ao mesmo tempo.

String[ ] chiles = { “Chile Jalapeno”, “Chile Serrano”, “Chile Verde”, “Chile de Arbol”};

 

Como já foi dito, cada um dos elementos internos deve ser do mesmo tipo e deve ser também do mesmo tipo que a variável que armazena o Array.
O exemplo acima cria um Array de Strings chamado chiles, que contém 4 elementos.

 

3.1.3. Como acessar os elementos do Array

Uma vez que você tem um array com valores iniciais, você pode testar e mudar os valores em cada índice de cada array.

Os arrays em Java sempre se iniciam na posição 0 como na linguagem C.

 

Por exemplo:

String[ ] arr = new String[10];

arr[10] = “fora”;

 

Como o array denominado arr foi criado com 10 elementos, que vão de arr[0] até arr[9]; colocar o comando de atribuição do string “fora” no elemento arr[10] vai gerar um erro durante a compilação, já que o índice 10 não existe, pois está fora das bordas do array criado.

 

Se o comando for:

arr [9] = “dentro”;

A operação de atribuição é válida e insere na posição 9 do array, a string “dentro”.

 

3.1.4. Arrays multidimensionais

Não existem arrays multidimensionais em Java, segundo a especificação da linguagem.

Entretanto, podemos obter arrays com mais de uma dimensão declarando “arrays de arrays”.

Normalmente, o maior uso de arrays multidimensionais se refere à arrays com dois subscritos, os chamados “arrays bidimensionais”.

 

Veja o trecho de código:

int [ ] [ ] meuArray;

meuArray = new int [2] [3];

Temos, aqui, um array bidimensional de inteiros

 

Outro exemplo:

int coords [ ] [ ] = new int [12] [12] ;

Atribuição de valores a alguns dos elementos desse array:

coords [0] [0] = 1;

coords [0] [1] = 2;

 

 

3.2. Condicionais

 

3.2.1. A Estrutura if

A estrutura de controle if permite que, num determinado ponto do programa seja possível escolher um determinado caminho entre os vários que são apresentados. Para que um caminho específico seja tomado, uma condição é apresentada. A condição deve respaldar-se no tipo lógico (true ou false), que deve ser avaliado pelo programa.

 

A forma geral da instrução if assemelha-se a

if (expressão) instrução;

if (expressão) {instruções;}

 

Expressão, como dissemos acima, deve ser do tipo lógico. Se dela resultar um valor true (verdadeiro), o programa deverá executar a instrução ou o conjunto de instruções indicadas em instrução ou no bloco instruções.

 

3.2.2. A Estrutura if/else

A estrutura de controle if/else apenas amplia o poder de fogo da estrutura if, na medida em que nos permite lidar com o lado negativo da questão, isto é, com o valor false retornado pela expressão que está sendo avaliada.

Exemplo:

if (x<y)

            ta.append(“x é menor do que y”);

else

            ta.append(“y é maior que x”);

 

Exemplos de applets que usam a estrutura if e else :

 

 

Código fonte:      InteiroMaiorCaixa.java   InteiroMaiorCaixa.htm

Outro exemplo:  InteiroMaiorTela.java     InteiroMaiorTela.htm

 

Compile, escreva a página htm correspondente, rode o applet e analise os programas de exemplo.

 

3.2.3. Bloco

Um bloco é determinado por chaves ({}) e pode conter outros blocos.

Quando um novo bloco é criado se abre um novo escopo local que permite a definição de variáveis locais.

As variáveis definidas dentro de um bloco só podem ser vistas internamente a este e são terminadas ou extintas no final da execução dos comandos do bloco ({ }).

 

Exemplo 1 - bloco:

 

import java.awt.*;

import java.applet.*;

import java.awt.event.*;

 

/*

<APPLET CODE=Bloco.class WIDTH=200 HEIGHT=200></APPLET>

*/

 

public class Bloco extends Applet implements ActionListener

{

  public TextArea ta;

  public Label legenda1, legenda2, legenda3;

  public TextField caixa1, caixa2, caixa3;

  public Button botao;

  int x, w, y;

 

  public void init()

  {

       legenda1 = new Label ("Digite o valor de x:"); add(legenda1);

       caixa1 = new TextField("2", 3); add (caixa1);

       legenda2 = new Label ("Digite o valor de w:"); add(legenda2);

       caixa2 = new TextField("3", 3); add (caixa2);

       legenda3 = new Label ("Digite o valor de y:"); add(legenda3);

       caixa3 = new TextField("5", 3); add (caixa3);

       botao = new Button ("Clique aqui");  add(botao); botao.addActionListener(this);

       ta = new TextArea("",16,30); add(ta);

  }

 

  public void actionPerformed(ActionEvent e)

  {

     x=Integer.valueOf(caixa1.getText()).intValue();

     w=Integer.valueOf(caixa2.getText()).intValue();

     y=Integer.valueOf(caixa3.getText()).intValue();

 

     if (e.getSource() == botao)

     {

            ta.append ("\n fora do bloco");

            ta.append ("\n x = " + x);

            ta.append ("\n w = " + w);

            ta.append ("\n y = " + y);

 

            if(x>0)

            { // início do bloco

                       x=2; y=4; w=6;

                       ta.append ("\n dentro do bloco");

                       ta.append ("\n x = " + x);

                       ta.append ("\n w = " + w);

                       ta.append ("\n y = " + y);

             } // final do bloco

 

            ta.append ("\n fora do bloco");

            ta.append ("\n x = " + x);

            ta.append ("\n w = " + w);

            ta.append ("\n y = " + y);

       }

   }

}

 

 

 Explicação:

if (e.getSource() == botao)
{
    ta.append ("\n fora do bloco");
    ta.append ("\n x = " + x);
    ta.append ("\n w = " + w);
    ta.append ("\n y = " + y);

Ao clicar no botão denominado (Clique aqui), aparecerá na área de texto os valores atribuídos inicialmente as variáveis.

Isso ocorre ao definir as caixas de texto (textField), neste programa os valores pré-assignados são: x=2, y-3, w=5;

  if(x>0)


  { // início do bloco
     x=2; y=4; w=6;
     ta.append ("\n dentro do bloco");
     ta.append ("\n x = " + x);
     ta.append ("\n w = " + w);
     ta.append ("\n y = " + y);
  } //final do bloco

Quando o valor  de x é positivo realizam-se as ações indicadas dentro deste bloco. Veja que se atribuem novos valores as variáveis x, y, w dentro do bloco e eles são mostrados na área de texto.

Quando temos um valor de x menor que zero, a condição (X>0) não se cumpre e as ações contidas dentro do bloco não serão realizadas e logicamente os valores das variáveis não serão modificados.

O programa termina imprimindo na área de texto os valores das variáveis.
      ta.append ("\n fora do bloco");
      ta.append ("\n x = " + x);
      ta.append ("\n w = " + w);
      ta.append ("\n y = " + y);
   }
Devemos ter cuidado ao atribuir valores às variáveis dentro do programa, pois poderemos alterar os valores obtidos nas caixas de texto.
 

 

Exemplo 2 – Bloco2:

 

import java.awt.*;

import java.applet.*;

import java.awt.event.*;

 

/*

<APPLET CODE=DoisOuUm2.class WIDTH=200 HEIGHT=200></APPLET>

*/

 

public class DoisOuUm extends Applet implements ActionListener

{

  public TextArea ta;

  public Label legenda1, legenda2, legenda3;

  public TextField caixa1, caixa2, caixa3;

  public Button botao;

  int x, w, y;

 

  public void init()

  {

            legenda1 = new Label ("Jogador A:\n"); add(legenda1);

            caixa1 = new TextField("1", 3); add (caixa1);

            legenda2 = new Label ("Jogador B:\n"); add(legenda2);

            caixa2 = new TextField("1", 3); add (caixa2);

            legenda3 = new Label ("Jogador C:\n"); add(legenda3);

            caixa3 = new TextField("1", 3); add (caixa3);

            botao = new Button ("Dois ou um");  add(botao); botao.addActionListener(this);

            ta = new TextArea("",16,30); add(ta);

  }

 

  public void actionPerformed(ActionEvent e)

  {

      x=Integer.valueOf(caixa1.getText()).intValue();

      w=Integer.valueOf(caixa2.getText()).intValue();

      y=Integer.valueOf(caixa3.getText()).intValue();

 

      if (e.getSource() == botao)

      {

            ta.append ("\n Abrindo o Jogo");

            ta.append ("\n Jogador A escolheu \n " + x );

            ta.append ("\n Jogador B escolheu \n" + w );

            ta.append ("\n Jogador C escolheu \n" + y );

 

            if(x==y)

            { // início do bloco

                if(x==w) ta.append ("\n Houve empate, joguem novamente.\n======== \n");

                else        ta.append ("\n B foi vencedor\n========================= \n");

             } // final do bloco

 

          else if (x==w) ta.append ("\n C foi vencedor");

          else                ta.append ("\n A foi o vencedor\n======================== \n");

       }

   }

}

 

 

DoisOuUm.java   DoisOuUm.htm

 

Veja estas versões para o mesmo programa:

Bloco.java      Bloco.htm    Programa sem valores default para as variáveis

Bloco2.java    Bloco2.htm  Programa sem valores default para as variáveis

Bloco3.java    Bloco3.htm  Programa com valores default para as variáveis

Analise o funcionamento e descreva as diferenças entre variáveis globais e locais.

Bloco4.java    Bloco4.htm

Bloco5.java    Bloco5.htm

Bloco6.java    Bloco6.htm

Analise este programa e relate as inovações.

 

Até a próxima aula!


  Volta para a página principal

Última atualização:  13/abril/2011