A Ciências da Computação
Por: Floriano Dos Santos • 6/6/2018 • Exam • 747 Palavras (3 Páginas) • 189 Visualizações
[pic 1]
Universidade Agostinho Neto
Faculdade de Ciências
Departamento de Matemática, Engenharia Geográfica e
Ciências da Computação
Programação Funcional
Exame B – Recurso 15 de Dezembro de 2010
[pic 2]
Nome: ___________________________________________________ Nº de Aluno: _______
Curso: _______________________________________________________________________
Turno: _______
Classificação | Observação |
Resultado: | |
Programação Funcional
Exame B – Recurso 15 de Dezembro de 2010
[pic 3]
ATENÇÃO:
- Não é permitida a utilização de auscultadores ou telemóvel durante o exame.
- Não é permitido sair da sala temporariamente durante a realização da prova.
- A duração do exame é de 2 horas (2 horas, tolerância incluída) e só poderá haver desistências do exame após a 1ª hora.
- As cotações das perguntas encontram-se entre parênteses ( ) e não serão respondidas perguntas durante o exame.
- As respostas de escolha múltipla serão descontadas 25% do seu valor para as escolhas erradas.
- Se considerar alguma questão ambígua, documente a ambiguidade e explique como a interpretou junto à resposta. Face às eventuais ambiguidades, não perca demasiado tempo a explicar a sua interpretação e não trivialize a questão conduzindo a uma resposta óbvia.
- O exame é efectuado sem consulta e todas as respostas são dadas directamente neste enunciado, nos espaços reservados.
- Antes da resposta final, utilize folhas de rascunho de modo a não “sujar” este enunciado.
- As respostas muito rasuradas e de difícil compreensão poderão não ser corrigidas.
- É expressamente proibido “desagrafar” qualquer folha do enunciado (nem mesmo as de rascunho).
- Não é possível levar o enunciado da prova (nem mesmo em caso de desistência).
- A detecção de fraude implica a reprovação dos alunos envolvidos, tanto dos que copiam com dos que permitam fazê-lo.
- BOA SORTE
[pic 4]
- (2.0 valores) Descreva três (3) exemplos de variáveis para cada um dos tipos de dados caso exista:
a) | [Bool]:: | [true,false] |
b) | [[Bool], [Char], [Int]] ::[[true],[`a`],[12]] | |
c) | [(Int, Char, Char), (Char, Int, Char) ]:: [(12,´b´,´c´,),(´a´,12,´as´)] | |
d) | [[Float]]:: | [[21.12]] |
- (3.5 valores) Faça uma função em Haskell, que calcule a média de todos de elementos de uma lista.
SomaMedia::[int]->[int]
SomaMedia[]=0
SomaMedia1= soma1
SomoMedia n = soman+soma(n-1)
Media SomaMedia=somaMedian/fromInt n
- (2.5 valores) Faça uma função em Haskell que receba três inteiros a, b, c e some os dois primeiros, a e b, se o resultado desta soma for maior c senão some os três valores a, c.
Maior::(int->int->int)->int
Maior(a,b,c)
maiorS=a+b
\maiorS>c=true
\otherwisesomas=a+b+c= true
- (5.0 valores) Usando este tipo algébrico recursivo (data Arvore = Null | Node Int Arvore Arvore). Faça uma função contador que calcule e devolva o número total de nós de uma árvore. Exemplo:
10
/ \ ⬄ 5
12 22
/ \
6 4
...