Você está na página 1de 2

4ª Lista de exercícios de Programação I

Atenção:
A resolução dessa lista deve ser publicada na sua página no pbworks. A resolução dos
problemas do Exercício 3 deve ser por descrição por listas (list comprehension).

Escreva um script em Haskell de nome exercicio-Lista5.hs, com as soluções das questões dessa
lista.

Exercício 1: Teste as seguintes funções e comente o seu comportamento.

a) foo0 = compare 2 (mod 17 2) == EQ

A classe de tipo Ordering tem como valores EQ, LT e GT, significando igual, menor que e maior
que. A função compare compara dois valores e determina se eles são iguais (EQ), se o primeiro é
menor que o segundo (LT) ou se é maior que o segundo (GT).

b) foo1 = x + y
where x = y
y=2

c) foo2 = x + y
where x = y
where y = 2

d) foo3 x = if( x <= 30 ) then 'D'


else if( x <= 50 ) then 'C'
else if( x <= 80 ) then 'B'
else 'A'

Exercício 2: Para cada uma das expressões abaixo, faça o que se pede:
I) Escreva descrições usando listas, para as seguintes listas constantes:
a) múltiplos de 5 maiores que 0 e menores que 80;
b) meses de um ano;
c) número de dias por cada mês de um ano;
d) dias da semana;
e) relação das disciplinas em que você está matriculado.

II) Escreva as listas resultantes das descrições abaixo e depois compare com a resposta da avaliação
da lista no interpretador:
a) [3*5, 4*5+2.. 100 - 5]
b) [2, 2*2 .. 4 * 5]
c) f x r t = [x, x + r .. t]

Exercício 3: Escreva um script com as definições das funções a seguir, de maneira que:
i) identifique e utilize, quando necessário, a modularização
ii) sejam definições genéricas
iii) use definição local apenas quando necessário (promovendo a legibilidade do programa)
iv) comente seu código sempre que possível
v) resolva utilizando descrição por listas

a) Obter o menor valor de uma lista de números.


b) Dada uma lista xs, fornecer uma dupla contendo o menor e o maior elemento dessa lista.
c) Produzir uma lista dos múltiplos de um dado número n, menores ou iguais a um dado limite lim.
Exemplo: g 5 20 -> [5, 10, 15, 20]
d) Dividir uma lista pela metade e apresentar cada uma das partes em uma dupla. Exemplo:
divideLista [1,3,5,8,15] = ([1,3],[5,8,15] )
e) Duplicar os elementos de uma lista. Exemplo: duplicaLista [1,2,3] -> [1,1,2,2,3,3]
f) Dadas duas listas de elementos distintos, determinar a união delas.
g) Dadas duas listas de elementos distintos, determinar a interseção delas.
h) Calcule a distância de Hamming entre dois números inteiros que possuam, cada um, exatamente
n algarismos. A distância de Hamming corresponde ao número de algarismos que diferem em suas
posições correspondentes.
i) Dada uma lista l, contendo uma quantidade igual de números inteiros pares e ímpares (em
qualquer ordem), defina uma função que, quando avaliada, produz uma lista na qual esses números
pares e ímpares encontram-se alternados. Exemplo: alternaLista [10,2,31,45,6,18,5,20,15,19] ->
[10,31,2,45,6,5,18,15,20,19]
j) Implemente as funções take e drop.
k) Verificar se um caracter dado como entrada é uma letra.
l) Verificar se um caracter dado como entrada é um dígito.
m) Verificar se uma cadeia de caracteres é uma palavra (ou seja, é formada apenas de letras).
n) Verificar se uma cadeia de caracteres representa um número inteiro positivo (ou seja, a cadeia de
caracteres só é formada por dígitos).
o) Dada uma cadeia de caracteres, contar o número de ocorrências de vogais, para cada vogal.

Você também pode gostar