2. Diga qual é a diferença entre tipos de informação elementares e tipos de informação estruturados.

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

Download "2. Diga qual é a diferença entre tipos de informação elementares e tipos de informação estruturados."

Transcrição

1 Capítulo 5 Abstracção de dados 5. Exercícios de revisão. Diga o que é um tipo abstracto de informação.. Diga qual é a diferença entre tipos de informação elementares e tipos de informação estruturados. 3. Explique em que consiste a abstracção de dados, usando os termos barreiras de abstracção, encapsulação da informação e anonimato da representação. 4. Explique quais são as vantagens da abstracção de dados. 5. Compare a abstracção de dados com a abstracção procedimental. 6. Justifique a seguinte afirmação a abstracção de dados aumenta o poder expressivo da nossa linguagem de programação. 7. Quais são os quatro passos a seguir na definição de um tipo abstracto de informação? Explique em que consiste cada um deles. 8. Diga o que são operações básicas de um tipo abstracto de informação e quais os grupos em que estas são divididas. 9. Explique o que são as barreiras de abstracção criadas por um tipo de informação e quais os inconvenientes de não as respeitar. 0. Apresente a metodologia dos tipos abstractos de informação e explique porque é que esta metodologia garante a abstracão de dados.. Diga o que é o anonimato da representação e qual a sua importância.. Na criação de um tipo abstracto de informação, há dois tipos de representação a considerar. Diga quais são e descreva cada um deles. 3. Diga o que é uma árvore binária e quais são as suas operações básicas, classificando-as de acordo com os vários grupos de operações. 43

2 44 CAPÍTULO 5. ABSTRACÇÃO DE DADOS 5. Exercícios de programação 5.. Caixas e ponteiros. () Considere a seguinte estrutura de pares usando a notação de caixas e ponteiros(correspondente à variável Estr): Para cada uma das seguintes expressões escreva o seu valor (o qual pode ser um número inteiro, uma estrutura de pares ou pode originar um erro). No caso de a expressão originar um erro explique a razão do erro. (a) (car Estr) (b) (car (car (cdr Estr))) (c) (cdr (cdr (cdr Estr))). () Represente as seguintes estruturas, usando a notação de caixas e ponteiros: (a) (. ) (b) (. ("bom dia". 3)) (c) (. (. (3. 4))) (d) ((. ). ((3. (4. 5)). (7. 8))) 5.. Tipo tempo Suponha que desejava criar o tipo tempo em Scheme. Suponha que o tempo é caracterizado por um certo número de horas (um inteiro não negativo), minutos (um inteiro entre 0 e 59) e segundos (um inteiro entre 0 e 59).. () Especifique as operações básicas para o tipo tempo.. () Escolha uma representação interna para o tipo tempo usando pares. 3. () Escreva em Scheme as operações básicas, de acordo com a representação escolhida.

3 5.. EXERCÍCIOS DE PROGRAMAÇÃO () Supondo que a representação externa para os elementos do tipo tempo é h : mm : ss (em que h é um inteiro positivo que representa as horas, mm são dois dígitos que identificam os minutos e ss são dois dígitos que identificam os segundos) escreva o transformador de saída escreve-tempo para o tipo tempo. Por exemplo, > (escreve-tempo (faz-tempo 9 34)) 9:0:34 5. () Escreva o procedimento em Scheme diferenca-segundos que calcula o número de segundos entre dois instantes de tempo. Este procedimento apenas deve produzir um valor se o segundo tempo for maior do que o primeiro, gerando uma mensagem de erro se essa condição não se verificar. > (diferenca-segundos (faz-tempo 0 34) (faz-tempo 34)) () Escreva o procedimento em Scheme diferenca-tempo que calcula a diferença entre dois instantes de tempo retornando o valor em termos de horas, minutos e segundos. Este procedimento apenas deve produzir um valor se o segundo tempo for maior do que o primeiro, gerando uma mensagem de erro se essa condição não se verificar. > (escreve-tempo (diferenca-tempo (faz-tempo 0 34) (faz-tempo 4 39))) :0:05 7. () Escreva o procedimento em Scheme soma-tempos que calcula o tempo resultante da soma entre dois instantes de tempo. > (escreve-tempo (soma-tempos (faz-tempo 45 30) (faz-tempo 0 40))) 4:06:0 8. () Suponha agora que pretende representar os elementos do tipo tempo através de inteiros positivos com a forma hmmss, em que h é um inteiro não negativo que representa o número de horas, mm e ss são dois inteiros entre 0 e 59 cada um e que representam, respectivamente, os minutos e os segundos do tempo. Escreva em Scheme as operações básicas, de acordo com esta nova representação. 9. () Seria possível utilizar as operações definidas nos exercícios anteriores, 4 7, usando esta nova representação? Justifique Tipo data Suponha que desejava criar o tipo data em Scheme. Suponha que uma data é caracterizada por um dia (um inteiro entre e 3), um mês (um inteiro entre e ) e um ano. Para cada data, deve ser respeitado o limite de dias de cada mês, incluindo o caso de Fevereiro nos anos bissextos.. () Especifique as operações básicas para o tipo data.

4 46 CAPÍTULO 5. ABSTRACÇÃO DE DADOS. () Escolha uma representação interna para o tipo data usando pares. 3. () Escreva em Scheme as operações básicas, de acordo com a representação escolhida. 4. () Supondo que a representação externa para um elemento do tipo data é d/m/a (em que d representa o dia, m o mês e a o ano) escreva o transformador de saída para o tipo data. Por exemplo, > (escreve-data (faz-data 5 9 0)) 5/9/0 5. () Tendo em conta as operações básicas do tipo data, defina um procedimento chamado anterior? que recebe como argumentos duas datas e tem o valor verdadeiro se a primeira data for anterior à segunda e falso em caso contrário. > (anterior? (faz-data 003) (faz-data 005)) 6. () Tendo em conta as operações básicas do tipo data, defina um procedimento idade que recebe como argumentos a data de nascimento de uma pessoa e outra data posterior e devolve a idade da pessoa na segunda data. > (idade (faz-data 003) (faz-data 005)) > (idade (faz-data 003) (faz-data 3 006)) Listas. () Escreva um procedimento em Scheme ultimo que recebe uma lista não vazia, e devolve o último elemento da lista. > (ultimo (4 5 6)) 6 > (ultimo ()). () Escreva um procedimento em Scheme produto-lista que recebe uma lista, e devolve o produto de todos os elementos da lista. Considere que o produto dos elementos de uma lista vazia tem o valor. > (produto-lista (4 5 6)) 0 > (produto-lista ())

5 5.. EXERCÍCIOS DE PROGRAMAÇÃO () Escreva um procedimento em Scheme conta-pares que recebe uma lista, e devolve o número de elementos pares na lista. > (conta-pares (4 5 6)) > (conta-pares (3 5 7)) 0 4. () Escreva um procedimento em Scheme conta-menores que recebe uma lista lst e um número inteiro n, e devolve o número de elementos da lista lst menores que n. > (conta-menores (4 5 6) 4) 0 > (conta-menores (3 5 7) 6) 5. () Escreva um procedimento em Scheme numero-ocorrencias que recebe uma lista e um número inteiro n, e devolve o número de vezes que n ocorre na lista. > (numero-ocorrencias (4 5 6) 5) > (numero-ocorrencias (3 5 7) ) 0 6. () Escreva um procedimento em Scheme todos-pares? que recebe uma lista, e devolve verdadeiro se a lista for constituída exclusivamente por números pares e falso no caso contrário. > (todos-pares? (4 5 6)) > (todos-pares? (4 4 6)) 7. () Escreva um procedimento em Scheme ocorre-lista? que recebe uma lista e um número inteiro n, e devolve verdadeiro se o número n ocorrer na lista e falso no caso contrário. > (ocorre-lista? (3 4) 3) > (ocorre-lista? (3 4) ) 8. (3) Escreva um procedimento em Scheme maximo-lista que recebe uma lista não vazia, e devolve o maior elemento da lista. > (maximo-lista (4 5 6)) 6 > (maximo-lista (7 3 6)) 7

