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

Slides:



Advertisements
Apresentações semelhantes
Programação em Java Prof. Maurício Braga
Advertisements

Programação em Java Prof. Maurício Braga
Programação Orientada a Objetos*
Estruturas de Repetição
Palestras, oficinas e outras atividades
Java Básico Arrays Marco Antonio, Arquiteto de Software – TJDF Atualizado: Fevereiro/2009.
Métodos, Parâmetros, Argumentos e Contratos
Engenharia Informática Programação I & Estruturas de Dados e Algoritmos 2001/ Capitulo 3 – Introdução às classes Capitulo 3 Introdução às classes.
03/08/2011 Professor Leomir J. Borba- –
Aula Teste INFNET terça-feira, 11 de janeiro de 2011
Programação orientada a objetos
Interação entre objetos
Orientação a Objetos: Encapsulamento e Classificação
Linguagem Java Renata Araujo
Programação Básica em Java
Introdução à Programação OO Usando Java Profa
Polimorfismo e Classes Abstratas Profa
Expressões, controle de fluxo, wrappers e strings Profa
Vector e Estruturas Encadeadas Profa
Linguagem C LPG-I – Variáveis Estruturadas – Vetores
LPG - I: Ponteiros e Vetores/Matrizes UDESC - SBS
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Capítulo 15 Swing – Parte 1.
Auditoria de Segurança da Informação
Aula 4 Nomes, Vinculações, Tipos e Escopos
Aula 6 Subprogramas Universidade do Vale do Rio dos Sinos
1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos
Capítulo 9 Herança 1.
Ponteiros.
Métodos Programação II 1 Métodos de Programação II (Mestrado Integrado em Engenharia de Comunicações) 1º Ano, 2º Semestre Elementos de Classe, class wrappers.
Listas Encadeadas.
Aula de reposição Prof. Grace e Ângela
Classes e objetos Arrays e Sobrecarga
Classes e objetos P. O. O. Prof. Grace.
Introdução a Programação JAVA
Apontadores ou Ponteiros
MECÂNICA - ESTÁTICA Vetores Forças Cap. 2.
CRIANDO OBJETOS EM JAVA
Arquitetura de Sistemas Operacionais – Machado/Maia 10/1 Arquitetura de Sistemas Operacionais Francis Berenger Machado Luiz Paulo Maia Capítulo 10 Gerência.
Programação Orientada a Objetos com Java
Aula Prática 4 Monitoria IP/CC (~if669).
Object Oriented Software Construction (MEYER, Bertrand)
UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA CIVIL INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves.
METODOLOGIA PARA DESENVOLVIMENTO DE SISTEMAS Prof. Dr. rer. nat. Daniel D. Abdala 1.
Salas de Matemática.
UNIDADE 5 ESTRUTURAS DE DADOS HOMOGÊNEAS
7 Arrays.
Introdução à Programação Orientada a Objetos com Java
1 2 Observa ilustração. Cria um texto. Observa ilustração.
Capítulo 5 Garbage Collector.
Computação Gráfica Aula 3 Transformações Geométricas
Aula 3 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.
Vetores e Matrizes Ameliara Freire
CALENDÁRIO SEXY Ele & Ela. CALENDÁRIO SEXY Ele & Ela.
Stream – Fluxo I/O Sistema de Arquivos
Rio Verde - Goiás - Brasil
Listas Simplesmente Encadeadas
Wagner Santos C. de Jesus
BC-0505 Processamento da Informação Santo André, Março de 2011 Professor: Carlos Alberto Kamienski -
Estrutura de Controle em JAVA
Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,
Aula Prática 5 Monitoria IP/CC (~if669). Roteiro 1. 1.Recursão 2. 2.Escopo de Variáveis 3. 3.Arrays 4. 4.Strings.
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Profa. Patrícia A. Jaques
Prof. Marcos LABORATÓRIO DE PRÁTICA DE PROGRAMAÇÃO 06.
Usando vetor e matriz em java
Array e ArrayList LPOO – 01/09/14.
1 Programação – JAVA Unidade - 4 Arrays e Strings Prof. Aparecido V. de Freitas Mestre e Doutorando em Engenharia da Computação pela EPUSP.
Transcrição da apresentação:

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

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

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

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();

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];

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

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);

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

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.

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];

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 { 8 String output = ""; 9 10 // Initializer list specifies number of elements and 11 // value for each element. 12 int n[] = { 32, 27, 64, 18, 95, 14, 90, 70, 60, 37 }; 13 14 output += "Subscript\tValue\n"; 15 16 for ( int i = 0; i < n.length; i++ ) 17 output += i + "\t" + n[ i ] + "\n"; 18 19 JTextArea outputArea = new JTextArea( 11, 10 ); 20 outputArea.setText( output ); 21 22 JOptionPane.showMessageDialog( null, outputArea, 23 "Initializing an Array with a Declaration", 24 JOptionPane.INFORMATION_MESSAGE ); 25 26 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.

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

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 { 8 int face, frequency[] = new int[ 7 ]; 9 String output = ""; 10 11 for ( int roll = 1; roll <= 6000; roll++ ) { 12 face = 1 + ( int ) ( Math.random() * 6 ); 13 ++frequency[ face ]; 14 } 15 16 output += "Face\tFrequency"; 17 18 for ( face = 1; face < frequency.length; face++ ) 19 output += "\n" + face + "\t" + frequency[ face ]; 20 21 JTextArea outputArea = new JTextArea( 7, 10 ); 22 outputArea.setText( output ); 23 24 JOptionPane.showMessageDialog( null, outputArea, 25 "Rolling a Die 6000 Times", 26 JOptionPane.INFORMATION_MESSAGE ); 27 28 System.exit( 0 ); 29 } 30 } Todos elementos começam com zero. Elementos do array são incrementados quando os dados são rolados.

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

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])

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 { 12 outputArea = new JTextArea(); 13 Container c = getContentPane(); 14 c.add( outputArea ); 15 16 int a[] = { 1, 2, 3, 4, 5 }; 17 18 output = "Effects of passing entire " + 19 "array call-by-reference:\n" + 20 "The values of the original array are:\n"; 21 22 for ( int i = 0; i < a.length; i++ ) 23 output += " " + a[ i ]; 24 25 modifyArray( a ); // array a passed call-by-reference 26 27 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.

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

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];

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][]; ...

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”.

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 ...

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; }

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