A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Arrays Profa. Isabel Harb Manssour (Material adaptado das aulas dos Profs.: Luciana Nedel, Júlio Machado e Bernardo Copstein) Arrays Exercícios.

Apresentações semelhantes


Apresentação em tema: "Arrays Profa. Isabel Harb Manssour (Material adaptado das aulas dos Profs.: Luciana Nedel, Júlio Machado e Bernardo Copstein) Arrays Exercícios."— Transcrição da apresentação:

1 Arrays Profa. Isabel Harb Manssour (Material adaptado das aulas dos Profs.: Luciana Nedel, Júlio Machado e Bernardo Copstein) Arrays Exercícios

2 Arrays Estruturas de dados contendo diversos itens relacionados do mesmo tipo São estáticos (mantém o mesmo tamanho) Espaço de memória alocada consecutivamente sob o mesmo nome e tipo Para referenciar um elemento, especifica-se: nome do array posição

3 Array Formato: nomedoarray[posição] Primeiro elemento na posição 0
Array de n elementos denominado c: c[0], c[1]...c[n-1] Cada array conhece seu próprio tamanho: c.length

4 Arrays Em Java, um vetor (array) é um objeto que aponta para um conjunto de outros objetos ou tipos de dados primitivos. A única diferença entre um vetor e um objeto é uma sintaxe especial para fazer com que se comportem da mesma forma que os arrays encontrados em outras linguagens. A criação de um objeto em Java é feita em 2 etapas: Declaração da referência  Object x; Instanciamento do objeto  x = new Object();

5 Arrays A declaração de um vetor, da mesma forma é feita em 2 etapas:
Declaração da referência  Object x[];  int i[]; Instanciamento do vetor  x = new Object[5];  i = new int[5];

6 Arrays Resumindo: Especificar tipo Usar operador new Dois passos:
Alocar número de elementos Colocar abre e fecha colchetes após o nome na declaração Dois passos: int c[]; //declaração c = new int[ 12 ]; //alocação Um passo: int c[] = new int[ 12 ]; Elementos primitivos são inicializados com 0 ou falso

7 Arrays No caso do vetor de inteiros (tipo primitivo) funciona como nas demais linguagens, ou seja, as posições já estão alocadas e prontas para receber valores. No caso de vetores de objetos, o que se tem é um vetor de referências. Os objetos tem de ser alocados individualmente. Exemplo: Ponto vet[] = new Ponto[10]; vet[0] = new Ponto(2.0,2.0); vet[1] = new Ponto(4.0,4.0);

8 Arrays Reuso de variáveis array int[] nums; nums = new int[10]; …

9 Arrays Inicialização de arrays ou ou ainda...
int[] nums = {1, 2, 5, 8, 7}; ou int[] nums = new int[10]; nums[0] = 1; nums[1] = 2; ou ainda... int[] outros = nums; * Um único array com dois nomes.

10 Arrays Comprimento de um array
int[] nums = new int[50]; tamanho = nums.length; Para criar matrizes, basta acrescentar mais pares de colchetes como se faz em C. int[][] nums = new int[50][30];

11 Inicialização direta (sem operador new)
1 // Fig. 7.4: InitArray.java 2 // initializing an array with a declaration 3 import javax.swing.*; 4 5 public class InitArray { 6 public static void main( String args[] ) 7 { String output = ""; 9 // Initializer list specifies number of elements and // value for each element. int n[] = { 32, 27, 64, 18, 95, 14, 90, 70, 60, 37 }; 13 output += "Subscript\tValue\n"; 15 for ( int i = 0; i < n.length; i++ ) output += i + "\t" + n[ i ] + "\n"; 18 JTextArea outputArea = new JTextArea( 11, 10 ); outputArea.setText( output ); 21 JOptionPane.showMessageDialog( null, outputArea, "Initializing an Array with a Declaration", JOptionPane.INFORMATION_MESSAGE ); 25 System.exit( 0 ); 27 } 28 } Inicialização direta (sem operador new) n.length representa o tamanho do array. JTextArea é um componente GUI que é capaz de exibir muitas linhas de texto. Os argumentos entre parenteses indicam o número de linhas e de colunas de texto. Isso determina o tamanho da JTextArea quando esta for exibida na tela.

12

13 Array Outro exemplo: Rolando dados
Usa um array de 7 elementos (números de 0 a 6) Quando um número é selecionado nos dados, incrementa o array de elementos

14 1 // Fig. 7.9: RollDie.java 2 // Roll a six-sided die 6000 times 3 import javax.swing.*; 4 5 public class RollDie { 6 public static void main( String args[] ) 7 { int face, frequency[] = new int[ 7 ]; String output = ""; 10 for ( int roll = 1; roll <= 6000; roll++ ) { face = 1 + ( int ) ( Math.random() * 6 ); frequency[ face ]; } 15 output += "Face\tFrequency"; 17 for ( face = 1; face < frequency.length; face++ ) output += "\n" + face + "\t" + frequency[ face ]; 20 JTextArea outputArea = new JTextArea( 7, 10 ); outputArea.setText( output ); 23 JOptionPane.showMessageDialog( null, outputArea, "Rolling a Die 6000 Times", JOptionPane.INFORMATION_MESSAGE ); 27 System.exit( 0 ); 29 } 30 } Todos elementos começam com zero. Elementos do array são incrementados quando os dados são rolados.

