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

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

Introdução à Programação

Apresentações semelhantes


Apresentação em tema: "Introdução à Programação"— Transcrição da apresentação:

1 Introdução à Programação
Um enfoque orientado a construção de modelos em programas baseados em objetos Gustavo Motta Departamento de Informática - UFPB

2 7. Arrays Definição Um array em Java é uma estrutura de dados que permite o armazenamento de um conjunto de variáveis (elementos) de um mesmo tipo (ou referências para instâncias de uma mesma classe) e que são acessadas individualmente por um índice   char[] letrasAlfabeto = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w','x', 'y', 'z'}; letrasAlfabeto[0]  a letrasAlfabeto[1]  b ... letrasAlfabeto[25]  z (C) 2008 Gustavo Motta

3 7. Arrays Usos mais comuns
Armazenar grandes quantidades de dados de um mesmo tipo ou classe 1440 amostras do tipo double da temperatura de um paciente internado, medida a cada minuto, durante um dia As 38 instâncias da classe Aluno, componentes de uma turma Utilizar variáveis individuais e com nomes distintos em casos como estes é extremamente trabalhoso e sujeito a erros O uso de arrays permite usar um único nome para denotar um conjunto homogêneo de variáveis, que são acessadas individualmente através de índices (C) 2008 Gustavo Motta

4 7. Arrays Tipos de arrays Unidimensionais Bidimensional
Elementos são acessados por um único índice alunos[0] alunos[1] Bidimensional Elementos são acessados por um par de índices, especificando linha e coluna de uma matriz turmaAluno[0][1] turmaAluno[1][10] Multidimensional Elementos são acessados por um número arbitrário de índices (C) 2008 Gustavo Motta

5 7. Arrays Declaração e alocação de arrays unidimensionais
Java adota a notação de colchetes para declarar arrays Uma variável de um tipo (classe) específico seguido de um par de colchetes declara uma referência a um array de elementos desse tipo int[] posiçõesDeMemória; char letrasAlfabeto[]; double[] medidaTemperatura; A declaração acima define apenas referências para arrays, mas não cria nenhuma variável do tipo array na memória É preciso criar (alocar) o array na memória com um número predeterminado de posições Opcionalmente, pode-se inicializá-lo na cláusula de declaração (C) 2008 Gustavo Motta

6 7. Arrays Declaração e alocação de arrays unidimensionais
Cria a variável correspondente ao array na memória com para um número de elementos predeterminado Comando realizado pela palavra-chave new, seguida pelo tipo do dado do array e do número de elementos a alocar, entre colchetes int[] posiçõesDeMemória = new int[16]; int tamanho = 32768; posiçõesDeMemória = new int[tamanho]; double[] medidasTemperatura = new int[24 * 60 * 60]; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 (C) 2008 Gustavo Motta

7 7. Arrays Declaração e alocação de arrays unidimensionais
Inicialização Pode ser realizada na cláusula de declaração, para pequeno número de elementos sabidos a priori int[] ultimoDiaMes = {31, 28, 31, 30, 31, 30, 31, , 30, 31, 30, 31}; String[] universidades = {"UFPB", "UFCG", "UEPB", "CEFET", "UNIPE"}; Pode ser realizada após a alocação/criação criação do array String[] universidades = new String[5]; universidades[0] = "UFPB"; universidades[1] = "UFCG"; universidades[2] = "UEPB"; universidades[3] = "CEFET"; universidades[4] = "UNIPE"; 1 2 3 4 UFPB UFCG UEPB CEFET UNIPE 1 2 3 4 (C) 2008 Gustavo Motta

8 7. Arrays Acesso a elementos
O índice para acesso a um elemento deverá ser um valor do tipo inteiro entre 0 e o tamanho do array subtraído de 1 nome_do_array[indice] Qualquer tentativa de acesso com valor de índice fora dessa faixa resulta em erro em tempo de execução, com a interrupção da execução do programa, indicado pela exceção ArrayIndexOutOfBoundsException O tamanho –quantidade de elementos– de um array pode ser lido através da variável length, existente em todo array universidades.length  5 ultimoDiaMes.length  12 (C) 2008 Gustavo Motta

9 7. Arrays Acesso a elementos – exemplo
Método para computar a série de fibonacci long[] fibonacci(int n) { long[] serie = new long[n]; if (n > 0) { serie[0] = 1; } if (n > 1) { serie[1] = 1; } for (int i = 2; i < n; i++) { serie[i] = serie[i - 1] + serie[i - 2]; } return serie; } (C) 2008 Gustavo Motta

