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

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

Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Arrays Profa. Isabel.

Apresentações semelhantes


Apresentação em tema: "Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Arrays Profa. Isabel."— Transcrição da apresentação:

1 Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Arrays Profa. Isabel Harb Manssour (Material adaptado das aulas dos Profs.: Luciana Nedel, Júlio Machado e Bernardo Copstein) Arrays Exercícios

2 Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour 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 Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour 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 Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour 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 Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour 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 Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Arrays Resumindo: Especificar tipo Usar operador new §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 Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour 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 Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Arrays Reuso de variáveis array int[] nums; nums = new int[10]; … nums = new int[50];

9 Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Arrays Inicialização de arrays int[] nums = {1, 2, 5, 8, 7}; ou int[] nums = new int[10]; nums[0] = 1; nums[1] = 2; … ou ainda... int[] nums = {1, 2, 5, 8, 7}; int[] outros = nums; * Um único array com dois nomes.

10 Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour 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 Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour 1// Fig. 7.4: InitArray.java 2// initializing an array with a declaration 3import javax.swing.*; 4 5public class InitArray { 6 public static void main( String args[] ) 7 { 8 String output = ""; 9 10 // Initializer list specifies number of elements and 11 // value for each element int n[] = { 32, 27, 64, 18, 95, 14, 90, 70, 60, 37 }; output += "Subscript\tValue\n"; for ( int i = 0; i < n.length; i++ ) 17 output += i + "\t" + n[ i ] + "\n"; JTextArea outputArea = new JTextArea( 11, 10 ); 20 outputArea.setText( output ); JOptionPane.showMessageDialog( null, outputArea, 23 "Initializing an Array with a Declaration", 24 JOptionPane.INFORMATION_MESSAGE ); System.exit( 0 ); 27 } 28} Inicialização direta (sem operador new) n.length representa o tamanho do array.

12 Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour

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 Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour 1// Fig. 7.9: RollDie.java 2// Roll a six-sided die 6000 times 3import javax.swing.*; 4 5public class RollDie { 6 public static void main( String args[] ) 7 { 8 int face, frequency[] = new int[ 7 ]; 9 String output = ""; for ( int roll = 1; roll <= 6000; roll++ ) { 12 face = 1 + ( int ) ( Math.random() * 6 ); frequency[ face ]; 14 } output += "Face\tFrequency"; for ( face = 1; face < frequency.length; face++ ) 19 output += "\n" + face + "\t" + frequency[ face ]; JTextArea outputArea = new JTextArea( 7, 10 ); 22 outputArea.setText( output ); JOptionPane.showMessageDialog( null, outputArea, 25 "Rolling a Die 6000 Times", 26 JOptionPane.INFORMATION_MESSAGE ); System.exit( 0 ); 29 } 30} Todos elementos começam com zero. Elementos do array são incrementados quando os dados são rolados.

15 Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour

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 Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Arrays Passando 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 Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour 1// Fig. 7.10: PassArray.java 2// Passing arrays and individual array elements to methods 3import java.awt.Container; 4import javax.swing.*; 5 6public class PassArray extends JApplet { 7 JTextArea outputArea; 8 String output; 9 10 public void init() 11 { 12 outputArea = new JTextArea(); 13 Container c = getContentPane(); 14 c.add( outputArea ); int a[] = { 1, 2, 3, 4, 5 }; output = "Effects of passing entire " + 19 "array call-by-reference:\n" + 20 "The values of the original array are:\n"; for ( int i = 0; i < a.length; i++ ) 23 output += " " + a[ i ]; modifyArray( a ); // array a passed call-by-reference output += "\n\nThe values of the modified array are:\n"; Arrays são passados por referência, assim modifyArray irá alterar o array original.

19 Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour 34 "a[3] before modifyElement: " + a[ 3 ]; modifyElement( a[ 3 ] ); output += "\na[3] after modifyElement: " + a[ 3 ]; 39 outputArea.setText( output ); 40 } public void modifyArray( int b[] ) 43 { 44 for ( int j = 0; j < b.length; j++ ) 45 b[ j ] *= 2; 46 } public void modifyElement( int e ) 49 { 50 e *= 2; 51 } 52} Elementos individuais passados por valor, apenas a cópia é modificada.

20 Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour 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 Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Arrays Arrays multidimensionais int[][][] nums = new int[5][10][14]; ou int[][][] nums = new int[10][][]; nums[0] = new int[3][]; nums[3] = new int[40][];...

22 Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour 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 Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour 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 Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour 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()) achouEspaco = Character.isWhitespace(texto.charAt(j)); else achouEspaco = true; }...

25 Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour 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 "Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour Arrays Profa. Isabel."

Apresentações semelhantes


Anúncios Google