Introdução à Programação

Slides:



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

Matrizes Unidimensionais
Introdução à Programação Um enfoque orientado a construção de modelos em programas baseados em objetos Gustavo Motta Departamento de Informática - UFPB.
Programação Orientada a Objetos*
C/C++ para Sistemas Operacionais Professor: André Luis Meneses Silva /msn: Página:
Estruturas de Dados Marcio Gonçalves.
Introdução à Programação Um enfoque orientado a construção de modelos em programas baseados em objetos Gustavo Motta Departamento de Informática - UFPB.
Estruturas de Repetição
Paulo Marques Hernâni Pedroso
Java Básico Arrays Marco Antonio, Arquiteto de Software – TJDF Atualizado: Fevereiro/2009.
Métodos, Parâmetros, Argumentos e Contratos
LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS INTRODUÇÃO AOS APLICATIVOS JAVA Prof. Thiago Pereira Rique
Interação entre objetos
Programação Básica em Java
1 Tipos definidos O programador pode definir seus próprios tipos de dados tipos complexos usados da mesma forma que os simples declaram-se variáveis utilizando-se.
Pesquisa em Memória Primária
Pesquisa em Memória Primária
Arrays Profa. Isabel Harb Manssour (Material adaptado das aulas dos Profs.: Luciana Nedel, Júlio Machado e Bernardo Copstein) Arrays Exercícios.
Linguagem C LPG-I – Variáveis Estruturadas – Vetores
Introdução à Programação Um enfoque orientado a construção de modelos em programas baseados em objetos Gustavo Motta Departamento de Informática - UFPB.
Introdução à Programação
Introdução à Programação Um enfoque orientado a construção de modelos em programas baseados em objetos Gustavo Motta Departamento de Informática - UFPB.
Introdução à Programação
Introdução à Programação Um enfoque orientado a construção de modelos em programas baseados em objetos Gustavo Motta Departamento de Informática - UFPB.
Classes e objetos Arrays e Sobrecarga
Classes e objetos P. O. O. Prof. Grace.
Introdução a Programação JAVA
Estrutura de Dados em Java
Paradigmas de Linguagens de Programação Paradima da Programação Orientada à Objetos Professor: Armando Hage Belém-2008.
Tópicos Tipos de Dados Variáveis por Valor Variáveis por Referência
CRIANDO OBJETOS EM JAVA
Aula Prática 4 Monitoria IP/CC (~if669).
UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA CIVIL INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves.
Entendendo as definições de classe
UNIDADE 5 ESTRUTURAS DE DADOS HOMOGÊNEAS
7 Arrays.
Introdução à Programação Orientada a Objetos com Java
Introdução à Linguagem Java
Aula 3 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.
Vetores e Matrizes Ameliara Freire
JAVA Orientação a Objetos Sun Campus Ambassador Aula 5.
Orientação a Objetos e Java Graduação em Ciência da Computação
Pilhas Profa. Nádia Félix.
Algoritmos de Ordenação
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes.
BC-0505 Processamento da Informação
Programação I Aula 12 (Arrays Bidimensionais)
BC-0505 Processamento da Informação Santo André, Março de 2011 Professor: Carlos Alberto Kamienski -
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota (com material da Qualiti Software Process)
Laboratório I Mateus Raeder. Mateus Raeder – maio de 2010 Arrays unidimensionais  Arrays unidimensionais são objetos que permitem ao programador armazenar.
Linguagem de Programação JAVA
Capítulo VI – Variáveis Indexadas 6.1 – A necessidade de variáveis indexadas 6.2 – Vetores e matrizes 6.3 – Aplicações com vetores numéricos 6.4 – Aplicações.
Laboratório I Mateus Raeder. Mateus Raeder – maio de 2010 Arrays  Variável: armazena apenas um valor  Como criar em uma única variável, espaço para.
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,
Programação I Aula 11 (Arrays de Objetos) Prof. Gilberto Irajá Müller Última atualização 27/5/2009.
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.
PROGRAMAÇÃO II – PARTE 6 Profa. Maria Augusta Constante Puget.
 A linguagem Java tem diversas classes para a manipulação dos conjuntos de dados. Esses dados podem ser organizados de duas maneiras diferentes: ◦ Vetores.
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.
Arrays Outline 7.1 Introdução 7.2 Arrays 7.3 Declarando e Criando Arrays 7.4 Exemplos usando arrays 7.5 Ordenando arrays 7.6 Procurando em.
Linguagem Java Programação II.
Laboratório de Computação Aula 05 – Array Prof. Fábio Dias
Strings e Arrays Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB  Centro de Informática,
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Transcrição da apresentação:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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