10 7. Arrays Arrays de instâncias de classes
Array no qual os elementos são instâncias de classes Cada elemento deverá ser criado para inicializar o array CartaoDeCredito[] void defineCartoes(int nCartoes) { System.out.println("Configuracao do sistema de cartoes 'SysCard'."); System.out.println("Entre com a bandeira de "+nCartoes+" cartoes ..."); CartaoDeCredito[] cartoes = new CartaoDeCredito[nCartoes]; Scanner entrada = new Scanner (System.in); for (int n = 0; n < cartoes.length; n++) { cartoes[n] = new CartaoDeCredito(); System.out.print("Entre com a bandeira do cartão '"+n+"': "); String bandeira = entrada.nextLine(); cartoes[n].defineBandeira(bandeira); System.out.println(); } return cartoes; } (C) 2008 Gustavo Motta

11 7. Arrays Ordenação Disposição dos elementos de um array segundo a relação de ordem – crescente ou decrescente Ordem alfabética, numérica, etc. Agenda de telefônica Relação de aprovados no vestibular Páginas de um livro Existem diversos algoritmos para ordenação, por exemplo Bubblesort Simples, porém ineficiente Quicksort Elaborado, porém eficiente (C) 2008 Gustavo Motta

12 7. Arrays Ordenação – Algoritmo Bubblesort
Condição de entrada – pré-condição O array para ser ordenado Condição de saída – pós-condição O array ordenado Algoritmo Enquanto o array não estiver ordenado, repita Examine cada par de elementos adjacentes no array e inverta a posição dos valores que estão fora de ordem int[] idades = {60, 42, 75, 83, 27}; Passo 2 Passo 3 Passo 1 Passo 5 Passo 4 42 27 60 75 83 idades[0] 60 idades[1] 42 idades[2] 75 idades[3] 83 idades[4] 27 42 60 75 27 83 42 60 27 75 83 27 42 60 75 83 27 42 60 75 83 60 42 75 83 27 27 42 60 75 83 42 60 27 75 83 42 60 75 83 27 42 60 75 27 83 42 60 75 83 27 42 60 75 27 83 27 42 60 75 83 42 27 60 75 83 27 42 60 75 83 42 60 75 83 27 42 27 60 75 83 27 42 60 75 83 42 60 27 75 83 27 42 60 75 83 42 27 60 75 83 42 60 75 27 83 42 60 27 75 83 27 42 60 75 83 27 42 60 75 83 (C) 2008 Gustavo Motta

