DICIONÁRIOS. template<class K,class T> class Par { public: K chave; T valor; Par():chave(),valor()

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

Download "DICIONÁRIOS. template<class K,class T> class Par { public: K chave; T valor; Par():chave(),valor()"

Transcrição

1 DICIONÁRIOS Esta estrutura inclui-se nos chamados contentores associativos, que não são mais do que uma colecção de estruturas de tipo Par, com dois membros de dados (chave de pesquisa e valor associado), que dispõe de métodos que permitem pesquisar a chave do par e devolver uma referência para o membro valor desse par, para permitir acesso directo a esse membro tendo diferentes objectivos conforme a aplicação. Um contentor associativo visto como um tipo abstracto de dados, é idêntico a um vector ou a uma lista. É outra estrutura de armazenamento de informação com operações para aceder e modificar elementos. A principal diferença é que as operações num contentor associativo usam uma chave em vez de um índice ou de um algoritmo de pesquisa para aceder ao elemento. Um programador pode usar a chave sem se preocupar como os elementos estão fisicamente guardados nem como as operações fazem a associação entre chave e elemento. No caso em que a chave é uma palavra e o membro valor é um texto que descreve o significado da chave, então o contentor designa-se por dicionário. Neste caso podemos usufruir da vantagem de fazer uma sobrecarga do operador de indexação [ ], em que o operador toma a chave como argumento e devolve uma referência para o membro valor do par. Tal como um índice de um array, o operador pode ser usado em ambos os lados da instrução de atribuição. Assim, sendo dic o meu objecto dicionário, posso inserir o par na estrutura contentora fazendo: dic["ceu"]="sky"; ou acedendo ao valor (significado) pela chave: cout<<dic["ceu"]<<endl; Como exemplo de aplicação de dicionários podemos citar as tabelas de símbolos nos compiladores (dicionários com chaves duplicadas). Neste caso, a chave é o identificador e o valor será uma estrutura contendo o tipo(int, float,...), endereço de memória, valor,... Vejamos agora como podemos definir em C++, uma estrutura dicionário, simplificada, que permita realizar o que acabamos de indicar. Seguidamente, serão estudados contentores associativos baseados em tabelas de hash. class Par public: K chave; T valor; Par():chave(),valor() Instituto Superior de Engenharia do Porto 1

2 ; ; class Dicionario private: Par<K,T> *array; int max; int ocup; public: Dicionario(int dim); ~Dicionario(); T& operator[](const K & ch); void escreve_tudo(); ; Dicionario<K,T>::Dicionario(int dim) max=(dim<16?16:dim); ocup=0; array=new Par<K,T>[max]; Dicionario<K,T>::~Dicionario() delete[] array; T & Dicionario<K,T>::operator [](const K & ch) int enc=0; Par<K,T> *pp; for(pp=array;pp!=(array+ocup);++pp) if(ch==pp->chave) enc=1; return pp->valor; if(ocup==max) overflow-duplicar espaço Par<K,T> *nvec=new Par<K,T>[max*2]; Instituto Superior de Engenharia do Porto 2

3 for(int i=0;i<max;++i) nvec[i]=array[i]; delete [] array; array=nvec; max=max*2; pp=& array[ocup++]; pp->chave=ch; return pp->valor; void Dicionario<K,T>::escreve_tudo() for(int i=0;i<ocup;++i) cout<<array[i].chave<<" : "<<array[i].valor<<endl; TABELAS DE HASH Consideremos o caso ideal: um elemento elem, tem a chave k e existe uma função f (função de hash), esta função vai mapear o elemento elem (chave k ) na posição da tabela, f(k), onde se deve encontrar o elemento elem com chave k. Exemplo: suponhamos uma escola em que os números dos alunos variam entre e A função f deverá ser tal que fará um mapeamento entre o número do aluno e a posição na tabela e poderá ser esta: f(k)=k Assim o aluno n (k=991346), ocupará a posição (posição=f(k) ),346 (=k ) da tabela. De uma forma geral a tabela é inicializada a 0 e a inicialização será de ordem n, (n é o número de elementos possíveis da tabela) e a pesquisa de ordem 1, assim como o juntar elemento e o eliminar. Acontece a maioria das vezes que o número de elementos possíveis para incluir na tabela é muito superior ao tamanho da tabela e neste caso é possível que a mesma função aplicada a chaves diferentes dê como resultado o mesmo valor de índice da tabela. Cada posição na tabela de hash designa-se por bucket. Cada bucket pode conter um ou mais elementos. Instituto Superior de Engenharia do Porto 3

4 No caso de a aplicação da função de hash a duas chaves distintas, do mesmo universo resultar na mesma posição e se o bucket estiver completo diremos que houve colisão. Para simplificar consideramos que cada bucket contem um elemento. As funções de hash terão que ser definidas criteriosamente. Uma função standard, para o caso de chaves inteiras será fazer o resto da divisão inteira da chave pelo tamanho da tabela. Claro que isto será uma opção razoável se a chave não tiver propriedades indesejáveis, como o exemplo que apontamos a seguir: Exemplo: suponhamos uma tabela com 10 posições, e a função de hash a standard. Se todas as chaves terminassem em 0, então seria muito má escolha esta função uma vez que todos os valores colidiriam na posição 0. Também o tamanho da tabela não estaria bem definido. É aceitável que o tamanho da tabela seja um número primo. Quando a entrada são valores aleatórios inteiros, então a função standard é muito simples e distribui as chaves igualmente. Se a chave for uma string ( podemos usar a seguinte função de hash int hash (const String &chave, const int tamanho) char *ptr=chave; int valor=0; while( *ptr) valor = valor + (*ptr ++); return (valor % tamanho); Esta função é fácil de implementar, mas se a tabela é grande não distribui bem as chaves. Suponhamos que o tamanho da tabela é (número primo) e que as chaves contêm 8 ou menos caracteres. Como um caracter é um inteiro entre 0 e 127 a função só assume valores entre 0 e 1016 (127*8). Isto é evidentemente, uma distribuição pouco equitativa. Outra possível função seria: int hash (const String &chave, const int tamanho) return (chave[o] + 26*chave[1] + 676*chave[2]) % tamanho; Assume-se que a chave tem pelo menos comprimento será o nº de letras Instituto Superior de Engenharia do Porto 4

5 do alfabeto e 676 será Esta função só examina os primeiros 3 caracteres e se o tamanho da tabela for como o indicado anteriormente,10007, então pode esperar-se uma distribuição razoavelmente equitativa. Mas, infelizmente as linguagens não são aleatórias, embora haja 26 3 = combinações possíveis de 3 caracteres só se verificam 2851 combinações. Mesmo que essas não colidam só 28% da tabela será usada. Portanto esta função também não será apropriada se a tabela for muito grande. Podemos ainda usar outra função: int hash (const String &chave, const int tamanho) char *ptr=chave; int valor=0; while( *ptr) valor = valor <<5 + (*ptr ++); valor<<5 equivale a multiplicar por 32 return (valor % tamanho); Usou-se o valor 32, para se poder fazer um shift de bits. Esta função é rápida, excepto se as chaves forem muito grandes. É prática corrente não usar todos os caracteres da chave, mas usar só alguns, por exemplo os das posições ímpares MÉTODOS PARA RESOLUÇÃO DE COLISÕES 1. Encadeamento Externo Quando ocorre uma colisão, os elementos que colidiram são colocados numa lista ligada. No exemplo abaixo esquematizado, a tabela de hash está organizada de forma a que cada bucket contem um apontador para um nó (cabeça da lista de colisões) Instituto Superior de Engenharia do Porto 5

6 Tabela[ ] A tabela representada tem 11 posições, e a função de hash escolhida é a função da divisão, que é a mais vulgar. Estamos a supor que a chave é um valor inteiro. A função toma o seguinte aspecto: f(k) = k % D, em que o índice da tabela é dado pelo resto da divisão inteira da chave pelo tamanho, D, da tabela. As posições na tabela são portanto numeradas de 0 a D- 1. Há muitas vezes necessidade de pré processar a chave antes de lhe aplicar a função de hash. Assim para aplicação da função divisão há que converter a chave num número inteiro. Os algoritmos de pesquisa, juntar elemento e eliminar elemento traduzem-se nos correspondentes algoritmos em lista ordenada. A cabeça é dada pelo valor do apontador na posição da tabela dada por h(k). Poder-se-ia melhorar a performance das lista se considerássemos por exemplo, além do apontador cabeça um apontador para a cauda da lista, verificando-se no inicio das operações se o elemento que colidiu é o que apresenta a maior chave. Outra forma de melhorar a performance seria considerar, em vez de lista ordenada, uma estrutura de árvore binária de pesquisa, mas isto deixamos para exercício. 2. Endereçamento Linear Aberto Este método também se usa quando o tamanho da tabela é menor do que a gama de valores possíveis resultantes da aplicação da função de hash e que por consequência surgem colisões. Assim sempre que se verifica uma colisão, não é possível colocar o elemento na posição fornecida pela função de hash uma vez que o bucket correspondente está cheio, recorre-se a este método, obrigando a colocar o elemento no próximo bucket vazio. Desta forma a pesquisa para o próximo bucket disponível é feita considerando a tabela como se fosse circular. A pesquisa inicia-se no bucket dado pela função de hash e um dos 3 casos pode acontecer: Instituto Superior de Engenharia do Porto 6

7 Encontramos um bucket com a chave que procurávamos (encontramos o elemento a pesquisar, pesquisa com sucesso) Encontramos um bucket vazio (pesquisa sem sucesso, o elemento não existe) Regressamos ao bucket inicial (pesquisa sem sucesso e a tabela está cheia). Vamos supor que tínhamos os mesmos valores usados na exemplificação do encadeamento externo e cuja entrada era dada pela ordem seguinte: 11, 58, 38, 60, 93, 22, 44, 16, A posição para a chave 11 tem índice 0. Quando colocar o valor 22, que também deveria ocupar a posição 0 esta já estará ocupada. Teremos então que percorrer a lista fazendo: posição =( posição + 1 )% D até encontrar uma posição vazia, que felizmente neste caso será a próxima. O valor de D neste exemplo tem o valor 11. Seguidamente descreveremos o correspondente algoritmo para pesquisar e inserir o valor de chave x. Consideramos que a nossa tabela terá um campo conteúdo e um campo designado por ocupação que será verdadeiro ou falso conforme a tabela tem esse índice ocupado ou não. Pesquisar_Inserir(x) Inicio Pesquisar j = h(x) inicial = j enc = 0 Repete Se (tabel[j].ocupaçao=verdade e tabela[j].conteudo=x) Então enc=1 Senão j=(j+1)% D Até (enc=1 ou j=inicial ou tabela[j].ocupaçao=falso) Inserir Se (enc=0) Instituto Superior de Engenharia do Porto 7

8 Fim Então Se (j=inicial) Então Overflow Senão tabela[j].conteudo=x tabela[j]. Ocupaçao=verdade Senão O elemento já existe Seguidamente analisaremos um algoritmo para eliminarmos um elemento x da tabela, embora esta estrutura deva ser utilizada em aplicações em que predominam inserções e pesquisas. Para eliminarmos um elemento x da tabela, começaremos por fazer uma pesquisa e caso esse valor seja encontrado, suponhamos que existia no índice j, então colocaríamos o campo ocupação da tabela nessa posição a falso e teríamos que verificar se o elemento seguinte (posição i) estava fora da posição dada pela função de hash (posição r), isto é se r não estivesse entre j e i, teria que ocupar o lugar de j e agora j tomaria o valor de i e tudo se repetiria, até encontrar-se uma posição vazia. Caso contrário, o elemento da posição i estava na posição correcta, então avançar-se-ia para o próximo i até encontrar uma posição livre ou um valor fora da posição devida. Um algoritmo possível será o seguinte: Algoritmo Inicio Pesquisa, considera-se que encontrou na posição j Se (enc==1) Então Repete tabela[j]. ocupaçao=falso i=(j+1)%d Repete Se (tabela[i]. ocupa çao==verdade) Então r=h (tabela[i]. conteudo) Se (((r>j) e (r< =i)) ou ((r>j) e (i<j)) ou ((r<=j) e (i<j))) Então r_entreji=1 Senão r_entreji=0 Até (tabela [i].ocupaçao ==falso ou r_entreji=0) Se (r_entreji=0 e tabela[i].ocupaçao=verdade) Então tabela[j].conteudo=tabela[i]. conteudo tabela[j]. ocupaçao=verdade Instituto Superior de Engenharia do Porto 8

9 Fim j=i Até (tabela[i]. ocupaçao ==falso) Senão Elemento não existe Para verificar se r se encontra entre a posição j e a posição i três situações serão possíveis: j r i i j r r i j Comparação de métodos de pesquisa Já vimos quatro métodos de pesquisa, pesquisa sequencial, pesquisa binária, pesquisa em árvore binária e hashing. A ordem de complexidade temporal destes métodos é normalmente determinada através do número médio de comparações necessárias para localizar um elemento na estrutura. Vimos que na pesquisa sequencial era de O(n) e na pesquisa binária e árvore binária de pesquisa era de O( log 2 n). A análise no caso de hashing é um pouco mais complicada, uma vez que depende da qualidade da função de hash e do tamanho da tabela. Uma boa função de hash, fornece uma distribuição uniforme dos valores de hash e quando combinado com uma tabela relativamente grande, o número de colisões é reduzido. Numa tabela de hash podemos definir o factor de ocupação (? ) como sendo o número de elementos inseridos na tabela (m) sobre o tamanho da tabela (n),? = m n. Instituto Superior de Engenharia do Porto 9

10 Quando a tabela está vazia? = 0. À medida que se inserem elementos na tabela,? vai aumentando, e maior é a probabilidade de colisão. No caso de endereçamento aberto, o seu valor máximo será 1 quando estiver completamente preenchida (m=n). No caso de encadeamento externo, como as listas de colisão podem crescer tanto quanto o que precisamos,? pode ser maior do que 1. A análise formal da complexidade do hashing está fora do âmbito desta disciplina mas podemos apresentar os resultados obtidos por Knuth neste campo. Assim, chegou às fórmulas abaixo indicadas, para determinação do número médio de acessos necessários para uma pesquisa com sucesso e sem sucesso no caso de encadeamento externo e no caso de endereçamento aberto. Resolução de Colisões Pesquisa com Sucesso Pesquisa sem Sucesso Endereçamento [1 2(1-?)] +?2 [1 2(1-?) 2 ] +? 2 Encadeamento 1 +?2 e -? +? Esta tabela mostra que o endereçamento aberto é bom desde que o factor de ocupação se mantenha baixo (< 75%). De uma forma geral o encadeamento é um método melhor. Se?=1 o encadeamento exige 1.5 acessos para uma pesquisa com sucesso, mas o método por endereçamento requer, com a tabela cheia M72 acessos. Sem dúvida, o hashing é um processo de pesquisa extremamente rápido, contudo cada um dos métodos tem a sua utilização. A pesquisa sequencial é eficiente quando o número de elementos é pequeno e os dados não tem que estar ordenados. A pesquisa binária é mais rápida mas exige que os dados estejam ordenados em array. Este tipo de pesquisa não é viável em situações em que os dados são adquiridos em tempo de execução( como tabelas de símbolos), uma vez que um array ordenado é um veículo ineficiente para inserções e eliminações. Por estas razões hashing e árvore binária de pesquisa competem,a árvore binária de pesquisa não é tão rápida mas tem o aspecto interessante de fornecer dados ordenados através de uma visita simétrica. Hasihng é o melhor método quando se pretende acesso rápido e não é requerido informação ordenada. Instituto Superior de Engenharia do Porto 10

11 Aplicações Aplicações desta estrutura são muitas, nomeadamente em compiladores, onde são usadas para manter o controlo das variáveis declaradas no código fonte, são conhecidas por tabelas de símbolos. São realmente as aplicações ideais para esta estrutura, uma vez que as operações realizadas são as inserções e pesquisas. Os identificadores de variáveis são geralmente pequenos e portanto são de computação rápida. Outra aplicação vulgar é nos programas de jogos. Á medida que o programa procura através de diferentes linhas de jogada, conserva o registo de cada posição ocorrida, calculando uma função de hash baseada nessa posição e "guardando" o movimento para essa posição. Se a mesma posição volta a ocorrer, geralmente por uma simples transposição de movimentos, o programa pode evitar cálculos dispendiosos. Esta acção genérica, feita em programas de jogos, é conhecida como "tabela de transposição". Ainda outra aplicação é na detecção de erros de ortografia. É feito hash a um diccionário completo e as palavras pode ser verificadas em tempo constante. As tabelas de hash são também indicadas para isto, uma vez que não é preciso corrigir as palavras, mas simplesmente indicar que não estão correctamente escritas. Instituto Superior de Engenharia do Porto 11

O acesso aos elementos é aleatório, isto é, qualquer elemento numa colecção pode ser acedido realizando uma pesquisa pela chave.

O acesso aos elementos é aleatório, isto é, qualquer elemento numa colecção pode ser acedido realizando uma pesquisa pela chave. DICIONÁRIOS São assim designadas as colecções de elementos em que cada elemento tem um campo chamado chave e não existem valores de chaves repetidos. As operações características que permitem a sua manipulação

Leia mais

Possui como idéia central a divisão de um universo de dados a ser organizado em subconjuntos mais gerenciáveis.

Possui como idéia central a divisão de um universo de dados a ser organizado em subconjuntos mais gerenciáveis. 3. Tabelas de Hash As tabelas de hash são um tipo de estruturação para o armazenamento de informação, de uma forma extremamente simples, fácil de se implementar e intuitiva de se organizar grandes quantidades

Leia mais

Algoritmos de pesquisa. Tabelas de dispersão/hash

Algoritmos de pesquisa. Tabelas de dispersão/hash Algoritmos de pesquisa Tabelas de dispersão/hash Introdução Motivação: Considerar o problema de pesquisar um determinado valor num vetor (array). Se o vetor não está ordenado, a pesquisa requer O(n) de

Leia mais

Busca. Pesquisa sequencial

Busca. Pesquisa sequencial Busca Banco de dados existem para que, de tempos em tempos, um usuário possa localizar o dado de um registro, simplesmente digitando sua chave. Uma tabela ou um arquivo é um grupo de elementos, cada um

Leia mais

Hashing. Rafael Nunes LABSCI-UFMG

Hashing. Rafael Nunes LABSCI-UFMG Hashing Rafael Nunes LABSCI-UFMG Sumário Mapeamento Hashing Porque utilizar? Colisões Encadeamento Separado Endereçamento Aberto Linear Probing Double Hashing Remoção Expansão Quando não usar! Mapeamento

Leia mais

Tabela de símbolos: tabelas de espalhamento

Tabela de símbolos: tabelas de espalhamento Tabela de símbolos: tabelas de espalhamento Marcelo K. Albertini 14 de Janeiro de 2014 2/28 Resumo de complexidades Análises para operação efetuada após N inserções pior caso caso médio keys chave get

Leia mais

Tabelas Hash. Jeane Melo

Tabelas Hash. Jeane Melo Tabelas Hash Jeane Melo Roteiro Introdução Motivação Definição Tabelas Hash Exemplos Funções hash Colisões Introdução Estudamos a utilização de estruturas como listas e árvores para armazenar informações

Leia mais

HASHING. Katia Guimarães. katia@cin.ufpe.br 1

HASHING. Katia Guimarães. katia@cin.ufpe.br 1 HASHING Katia Guimarães katia@cin.ufpe.br 1 HASHING Suponha que você pudesse criar um array onde qualquer item pudesse ser localizado através de acesso direto. Isso seria ideal em aplicações do tipo Dicionário,

Leia mais

Hashing Letícia Rodrigues Bueno

Hashing Letícia Rodrigues Bueno Hashing Letícia Rodrigues Bueno UFABC hash: Hashing (Tabelas de Dispersão): Introdução hash: Hashing (Tabelas de Dispersão): Introdução Hashing (Tabelas de Dispersão): Introdução hash: 1. fazer picadinho

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES

BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES ALGORITMOS DE BUSCA EM LISTAS COM ALOCAÇÃO SEQÜENCIAL Busca em Listas Lineares A operação de busca é

Leia mais

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008 Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,

Leia mais

Pesquisa: localização de um Registo num Ficheiro (para aceder ao registo: ler/alterar informação) R. P. António Viera, 23. R. Carlos Seixas, 9, 6º

Pesquisa: localização de um Registo num Ficheiro (para aceder ao registo: ler/alterar informação) R. P. António Viera, 23. R. Carlos Seixas, 9, 6º Pesquisa Pesquisa: localização de um Registo num Ficheiro (para aceder ao registo: ler/alterar informação) Ficheiro (ou tabela) Campos Nome Endereço Telefone Antunes, João A. R. P. António Viera, 23 720456

Leia mais

Árvores Binárias de Busca

Árvores Binárias de Busca Árvores Binárias de Busca Definição Uma Árvore Binária de Busca possui as mesmas propriedades de uma AB, acrescida da seguinte propriedade: Para todo nó da árvore, se seu valor é X, então: Os nós pertencentes

Leia mais

Árvores Binárias de Busca

Árvores Binárias de Busca Árvores Binárias de Busca Uma Árvore Binária de Busca T (ABB) ou Árvore Binária de Pesquisa é tal que ou T = 0 e a árvore é dita vazia ou seu nó contém uma chave e: 1. Todas as chaves da sub-árvore esquerda

Leia mais

Árvores Binárias Balanceadas

Árvores Binárias Balanceadas Árvores Binárias Balanceadas Elisa Maria Pivetta Cantarelli Árvores Balanceadas Uma árvore é dita balanceada quando as suas subárvores à esquerda e à direita possuem a mesma altura. Todos os links vazios

Leia mais

Tabelas de Espalhamento

Tabelas de Espalhamento Tabelas de Espalhamento Motivação Algumas das estruturas de dados vistas anteriormente requerem que seus elementos (células dinâmicas) sejam inspecionados seqüencialmente até que a desejada seja encontrada.

Leia mais

CT-234. Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

CT-234. Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches CT-234 Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural Carlos Alberto Alonso Sanches CT-234 4) Árvores balanceadas AVL, Rubro-Negras, B-Trees Operações em árvores binárias de busca

Leia mais

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo. Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 8 ARRAYS Introdução Até agora, utilizamos variáveis individuais. Significa que uma variável objeto

Leia mais

Algoritmos de Busca em Tabelas

Algoritmos de Busca em Tabelas Dentre os vários algoritmos fundamentais, os algoritmos de busca em tabelas estão entre os mais usados. Considere por exemplo um sistema de banco de dados. As operações de busca e recuperação dos dados

Leia mais

Análise de complexidade

Análise de complexidade Introdução Algoritmo: sequência de instruções necessárias para a resolução de um problema bem formulado (passíveis de implementação em computador) Estratégia: especificar (definir propriedades) arquitectura

Leia mais

Estrutura de Dados. Unidade VI. -Tabela Hash -Grafos. Prof. Ms. Amilton Souza Martha

Estrutura de Dados. Unidade VI. -Tabela Hash -Grafos. Prof. Ms. Amilton Souza Martha Estrutura de Dados Unidade VI -Tabela Hash -Grafos Prof. Ms. Amilton Souza Martha Tabela Hash - Conceitos Um dos maiores problemas encontrados, quando se estuda a alocação de estruturas de dados, é o tempo

Leia mais

DEPARTAMENTO DE ENGENHARIA INFORMÁTICA FACULDADE DE CIÊNCIAS E TECNOLOGIA DA UNIVERSIDADE DE COIMBRA

DEPARTAMENTO DE ENGENHARIA INFORMÁTICA FACULDADE DE CIÊNCIAS E TECNOLOGIA DA UNIVERSIDADE DE COIMBRA DEPARTAMENTO DE ENGENHARIA INFORMÁTICA FACULDADE DE CIÊNCIAS E TECNOLOGIA DA UNIVERSIDADE DE COIMBRA Sistemas Operativos 2003/2004 Trabalho Prático #2 -- Programação em C com ponteiros -- Objectivos Familiarização

Leia mais

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES 3.1 - IDENTIFICADORES Os objetos que usamos no nosso algoritmo são uma representação simbólica de um valor de dado. Assim, quando executamos a seguinte instrução:

Leia mais

Métodos de Pesquisa em Memória Primária

Métodos de Pesquisa em Memória Primária Algoritmos e Estrutura de Dados II Métodos de Pesquisa em Memória Primária Prof Márcio Bueno ed2tarde@marciobueno.com / ed2noite@marciobueno.com Pesquisa Por pesquisa (procura ou busca) entende-se o ato

Leia mais

Batalha Naval Algoritmos de Busca. Correlações curriculares Matemática: Números: maior que, menor que, iguais a.

Batalha Naval Algoritmos de Busca. Correlações curriculares Matemática: Números: maior que, menor que, iguais a. Atividade 6 Batalha Naval Algoritmos de Busca Sumário Computadores são freqüentemente requisitados a encontrar informação em grandes coleções de dados. Estes precisam desenvolver métodos rápidos e eficientes

Leia mais

Hashing. Estruturas de Dados. Motivação

Hashing. Estruturas de Dados. Motivação Estruturas de Dados Hashing Prof. Ricardo J. G. B. Campello Parte deste material é baseado em adaptações e extensões de slides disponíveis em http://ww3.datastructures.net (Goodrich & Tamassia). Motivação

Leia mais

ÁRVORES BINÁRIAS DE PESQUISA

ÁRVORES BINÁRIAS DE PESQUISA ÁRVORES BINÁRIAS DE PESQUISA Árvores binárias de pesquisa são uma estrutura alternativa do tipo árvore binária, para guardar valores de tal forma que a recuperação dos mesmos pode ser efectuada de forma

Leia mais

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande

A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande região de armazenamento formada por bytes ou palavras, cada

Leia mais

Pesquisa Sequencial e Binária

Pesquisa Sequencial e Binária Pesquisa Sequencial e Binária Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 20 Algoritmos e Estruturas de Dados I Pesquisa em Memória Primária Introdução - Conceitos Básicos Pesquisa Sequencial

Leia mais

Banco de Dados I 2007. Módulo V: Indexação em Banco de Dados. (Aulas 1, 2 e 3) Clodis Boscarioli

Banco de Dados I 2007. Módulo V: Indexação em Banco de Dados. (Aulas 1, 2 e 3) Clodis Boscarioli Banco de Dados I 2007 Módulo V: Indexação em Banco de Dados (Aulas 1, 2 e 3) Clodis Boscarioli Agenda: Estruturas de Índices; Conceitos; Tipos de Índices: Primários; Secundários; Clustering; Multiníveis;

Leia mais

Pesquisa em Memória Primária. Algoritmos e Estruturas de Dados II

Pesquisa em Memória Primária. Algoritmos e Estruturas de Dados II Pesquisa em Memória Primária Algoritmos e Estruturas de Dados II Pesquisa em Memória Primária Pesquisa: Recuperação de informação em um grande volume de dados Informação é dividida em registros e cada

Leia mais

ESTRUTURAS DE DADOS AVANÇADAS (INF 1010) (a) Seja um TAD definido por uma lista circular implementada em um vetor.

ESTRUTURAS DE DADOS AVANÇADAS (INF 1010) (a) Seja um TAD definido por uma lista circular implementada em um vetor. PUC-Rio Departamento de Informática Período: 2015.1 Horário: 2as-feiras e 4as-feiras de 17-19 30 de março de 2015 ESTRUTURAS DE DADOS AVANÇADAS (INF 1010) 1 a Lista de Exercícios 1. Lista (a) Seja um TAD

Leia mais

Tabelas Hash. Também conhecido como tabelas de dispersão. Até agora... MoFvação. Exercício

Tabelas Hash. Também conhecido como tabelas de dispersão. Até agora... MoFvação. Exercício Tabelas Hash Rohit Gheyi Também conhecido como tabelas de dispersão 1 Até agora Listas Chaves ordenadas ou não Árvores Binárias de Pesquisa Ordenadas Heaps Binárias Chaves com certa ordem MoFvação Estruturas

Leia mais

Pesquisa em Memória Primária. Prof. Jonas Potros

Pesquisa em Memória Primária. Prof. Jonas Potros Pesquisa em Memória Primária Prof. Jonas Potros Pesquisa em Memoria Primária Estudo de como recuperar informação a partir de uma grande massa de informação previamente armazenada. A informação é dividida

Leia mais

Dadas a base e a altura de um triangulo, determinar sua área.

Dadas a base e a altura de um triangulo, determinar sua área. Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares

Leia mais

20 Caracteres - Tipo char

20 Caracteres - Tipo char 0 Caracteres - Tipo char Ronaldo F. Hashimoto e Carlos H. Morimoto Até agora vimos como o computador pode ser utilizado para processar informação que pode ser quantificada de forma numérica. No entanto,

Leia mais

2. Representação Numérica

2. Representação Numérica 2. Representação Numérica 2.1 Introdução A fim se realizarmos de maneira prática qualquer operação com números, nós precisamos representa-los em uma determinada base numérica. O que isso significa? Vamos

Leia mais

Árvore Binária de Busca

Árvore Binária de Busca Árvore Binária de Busca 319 Árvore Binária de Busca! construída de tal forma que, para cada nó:! nós com chaves menores estão na sub-árvore esquerda! nós com chaves maiores (ou iguais) estão na subárvore

Leia mais

ALGORITMOS E ESTRUTURAS DE DADOS CES-11 CES-11 CES-11

ALGORITMOS E ESTRUTURAS DE DADOS CES-11 CES-11 CES-11 ALGORITMOS E ESTRUTURAS DE DADOS Prof. Paulo André Castro pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac IECE - ITA Uma árvore binária é: uma árvore vazia; ou uma árvore onde qualquer

Leia mais

Programação 2. Trabalho Prático P4B. Efectue as tarefas de programação descritas abaixo, usando a linguagem C++ em ambiente Linux.

Programação 2. Trabalho Prático P4B. Efectue as tarefas de programação descritas abaixo, usando a linguagem C++ em ambiente Linux. Mestrado Integrado em Engenharia Electrotécnica e de Computadores 2006/2007 Programação 2 2º Semestre Trabalho Prático P4B Efectue as tarefas de programação descritas abaixo, usando a linguagem C++ em

Leia mais

Estruturas de Armazenamento e Indexação. Rafael Lage Moreira Barbosa 10.1.4217

Estruturas de Armazenamento e Indexação. Rafael Lage Moreira Barbosa 10.1.4217 Estruturas de Armazenamento e Indexação Rafael Lage Moreira Barbosa 10.1.4217 Estruturas de Armazenamento Banco de Dados são armazenados fisicamente como arquivos de registro, que em geral ficam em discos

Leia mais

BCC202 - Estrutura de Dados I

BCC202 - Estrutura de Dados I BCC202 - Estrutura de Dados I Aula 04: Análise de Algoritmos (Parte 1) Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Ciência da Computação, DECOM Website: www.decom.ufop.br/reifortes

Leia mais

13 Números Reais - Tipo float

13 Números Reais - Tipo float 13 Números Reais - Tipo float Ronaldo F. Hashimoto e Carlos H. Morimoto Até omomentonoslimitamosaouso do tipo inteiro para variáveis e expressões aritméticas. Vamos introduzir agora o tipo real. Ao final

Leia mais

Manual de Utilizador. Disciplina de Projecto de Sistemas Industriais. Escola Superior de Tecnologia. Instituto Politécnico de Castelo Branco

Manual de Utilizador. Disciplina de Projecto de Sistemas Industriais. Escola Superior de Tecnologia. Instituto Politécnico de Castelo Branco Escola Superior de Tecnologia Instituto Politécnico de Castelo Branco Departamento de Informática Curso de Engenharia Informática Disciplina de Projecto de Sistemas Industriais Ano Lectivo de 2005/2006

Leia mais

FUNDAÇÃO EDUCACIONAL DE ITUIUTABA

FUNDAÇÃO EDUCACIONAL DE ITUIUTABA FUNDAÇÃO EDUCACIONAL DE ITUIUTABA ASSOCIADA À UNIVERSIDADE DO ESTADO DE MINAS GERAIS CURSO DE SISTEMA DE INFORMAÇÃO PILHA E FILA Prof. Walteno Martins Parreira Júnior www.waltenomartins.com.br waltenomartins@yahoo.com

Leia mais

Coleções. Page 1. Coleções. Prof. Anderson Augustinho Uniandrade

Coleções. Page 1. Coleções. Prof. Anderson Augustinho Uniandrade Page 1 podem ser comparadas com arrays, visto que também apresentam a capacidade de armazenar referências para vários objetos. Entretanto, as coleções apresentam uma gama de funcionalidades bem maior do

Leia mais

Representação de Dados

Representação de Dados Representação de Dados Introdução Todos sabemos que existem diferentes tipos de números: fraccionários, inteiros positivos e negativos, etc. Torna-se necessária a representação destes dados em sistema

Leia mais

Estruturas de Dados. Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos

Estruturas de Dados. Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos Estruturas de Dados Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos Árvores Conceitos Árvores binárias Árvores binárias de pesquisa Árvores binárias balanceadas Árvores ESTRUTURAS

Leia mais

Engenharia de Software e Sistemas Distribuídos. Enunciado Geral do Projecto

Engenharia de Software e Sistemas Distribuídos. Enunciado Geral do Projecto LEIC-A, LEIC-T, LETI, MEIC-T, MEIC-A Engenharia de Software e Sistemas Distribuídos 2 o Semestre 2014/2015 Enunciado Geral do Projecto O que se segue é uma descrição geral do domínio do projecto a desenvolver

Leia mais

x0 = 1 x n = 3x n 1 x k x k 1 Quantas são as sequências com n letras, cada uma igual a a, b ou c, de modo que não há duas letras a seguidas?

x0 = 1 x n = 3x n 1 x k x k 1 Quantas são as sequências com n letras, cada uma igual a a, b ou c, de modo que não há duas letras a seguidas? Recorrências Muitas vezes não é possível resolver problemas de contagem diretamente combinando os princípios aditivo e multiplicativo. Para resolver esses problemas recorremos a outros recursos: as recursões

Leia mais

Notas da Aula 17 - Fundamentos de Sistemas Operacionais

Notas da Aula 17 - Fundamentos de Sistemas Operacionais Notas da Aula 17 - Fundamentos de Sistemas Operacionais 1. Gerenciamento de Memória: Introdução O gerenciamento de memória é provavelmente a tarefa mais complexa de um sistema operacional multiprogramado.

Leia mais

Algoritmos e Programação Estruturada

Algoritmos e Programação Estruturada Algoritmos e Programação Estruturada Virgínia M. Cardoso Linguagem C Criada por Dennis M. Ritchie e Ken Thompson no Laboratório Bell em 1972. A Linguagem C foi baseada na Linguagem B criada por Thompson.

Leia mais

Introdução. A verificação de tipos pode ser estática e dinâmica

Introdução. A verificação de tipos pode ser estática e dinâmica Análise Semântica Introdução Verifica se as construções sintaticamente corretas possuem significado lógico dentro da linguagem Verifica a consistência da declaração e uso dos identificadores Além disso,

Leia mais

Segue-se o estudo da forma como os computadores armazenam e acedem às informações contidas na sua memória.

Segue-se o estudo da forma como os computadores armazenam e acedem às informações contidas na sua memória. 4. Variáveis Para a execução de qualquer tipo de programa o computador necessita de ter guardados os diferentes tipos de dados, já estudados. Esses dados estão guardados na sua memória. Segue-se o estudo

Leia mais

Resolução de sistemas lineares

Resolução de sistemas lineares Resolução de sistemas lineares J M Martínez A Friedlander 1 Alguns exemplos Comecemos mostrando alguns exemplos de sistemas lineares: 3x + 2y = 5 x 2y = 1 (1) 045x 1 2x 2 + 6x 3 x 4 = 10 x 2 x 5 = 0 (2)

Leia mais

Arquitetura de Rede de Computadores

Arquitetura de Rede de Computadores TCP/IP Roteamento Arquitetura de Rede de Prof. Pedro Neto Aracaju Sergipe - 2011 Ementa da Disciplina 4. Roteamento i. Máscara de Rede ii. Sub-Redes iii. Números Binários e Máscara de Sub-Rede iv. O Roteador

Leia mais

CGA Directa. Manual do Utilizador. Acesso, Adesão e Lista de Subscritores

CGA Directa. Manual do Utilizador. Acesso, Adesão e Lista de Subscritores CGA Directa Manual do Utilizador Acesso, Adesão e Lista de Subscritores Versão 1.00 de 10 de Março de 2008 Índice Pág. Introdução 3 Capítulo 1 Capítulo 2 Capítulo 3 Acesso Acesso 4 Adesão Adesão 5 2.1

Leia mais

Polimorfismo. Prof. Leonardo Barreto Campos 1

Polimorfismo. Prof. Leonardo Barreto Campos 1 Polimorfismo Prof. Leonardo Barreto Campos 1 Sumário Introdução; Polimorfismo; Polimorfismo Java; Métodos Abstratos Java Classes Abstratas Java Exercício - Java Polimorfismo C++ Classe Abstrata C++; Funções

Leia mais

Árvores B. Hashing. Estrutura de Dados II Jairo Francisco de Souza

Árvores B. Hashing. Estrutura de Dados II Jairo Francisco de Souza Árvores B Hashing Estrutura de Dados II Jairo Francisco de Souza Hashing para arquivos extensíveis Todos os métodos anteriores previam tamanho fixo para alocação das chaves. Existem várias técnicas propostas

Leia mais

Prof. Yandre Maldonado - 1 PONTEIROS. Prof. Yandre Maldonado e Gomes da Costa

Prof. Yandre Maldonado - 1 PONTEIROS. Prof. Yandre Maldonado e Gomes da Costa Prof. Yandre Maldonado - 1 PONTEIROS Prof. Yandre Maldonado e Gomes da Costa PONTEIROS Prof. Yandre Maldonado - 2 Ponteiro é uma variável que possui o endereço de outra variável; É um poderoso recurso

Leia mais

INF1007 - PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 15

INF1007 - PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 15 INF1007 - PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 15 1. Um número racional é expresso por dois inteiros: um numerador e um denominador (este último diferente de zero!). Implemente um TAD para representar números

Leia mais

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2 FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO Projeto e Análise de Algoritmos II Lista de Exercícios 2 Prof. Osvaldo. 1. Desenvolva algoritmos para as operações abaixo e calcule a complexidade

Leia mais

RAID Redundat Arrays of Inexpensive Disks

RAID Redundat Arrays of Inexpensive Disks RAID Redundat Arrays of Inexpensive Disks Criado em alternativa para os discos grandes e caros. Justificativa: Substituindo discos grandes por muitos discos pequenos, o desempenho melhoraria mais cabeças

Leia mais

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br Introdução O computador como ferramenta indispensável: Faz parte das nossas vidas; Por si só não faz nada de útil; Grande capacidade de resolução

Leia mais

Grupo I [4v] b. [0,6v] De que forma é que o escalonador do Linux tenta minimizar o impacto desta limitação?

Grupo I [4v] b. [0,6v] De que forma é que o escalonador do Linux tenta minimizar o impacto desta limitação? Número: Nome: LEIC/LERC 2011/12-2º Exame de Sistemas Operativos 3/Fevereiro/2012 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Duração: 2h30m Grupo I [4v] 1. [0,6v] A

Leia mais

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período PROGRAMAÇÃO ESTRUTURADA CC 2º Período PROGRAMAÇÃO ESTRUTURADA Aula 06: Ponteiros Declarando e utilizando ponteiros Ponteiros e vetores Inicializando ponteiros Ponteiros para Ponteiros Cuidados a serem

Leia mais

Análise de Algoritmos: Melhor caso, pior caso, caso médio

Análise de Algoritmos: Melhor caso, pior caso, caso médio Análise de Algoritmos: Melhor caso, pior caso, caso médio Fernando Lobo Algoritmos e Estrutura de Dados II 1 / 25 Sumário Rever um problema e um algoritmo que já conhecem. Descrevê-lo em pseudo-código

Leia mais

Tarefa Orientada 13 Agrupamento e sumário de dados

Tarefa Orientada 13 Agrupamento e sumário de dados Tarefa Orientada 13 Agrupamento e sumário de dados Objectivos: Funções de agregação Agrupamento e sumário de dados Funções de agregação Nesta tarefa orientada iremos formular consultas que sumariam os

Leia mais

Métodos Computacionais. Árvores

Métodos Computacionais. Árvores Métodos Computacionais Árvores Árvores Vetores e Listas são ótimos para representar estrutura de dados lineares, mas não para modelar dados hierárquicos Exemplos de dados hierárquicos: sistema de arquivos

Leia mais

Ministério das Finanças Instituto de Informática. Departamento de Sistemas de Informação

Ministério das Finanças Instituto de Informática. Departamento de Sistemas de Informação Ministério das Finanças Instituto de Informática Departamento de Sistemas de Informação Assiduidade para Calendários Específicos Junho 2010 Versão 6.0-2010 SUMÁRIO 1 OBJECTIVO 4 2 ECRÃ ELIMINADO 4 3 NOVOS

Leia mais

5 Caso de estudo O cartão fidelidade

5 Caso de estudo O cartão fidelidade 5 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

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 13 Gerência de Memória Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso Sumário

Leia mais

Aula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis

Aula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis 1. TIPOS DE DADOS Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. Estas informações podem ser classificadas em dois tipos: As instruções, que

Leia mais

Planeamento de um Posto de Abastecimento de Combustível

Planeamento de um Posto de Abastecimento de Combustível Introdução aos Computadores e à Programação 2007/2008, 2º Semestre 1º Trabalho de OCTAVE Planeamento de um Posto de Abastecimento de Combustível 1. Introdução Pretende-se instalar um posto de abastecimento

Leia mais

Trabalhos Práticos. Programação II Curso: Engª Electrotécnica - Electrónica e Computadores

Trabalhos Práticos. Programação II Curso: Engª Electrotécnica - Electrónica e Computadores Trabalhos Práticos Programação II Curso: Engª Electrotécnica - Electrónica e Computadores 1. Objectivos 2. Calendarização 3. Normas 3.1 Relatório 3.2 Avaliação 4. Propostas Na disciplina de Programação

Leia mais

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o funcionamento do computador Apresentar a função da memória e dos dispositivos

Leia mais

ESTRUTURAS DE DADOS I. Notas de Aula. Prof. Dr. Gilberto Nakamiti

ESTRUTURAS DE DADOS I. Notas de Aula. Prof. Dr. Gilberto Nakamiti ESTRUTURAS DE DADOS I Notas de Aula 1 SUMÁRIO 1. INTRODUÇÃO... 2 1.1 Array (vetores)... 2 2. BUSCA DE ELEMENTOS... 3 2.1 Busca Seqüencial... 3 2.2 Busca Binária... 3 2.3 Busca Indexada... 3 2.4 Busca Hash...

Leia mais

Programação Básica em STEP 7 Operações Binárias. SITRAIN Training for Automation and Drives. Página 6-1

Programação Básica em STEP 7 Operações Binárias. SITRAIN Training for Automation and Drives. Página 6-1 Conteúdo Página Operações Lógicas Binárias: AND, OR...2 Operações Lógicas Binárias: OR Exclusivo (XOR)...3 Contatos Normalmente Abertos e Normalmente Fechados. Sensores e Símbolos... 4 Exercício...5 Resultado

Leia mais

Diminui o gargalo existente entre processador e memória principal; 5 a 10 vezes mais rápidas que a memória principal; Ligada diretamente à MP;

Diminui o gargalo existente entre processador e memória principal; 5 a 10 vezes mais rápidas que a memória principal; Ligada diretamente à MP; Diminui o gargalo existente entre processador e memória principal; Diferença de velocidade 5 a 10 vezes mais rápidas que a memória principal; Ligada diretamente à MP; Tecnologia semelhante à da CPU e,

Leia mais

Aula 2 Modelo Simplificado de Computador

Aula 2 Modelo Simplificado de Computador Aula 2 Modelo Simplificado de Computador Um computador pode ser esquematizado de maneira bastante simplificada da seguinte forma: Modelo Simplificado de Computador: Memória Dispositivo de Entrada Processador

Leia mais

Memória Cache. Prof. Leonardo Barreto Campos 1

Memória Cache. Prof. Leonardo Barreto Campos 1 Memória Cache Prof. Leonardo Barreto Campos 1 Sumário Introdução; Projeto de Memórias Cache; Tamanho; Função de Mapeamento; Política de Escrita; Tamanho da Linha; Número de Memórias Cache; Bibliografia.

Leia mais

Estruturas de Dados Pilhas, Filas e Deques

Estruturas de Dados Pilhas, Filas e Deques Estruturas de Dados Pilhas, Filas e Deques Prof. Eduardo Alchieri Estruturas de Dados Pilhas Pilhas Lista LIFO (Last In, First Out) Os elementos são colocados na estrutura (pilha) e retirados em ordem

Leia mais

Algoritmos e Estrutura de Dados III. Árvores

Algoritmos e Estrutura de Dados III. Árvores Algoritmos e Estrutura de Dados III Árvores Uma das mais importantes classes de estruturas de dados em computação são as árvores. Aproveitando-se de sua organização hierárquica, muitas aplicações são realizadas

Leia mais

DAS5102 Fundamentos da Estrutura da Informação

DAS5102 Fundamentos da Estrutura da Informação Pilhas A estrutura de dados Pilha emula a forma de organização de objetos intuitiva que é utilizada diariamente nos mais diversos contextos da vida humana. Containeres são empilhados e desempilhados diariamente

Leia mais

3 Classes e instanciação de objectos (em Java)

3 Classes e instanciação de objectos (em Java) 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

Estruturas de Dados I

Estruturas de Dados I UFES - Curso de verão 2011 Estruturas de Dados I Profa. Juliana Pinheiro Campos jupcampos@gmail.com Árvores binárias de busca (ou São árvores projetadas para dar suporte a operações de busca de forma eficiente.

Leia mais

Bases Matemáticas. Aula 2 Métodos de Demonstração. Rodrigo Hausen. v. 2013-7-31 1/15

Bases Matemáticas. Aula 2 Métodos de Demonstração. Rodrigo Hausen. v. 2013-7-31 1/15 Bases Matemáticas Aula 2 Métodos de Demonstração Rodrigo Hausen v. 2013-7-31 1/15 Como o Conhecimento Matemático é Organizado Definições Definição: um enunciado que descreve o significado de um termo.

Leia mais

28/9/2010. Paralelismo no nível de instruções Processadores superescalares

28/9/2010. Paralelismo no nível de instruções Processadores superescalares Arquitetura de Computadores Paralelismo no nível de instruções Processadores superescalares Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Processadores superescalares A partir dos resultados

Leia mais

TIC Unidade 2 Base de Dados. Informação é todo o conjunto de dados devidamente ordenados e organizados de forma a terem significado.

TIC Unidade 2 Base de Dados. Informação é todo o conjunto de dados devidamente ordenados e organizados de forma a terem significado. Conceitos relativos à Informação 1. Informação O que á a informação? Informação é todo o conjunto de dados devidamente ordenados e organizados de forma a terem significado. 2. Dados Em informática designa-se

Leia mais

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP) Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,

Leia mais

PROGRAMAÇÃO II 4. ÁRVORE

PROGRAMAÇÃO II 4. ÁRVORE 4. ÁRVORE PROGRAMAÇÃO II Prof. Jean Eduardo Glazar Uma árvore impõe uma estrutura hierárquica em uma coleção de itens. Um exemplo familiar é a árvore genealógica. Árvores despontam de forma natural em

Leia mais

Figura 1 Busca Linear

Figura 1 Busca Linear ----- Evidentemente, possuir os dados não ajuda o programador ou o usuário se eles não souberem onde os dados estão. Imagine, por exemplo, uma festa de casamento com cem convidados na qual não se sabe

Leia mais

Administração e Optimização de BDs

Administração e Optimização de BDs Departamento de Engenharia Informática 2010/2011 Administração e Optimização de BDs Mini-Projecto 1 2º semestre A resolução deve ser claramente identificada com o número de grupo e entregue sob a forma

Leia mais

Unidade 5 Armazenamento e Indexação

Unidade 5 Armazenamento e Indexação Unidade 5 Armazenamento e Indexação Engenharia de Computação / Engenharia de Produção Banco de Dados Prof. Maria das Graças da Silva Teixeira Material base: Banco de Dados, 2009.2, prof. Otacílio José

Leia mais

BC 1518 - Sistemas Operacionais Sistema de Arquivos (aula 10 Parte 2) Prof. Marcelo Z. do Nascimento

BC 1518 - Sistemas Operacionais Sistema de Arquivos (aula 10 Parte 2) Prof. Marcelo Z. do Nascimento BC 1518 - Sistemas Operacionais Sistema de Arquivos (aula 10 Parte 2) Prof. Marcelo Z. do Nascimento 1 Gerência de espaço em disco Cópia de segurança do sistema de arquivo Roteiro Confiabilidade Desempenho

Leia mais

A máscara de sub-rede pode ser usada para dividir uma rede existente em "sub-redes". Isso pode ser feito para:

A máscara de sub-rede pode ser usada para dividir uma rede existente em sub-redes. Isso pode ser feito para: Fundamentos: A máscara de pode ser usada para dividir uma rede existente em "s". Isso pode ser feito para: 1) reduzir o tamanho dos domínios de broadcast (criar redes menores com menos tráfego); 2) para

Leia mais

Métodos Os métodos de uma classe podem ser classificados como construtores, destrutores, funções ou procedimentos.

Métodos Os métodos de uma classe podem ser classificados como construtores, destrutores, funções ou procedimentos. Métodos Os métodos de uma classe podem ser classificados como construtores, destrutores, funções ou procedimentos. Construtor: método executado por uma CLASSE (e não por um objeto, instância da classe)

Leia mais