15

16 Arrays Passagem de parâmetros para métodos
por valor: passa uma cópia do argumento por referência: passa o argumento original Em Java, não se pode escolher Tipos de dados primitivos são passados por valor Objetos são passados por referência Os objetos originais podem ser alterados dentro do método Arrays em Java são tratados como objetos Passados por referência

17 Arrays Passando arrays Passando elementos de arrays
Especificar o nome do array sem colchetes int myArray[] = new int[24]; modifyArray(myArray); Arrays passados por referência Modificáveis Header para o método modifyArray deve ser void modifyArray(int m[]) Passando elementos de arrays Passados ao método por valor (i.e., myArray[3])

18 Painel de conteúdo é um objeto da classe Container do pacote java.awt.
1 // Fig. 7.10: PassArray.java 2 // Passing arrays and individual array elements to methods 3 import java.awt.Container; 4 import javax.swing.*; 5 6 public class PassArray extends JApplet { 7 JTextArea outputArea; 8 String output; 9 10 public void init() 11 { outputArea = new JTextArea(); Container c = getContentPane(); c.add( outputArea ); 15 int a[] = { 1, 2, 3, 4, 5 }; 17 output = "Effects of passing entire " + "array call-by-reference:\n" + "The values of the original array are:\n"; 21 for ( int i = 0; i < a.length; i++ ) output += " " + a[ i ]; 24 modifyArray( a ); // array a passed call-by-reference 26 output += "\n\nThe values of the modified array are:\n"; Painel de conteúdo é um objeto da classe Container do pacote java.awt. Método getContentPane retorna uma referência para o painel de conteúdo ao qual os componentes GUI (como um JTextArea) devem ser anexados. Então, ao invés de usar uma dialog box (JOptionPane.showMessageDialog), foi usado um painel de conteúdo (neste caso, por exemplo, não tem botão de OK) Arrays são passados por referência, assim modifyArray irá alterar o array original.

19 Elementos individuais passados por valor, apenas a cópia é modificada.
"a[3] before modifyElement: " + a[ 3 ]; 35 modifyElement( a[ 3 ] ); 37 output += "\na[3] after modifyElement: " + a[ 3 ]; outputArea.setText( output ); 40 } 41 42 public void modifyArray( int b[] ) 43 { for ( int j = 0; j < b.length; j++ ) b[ j ] *= 2; 46 } 47 48 public void modifyElement( int e ) 49 { e *= 2; 51 } 52 } Elementos individuais passados por valor, apenas a cópia é modificada.

20 Arrays Arrays de arrays de comprimento variável
int[][] nums; // Declara um array de arrays // Define 10 elementos, cada um é um array nums = new int[10][]; // O segundo array possui 6 elementos nums[1] = new int[6]; // O quinto array possui 18 elementos nums[4] = new int[18]; nums = new int[50];

21 Arrays Arrays multidimensionais ou
int[][][] nums = new int[5][10][14]; ou int[][][] nums = new int[10][][]; nums[0] = new int[3][]; nums[3] = new int[40][]; ...

22 Exercícios 1) Faça um programa que leia um string texto, calcule o número de palavras contidas no mesmo e as separe armazenando em um array de strings. Imprima o resultado final. 2) Crie um array de 10 posições, sendo que cada posição contenha um string arbitrário na forma dia/mês/ano (exemplo: “10/03/00”). Analise cada elemento do array e imprima as datas no formato “10 de março de 2000”.

23 Respostas dos exercícios
1) public class TestaArray { public static void main() String texto, array[], resultado=""; int i, j, palavras = 0; char c; boolean achouEspaco; texto=JOptionPane.showInputDialog("Digite um texto:"); // Conta a quantidade de palavras for (i = 0; i < texto.length(); i++) if (Character.isWhitespace(texto.charAt(i))) ++palavras; ++palavras; // última palavra ...

24 Respostas dos exercícios
... //Separa as palavras armazenando-as em um array de strings array = new String[palavras]; for (i = 0, j = 0; i < palavras; i++, j++) { array[i] = ""; achouEspaco = Character.isWhitespace(texto.charAt(j)); while ( !achouEspaco ) array[i] += String.valueOf(texto.charAt(j)); j++; if (j < texto.length()) else achouEspaco = true; }

25 Respostas dos exercícios
... // Exibe o resultado JTextArea outputArea = new JTextArea( palavras, 15 ); for (i = 0; i < palavras; i++) resultado += array[i] + "\n"; outputArea.setText( resultado ); JOptionPane.showMessageDialog(null, outputArea, "Resultado", JOptionPane.INFORMATION_MESSAGE); System.exit( 0 ); } // fim public static void main() } // fim public class TestaArray


Carregar ppt "Arrays Profa. Isabel Harb Manssour (Material adaptado das aulas dos Profs.: Luciana Nedel, Júlio Machado e Bernardo Copstein) Arrays Exercícios."

Apresentações semelhantes


Anúncios Google