Algoritmos e Estruturas de Dados. Lição n.º 3 Coleções: sacos, pilhas e filas

Tamanho: px
Começar a partir da página:

Download "Algoritmos e Estruturas de Dados. Lição n.º 3 Coleções: sacos, pilhas e filas"

Transcrição

1 Algoritmos e Estruturas de Dados Lição n.º 3 Coleções: sacos, pilhas e filas

2 Coleções: sacos, pilhas e filas Especificação das coleções Classes iteráveis Sacos (em inglês bags) Implementação com arrays Pilhas (em inglês stacks) Implementação com listas Filas (em inglês queues) Implementação como exercício. Estudaremos hoje os sacos. As pilhas e as filhas ficam para a próxima lição Algoritmos e Estruturas de Dados 2

3 Coleções Coleções são... coleções! Às coleções podemos acrescentar objetos, removêlos e iterá-los. Podemos ainda perguntar-lhes se estão vazias e quantos objetos têm. Em Java teremos coleções genéricas, parametrizadas pelo tipo dos objetos que contêm. Por exemplo: public class Bag<T> //... As coleções não inspecionam os objetos que contêm, apenas os guardam, e por isso não há restrições sobre o tipo de objetos que podem conter Algoritmos e Estruturas de Dados 3

4 Classes iteráveis Queremos que as nossas coleções sejam iteráveis, isto é, que permitam processar sequencialmente cada um dos objetos da coleção. Programaremos isso fazendo cada coleção dispor de um método iterator que devolve um iterador. Paralelamente, declaramos a classe como implementando a interface Iterable<T>: public class Bag<T> implements Iterable<T> // Algoritmos e Estruturas de Dados 4