6 48 CAPÍTULO 5. ABSTRACÇÃO DE DADOS 9. () Escreva um procedimento em Scheme quadrados-lista que recebe uma lista lst, e devolve a lista que resulta de elevar todos os números da lista lst ao quadrado. > (quadrados-lista (3 4)) (9 4 6) 0. () Escreva um procedimento em Scheme substitui que recebe uma lista lst, um número v (velho) e um número n (novo), e devolve a lista que resulta de substituir em lst todas as ocorrências de v por n. > (substitui (4 3 4) 4 5) (5 3 5). () Escreva um procedimento em Scheme insere-no-fim que recebe uma lista lst e um número n, e devolve a lista que resulta de inserir o elemento n no final da lista lst. > (insere-no-fim 3 (3 4)) (3 4 3) > (insere-no-fim 3 ()) (3). () Escreva um procedimento em Scheme remove-ultimo que recebe uma lista não vazia, e devolve a lista que resulta de remover o último elemento da lista. > (remove-ultimo (3 4)) (3 ) > (remove-ultimo (4)) () 3. () Escreva um procedimento em Scheme junta que recebe duas listas, e devolve a lista que resulta de juntar a segunda lista no final da primeira. > (junta (3 4) ( 3)) (3 4 3) > (junta () (4 5 3)) (4 5 3) > (junta ( 3) ()) ( 3) 4. () Escreva um procedimento em Scheme inverte que recebe uma lista, e devolve a lista que resulta de inverter a lista original. Sugestão: Utilize o procedimento insere-no-fim definido no exercício ou os procedimentos ultimo e remove-ultimo definidos nos exercícios e. > (inverte (3 4)) (4 3)

7 5.. EXERCÍCIOS DE PROGRAMAÇÃO () Escreva um procedimento em Scheme aumenta que recebe, no mínimo, um argumento inteiro e devolve a lista que se obtém somando o primeiro argumento a cada um dos restantes elementos. > (aumenta 0 5 8) ( 5 8) > (aumenta 8 0) (8) > (aumenta 3) () > (aumenta) procedure aumenta: expects at least argument, given 0 6. (3) Escreva um procedimento em Scheme alisa que recebe uma lista, cujos elementos podem ser listas, e devolve a lista com todos os elementos atómicos da lista original. Sugestão: Utilize o procedimento junta definido no exercício 3. > (alisa ((((3))) 4 5 (8 (9)))) ( ) 7. (3) Escreva um procedimento em Scheme sublistas que recebe uma lista, e conta o número total de sublistas que esta contém. > (sublistas ( 3)) 0 > (sublistas (() (3))) > (sublistas ((((()))))) 4 8. () Escreva um procedimento em Scheme selecciona-pares que recebe uma lista, e devolve a lista com todos os números pares da lista original. > (selecciona-pares (4 3 4)) (4 4) > (selecciona-pares (7 3 5)) () 9. () Escreva um procedimento em Scheme selecciona-menores que recebe uma lista e um número n, e devolve a lista com todos os números da lista original menores que n. > (selecciona-menores (4 3 4) 4) (3 ) > (selecciona-menores (7 3 5) ) () 0. () Escreva um procedimento em Scheme selecciona-primos que recebe uma lista, e devolve a lista com todos os números primos da lista original.

8 50 CAPÍTULO 5. ABSTRACÇÃO DE DADOS > (selecciona-primos (4 3 4)) (3 ) > (selecciona-primos ( )) (). () Escreva um procedimento em Scheme remove-elemento que recebe uma lista e um número n, e devolve a lista que resulta de remover todas as ocorrências do elemento n da lista original. > (remove-elemento (4 3 4) 4) (3 ) > (remove-elemento (7 3 5) ) (7 3 5). () Escreva um procedimento em Scheme altera-posicao que recebe uma lista e dois números p e n, e devolve a lista que resulta de alterar o elemento na posição p da lista para n. Caso a lista tenha menos de p posições deverá devolver a lista original. > (altera-posicao (4 3 4) 4 0) ( ) > (altera-posicao (4 3 4) 00 8) (4 3 4) 3. () Escreva um procedimento em Scheme posicoes-lista que recebe uma lista e um número n, e devolve a lista de todas as posições em que o número n ocorre na lista. > (posicoes-lista (4 3 4) 4) ( 6) > (posicoes-lista (4 3 4) 6) () 4. () Escreva um procedimento em Scheme posicoes-dos-pares que recebe uma lista, e devolve a lista de todas as posições da lista em que ocorrem números pares. > (posicoes-dos-pares (4 3 4)) ( 3 4 6) > (posicoes-dos-pares ( )) () 5. () Escreva um procedimento em Scheme ordenada? que recebe uma lista, e devolve verdadeiro se a lista estiver ordenada de forma crescente e falso no caso contrário. > (ordenada? (3 3)) > (ordenada? ( ))

9 5.. EXERCÍCIOS DE PROGRAMAÇÃO 5 6. (3) Escreva um procedimento em Scheme intercala que recebe duas listas, e devolve a lista que resulta de intercalar os elementos das duas listas. Se as listas não forem do mesmo tamanho, o que restar da lista maior deverá ser adicionado no fim. > (intercala (3 4) ( 3)) (3 4 3) > (intercala ( 3) ( )) ( ) 7. () Escreva um procedimento em Scheme insere-ordenado que recebe uma lista ordenada e um número n, e devolve a lista que resulta de inserir o número n na posição certa na lista de modo a que o resultado continue uma lista ordenada. > (insere-ordenado ( ) 7) ( ) > (insere-ordenado ( ) ) ( ) > (insere-ordenado ( ) 5) ( ) 8. (3) Escreva um procedimento em Scheme parte que recebe uma lista lst e um número n, e devolve uma lista contendo na primeira posição a lista com os elementos de lst menores que n, e na segunda posição a lista com os elementos de lst maiores ou iguais a n. A ordem pela qual os elementos aparecem nas listas devolvidas é irrelevante. > (parte (6 9 7) 3) (( ) (6 9 7)) > (parte ( ) 3) (( ) ( )) > (parte (9 5) 4) (() (9 5)) 9. () Escreva um procedimento em Scheme capicua? que recebe uma lista, e devolve verdadeiro se a lista for uma capicua e falso no caso contrário. Sugestão: Utilize os procedimentos ultimo e remove-ultimo definidos nos exercícios e. > (capicua? (3 3)) > (capicua? (3 3)) > (capicua? (3 3 3)) 30. (3) Escreva um procedimento em Scheme capicua que recebe uma lista, e devolve a lista que se obtém construindo uma capicua com a lista original. Sugestão: Utilize o procedimento insere-no-fim do exercício.

10 5 CAPÍTULO 5. ABSTRACÇÃO DE DADOS > (capicua (3 4 7 )) ( ) > (capicua ( )) ( ) 3. (3) Escreva um procedimento em Scheme remove-duplicados que recebe uma lista lst, e fica apenas com uma cópia de cada elemento de lst. A ordem pela qual os elementos aparecem na lista devolvida é irrelevante. Sugestão: Utilize o procedimento remove-elemento do exercício. > (remove-duplicados (4 3 4)) (4 3 ) > (remove-duplicados (4 3 4 )) (4 3 ) > (remove-duplicados ( )) ( ) 3. (3) Escreva um procedimento em Scheme elementos-repetidos que recebe uma lista, e devolve a lista com uma cópia de cada elemento que aparece repetido na lista. A ordem pela qual os elementos aparecem na lista devolvida é irrelevante. e remove-elemento dos exercí- Sugestão: Utilize os procedimentos ocorre-lista? cios 7 e. > (elementos-repetidos ( )) (3 4) > (elementos-repetidos ( )) () 33. (3) Escreva um procedimento em Scheme conta-elementos que recebe uma lista de inteiros, e devolve uma lista de pares em que cada par contém como primeiro elemento um elemento da lista e como segundo elemento o número de vezes que este aparece na lista. A ordem pela qual os pares aparecem na lista devolvida é irrelevante. Respeite as barreiras de abstracção, mas lembre-se que está a lidar com dois tipos estruturados, a lista e o par. e remove-elemento dos exercí- Sugestão: Utilize os procedimentos ocorre-lista? cios 7 e. > (conta-elementos ( )) ((3. 6) (4. ) (5. ) (9. ) (. )) 34. () Escreva um procedimento em Scheme lista-inteiros que recebe um inteiro positivo n, e devolva uma lista com todos os inteiros entre 0 e n (a ordem pela qual os números aparecem na lista não é relevante). > (lista-inteiros 7) ( )