13 7. Arrays Ordenação – Algoritmo Bubblesort
public long[] sort(long[] data) { boolean ordenado = true; do { ordenado = true; for (int n = 0; n < data.length - 1; n++) { if (data[n] > data[n + 1]) { long temp = data[n]; data[n] = data[n + 1]; data[n + 1] = temp; ordenado = false; } while (!ordenado); return data; (C) 2008 Gustavo Motta

14 7. Arrays Ordenação - Algoritmo QuickSort
Condição de entrada – pré-condição O array a ser ordenado – long[] data Os índices inicial –int início– e final –int fim– do array Condição de saída – pós-condição O array ordenado - long[] data Algoritmo QuickSort 1. Se início < fim, então 2. Particione os elementos no subarray entre início e fim, de modo que, todos os valores menores ou iguais ao pivô estejam à sua esquerda e que todos os valores maiores que ele estejam a sua direita, onde O valor inicial do pivô é pivô = data[início] O valor final da nova posição do pivô –pivôPos– é aquela onde todos os elementos <= data[pivôPos] têm índice < que pivôPos e todos os elementos > data[pivôPos] têm índice > que pivôPos 3. Aplique o algoritmo QuickSort para o subarray entre início e pivôPos - 1 4. Aplique o algoritmo QuickSort para o subarray entre pivôPos + 1 e fim (C) 2008 Gustavo Motta

15 7. Arrays Ordenação - Algoritmo QuickSort 12 23 33 43 44 55 64 77 75
Pivô Pivô Pivô Pivô Pivô Pivô 12 23 33 43 44 55 64 77 75 1 2 3 4 5 6 7 8 12 23 33 43 44 55 64 75 77 1 2 3 4 5 6 7 8 12 33 23 43 44 55 64 77 75 1 2 3 4 5 6 7 8 12 33 23 43 44 55 64 77 75 1 2 3 4 5 6 7 8 44 33 23 43 12 55 64 77 75 1 2 3 4 5 6 7 8 início início fim início fim fim particiona particiona particiona particiona 12 23 33 43 44 55 64 77 75 1 2 3 4 5 6 7 8 12 23 33 43 44 55 64 75 77 1 2 3 4 5 6 7 8 12 33 23 43 44 55 64 77 75 1 2 3 4 5 6 7 8 12 33 23 43 44 55 64 77 75 1 2 3 4 5 6 7 8 (C) 2008 Gustavo Motta

16 7. Arrays Ordenação - Algoritmo QuickSort
private int particiona(long[] data, int início, int fim) { long pivô = data[início]; int avanço = início; int retrocesso = fim; do { while ((data[avanço] <= pivô) && (avanço < fim)) avanço = avanço + 1; while (data[retrocesso] > pivô) retrocesso = retrocesso - 1; if (avanço < retrocesso) { long temp = data[avanço]; data[avanço] = data[retrocesso]; data[retrocesso] = temp; } while (avanço < retrocesso); long temp = data[retrocesso]; data[retrocesso] = data[início]; data[início] = temp; return retrocesso; Ordenação - Algoritmo QuickSort public void quickSort(long[] data, int início, int fim) { if (início < fim) { int pivôPos = particiona(data, início, fim); quickSort(data, início, pivôPos - 1); quickSort(data, pivôPos + 1, fim); } (C) 2008 Gustavo Motta

17 7. Arrays Ordenação - Algoritmo QuickSort 12 23 33 43 44 55 64 77 75
Pivô Pivô Pivô Pivô Pivô Pivô Pivô Pivô 12 23 33 43 44 55 64 77 75 12 33 23 43 44 55 64 77 75 44 33 23 43 55 12 64 77 75 44 75 23 43 55 12 64 77 33 44 33 23 43 12 55 64 77 75 12 33 23 43 44 55 64 77 75 12 33 23 43 44 55 64 77 75 12 33 23 43 44 55 64 77 75 12 33 23 43 44 55 64 77 75 44 33 23 43 55 12 64 77 75 44 75 23 43 55 12 64 77 33 44 33 23 43 55 12 64 77 75 44 75 23 43 55 12 64 77 33 12 23 33 43 44 55 64 77 75 44 75 23 43 55 12 64 77 33 12 23 33 43 44 55 64 77 75 44 33 23 43 55 12 64 77 75 12 23 33 43 44 55 64 77 75 12 23 33 43 44 55 64 77 75 12 23 33 43 44 55 64 77 75 12 23 33 43 44 55 64 75 77 retrocesso retrocesso retrocesso avanço avanço retrocesso avanço avanço avanço retrocesso retrocesso avanço avanço retrocesso retrocesso avanço retrocesso avanço retrocesso retrocesso avanço avanço retrocesso retrocesso retrocesso avanço avanço retrocesso retrocesso retrocesso avanço avanço retrocesso retrocesso (C) 2008 Gustavo Motta

18 7. Arrays Arrays multidimensionais
Elementos são acessados por um número arbitrário de índices Matrizes matemáticas double[][] matriz = new double[5][10]; ... public double maiorValor() { double maiorAtéAgora = matriz[0][0]; for (int lin= 0;lin < matriz.length; lin++) for (int col = 0; col < matriz[lin].length; col++) if (matriz[lin][col] > maiorAtéAgora) maiorAtéAgora = matriz[lin][col]; return maiorAtéAgora; } (C) 2008 Gustavo Motta

19 7. Arrays Arrays multidimensionais irregulares
Não têm o mesmo número de elementos em cada dimensão Um array em Java nada mais é do que um array cujos elementos são arrays, com exceção do elemento mais interno double[] [] matriz = new double[5][]; matriz[0] = new double[2]; matriz[1] = new double[5]; matriz[2] = new double[3]; ... public double maiorValor() { double maiorAtéAgora = matriz[0][0]; for (int lin= 0;lin < matriz.length; lin++) for (int col = 0; col < matriz[lin].length; col++) if (matriz[lin][col] > maiorAtéAgora) maiorAtéAgora = matriz[lin][col]; return maiorAtéAgora; } (C) 2008 Gustavo Motta


Carregar ppt "Introdução à Programação"

Apresentações semelhantes


Anúncios Google