5 APIs public class Bag<T> implements Iterable<T> public Bag() public void add(t x) public boolean isempty() public int size() public Iterator<T> iterator() public class Stack<T> implements Iterable<T> public Stack() public void push(t x) public boolean isempty() public int size() public T pop() public Iterator<T> iterator() public class Queue<T> implements Iterable<T> public Queue() public void enqueue(t x) public boolean isempty() public int size( public T dequeue() public Iterator<T> iterator() Algoritmos e Estruturas de Dados 5

6 Capacidade? Como indicamos a capacidade das coleções? Não indicamos! Há apenas um construtor, sem argumentos. Logo, as coleções têm de ser capazes de aumentar a capacidade, se necessário (e, porventura, de diminuir a capacidade, se desejável). Para isso, implementamo-las à base de listas ligadas ou à base de arrays redimensionáveis. Um array redimensionável é um array cuja capacidade pode mudar durante a execução do programa. Aparentemente a expressão array redimensionável é um oximoro, pois habituámo-nos a que a capacidade de um array é fixada na sua criação e não muda mais Algoritmos e Estruturas de Dados 6

7 Sacos, implementação Vamos implementar a classe Bag usando arrays redimensionáveis. Haverá um campo items, que é o array, e um campo size, que representa o número de elementos presentes no array: public class Bag<T> implements Iterable<T> private T[] items; private int size; //... Recorde que a capacidade do array está registada no membro length do array Algoritmos e Estruturas de Dados 7

8 Sacos, construtor Inicialmente, o array terá capacidade 1 e tamanho 0: public class Bag<T> implements Iterable<T> private T[] items; private int size; public Bag() items = (T[]) new Object[1]; size = 0; Note bem: criamos um array de objetos, e forçamos a conversão //... para array de T Algoritmos e Estruturas de Dados 8

9 Questão técnica: arrays genéricos Nós gostaríamos de ter programado a criação do array genérico items assim: items = new T[1]; No entanto, por razões técnicas, aceitáveis mas complicadas, o Java não permite a criação de arrays genéricos. Remedeia-se criando um array de objetos Object e forçando a conversão para o tipo de arrays pretendido. Em geral, forçar conversões de tipo é mau estilo Algoritmos e Estruturas de Dados 9

10 Supressão de avisos Como, forçar conversões é uma operação arriscada, o Java emite um warning: Evitamos o warning com uma public Bag() items = (T[]) new Object[1]; size = 0; Só usaremos o SuppressWarnings neste caso da construção de arrays genéricos! Algoritmos e Estruturas de Dados 10

11 Redimensionamento Na verdade, não redimensionamos o array: criamos outro array com a capacidade pretendida e fazemos a com que a variável que apontava para o array original passe a apontar para o array novo: private void resize(int T[] temp = (T[]) new Object[capacity]; for (int i = 0; i < size; i++) Atenção: isto presume temp[i] = items[i]; que size <= capacity. items = temp; A memória do array original fica inacessível e será libertada automaticamente pelo garbage collector dentro em pouco Algoritmos e Estruturas de Dados 11

12 Método add Se, ao acrescentar um elemento ao saco, notarmos que já não há espaço no array, redimensionamo-lo para o dobro: public void add(t x) if (size == items.length) resize(2 * items.length); items[size++] = x; Algoritmos e Estruturas de Dados 12

13 Métodos size e isempty Estes são muito simples: public int size() return size; public boolean isempty() return size == 0; Algoritmos e Estruturas de Dados 13

14 O iterador Optamos por iterar pela ordem de entrada. Usamos uma classe interna: public class Bag<T> implements Iterable<T> //... private class BagIterator implements Iterator<T> private int i = 0; public boolean hasnext() return i < size; public T next() return items[i++]; public void remove() O método remove throw new UnsupportedOperationException(); não é suportado Algoritmos e Estruturas de Dados 14

15 O método iterator O método iterator apenas cria e retorna um objeto de tipo BagIterator: public Iterator<T> iterator() return new BagIterator(); Mais tarde, para, por exemplo, mostrar o conteúdo de saco de inteiros, b, faremos: for (int x: b) StdOut.println(x); Algoritmos e Estruturas de Dados 15

16 Exemplo: problema dos estádios A federação tem a lista dos estádios, com nome, comprimento do relvado e largura do relvado. Pretende saber quais são os estádios com relvado de área máxima, de entre aqueles cujo relvado tem as dimensões regulamentares. Para a FIFA, o comprimento do relvado deve estar entre 90 e 120 metros e a largura entre 45 e 90 metros. Cada linha do ficheiro tem o nome (um cadeia de carateres sem espaços) o comprimento e a largura (ambos números inteiros). drag alg_arv light saintlouis alv_xxi Variante do problema usado em Laboratório de Programação 13/ Algoritmos e Estruturas de Dados 16

17 Classe Stadium Uma classe imutável, para representar estádios: public class Stadium private final String name; private final int length; private final int width; public static final int MIN_LENGTH = 90; public static final int MAX_LENGTH = 120; public static final int MIN_WIDTH = 45; public static final int MAX_WIDTH = 90; Stadium(String s, int u, int w) name = s; length = u; width = w; //... Note bem: por opção de desenho, os valores destes membros não podem mudar após a construção Algoritmos e Estruturas de Dados 17

18 Classe Stadium, continuação public class Stadium //... public int area() return length * width; public boolean islegal() return MIN_LENGTH <= length & length <= MAX_LENGTH && MIN_WIDTH <= width && width <= MAX_WIDTH; public static Stadium read() String s = StdIn.readString(); int u = StdIn.readInt(); int w = StdIn.readInt(); return new Stadium(s, u, w); Note bem: método estático. public String tostring() return name + " " + length + " " + width; Note bem: método redefinido Algoritmos e Estruturas de Dados 18

19 Classe do problema Usamos um saco de estádios. O saco é criado vazio (como todos os sacos) e depois é preenchido por leitura: public class StadiumProblem private Bag<Stadium> stadiums = new Bag<Stadium>(); public void read() while (!StdIn.isEmpty()) stadiums.add(stadium.read()); // Algoritmos e Estruturas de Dados 19

20 Estádios selecionados Os estádios selecionados também formam um saco: public class StadiumProblem //... public Bag<Stadium> selected() Bag<Stadium> result = new Bag<Stadium>(); int maxarea = -1; for (Stadium x: stadiums) if (x.islegal()) if (maxarea < x.area()) maxarea = x.area(); result = new Bag<Stadium>(); if (x.area() == maxarea) result.add(x); return result; De cada vez que surge uma nova área máxima, recomeça-se com um novo saco. // Algoritmos e Estruturas de Dados 20

21 Método solve Resolvemos o problema no método solve: public void solve() read(); Bag<Stadium> solution = selected(); if (solution.isempty()) StdOut.println("(empty)"); else for (Stadium x : selected()) StdOut.println(x); A função main cria um problema e invoca o método solve: public static void main(string [] args) new StadiumProblem().solve(); Algoritmos e Estruturas de Dados 21

22 Diretoria work Tipicamente, guardaremos os nosso ficheiros de dados numa diretoria work, dentro do projeto, ao lado das diretorias bin e src (criadas pelo Eclipse). Nesse caso, podemos correr o programa a partir da diretoria work, redirigindo o input, assim, por exemplo: Também podemos redirigir o output, de maneira análoga, claro Algoritmos e Estruturas de Dados 22

23 Custo do redimensionamento? Redimensionar o array que suporta o saco parece ser um grande trabalho suplementar. Será que é? Quando redimensionamos de N para 2N, quantos acessos se fazem aos arrays items e temp? O array temp é criado com 2N elementos e cada um deles tem de ser inicializado com null. Logo 2N acessos. A afectação temp[i] = items[i] faz-se N vezes. Logo, ao todo, mais 2N acessos. Portanto, ao redimensionar de 1 para 2, foram 4 acessos; de 2 para 4 foram 8 acessos;...; de N/2 para N foram 2N acessos. Portanto, se o array tiver N elemento e N for uma potência de 2, teremos usado N acessos só para o redimensionamento. Ora N = 4N 4. A estes há que somar os N acessos normais, para acrescentar no novo elemento ao saco. Logo, ao todo teremos tido 5N 4 acessos, para N elementos no array. Note que se tivéssemos alocado logo N elementos na criação, teria havido 2N acessos ao array, ao todo, mas em geral não sabemos o número de elementos exato e portanto temos de dimensionar por excesso Algoritmos e Estruturas de Dados 23

24 Exercício Dispomos de um ficheiro com as cotações na bolsa de Lisboa. Em cada linha vem o nome do papel, a cotação no início da sessão, o mínimo da sessão, o máximo da sessão, a cotação corrente e o número de transações desse papel. Queremos saber quais os papéis cuja variação (corrente menos inicial sobre inicial) é positiva e maior ou igual à média das variações e qual é a valorização total desses papéis. O valorização de cada papel é o volume vezes a diferença entre a cotação inicial e a cotação corrente. No ficheiro de saída vêm os nomes dos papéis cuja variação é é positiva e a maior que a média, por ordem alfabética, depois a variação média destes papéis e finalmente valorização total também destes papéis. Requisitos técnicos: guarde todas as cotações num saco; ordene os nomes dos papéis usando a função Arrays.sort(). Veja o problema aqui Algoritmos e Estruturas de Dados 24

Algoritmos e Estruturas de Dados. Lição n.º 3 Coleções: sacos, pilhas e filas

Algoritmos e Estruturas de Dados. Lição n.º 3 Coleções: sacos, pilhas e filas Algoritmos e Estruturas de Dados Lição n.º 3 Coleções: sacos, pilhas e filas Coleções: sacos, pilhas e filas Especificação das coleções Classes iteráveis Sacos (em inglês bags) Implementação com arrays

Leia mais

Algoritmos e Estruturas de Dados. Lição n.º 4 Pilhas

Algoritmos e Estruturas de Dados. Lição n.º 4 Pilhas Algoritmos e Estruturas de Dados Lição n.º 4 Pilhas Pilhas Implementação com arrays redimensionáveis. Implementação com listas ligadas. Aplicação: avaliação de expressões aritméticas usando o algoritmo

Leia mais

Orientação a Objetos AULA 09

Orientação a Objetos AULA 09 Orientação a Objetos AULA 09 Prof. Fabrício Martins Mendonça Conteúdo da Aula ü Coleções ü Coleções lista de objetos ü Coleções conjuntos 2 Coleções Podemos armazenar vários objetos em um array e este

Leia mais

Iteradores. Iteradores. Isabel Harb Manssour. Roteiro. Coleções

Iteradores. Iteradores. Isabel Harb Manssour. Roteiro. Coleções Implementação de Genéricos, Iteradores Isabel Harb Manssour Porto Alegre, maio de 2006 Roteiro Implementação de Genéricos Coleções Conceito de Genérico Implementação Iteradores Conceito Utilização ForEach

Leia mais

Coleções. João Paulo Q. dos Santos

Coleções. João Paulo Q. dos Santos Coleções João Paulo Q. dos Santos joao.queiroz@ifrn.edu.br Roteiro Conceitos sobre coleções; Tipos de coleções; Como são classificadas; Exemplos. 04/02/14 2 Coleções Classes e interfaces do pacote java.util

Leia mais

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas UNIP - Ciência da Computação e Sistemas de Informação Estrutura de Dados AULA Pilhas Estrutura de Dados A Estrutura de Dados Pilha Pilha é uma estrutura de dados usada em programação, que tem uma regra

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro Variáveis e Métodos de Classe Em Java, quer as classes quer as instâncias das classes são objectos. Onde está o estado da classe? Com que operações é manipulado? UBI, Departamento de Informática T04-1

Leia mais

Iterator. Professor: Hyggo Almeida

Iterator. Professor: Hyggo Almeida Professor: Hyggo Almeida Utilização de estruturas de dados Vector, ArrayList, HashSet,... Vector collection; public void classexusando(vector col){... ArrayList collection; public void classewusando(arraylist

Leia mais

4 Conceito de Herança

4 Conceito de Herança 4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança

Leia mais

API e Coleções Java. Sérgio Luiz Ruivace Cerqueira

API e Coleções Java. Sérgio Luiz Ruivace Cerqueira API e Coleções Java Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Java API Introdução API Endereço http://download.oracle.com/javase/6/docs/api/ API - Descrição API - Resumo API - Detalhes Coleções

Leia mais

2 Vectores de objectos

2 Vectores de objectos 2 Vectores de objectos Agenda de contactos 3 Objectivo Manipular uma agenda de contactos. Descrição e Funcionalides Cada contacto na agenda caracteriza-se por um nome, um telefone e um e-mail. Na agenda,

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro Java Collections Framework (JCF) Uma coleção (collection) é um objeto que agrupa vários elementos. A JCF consiste numa arquitetura para representação e manipulação de coleções. Contém: - Um conjunto de

Leia mais

Exercício de Estrutura de dados. Java Fila

Exercício de Estrutura de dados. Java Fila Exercício de Estrutura de dados Java Fila Obs.: Esse projeto foi um exercício realizado em sala de aula da matéria de Estrutura de dados com o Profº Frederico Augusto Siqueira Gentil Aqui está sendo relatado

Leia mais

Prova 2 PMR2300 1o. semestre 2015 Prof. Thiago Martins

Prova 2 PMR2300 1o. semestre 2015 Prof. Thiago Martins Prova PMR00 o. semestre 0 Prof. Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço.. ( pontos) Um heap binário é uma árvore binária completa (todos os níveis exceto o último

Leia mais

Prova 2 PMR3201 1o. semestre 2016 Prof. Thiago Martins

Prova 2 PMR3201 1o. semestre 2016 Prof. Thiago Martins Prova 2 PMR3201 1o. semestre 2016 Prof. Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço. Os códigos fornecidos na seção Códigos-fonte de apoio podem ser referenciados

Leia mais

Estruturas de Dados Encadeadas

Estruturas de Dados Encadeadas CURSO: Ciência da Computação DATA: / / 2016 PERÍODO: 4 o. PROFESSOR: Andrey DISCIPLINA: Técnicas Alternativas de Programação AULA: 14 APRESENTAÇÃO Na aula de hoje vamos apresentar e discutir conceitos

Leia mais

A classe ArrayList. IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli

A classe ArrayList. IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli A classe ArrayList Java oferece uma classe chamada ArrayList, que permite a criação e manipulação de objetos; Um objeto ArrayList é semelhante a um vetor de objetos, mas oferece inúmeras vantagens em relação

Leia mais

Generics POO. Prof. Marcio Delamaro

Generics POO. Prof. Marcio Delamaro Generics POO Prof. Marcio Delamaro Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP 1/39 O que são Tipos genéricos São uma forma de definir e utilizar classes de forma genérica Dá flexibilidade

Leia mais

Collections Framework

Collections Framework Collections Framework 1 Arrays p Manipular array é bastante trabalhoso. p Dificuldades aparecem em diversos momentos: n não podemos redimensionar um array em Java; n é impossível buscar diretamente por

Leia mais

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura Java First-Tier: Aplicações Orientação a Objetos em Java (I) Paradigmas de Programação Programação Funcional Programação Procedural Programação Orientada por Objetos Grupo de Linguagens de Programação

Leia mais

Departamento de Ciência de Computadores Estruturas de Dados (CC114)

Departamento de Ciência de Computadores Estruturas de Dados (CC114) 1. Cotação de cada pergunta: 1. 32 / 2. 36 / 3. 32 (Total: 100 pontos) 2. Responda às questões de forma clara e concisa nas folhas de exame distribuídas. 1. (Valorização: 32%) Responda às seguintes questões:

Leia mais

Apêndice A. Alguns construtores e métodos importantes e úteis da classe Vector são:

Apêndice A. Alguns construtores e métodos importantes e úteis da classe Vector são: Apêndice A Classe Vector A classe Vector permite a representação de um vetor de dados de maneira similar à de um array, visto na disciplina Programação Orientada a Objetos I, mas com maior flexibilidade.

Leia mais

Interfaces POO. Prof. Marcio Delamaro

Interfaces POO. Prof. Marcio Delamaro Interfaces POO Prof. Marcio Delamaro Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP 1/41 O que é interface É um template de classe Outras classes podem seguir esse template Chamamos isso

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Engenharia da Computação Professor: Rosalvo Ferreira de Oliveira Neto Dados Pessoais Rosalvo Ferreira de Oliveira Neto MSc. em ciência da computação (UFPE) rosalvo.oliveira@univasf.edu.br

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação 4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança

Leia mais

Algoritmos e Estruturas de Dados 2009/2010

Algoritmos e Estruturas de Dados 2009/2010 Listas Algoritmos e Estruturas de Dados 2009/2010 Tipo de Dados Abstracto TDA conjunto de objectos + conjuntos de operações constituem uma abstracção matemática em C++ são implementados por classes; as

Leia mais

Genéricos. Profa. Thienne Johnson EACH/USP

Genéricos. Profa. Thienne Johnson EACH/USP Genéricos Profa. Thienne Johnson EACH/USP Java, como programar, 6ª edição Deitel & Deitel Capítulo 18 Material complementar http://wps.prenhall.com/br_deitel_comoprogra_6/ Todas as classes em Java herdam,

Leia mais

Linguagem de Programação II Implementação

Linguagem de Programação II Implementação Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Criando objeto Definindo valores para os atributos do objeto Método construtor Definindo valores padrão para os atributos dos

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação 4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança

Leia mais

Lista encadeada class No { Coleções. Enumeration. Lista encadeada (continuação) Enumeration Exemplo usando a classe Lista anterior

Lista encadeada class No { Coleções. Enumeration. Lista encadeada (continuação) Enumeration Exemplo usando a classe Lista anterior Coleções Retirado do Tutorial Java class Lista { No inicio = null; Lista encadeada class No { void insereinicio(object obj) { No n = new No(obj, inicio); inicio = n; Object obj; No prox; No(Object obj,

Leia mais

Paradigmas de Programação

Paradigmas de Programação Tipos Abstractos de Dados (ADT) Estruturas construídas para armazenar determinados tipos de dados e que especificam operações que permitem a manipulação desses dados. Estudaremos duas das mais simples

Leia mais

Departamento de Ciência de Computadores Estruturas de Dados (CC114)

Departamento de Ciência de Computadores Estruturas de Dados (CC114) 1. Cotação de cada pergunta: 1. 30 / 2. 40 / 3. 30 (Total: 100 pontos) 2. Responda às questões de forma clara e concisa nas folhas de exame distribuídas. 1. (Valorização: 30%) Responda às seguintes questões:

Leia mais

UNIVERSIDADE FEDERAL DO PARANÁ. CURSO: Ciência da Computação DATA: / / 2013 PERÍODO: 4 o.

UNIVERSIDADE FEDERAL DO PARANÁ. CURSO: Ciência da Computação DATA: / / 2013 PERÍODO: 4 o. CURSO: Ciência da Computação DATA: / / 2013 PERÍODO: 4 o. PROFESSOR: Andrey DISCIPLINA: Técnicas Alternativas de Programação AULA: 07 APRESENTAÇÃO Nesta aula vamos discutir como implementar um tipo abstrato

Leia mais

ProgamaçãoOrientada pelos Objetos B. Vectores

ProgamaçãoOrientada pelos Objetos B. Vectores ProgamaçãoOrientada pelos Objetos B Vectores 2 Introdução aos vectoresem Java Os slidesseguintes são utilizados na disciplina de Introdução à Programação da LEI 3 Estação Meteorológica Vectores 4 Neste

Leia mais

Prof. Fernando V. Paulovich 8 de novembro de SCC Programação Orientada a Objetos

Prof. Fernando V. Paulovich  8 de novembro de SCC Programação Orientada a Objetos Coleções a Tipos Genéricos em Java SCC0604 - Programação Orientada a Objetos Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas e de Computação

Leia mais

Java API. Giuliana Silva Bezerra

Java API. Giuliana Silva Bezerra Java API Giuliana Silva Bezerra Leitura e escrita de arquivos Java.io.file Escrita de arquivos Java.io.PrintWriter 1. Criar instância de Java.io.PrintWriter PrintWriter saida = new PrintWriter( Diretorio

Leia mais

Programação Orientada pelos Objetos B. Desenvolvimento orientado pelos objectos

Programação Orientada pelos Objetos B. Desenvolvimento orientado pelos objectos Programação Orientada pelos Objetos B Desenvolvimento orientado pelos objectos 2 Slides elaborados pelos Professores Miguel Goulão e Adriano Lopes, no âmbito do ensino da programação orientada pelos objectos

Leia mais

Prova 2 PMR3201 1o. semestre 2015 Prof. Thiago Martins

Prova 2 PMR3201 1o. semestre 2015 Prof. Thiago Martins Prova PMR0 o semestre 0 Prof Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço ( pontos) Uma árvore binária de busca é uma árvore binária na qual para qualquer sub-árvore

Leia mais

Notas de Aula 07: vetores de objetos e coleções

Notas de Aula 07: vetores de objetos e coleções Notas de Aula 07: vetores de objetos e coleções Objetivos da aula: Entender a sintaxe de vetores em Java Compreender o uso do vetor como um objeto Uso das coleções em Java Recordando... Na aula passada

Leia mais

JAVA. José de Siqueira UFMG - ICEx - DCC

JAVA. José de Siqueira UFMG - ICEx - DCC ESTRUTURAS DE DADOS JAVA BÁSICAS EM José de Siqueira UFMG - ICEx - DCC 1 o semestre de 2005 O Tipo Abstrato de Dados Pilha O TAD pilha tem quase as mesmas operações apresentadas anteriormente: 1. empilha(o):

Leia mais

Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação

Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação Introdução Além de utilizar as classes presentes na biblioteca padrão, programadores podem definir suas próprias

Leia mais

Listas Ligadas, Pilhas e Filas

Listas Ligadas, Pilhas e Filas Listas Ligadas, Pilhas e Filas Pedro Ribeiro DCC/FCUP 2017/2018 (baseado e/ou inspirado parcialmente nos slides de Luís Lopes e de Fernando Silva) Pedro Ribeiro (DCC/FCUP) Listas Ligadas, Pilhas e Filas

Leia mais

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I Pilhas e Filas Encadeadas Algoritmos e Estruturas de Dados I Pilha Lista linear: pilha Represente graficamente o funcionamento da pilha, representando a pilha vazia, a entrada e a saída de elementos Quais

Leia mais

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... } Recapitulando Orientação a objetos: programas organizados em torno da definição de classes, instanciação de objetos e troca de mensagens. Declaração de variáveis de referencia: Circle c; Criação/instanciação

Leia mais

Desenvolvimento e Projeto de Aplicações Web

Desenvolvimento e Projeto de Aplicações Web Desenvolvimento e Projeto de Aplicações Web cecafac@gmail.com Coleções Conteúdo 1 Introdução Desde a versão 1.2 do JDK, a plataforma J2SE inclui um framework de coleções (Collections) Uma coleção é um

Leia mais

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos Análise e Projeto Orientados por Objetos Aula 05 Padrões GoF (Singleton e Iterator) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method Prototype

Leia mais

Exame de Estruturas de Dados 2010.Junho.26

Exame de Estruturas de Dados 2010.Junho.26 Exame de Estruturas de Dados 2010.Junho.26 Duração: 2:30 horas Valorização: 12 valores. 1. Responda às seguintes questões: a) Faça o estudo da complexidade do seguinte método: 1. void fun2(int n, int v[])

Leia mais

Programação Orientada a Objetos com Java. Prof. Júlio Machado

Programação Orientada a Objetos com Java. Prof. Júlio Machado Programação Orientada a Objetos com Java Prof. Júlio Machado julio.machado@pucrs.br HERANÇA Herança Herança é uma relação de generalização/especialização entre classes A ideia central de herança é que

Leia mais

Programação com genéricos

Programação com genéricos Programação com genéricos Laboratório de Programação Pedro Vasconcelos, DCC/FCUP Fevereiro 2015 Tipos genéricos tipos genéricos permitem definir classes ou interfaces que são parameterizadas por outras

Leia mais

Polimorfismo: aprendendo a prever o futuro. Polimorfismo: aprendendo a prever o futuro. Definições (2/5) Definições Tipos de Polimorfismo

Polimorfismo: aprendendo a prever o futuro. Polimorfismo: aprendendo a prever o futuro. Definições (2/5) Definições Tipos de Polimorfismo Polimorfismo: aprendendo a prever o futuro BSI Bacharelado em Sistemas de Informação LOO Linguagens Orientadas a Objetos Sumário Definições Tipos de Polimorfismo Dicas para o Polimorfismo Eficaz Armadilhas

Leia mais

if (umobjecto!= null && umobjecto instanceof CartaoFidelidade){ titular.equals(((cartaofidelidade) umobjecto).titular) &&

if (umobjecto!= null && umobjecto instanceof CartaoFidelidade){ titular.equals(((cartaofidelidade) umobjecto).titular) && P. Fazendeiro & P. Prata POO - TP03 / 25 _ [... //classe CartaoFidelidade: alguns métodos adicionais] public boolean equals(object umobjecto){ if (umobjecto!= null && umobjecto instanceof CartaoFidelidade){

Leia mais

Programação Java Aula 04

Programação Java Aula 04 Programação Java Aula 04 Tópicos da aula Declarar e instanciar arrays. Popular e percorrer arrays. 2 Vetor (array) (1) Declarando um vetor de inteiros: int[] idades = new int[10]; O int[] é um tipo. Uma

Leia mais

JAVA COLLECTIONS API: LISTAS

JAVA COLLECTIONS API: LISTAS COLÉGIO ESTADUAL ULYSSES GUIMARÃES CURSO TÉCNICO PROFISSIONALIZANTE EM INFORMÁTICA ERINALDO SANCHES NASCIMENTO JAVA COLLECTIONS API: LISTAS FOZ DO IGUAÇU 2013 LISTA DE QUADROS QUADRO 1 EXEMPLO DE LIST,

Leia mais

Programação Imperativa. Lição n.º 16 A pilha de execução

Programação Imperativa. Lição n.º 16 A pilha de execução Programação Imperativa Lição n.º 16 A pilha de execução A pilha de execução Registos de execução. Arrays locais. Caso da alocação dinâmica. Segmento de dados. 11/17/16 Programação Imperativa 2 A pilha

Leia mais

Linguagem de Programação II Implementação

Linguagem de Programação II Implementação Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Implementação em Java Variáveis Palavras reservadas Pacotes Identificador this Acessando membros de outros objetos API Java Nossa

Leia mais

Algoritmos e Estruturas de Dados. Lição n.º 1 Algoritmos e Estruturas de Dados

Algoritmos e Estruturas de Dados. Lição n.º 1 Algoritmos e Estruturas de Dados Algoritmos e Estruturas de Dados Lição n.º 1 Algoritmos e Estruturas de Dados Algoritmos e Estruturas de Dados Logística Tecnologia Aulas Avaliação Programa da cadeira O ambiente de programação 20140210

Leia mais

Grupo 2 - Implementação de uma classe simples

Grupo 2 - Implementação de uma classe simples Exame Modelo Estruturas de Dados 2018/2019 Junho de 2019 Duração: 2h30m + 30m Número mecanográco: Nome completo do estudante: Grupo 1 - Fundamentos de Java 1.1. Escreva pequenos excertos de código para

Leia mais

Programação Orientada por Objectos 2007/2008

Programação Orientada por Objectos 2007/2008 Programação Orientada por Objectos 2007/2008 Segundo Teste, 30/6/2008, Duração 1h30 (20 valores) 1 [2v] Considere que pretende desenvolver uma função num jogo que trata uma colisão entre dois objectos

Leia mais

Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos)

Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos) Mecanismos de controlo de acesso Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a cada classe e cada membro da classe (dados e métodos) Modificadores de acesso: public protected private

Leia mais

Coleções. Prof. Marcelo Roberto Zorzan

Coleções. Prof. Marcelo Roberto Zorzan Coleções Prof. Marcelo Roberto Zorzan Coleções Aula de Hoje Introdução Coleções podem representar estruturas de dados complexas de forma transparente para o programador. Exemplos: Músicas favoritas armazenadas

Leia mais

Recursividade UFOP 1/48

Recursividade UFOP 1/48 BCC 201 - Introdução à Programação I Recursividade Guillermo Cámara-Chávez UFOP 1/48 Introdução I Recursividade: é um método de programação no qual uma função pode chamar a si mesma Muitas estruturas têm

Leia mais

PROGRAMAÇÃO JAVA. Parte 3

PROGRAMAÇÃO JAVA. Parte 3 PROGRAMAÇÃO JAVA Parte 3 O PRIMEIRO PROGRAMA O Java executa uma instrução a seguir a outra, pela ordem em que estão escritas. Essa sequência poderá ser contrariada de forma especial: Alternativas: Ciclos

Leia mais

PCC104 - Projeto e Análise de Algoritmos

PCC104 - Projeto e Análise de Algoritmos PCC104 - Projeto e Análise de Algoritmos Marco Antonio M. Carvalho Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal de Ouro Preto 31 de outubro de 2017 Marco Antonio

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 3 Classes e instanciação de objectos (em Java) Suponhamos que queremos criar uma classe que especifique a estrutura e o comportamento de objectos do tipo Contador. As instâncias da classe Contador devem

Leia mais

Análise de Programação

Análise de Programação Análise de Programação Fundamentos da Linguagem de Programação Java Prof. Gilberto B. Oliveira Variáveis Atributos: Variáveis Declaradas fora de um método, sem o modificador static Variáveis membro ou

Leia mais

Tipos de Dados Abstratos

Tipos de Dados Abstratos Tipos de Dados Abstratos Algoritmos e Estruturas de Dados Verão 2012 1 Tipos Abstratos Um tipo abstrato é: um tipo genérico de dados, dos quais não se conhece os valores uma interface que define os acessos

Leia mais

Vetores Unimensionais

Vetores Unimensionais Vetores Unimensionais Objetivos Entender a importância e a necessidade do uso de Vetores Definição de Manipulação de Vetores Inserir elementos em um vetor (usando laços ou não) Imprimir elementos de um

Leia mais

Algoritmos e Estruturas de Dados

Algoritmos e Estruturas de Dados Pilhas e Filas Algoritmos e Estruturas de Dados 009/00 Obs: slides marcados com (*) não foram apresentados na aula teórica, mas são parte da bibliografia a estudar! Pilhas Pilha estrutura de dados linear

Leia mais

Algoritmos e Programação 2. Objetos e Classes em Java. Classes. Revisão. Definições de classes incluem (geralmente):

Algoritmos e Programação 2. Objetos e Classes em Java. Classes. Revisão. Definições de classes incluem (geralmente): Algoritmos e Programação 2 Baseado no material do Prof. Júlio Machado Objetos e Classes em Java Revisão Classes: encapsulam dados (atributos) e operações sobre os dados (métodos) Objetos: instâncias de

Leia mais

Listas Ligadas, Pilhas e Filas

Listas Ligadas, Pilhas e Filas Listas Ligadas, Pilhas e Filas Pedro Ribeiro DCC/FCUP 2017/2018 (baseado e/ou inspirado parcialmente nos slides de Luís Lopes e de Fernando Silva) Pedro Ribeiro (DCC/FCUP) Listas Ligadas, Pilhas e Filas

Leia mais

Input / Output na linguagem java. Para isso usamos um dos construtores da classe java.io.file:

Input / Output na linguagem java. Para isso usamos um dos construtores da classe java.io.file: Input e Output 1 A classe File Input / Output na linguagem java Antes de podermos ler/escrever de/para um ficheiro temos que criar um objecto do tipo File e associar esse objecto ao ficheiro a que queremos

Leia mais

Tipos Abstractos de Dados (TADs) e Java

Tipos Abstractos de Dados (TADs) e Java Tipos Abstractos de Dados (TADs) e Java Neste capítulo apresentamos a metodologia de desenvolvimento dos TADs em Java, introduzimos o conceito de estrutura linear e sua implementação utilizando a estrutura

Leia mais

Programação orientada a objetos em Java

Programação orientada a objetos em Java Programação orientada a objetos em Java Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons

Leia mais

Algoritmos e Estruturas de Dados. Lição n.º 22 Árvores binárias de busca

Algoritmos e Estruturas de Dados. Lição n.º 22 Árvores binárias de busca Algoritmos e Estruturas de Dados Lição n.º 22 Árvores binárias de busca Árvores binárias de busca Árvores binárias de busca. Árvores equilibradas Outras classes de árvores. 20140521 Algoritmos e Estruturas

Leia mais

Algoritmos e Estruturas de Dados 2005/2006

Algoritmos e Estruturas de Dados 2005/2006 Pilhas e Filas Algoritmos e Estruturas de Dados 005/006 Pilhas Pilha estrutura de dados linear em que a inserção e a remoção de elementos de uma sequência se faz pela mesma extremidade, designada por topo

Leia mais

Tabelas de Dispersão. Tabela de Dispersão

Tabelas de Dispersão. Tabela de Dispersão Tabelas de Dispersão Sumário Definição. Características. Resolução de colisões: dispersão aberta e dispersão fechada. Teste quadrático. Desempenho de tabelas de dispersão. Interface de tabela de dispersão.

Leia mais

Array em Java. Figura 1 - Exemplo de um array de inteiros

Array em Java. Figura 1 - Exemplo de um array de inteiros Array em Java 1. Objetivos Nesta lição, abordaremos Array em Java. Primeiro, definiremos o que é array e, então, discutiremos como declará-los e usá-los. Ao final desta lição, o estudante será capaz de:

Leia mais

Programação Imperativa. Lição n.º 17 Cadeias de carateres

Programação Imperativa. Lição n.º 17 Cadeias de carateres Programação Imperativa Lição n.º 17 Cadeias de carateres Cadeias de carateres Conceitos básicos. Técnicas elementares. Arrays de cadeias de carateres. 11/20/16 Programação Imperativa 2 Cadeias de carateres

Leia mais

Tipos, Literais, Operadores

Tipos, Literais, Operadores Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não

Leia mais

Tipos, Literais, Operadores

Tipos, Literais, Operadores Tipos, Literais, Operadores Identificadores São palavras utilizadas para nomear variáveis, métodos e classes Na linguagem Java, o identificador sempre começa por letra, sublinhado(_) ou cifrão ($) Não

Leia mais

Linguagem de Programação Orientada a Objeto Construtores e Sobrecarga

Linguagem de Programação Orientada a Objeto Construtores e Sobrecarga Linguagem de Programação Orientada a Objeto Construtores e Sobrecarga Professora Sheila Cáceres Sobrecarga (overloading) Na mesma classe podemos definir vários métodos com o mesmo nome Sobrecarga O tipo

Leia mais

Genéricos by Pearson Education do Brasil

Genéricos by Pearson Education do Brasil 1 18 Genéricos 2 OBJETIVOS Neste capítulo, você aprenderá: Como criar métodos genéricos que realizam tarefas idênticas em argumentos de diferentes tipos. Como criar uma classe Stack genérica que pode ser

Leia mais

Java First-Tier: Aplicações. Herança: Simples Múltipla. Orientação a Objetos em Java (III) Problemas de Herança Múltipla.

Java First-Tier: Aplicações. Herança: Simples Múltipla. Orientação a Objetos em Java (III) Problemas de Herança Múltipla. Java First-Tier: plicações Orientação a Objetos em Java (III) Grupo de Linguagens de Programação Departamento de Informática PUC-Rio Herança: Simples Múltipla O tipo de herança que usamos até agora é chamado

Leia mais

9 Classes Abstractas e Interfaces

9 Classes Abstractas e Interfaces 9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract

Leia mais

ALGORITMOS. Professor: Diego Oliveira. Aula 06 - Tipos Primitivos de Dados

ALGORITMOS. Professor: Diego Oliveira. Aula 06 - Tipos Primitivos de Dados ALGORITMOS Professor: Diego Oliveira Aula 06 - Tipos Primitivos de Dados Netbeans Para testar nossos exemplos criaremos uma classe no Netbeans Nesta disciplina não será visto nada de orientação a objetos,

Leia mais

Computação II - Java - Prova 1 Prof. Adriano Joaquim de Oliveira Cruz /05/13. Questão: Total Pontos: Gráu:

Computação II - Java - Prova 1 Prof. Adriano Joaquim de Oliveira Cruz /05/13. Questão: Total Pontos: Gráu: Computação II - Java - Prova 1 Prof. Adriano Joaquim de Oliveira Cruz - 2015/05/13 Questão: 1 2 3 4 5 6 Total Pontos: 20 15 15 10 10 30 100 Gráu: 1. Defina os termos listados a seguir: (a) (10 Pontos)

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Cartão de fidelização de clientes das distribuidoras de combustível.

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Cartão de fidelização de clientes das distribuidoras de combustível. Caso de estudo O cartão fidelidade Cartão de fidelização de clientes das distribuidoras de combustível. Definição em JAVA da classe CartaoFidelidade, que deverá apresentar uma funcionalidade semelhante

Leia mais

Coleções em Java. Prof. Gustavo Willam Pereira ENG10082 Programação II. Créditos: Prof. Clayton Vieira Fraga Filho

Coleções em Java. Prof. Gustavo Willam Pereira ENG10082 Programação II. Créditos: Prof. Clayton Vieira Fraga Filho Coleções em Java Prof. Gustavo Willam Pereira ENG10082 Programação II Créditos: Prof. Clayton Vieira Fraga Filho Introdução O que é uma coleção? Um objeto que agrupa múltiplos elementos em uma única unidade

Leia mais

Pedro Vasconcelos DCC/FCUP. Programação Funcional 17 a Aula Tipos abstratos

Pedro Vasconcelos DCC/FCUP. Programação Funcional 17 a Aula Tipos abstratos Programação Funcional 17 a Aula Tipos abstratos Pedro Vasconcelos DCC/FCUP 2014 Tipos concretos Até agora definimos um novo tipo de dados começando por listar os seus construtores. data Bool = False True

Leia mais

JAVA. Professor: Bruno Toledo

JAVA. Professor: Bruno Toledo JAVA Professor: Bruno Toledo Funcionamento de uma LP Em uma Linguagem de Programação (LP) como C e Pascal, temos o seguinte quadro quando vamos compilar um programa. Código fonte em c Teste.c Gera código

Leia mais

Programação Orientada a Objetos. Collections - Java

Programação Orientada a Objetos. Collections - Java 1 Programação Orientada a Objetos Collections - Java Coleções Conceito Geral Uma coleção é uma estrutura de dados que permite armazenar vários objetos. Em Java, a coleção também é um objeto. As operações

Leia mais

Filas de Prioridade e Heaps

Filas de Prioridade e Heaps Filas de Prioridade e Heaps Pedro Ribeiro DCC/FCUP 2017/2018 Pedro Ribeiro (DCC/FCUP) Filas de Prioridade e Heaps 2017/2018 1 / 31 Filas de prioridade - Motivação As urgências de um hospital funcionam

Leia mais

Programação Funcional 13 a Aula Tipos abstratos

Programação Funcional 13 a Aula Tipos abstratos Programação Funcional 13 a Aula Tipos abstratos Sandra Alves DCC/FCUP 2018/19 Tipos concretos Até agora definimos um novo tipo de dados começando por listar os seus construtores. data Bool = False True

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 5: Associações LEEC@IST Java 1/32 Associação revisão Uma associação representa uma referência entre objectos. Numa associação são definidos: Identificador termo descritivo

Leia mais

capta a noção elementar de ordemde chegada no processamento de tarefas, além da ordem de chegada é típico atender à prioridade

capta a noção elementar de ordemde chegada no processamento de tarefas, além da ordem de chegada é típico atender à prioridade Fila de Prioridade (1) Fila capta a noção elementar de ordemde chegada no processamento de tarefas, além da ordem de chegada é típico atender à prioridade Fila de prioridade objectos na fila têmum número

Leia mais

Vetores Unimensionais

Vetores Unimensionais Vetores Unimensionais Objetivos Entender a importância e a necessidade do uso de Vetores Definição de Manipulação de Vetores Inserir elementos em um vetor (usando laços ou não) Acessar elementos de um

Leia mais

Orientação a Objetos - Herança

Orientação a Objetos - Herança Orientação a Objetos - Herança 1 Repetindo Código p Todo banco tem funcionário. A classe funcionario ficaria da seguinte forma; class Funcionario { String nome; String cpf; double salario; // métodos devem

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2016.2 http://www.dcc.ufrj.br/~fabiom/java Subtipagem e Coringas Lista é subtipo de Lista para qualquer T Não podemos chamar métodos em Lista

Leia mais