11 5.. EXERCÍCIOS DE PROGRAMAÇÃO 53 (a) O seu procedimento é um procedimento recursivo? Porquê? (b) O seu procedimento gera um processo iterativo ou recursivo? Porquê? (c) Se o seu procedimento gera um processo iterativo, escreva um que gere um processo recursivo. Se gera um processo recursivo, escreva um que gere um processo iterativo. 35. (4) O Crivo de Eratóstenes é um algoritmo para calcular números primos que, segundo a tradição, foi criado pelo matemático grego Eratóstenes (c a.c.), o terceiro bibliotecário-chefe da Biblioteca de Alexandria. O algoritmo calcula os números primos inferiores a n. Para isso, começa-se por criar uma lista com todos os inteiros positivos de an e seleccionar o número. Enquanto o número seleccionado for menor que n:(a) removem-se da lista todos os múltiplos desse número; (b) passa-se ao número seguinte na lista. No final do algoritmo, quando o número seleccionado for superior a n,alista apenas contém números primos. Escreva um procedimento em Scheme para calcular a lista de números primos inferiores a n de acordo com o Crivo de Eratóstenes. Sugestão: Defina um procedimento remove-multiplos que dado uma lista lst e um inteiro n, remove da lista todos os múltiplos de n. > (lista-primos 0) ( ) > (lista-primos 00) ( ) 5..5 Árvores Binárias Definições e Notação Nesta secção deve considerar os seguintes procedimentos sobre árvores binárias: (nova-arv) cria uma árvore vazia. (cria-arv r arve arvd) cria uma árvore binária com raiz r, árvore esquerda arve e árvore direita arvd. (raiz arv) dada uma árvore binária arv devolve a sua raiz. (arv-esq arv) dada uma árvore binária arv devolve a sua árvore esquerda. (arv-dir arv) dada uma árvore binária arv devolve a sua árvore direita. (arvore-vazia? arv) devolve verdadeiro se a árvore binária arv é vazia e falso no caso contrário. (arvore? x) devolve verdadeiro se o objecto x for uma árvore binária e falso no caso contrário. (arvores=? arv arv) devolve verdadeiro se as árvores binárias arv e arv forem iguais e falso no caso contrário. Um nó de uma árvore a é a raiz de uma das sub-árvores de a. As raízes das sub-árvores esquerda e direita de um nó r dizem-se os filhos de r. Neste caso r diz-se o pai dos dois nós. Dois nós dizem-se irmãos se tiverem o mesmo pai. Uma folha de uma árvore é um nó sem filhos.

12 54 CAPÍTULO 5. ABSTRACÇÃO DE DADOS A profundidade de um nó é o comprimento do caminho desde a raiz até ele. A profundidade de uma árvore é o comprimento do caminho desde a raiz até ao nó mais profundo. O nó d diz-se descendente de a se existir um caminho na árvore de a para d e a profundidade de a é menor que a profundidade de d. Umnóa diz-se ascendente de d se d for descendente de a. O tamanho de um nó é o número de seus descendentes, incluindo o próprio. O tamanho de uma árvore é o tamanho da sua raiz. Suponha definidas as seguintes árvores binárias (define a (cria-arv 3 (cria-arv (cria-arv 5 (nova-arv) (nova-arv)) (cria-arv 7 (nova-arv) (nova-arv))) (cria-arv 5 (cria-arv (nova-arv) (nova-arv)) (cria-arv 6 (nova-arv) (nova-arv))))) (define a (cria-arv 0 (cria-arv (nova-arv) (nova-arv)) (cria-arv (cria-arv 8 (nova-arv) (nova-arv)) (cria-arv (nova-arv) (nova-arv))))) (define a3 (cria-arv 5 (nova-arv) (cria-arv 0 (cria-arv 8 (nova-arv) (nova-arv)) (cria-arv 0 (nova-arv) (nova-arv))))) cujas representações gráficas são dadas por Exercícios. () Escreva um procedimento em Scheme folha? que recebe uma árvore binária, e devolve verdadeiro se a árvore for uma folha e falso no caso contrário. > (folha? (arv-esq a)) > (folha? (arv-esq a)). () Escreva um procedimento em Scheme tamanho que recebe uma árvore binária, e devolve o número de nós da árvore.

13 5.. EXERCÍCIOS DE PROGRAMAÇÃO 55 > (tamanho a) 7 3. () Escreva um procedimento em Scheme soma-arvore que recebe uma árvore binária, e devolve a soma de todos os nós da árvore. > (soma-arvore a) 9 4. () Escreva um procedimento em Scheme procura? que recebe uma árvore binária e um número, e devolve verdadeiro se o número ocorre num dos nós da árvore e falso no caso contrário. > (procura? a 8) > (procura? a 8) 5. () Escreva um procedimento em Scheme todos-pares? que recebe uma árvore binária, e devolve verdadeiro se a árvore for constituída exclusivamente por números pares e falso no caso contrário. > (todos-pares? a3) > (todos-pares? (arv-dir a3)) 6. () Escreva um procedimento em Scheme conta-pares-arvore que recebe uma árvore binária, e conta quantos números pares ocorrem na árvore. > (conta-pares-arvore a) 7. () Escreva um procedimento em Scheme numero-folhas que recebe uma árvore binária, e devolve o número de folhas da árvore. > (numero-folhas a) 4 > (numero-folhas a) 3 > (numero-folhas a3) 8. () Escreva um procedimento em Scheme profundidade que recebe uma árvore binária, e devolve a profundidade da árvore. > (profundidade a) 3

14 56 CAPÍTULO 5. ABSTRACÇÃO DE DADOS 9. () Escreva um procedimento em Scheme pai? que recebe uma árvore binária e dois números p e f, e devolve verdadeiro se p for pai de f na árvore e falso no caso contrário. > (pai? a 3 7) > (pai? a 3 9) > (pai? a 5 ) 0. () Escreva um procedimento em Scheme filho? que recebe uma árvore binária e dois números f e p, e devolve verdadeiro se f for filho de p na árvore e falso no caso contrário. > (filho? a 6 3) > (filho? a 9 3) > (filho? a 5 ) > (filho? a 5 3). () Escreva um procedimento em Scheme irmaos? que recebe uma árvore binária e dois números n e m, e devolve verdadeiro se os números forem irmãos na árvore e falso no caso contrário. > (irmaos? a 7) > (irmaos? a 5). () Escreva um procedimento em Scheme ascendente? que recebe uma árvore binária e dois números a e d, e devolve verdadeiro se a for ascendente de d na árvore e falso no caso contrário. Sugestão: Utilize o procedimento procura? definido no exercício 4. > (ascendente? a 3 6) > (ascendente? a 3 9) > (ascendente? a 5) > (ascendente? a 3 5) 3. () Escreva um procedimento em Scheme descendente? que recebe uma árvore binária e dois números d e a, e devolve verdadeiro se d for descendente de a na árvore e falso no caso contrário.

15 5.. EXERCÍCIOS DE PROGRAMAÇÃO 57 > (descendente? a 6 5) > (descendente? a 7 3) > (descendente? a 5) 4. () Uma árvore binária diz-se própria se todos os seus nós têm dois filhos ou são folhas. Escreva um procedimento em Scheme arv-propria? que recebe uma árvore binária, e devolve verdadeiro se a árvore for própria e falso no caso contrário. > (arv-propria? a) > (arv-propria? a) > (arv-propria? a3) 5. () Uma árvore binária diz-se perfeita se é própria e todas as suas folhas estão ao mesmo nível. Escreva um procedimento em Scheme arv-perfeita? que recebe uma árvore binária, e devolve verdadeiro se a árvore for perfeita e falso no caso contrário. Sugestão: Utilize o procedimento profundidade definido no exercício 8. > (arv-perfeita? a) > (arv-perfeita? a) > (arv-perfeita? a3) 6. (3) Uma árvore binária diz-se balanceada se for própria e todas as suas folhas diferem no máximo de um nível. Escreva um procedimento em Scheme arv-balanceada? que recebe uma árvore binária, e devolve verdadeiro se a árvore for balanceada e falso no caso contrário. Sugestão: Utilize o procedimento profundidade definido no exercício 8. > (arv-balanceada? a) > (arv-balanceada? a) > (arv-balanceada? a3) 7. (3) Escreva um procedimento em Scheme maximo que recebe uma árvore binária não vazia, e devolve o maior elemento da árvore. > (maximo a) 7

16 58 CAPÍTULO 5. ABSTRACÇÃO DE DADOS 8. (3) Escreva um procedimento em Scheme minimo que recebe uma árvore binária não vazia, e devolve o menor elemento da árvore. > (minimo a) 9. (4) Uma árvore binária diz-se de pesquisa se a sua raíz é maior que todos os elementos da sua sub-árvore esquerda, menor ou igual que todos os elementos da sua sub-árvore direita, e o mesmo se passa para todas as suas sub-árvores. Escreva um procedimento em Scheme arv-pesquisa? que recebe uma árvore binária, e devolve verdadeiro se a árvore for uma árvore binária de pesquisa e falso no caso contrário. > (arv-pesquisa? a) > (arv-pesquisa? a3) 0. () Escreva um procedimento em Scheme procura-pesquisa? que recebe uma árvore binária de pesquisa e um número n, e devolve verdadeiro se o número n ocorre num dos nós da árvore e falso no caso contrário. Nota: O seu procedimento deve tirar partido do facto de receber uma árvore binária de pesquisa e não uma árvore binária qualquer. > (procura-pesquisa? a3 8) > (procura-pesquisa? a3 9). (3) Escreva um procedimento em Scheme mais-profundo que recebe uma árvore binária não vazia, e devolve o nó mais profundo da árvore. Caso existam vários à mesma profundidade deverá devolver o mais à esquerda na árvore. Sugestão: Utilize o procedimento profundidade definido no exercício 8. > (mais-profundo a) 5 > (mais-profundo a) 8. (4) Escreva um procedimento em Scheme profundidade-minima que recebe uma árvore binária não vazia e um número n, e devolve a profundidade mínima a que n ocorre na árvore. Caso o número não ocorra na árvore deverá devolver falso. Sugestão: Utilize o procedimento mais-profundo definido no exercício. > (profundidade-minima a 5) > (profundidade-minima a ) 3 > (profundidade-minima a 9)

17 5.. EXERCÍCIOS DE PROGRAMAÇÃO () Escreva um procedimento em Scheme lista-folhas que recebe uma árvore binária, e devolve a lista com todas as suas folhas começando da mais à esquerda para a mais à direita. Sugestão: Utilize o procedimento junta definido no exercício 3. > (lista-folhas a) ( 8 ) > (lista-folhas a3) (8 0) 4. () Escreva um procedimento em Scheme espelha que recebe uma árvore binária e devolve uma nova árvore binária idêntica à recebida, mas em que em cada nível da árvore se trocou a árvore esquerda com a direita, mantendo-se a raiz. > (espelha a) deve devolver a árvore cuja representação gráfica é () Escreva um procedimento em Scheme substitui que recebe uma árvore binária, um número v (velho) e um número n (novo), e devolve a árvore que resulta de substituir todas as ocorrências de v por n. > (substitui a 5 8) deve devolver a árvore cuja representação gráfica é () Escreva um procedimento em Scheme poda que recebe uma árvore binária, e devolve a árvore que resulta de remover todas as folhas da árvore. > (poda a) deve devolver a árvore cuja representação gráfica é

18 60 CAPÍTULO 5. ABSTRACÇÃO DE DADOS 0 7. (4) Escreva um procedimento em Scheme promove-irmao que recebe uma árvore binária, e que em cada uma das suas sub-árvores coloca o irmão maior como raiz da árvore direita. > (promove-irmao a) deve devolver a árvore cuja representação gráfica é (4) Escreva um procedimento em Scheme promove-descendente que recebe uma árvore binária, e que em cada uma das suas sub-árvores coloca o seu maior elemento na raiz. Nos casos em que há troca da raiz r por m, então r deverá ocupar o lugar onde m estava. Sugestão: Defina um procedimento substitui que recebe uma árvore arv e dois números v e n e substitui uma única ocorrência de v por n na árvore arv. > (promove-descendente a) deve devolver a árvore cuja representação gráfica é () Escreva um procedimento em Scheme cria-arvore-pesquisa que recebe zero ou mais argumentos, e devolve uma árvore binária de pesquisa criada a partir desses argumentos. O primeiro argumento, caso exista, deverá ser a raíz da árvore. > (cria-arvore-pesquisa 5 3) deve devolver a árvore cuja representação gráfica é 5 3

Programação imperativa

Programação imperativa Capítulo 8 Programação imperativa 8.1 Exercícios de revisão 1. Distinga entre programação imperativa e programação funcional. 2. Explique a necessidade da introdução do operador de atribuição. 3. Diga

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação Soluções do primeiro teste 13 de Novembro de 2004 9:00-10:30 Nota Número: 20 Nome: Turma: Escreva o seu número em todas as folhas do teste. O espaço das respostas deve ser limitado

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação Primeiro Teste 16 de Abril de 2011 09:00 10:30 Nome: Número: Esta prova, individual e sem consulta, tem 7 páginas com 9 perguntas. A cotação de cada pergunta está assinalada

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação Solução do Segundo Teste 23 de Janeiro de 2012 09:00 10:30 Nome: Número: 1. (1.0) Explique em que consiste a abstracção de dados, usando os termos barreiras de abstracção, encapsulação

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação Primeiro Teste 21 de Abril de 2012 11:30 13:00 Nome: Número: Esta prova, individual e sem consulta, tem 5 páginas com 10 perguntas. A cotação de cada pergunta está assinalada

Leia mais

Estruturação de Procedimentos

Estruturação de Procedimentos Capítulo 4 Estruturação de Procedimentos 4. Exercícios de revisão. Diga o que entende por linguagem estruturada em blocos. Descreva a regra associada a esta estrutura, e diga qual a sua importância. 2.

Leia mais

if not(isinstance(a, int)) or a < 0: raise ValueError ("misterio: arg nao e inteiro nao negativo") else: return misterio_aux(a, a + 1)

if not(isinstance(a, int)) or a < 0: raise ValueError (misterio: arg nao e inteiro nao negativo) else: return misterio_aux(a, a + 1) Capítulo 7 Recursão e iteração 1. (1) Considere a seguinte função: def misterio(a): def misterio_aux(b, c): if b == 0: return True elif c == 0: return False return misterio_aux(b -, c - ) if not(isinstance(a,

Leia mais

Exercícios: Árvores. Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de estrutura de dados em linguagem C

Exercícios: Árvores. Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de estrutura de dados em linguagem C Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de estrutura de dados em linguagem C Exercícios: Árvores 1. Utilizando os conceitos de grafos, defina uma árvore.

Leia mais

Exercícios para Fundamentos da Programação Utilizando Múltiplos Paradigmas

Exercícios para Fundamentos da Programação Utilizando Múltiplos Paradigmas Exercícios para Fundamentos da Programação Utilizando Múltiplos Paradigmas Pedro Adão, Fausto Almeida, Ana Cardoso-Cachopo, Pedro Amaro de Matos (editores) Departamento de Engenharia Informática Instituto

Leia mais

Fundamentos da Programação

Fundamentos da Programação Fundamentos da Programação Segundo Teste 10 de Janeiro de 2014 09:00 10:30 Nome: Número: Esta prova, individual e sem consulta, tem 8 páginas com 12 perguntas. A cotação de cada pergunta está assinalada

Leia mais

Fundamentos da Programação

Fundamentos da Programação Fundamentos da Programação Exame 9 de Janeiro de 2015 09:00 11:00 1. De um modo sucinto, explique o que é: (a) (0.5) Um processo computacional. Um ente imaterial que existe dentro de um computador durante

Leia mais

PROGRAMAÇÃO EM SCHEME:

PROGRAMAÇÃO EM SCHEME: Exercícios para PROGRAMAÇÃO EM SCHEME: Introdução à Programação Utilizando Múltiplos Paradigmas Departamento de Engenharia Informática Instituto Superior Técnico Universidade Técnica de Lisboa 2 Conteúdo

Leia mais

Fundamentosde Programação

Fundamentosde Programação Fundamentosde Programação Soluçãodo Primeiro teste 19 de Novembrode 2005 1. (1.0) Utilizando a notação BNF, apresente a definição completa da forma define. Explique cada um dos constituintes da sua definição.

Leia mais

Fundamentos da Programação

Fundamentos da Programação Fundamentos da Programação Segundo Teste 18 de Junho de 2014 15:00 16:30 1. (1.0) Diga quais as fases por que passa o desenvolvimento de um programa no modelo estudado e o que se faz em cada uma delas.

Leia mais

Árvores & Árvores Binárias

Árvores & Árvores Binárias SCE 182 SCC122 Algoritmos Estruturas e Estruturas de Dados de Dados I Árvores & Árvores Binárias Prof. Material Original: Walter Aoiama Nagai; Maria das Graças Volpe Nunes; Definições Árvore T é um conjunto

Leia mais

Abstração de dados. Capítulo 9

Abstração de dados. Capítulo 9 Capítulo 9 Abstração de dados 1. Suponha que desejava criar o tipo racional. Um número racional é qualquer número que possa ser expresso como o quociente de dois inteiros: o numerador (um inteiro positivo,

Leia mais

Árvores Binárias. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich

Árvores Binárias. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich Árvores Binárias SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista. Figuras editadas por Isadora Maria Mendes http://www.icmc.usp.br/~paulovic

Leia mais

Estruturas de Dados II

Estruturas de Dados II Estruturas de Dados II Rodrigo Porfírio da Silva Sacchi rodrigosacchi@ufgd.edu.br 3410-2086 Aula 2: Árvores http://www.do.ufgd.edu.br/rodrigosacchi Árvores Definição: Árvores Uma árvore T é um conjunto

Leia mais

Fundamentos da Programação

Fundamentos da Programação Fundamentos da Programação Solução do Segundo Teste 18 de Janeiro de 2013 09:00 10:30 1. (2.0) Escolha a única resposta incorrecta para as seguintes questões. Cada resposta certa vale 1 valor e cada resposta

Leia mais

Árvores & Árvores Binárias

Árvores & Árvores Binárias SCE 182 SCC122 Algoritmos Estruturas e Estruturas de Dados de Dados I Árvores & Árvores Binárias Prof. Material Original: Walter Aoiama Nagai; Maria das Graças Volpe Nunes; Definições Árvore T é um conjunto

Leia mais

UNIVERSIDADE DE SÃO PAULO ICMC SCC 202 Algoritmos e Estrutura de Dados I - 2º Semestre 2010 Profa. Sandra Maria Aluísio;

UNIVERSIDADE DE SÃO PAULO ICMC SCC 202 Algoritmos e Estrutura de Dados I - 2º Semestre 2010 Profa. Sandra Maria Aluísio; UNIVERSIDADE DE SÃO PAULO ICMC SCC 202 Algoritmos e Estrutura de Dados I - 2º Semestre 2010 Profa. Sandra Maria Aluísio; e-mail: sandra@icmc.usp.br Lista de Exercícios Árvores, Árvores Binárias, Árvores

Leia mais

Fundamentos de Algoritmos

Fundamentos de Algoritmos Fundamentos de Algoritmos CIC/UFRGS 2006/1 Mais em definições auto-referenciáveis: roteiro Estruturas em estruturas: exemplo das árvores de hereditariedade Árvores binárias de pesquisa Listas de listas

Leia mais

SUMÁRIO. Fundamentos Árvores Binárias Árvores Binárias de Busca

SUMÁRIO. Fundamentos Árvores Binárias Árvores Binárias de Busca ÁRVORES SUMÁRIO Fundamentos Árvores Binárias Árvores Binárias de Busca 2 ÁRVORES Utilizadas em muitas aplicações Modelam uma hierarquia entre elementos árvore genealógica Diagrama hierárquico de uma organização

Leia mais

Árvores & Árvores Binárias

Árvores & Árvores Binárias Árvores & Árvores Binárias Problema Implementações do TAD Lista Linear Lista encadeada eficiente para inserção e remoção dinâmica de elementos, mas ineficiente para busca Lista seqüencial (ordenada) Eficiente

Leia mais

Abstração de dados. Capítulo 10

Abstração de dados. Capítulo 10 Capítulo 10 Abstração de dados 1. Suponha que desejava criar o tipo tempo em Python, caracterizado por um certo número de horas (um inteiro não negativo), minutos (um inteiro entre 0 e 59) e segundos (um

Leia mais

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA ÁRVORES E ÁRVORE BINÁRIA DE BUSCA Prof. André Backes Definição 2 Diversas aplicações necessitam que se represente um conjunto de objetos e as suas relações hierárquicas Uma árvore é uma abstração matemática

Leia mais

Inteligência Artificial

Inteligência Artificial Instituto Politécnico de Setúbal Escola Superior de Tecnologia de Setúbal Departamento de Sistemas e Informática Guia de Exercícios Complementares de Lisp Inteligência Artificial Prof Joaquim Filipe Eng.

Leia mais

ESTRUTURA DE DADOS DCC013. Árvore Binária de Busca

ESTRUTURA DE DADOS DCC013. Árvore Binária de Busca ESTRUTURA DE DADOS DCC013 Árvore Binária de Busca Árvore Binária de Busca Propriedade fundamental da árvore binária de busca Valor da chave da raiz é Maior do que o valor da chave da subárvore da esquerda

Leia mais

ESTRUTURA DE DADOS E ALGORITMOS. Árvores Binárias de Busca. Cristina Boeres

ESTRUTURA DE DADOS E ALGORITMOS. Árvores Binárias de Busca. Cristina Boeres ESTRUTURA DE DADOS E ALGORITMOS Árvores Binárias de Busca Cristina Boeres Árvore Binária de Busca 30! construída de tal forma que, para cada nó: nós com chaves menores estão na sub-árvore esquerda nós

Leia mais

Fundamentos da Programação

Fundamentos da Programação Fundamentos da Programação Solução do Exame 13 de Janeiro de 2017 09:00 11:00 1. Indique se cada uma das seguintes afirmações é verdadeira ou falsa. No caso de ser falsa, justifique de forma sucinta. (a)

Leia mais

if not(isinstance(a, int)) or a < 0: raise ValueError ( misterio: arg devia ser inteiro nao negativo ) else: return misterio_aux(a, a + 1)

if not(isinstance(a, int)) or a < 0: raise ValueError ( misterio: arg devia ser inteiro nao negativo ) else: return misterio_aux(a, a + 1) Capítulo 7 Recursão e iteração 1. (1) Considere a seguinte função: def misterio(a): def misterio_aux(b, c): if b == 0: return True elif c == 0: return False return misterio_aux(b - 2, c - 2) if not(isinstance(a,

Leia mais

Árvores Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação

Árvores Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 Árvores Estrutura de Dados Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 2 Árvore Binária de Busca Definição: uma árvore binária de busca (ABB) é uma árvore binária na qual

Leia mais

Lógica e Programação - Folha de trabalho n. 7

Lógica e Programação - Folha de trabalho n. 7 Os exercícios 1, 2, 5, 6, 7, 8 e 12 são de Alguns Problemas de Prolog, Miguel Filgueiras, Pedro Ribeiro DCC-FCUP 2004-2006. Todos os exercícios são para ser resolvidos em linguagem Prolog. 1 Listas 1 Define

Leia mais

Árvores Rubro-Negras. Árvores Rubro-Negras. (Vermelho-Preta) Estrutura da Árvore. Estrutura da Árvore

Árvores Rubro-Negras. Árvores Rubro-Negras. (Vermelho-Preta) Estrutura da Árvore. Estrutura da Árvore Árvores Rubro-Negras Árvores Rubro-Negras (Vermelho-Preta) Árvore Binária de Pesquisa (ABP) com nodos coloridos de vermelho e preto Árvore balanceada Qualquer caminho da raiz até as folhas, nenhum caminho

Leia mais

Árvores. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo

Árvores. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo PMR2300 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó (exceto a

Leia mais

ÁRVORES BINÁRIAS DE BUSCA. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

ÁRVORES BINÁRIAS DE BUSCA. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos ÁRVORES BINÁRIAS DE BUSCA Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REFERÊNCIA Szwarcfiter, J.; Markezon, L. Estruturas de Dados e seus Algoritmos, 3a. ed. LTC. Cap. 4 INSTITUTO DE COMPUTAÇÃO

Leia mais

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó

Leia mais

Exercícios da cadeira de Inteligência Artificial. Helena Sofia Pinto João Cachopo Daniel Gonçalves Carlos Lopes António Inês Lynce Pedro Matos

Exercícios da cadeira de Inteligência Artificial. Helena Sofia Pinto João Cachopo Daniel Gonçalves Carlos Lopes António Inês Lynce Pedro Matos Exercícios da cadeira de Inteligência Artificial Helena Sofia Pinto João Cachopo Daniel Gonçalves Carlos Lopes António Inês Lynce Pedro Matos Ano Lectivo 2001/2002 1 Prefácio Este documento reúne os exercícios

Leia mais

Árvores Binárias de Busca (ABB) 18/11

Árvores Binárias de Busca (ABB) 18/11 Árvores Binárias de Busca (ABB) 18/11 Definição Uma Árvore Binária de Busca possui as mesmas propriedades de uma AB, acrescida da seguintes propriedade: Para todo nó da árvore, se seu valor é X, então:

Leia mais

Textos de apoio às aulas práticas. Jaime Ramos, Francisco Miguel Dionísio

Textos de apoio às aulas práticas. Jaime Ramos, Francisco Miguel Dionísio Computação e Programação Textos de apoio às aulas práticas Jaime Ramos, Francisco Miguel Dionísio DMIST, Dezembro de 2010 Parte I MATLAB 1 Capítulo 1 Exercícios preliminares 1. Defina a função conta divisores

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação Primeiro Teste 6 de Novembro de 200 09:00 0:30 SOLUÇÃO. (.0) Escolha a única afirmação incorrecta. Uma resposta certa vale valor e uma resposta errada desconta 0.4 valores. A.

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação Segundo Teste 6 de Janeiro de 2010 09:00 10:30 Nome: Número: Esta prova, individual e sem consulta, tem 8 páginas com 9 perguntas. A cotação de cada pergunta está assinalada

Leia mais

Fundamentos da Programação

Fundamentos da Programação Fundamentos da Programação Solução do Primeiro Teste 29 de Março de 2014 09:00 10:30 1. (1.0) O que é um processo computacional? Qual a relação entre um programa e um processo computacional? Um processo

Leia mais

Algoritmos e Estrutura de Dados II. Árvore. Prof a Karina Oliveira.

Algoritmos e Estrutura de Dados II. Árvore. Prof a Karina Oliveira. Algoritmos e Estrutura de Dados II Árvore Prof a Karina Oliveira kkco@dei.unicap.br Introdução Estruturas de dados lineares (pilha, fila) são estruturas que guardam coleções de elementos que são acessados

Leia mais

So she went on, wondering more and more at every step, as everything turned into a tree the moment she came up to it.

So she went on, wondering more and more at every step, as everything turned into a tree the moment she came up to it. Capítulo 14 Árvores So she went on, wondering more and more at every step, as everything turned into a tree the moment she came up to it. Lewis Carroll, Through the Looking Glass A árvore é um tipo estruturado

Leia mais

Tipos e Estruturas de Dados Profa. Graça Nunes Lista de Exercícios (Listas Encadeadas, Duplamente Encadeadas e Circulares)

Tipos e Estruturas de Dados Profa. Graça Nunes Lista de Exercícios (Listas Encadeadas, Duplamente Encadeadas e Circulares) Tipos e Estruturas de Dados Profa. Graça Nunes Lista de Exercícios (Listas Encadeadas, Duplamente Encadeadas e Circulares) 1. Refaça todos os itens do exercício 1 da Lista de Exercícios anterior (Listas

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação Segundo Teste 9 de Junho de 2012 9:00 10:30 Nome: Número: Esta prova, individual e sem consulta, tem 6 páginas com 12 perguntas. A cotação de cada pergunta está assinalada entre

Leia mais

Conceitos gerais Terminologia Forma de Representação de Árvores Árvores Binárias

Conceitos gerais Terminologia Forma de Representação de Árvores Árvores Binárias Conceitos gerais Terminologia Forma de Representação de Árvores Árvores Binárias Conceitos gerais Representação por Contiguidade Física Representação por Encadeamento Operações 2 Conceitos gerais Uma árvore

Leia mais

Árvores Binárias de Busca (ABB) 18/11

Árvores Binárias de Busca (ABB) 18/11 Árvores Binárias de Busca (ABB) 18/11 Definição Uma Árvore Binária de Busca possui as mesmas propriedades de uma AB, acrescida da seguintes propriedade: Para todo nó da árvore, se seu valor é X, então:

Leia mais

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó

Leia mais

Pedro Vasconcelos DCC/FCUP. Programação Funcional 16 a Aula Árvores equilibradas

Pedro Vasconcelos DCC/FCUP. Programação Funcional 16 a Aula Árvores equilibradas Programação Funcional 16 a Aula Árvores equilibradas Pedro Vasconcelos DCC/FCUP 2014 Aula anterior Operações sobre árvores binárias ordenadas: 1 pesquisa; 2 inserção; 3 remoção. Estas operações são mais

Leia mais

Algoritmos e Estrutura de Dados II. Árvore AVL. Prof Márcio Bueno. / Material da Prof a Ana Eliza

Algoritmos e Estrutura de Dados II. Árvore AVL. Prof Márcio Bueno. / Material da Prof a Ana Eliza Algoritmos e Estrutura de Dados II Árvore AVL Prof Márcio Bueno ed2tarde@marciobueno.com / ed2noite@marciobueno.com Material da Prof a Ana Eliza Árvores Binárias de Busca Objetivo da Utilização Minimizar

Leia mais

ÁRVORES E ÁRVORES BINÁRIAS. Adaptado de Alexandre P

ÁRVORES E ÁRVORES BINÁRIAS. Adaptado de Alexandre P ÁRVORES E ÁRVORES BINÁRIAS Adaptado de Alexandre P ROTEIRO Contextualização Árvores Árvores Binárias ROTEIRO Contextualização Árvores Árvores Binárias CONTEXTUALIZAÇÃO Importância de estruturas unidimensionais

Leia mais

Matemática Computacional

Matemática Computacional folha de exercícios 5 :: página 1/5 exercício 5.1. Defina a função f : R R, f(x) = 4x 4 3x 3 + 2x 2 + x. Calcule f(0), f( 1), f(4/3) e f(2.88923). exercício 5.2. Defina a função g : R R R, g(x, y) = x

Leia mais

Exercícios de Teoria da Computação Computabilidade

Exercícios de Teoria da Computação Computabilidade Licenciatura em Engenharia Informática e de Computadores - LEIC Licenciatura em Engenharia de Redes de Computadores -LERC Exercícios de Teoria da Computação Computabilidade Secção de Lógica e Computação

Leia mais

1. Proponha algoritmos para: a. Calcular a altura dos nós de uma árvore binária dada, armazenando o valor da altura no nó.

1. Proponha algoritmos para: a. Calcular a altura dos nós de uma árvore binária dada, armazenando o valor da altura no nó. 1. Proponha algoritmos para: a. Calcular a altura dos nós de uma árvore binária dada, armazenando o valor da altura no nó. b. Achar o maior elemento (campo numérico) de uma árvore binária dada. c. Trocar

Leia mais

Dados compostos. Paradigma de Programação Funcional. Marco A L Barbosa

Dados compostos. Paradigma de Programação Funcional. Marco A L Barbosa Dados compostos Paradigma de Programação Funcional Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional. Conteúdo Estruturas

Leia mais

INF 1620 P2-23/10/04 Questão 1 Nome:

INF 1620 P2-23/10/04 Questão 1 Nome: INF 1620 P2-23/10/04 Questão 1 Considere um tipo abstrato de dados para representar uma disciplina da PUC-Rio, com as seguintes informações: Nome da disciplina: com até 50 caracteres Código da disciplina:

Leia mais

Árvores Binárias de Busca

Árvores Binárias de Busca Árvores Binárias de Busca SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto

Leia mais

Árvores. N-árias, Binárias, Busca. Vanessa Maia Berny Mestrado em Ciência da Computação

Árvores. N-árias, Binárias, Busca. Vanessa Maia Berny Mestrado em Ciência da Computação Árvores N-árias, Binárias, Busca Vanessa Maia Berny Mestrado em Ciência da Computação Disciplina de Estrutura de Dados Prof. Dr. Luzzardi, Paulo Roberto Gomes Abril de 2008 Árvores N-árias São estruturas

Leia mais

Exercícios da cadeira de Introdução à Programação

Exercícios da cadeira de Introdução à Programação Exercícios da cadeira de Introdução à Programação Cláudia Antunes Ana Cardoso Cachopo João Cachopo Francisco Couto António Leitão Inês Lynce César Pimentel H. Sofia Pinto Ano Lectivo 2002/2003 Parte II

Leia mais

Aula 08. Estruturas de dados Árvore e Grafo

Aula 08. Estruturas de dados Árvore e Grafo Logo Aula 08 Estruturas de dados Árvore e Grafo 2 Árvore Estruturas estudadas até agora não são \ adequadas para representar dados que devem ser dispostos de maneira hierárquica Ex., hierarquia de pastas

Leia mais

Fundamentos da Programação

Fundamentos da Programação Fundamentos da Programação Solução da Repescagem do Primeiro Teste 31 de Janeiro de 2013 09:00 10:30 1. De um modo sucinto, (a) (0.5) Diga o que é um processo computacional. Um processo computacional é

Leia mais

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Árvores (parte 2) Estruturas de Dados 2 Organização dos dados: Linear: Listas, pilhas, filas. Relação sequencial.

Leia mais

Linguagem Haskell. Maria Adriana Vidigal de Lima

Linguagem Haskell. Maria Adriana Vidigal de Lima em Haskell Linguagem Haskell Faculdade de Computação - UFU Dezembro - 2009 em Haskell 1 em Haskell Noções sobre Fundamentos em Haskell Noções sobre Uma árvore é uma estrutura de dados baseada em listas

Leia mais

1 a LISTA DE EXERCÍCIOS Sistemas de Equações Lineares e Matrizes Álgebra Linear - 1 o Semestre /2018 Engenharia Aeroespacial

1 a LISTA DE EXERCÍCIOS Sistemas de Equações Lineares e Matrizes Álgebra Linear - 1 o Semestre /2018 Engenharia Aeroespacial 1 a LISTA DE EXERCÍCIOS Sistemas de Equações Lineares e Matrizes Álgebra Linear - 1 o Semestre - 217/218 Engenharia Aeroespacial Problema 1 Calcule A 2 2B + I, ( ( 2 1 onde A =, B =, e I é a matriz identidade

Leia mais

Árvores binárias de busca

Árvores binárias de busca Árvores binárias de busca SCC-214 Projeto de Algoritmos Thiago A. S. Pardo Árvore binárias Árvores de grau 2, isto é, cada nó tem dois filhos, no máximo Raiz D B A E C F Terminologia: filho esquerdo filho

Leia mais

Árvores. Prof. César Melo DCC/ICE/UFAM

Árvores. Prof. César Melo DCC/ICE/UFAM Árvores Prof. César Melo DCC/ICE/UFAM Introdução As estruturas anteriores são chamadas de unidimensionais (ou lineares) Exemplo são vetores e listas Não adequadas para representar hierarquias. Exemplo:

Leia mais

PROCURA E PLANEAMENTO

PROCURA E PLANEAMENTO PROCURA E PLANEAMENTO Primeiro Exame 10 de Janeiro de 2012 9:00-11:30 Este exame é composto por 16 páginas contendo 6 grupos de perguntas. Identifique já todas as folhas do exame com o seu nome e número.

Leia mais

Fundamentos da Programação

Fundamentos da Programação Fundamentos da Programação Solução do Exame 1 de Fevereiro de 2017 09:00 11:00 1. Usando palavras suas e, no máximo, em três linhas explique os seguintes conceitos. Explicações dadas através de exemplos

Leia mais

INF 1010 Estruturas de Dados Avançadas. Árvores binárias

INF 1010 Estruturas de Dados Avançadas. Árvores binárias INF 1010 Estruturas de Dados Avançadas Árvores binárias 1 Árvore estrutura hierárquica: A B E F C D G A B C E F D G A B C D E F G (A (B (E, F)), C, (D (G))) 05/09/16 2 Árvore - definições árvore: nó raiz

Leia mais

ESTRUTURA DE DADOS. Árvores, árvores binárias e percursos. Cristina Boeres

ESTRUTURA DE DADOS. Árvores, árvores binárias e percursos. Cristina Boeres ESTRUTURA DE DADOS Árvores, árvores binárias e percursos Cristina Boeres 2 Árvores! utilizada em muitas aplicações! modela uma hierarquia entre elementos árvore genealógica diagrama hierárquico de uma

Leia mais

Trabalho Prático 1. Valor: 1,0 pontos (10% da nota total) Data de Entrega: 02/05/2010

Trabalho Prático 1. Valor: 1,0 pontos (10% da nota total) Data de Entrega: 02/05/2010 Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Biológicas Programa de Pós-Graduação em Ciência da Computação Projeto e Análise de Algoritmos - 1 o semestre de 2010 Professor: David Menotti

Leia mais

Técnicas de projeto de algoritmos: Indução

Técnicas de projeto de algoritmos: Indução Técnicas de projeto de algoritmos: Indução ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo dbeder@usp.br 08/2008

Leia mais

INF1010 Lista de Exercícios 2

INF1010 Lista de Exercícios 2 INF00 Lista de Exercícios 2 Árvores. Construir algoritmo para dada uma árvore n-ária, transformá-la em uma árvore binária. 2. Qual a maior e menor quantidade de nós que podem existir em uma árvore binária

Leia mais

(a) Indique, em português, o que realiza a seguinte função. [4 pontos]

(a) Indique, em português, o que realiza a seguinte função. [4 pontos] Universidade Federal do ABC Avaliação: Prova 02 Disciplina: MCTA028 - Programação Estruturada Turma: Noturno - A1 Professor: Jesús P. Mena-Chalco Data: 01/12/2016 Nome completo: RA: Instruções para a prova

Leia mais

Fundamentos da Programação

Fundamentos da Programação Fundamentos da Programação Solução do Primeiro Teste 26 de Outubro de 2013 09:00 10:30 1. (1.0) O que é um processo computacional? Qual a relação entre um programa e um processo computacional? Um processo

Leia mais

Fundamentos da Programação

Fundamentos da Programação Fundamentos da Programação Solução do Primeiro Teste 27 de Outubro de 2012 09:00 10:30 1. (1.0) O que é um processo computacional? Qual a relação entre um programa e um processo computacional? Um processo

Leia mais

Listas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.

Listas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof. Listas Estáticas SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de

Leia mais

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Árvores (parte 4) Estruturas de Dados 2 Organização dos dados: Linear: Listas, pilhas, filas. Relação sequencial.

Leia mais

Introdução a AVL: teoria e prática. 22/11, 25/11 e 30/11

Introdução a AVL: teoria e prática. 22/11, 25/11 e 30/11 Introdução a AVL: teoria e prática 22/11, 25/11 e 30/11 Árvores binárias de busca (ABB) Árvores de grau 2, isto é, cada nó tem dois filhos, no máximo Raiz B A C Terminologia: filho esquerdo filho direito

Leia mais

Fundamentos da Programação

Fundamentos da Programação Fundamentos da Programação Solução do exame 12 de Janeiro de 2018 09:00 11:00 1. Indique se cada uma das seguintes afirmações é verdadeira ou falsa. No caso de ser falsa, justifique de forma sucinta. (a)

Leia mais

Árvores. Prof. César Melo DCC/ICE/UFAM

Árvores. Prof. César Melo DCC/ICE/UFAM Árvores Prof. César Melo DCC/ICE/UFAM Introdução As estruturas anteriores são chamadas de unidimensionais (ou lineares) Exemplo são vetores e listas Não podem ser usadas como hierarquias. Exemplo: árvore

Leia mais

MCTA001 Algoritmos e Estruturas de Dados I. Aula 08 Árvores (parte 1) Laboratório

MCTA001 Algoritmos e Estruturas de Dados I. Aula 08 Árvores (parte 1) Laboratório MCTA001 Algoritmos e Estruturas de Dados I Aula 08 Árvores (parte 1) Laboratório 1Q-19 1 2 Árvore binária de busca (ABB) Inventada por P.F. Windley, A.D. Booth, A.J.T. Colin, e T.N. Hibbard em 1960. É

Leia mais

ALGORITMOS AVANÇADOS. UNIDADE V Estruturas de dados dos tipos Árvore Binária e Árvore AVL. Luiz Leão

ALGORITMOS AVANÇADOS. UNIDADE V Estruturas de dados dos tipos Árvore Binária e Árvore AVL. Luiz Leão UNIDADE V Estruturas de dados dos tipos Árvore Binária e Árvore AVL Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático 5.1 - Árvores, Árvores Binárias e Árvores Binárias de Busca

Leia mais

INF 1620 P3-25/11/05 Questão 1 Nome:

INF 1620 P3-25/11/05 Questão 1 Nome: INF 1620 P3-25/11/05 Questão 1 Dizemos que uma matriz quadrada é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos de cada coluna e a soma dos elementos de sua diagonal principal

Leia mais

Edital de Seleção 032/2016 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Edital de Seleção 032/2016 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões Edital de Seleção 032/2016 PROPESP/UFAM Prova de Conhecimento Caderno de Questões CANDIDATO: INSCRIÇÃO: Assinatura conforme identidade INSTRUÇÕES PARA O CANDIDATO: Verifique o seu nome e o número da sua

Leia mais

SCC Algoritmos e Estruturas de Dados II. 6ª lista de exercícios

SCC Algoritmos e Estruturas de Dados II. 6ª lista de exercícios DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÂO SCC0203 - Algoritmos e Estruturas de Dados II 6ª lista de exercícios Questão 1 Explique a seguinte sentença: Árvores-B são construídas de baixo para cima, enquanto

Leia mais

Exercícios para Fundamentos da Programação Utilizando Múltiplos Paradigmas

Exercícios para Fundamentos da Programação Utilizando Múltiplos Paradigmas Exercícios para Fundamentos da Programação Utilizando Múltiplos Paradigmas Pedro Adão, Fausto Almeida, Ana Cardoso-Cachopo, Pedro Amaro de Matos (editores) Departamento de Engenharia Informática Instituto

Leia mais

Árvores Binárias de Busca

Árvores Binárias de Busca 0. Um breve comentário sobre os algoritmos de busca em tabelas De uma maneira geral, realizam-se operações de busca, inserção e remoção de elementos numa tabela. A busca sequencial tradicional é O(N).

Leia mais

Classificação Externa: Intercalação de Partições Classificadas

Classificação Externa: Intercalação de Partições Classificadas Classificação Externa: Intercalação de Partições Classificadas Vanessa Braganholo Baseado no Material de: Inhaúma Neves Ferraz (IC/UFF) Relembrando: Modelo da Classificação Externa 2 Aula Passada: Etapa

Leia mais

ÁRVORE BINÁRIA DE BUSCA

ÁRVORE BINÁRIA DE BUSCA ÁRVORE BINÁRIA DE BUSCA Introdução O algoritmo de busca binária em vetores tem bom desempenho e deve ser usado quando temos os dados já ordenados. No entanto, se precisarmos inserir e remover elementos

Leia mais

Grupo 2 - Implementação de uma Classe Simples

Grupo 2 - Implementação de uma Classe Simples Estruturas de Dados 2017/2018 Época Normal (15 de Junho de 2018) Versão A Duração: 2h30m + 30m Número mecanográco: Nome completo do estudante: Grupo 1 - Fundamentos de Java 1.1. Escreva pequenos excertos

Leia mais

INF 1620 P4-09/07/03 Questão 1 Nome:

INF 1620 P4-09/07/03 Questão 1 Nome: INF 1620 P4-09/07/03 Questão 1 Um ponto geométrico no espaço 2D é representado pelas coordenadas reais x e y. Considere uma aplicação que precisa manipular pontos, através da implementação de duas funções.

Leia mais

Árvores AVL e Árvores B. Jeane Melo

Árvores AVL e Árvores B. Jeane Melo Árvores AVL e Árvores B Jeane Melo Roteiro Árvores Binárias Árvores AVL Definição Motivação Balanceamento Operações de rebalanceamento Árvores B Introdução Árvores Binárias Árvores binárias Cada nó tem

Leia mais

Estruturas de Informação Árvores B ÁRVORES B

Estruturas de Informação Árvores B ÁRVORES B ÁRVORES B Até agora manipulamos a estrutura árvore binária em memória principal. Também queremos no entanto guardar árvores em disco e carregar a informação do disco para a memória principal, quando precisamos

Leia mais

UFJF - DCC - Estrutura de Dados e Laboratório de Programação II

UFJF - DCC - Estrutura de Dados e Laboratório de Programação II UFJF - DCC - Estrutura de Dados e Laboratório de Programação II Árvore Binária (AB) 1. Considerar os tipos abstratos de dados definidos a seguir. Para o nó de uma árvore binária de números inteiros: class

Leia mais

MA21 (2015) - Teste - Gabarito comentado. Problema 1 (OBM 2005) Na sequência de números

MA21 (2015) - Teste - Gabarito comentado. Problema 1 (OBM 2005) Na sequência de números MA21 (2015) - Teste - Gabarito comentado Problema 1 (OBM 2005) Na sequência de números 1, a, 2, b, c, d,... dizemos que o primeiro termo é 1, o segundo é a, o terceiro é 2, o quarto é b, o quinto é c e

Leia mais

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Árvores (parte 3) Estruturas de Dados 2 Organização dos dados: Linear: Listas, pilhas, filas. Relação sequencial.

Leia mais

Edital de Seleção 053/2016 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Edital de Seleção 053/2016 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões Edital de Seleção 053/2016 PROPESP/UFAM Prova de Conhecimento Caderno de Questões CANDIDATO: INSCRIÇÃO: Assinatura conforme identidade INSTRUÇÕES PARA O CANDIDATO: Verifique o seu nome e o número da sua

Leia mais