Вы находитесь на странице: 1из 3

Universidad Tecnolgica Nacional Paradigmas de Programacin

Facultad Regional Tucumn Trabajo Prctico N 1 Ciclo 2016


U.T.N. - F.R.T.

Tema: Paradigma Funcional Haskell


Objetivos: Introduccin. Lenguaje Haskell 98. Conceptos bsicos, caractersticas. La biblioteca Prelude.
Clculo Lambda.

1. Problemas a resolver

1. Usted debe encontrar la solucin a los siguientes problemas desde la lnea de comandos de
WinHugs (Hugs>) utilizando las funciones predefinidas en las bibliotecas Prelude y Hugs.
Utilizar la bibliografa recomendada (Razonando con Haskell) e investigue sobre las
soluciones que se pueden encontrar.

a) Dar ejemplos con operadores matemticos y funciones trigonomtricas.

b) Definir los tipos de datos nativos simples de Haskell y ejemplificar cada uno de ellos.

c) Ejemplifique tuplas y listas de tuplas.

d) Dado una lista de elementos, calcular el producto.

e) Calcular la suma de los elementos de una lista.

f) Contatenar listas, ejemplificar con listas de distintos tipos de datos.

g) Utilizando funciones(head, last, tail, reverse, take, elem, notElem, !!, drop, lengh,
words, unwords) en listas. Dar ejemplo e indique para que se usan cada una.

2. Definir listas por compresin desde la lnea de comando. Utilizar una lista [1..10], para
encontrar solucin a los siguientes resultados:

a) [(11,12),(13,14),(15,16),(17,18),(19,20)]

b) [10,9,8,7,6,5,4,3,2,1]

c) [[2],[4],[6],[8],[10]]

d) [11,12,13,14,15,16,17,18,19,20]

e) [True,False,True,False,True,False,True,False,True,False]

f) [(3,True),(6,True),(9,True),(12,False),(15,False),(18,False)]

g) [[5,6,7],[5,6,7,8,9],[5,6,7,8,9,10,11],[5,6,7,8,9,10,11,12,13]]

3. Editando bibliotecas propias (archivos .hs), desarrollar funciones que encuentren las soluciones
a:

a. Varias formas de resolver el factorial de un numero entero positivo.


Universidad Tecnolgica Nacional Paradigmas de Programacin
Facultad Regional Tucumn Trabajo Prctico N 1 Ciclo 2016
U.T.N. - F.R.T.

b. Dada una lista de nmeros encontrar el mayor.

c. Varias formas de definir una funcin mximo:(Integer, Integer)->Integer que


devuelva el mayor de sus dos argumentos.

d. Escribe una funcin horaminseg::Integer->(Integer,Integer,Integer), dada una


cantidad de segundos, devuelva las horas, minutos y segundos segn
corresponda.

e. Dada una tupla de tres nmeros enteros, define una funcin que incremente todos
sus elementos.

f. Contar cuantos elementos pares hay en una lista. (lista por compresin).

4. Resolver utilizando recursividad y comprueba si todos los elementos de una lista son
verdaderos.

1. demuestra1 ::[Bool]->Bool Ejemplo: demuestra1 [1*3 < 6, 3:[4]==[3,4]] == True

2. Dada una secuencia de letras o palabra invertir la misma.

Ejemplo: invertirSecR "Paradigmas 2016" == 6102 samgidaraP

3. Comprueba si un numero pertenece a una lista. elementoR :: Eq a => a -> [a] -> Bool

Ejemplo: elementoR 7 [4,7,3] == True

4. Definir una funcin listaduplas y todas las funciones necesarias que reciba como
parmetros dos listas de elementos, y devuelva una lista de duplas conformadas de la
siguiente manera:

Ejemplos:

listaduplas [5, 6, 7] [sara, pedro, jose]

[(7, "jose"), (3, "sara"), (6, "pedro")]

listaduplas ['r', 's', 't', 'w'] [1, 2, 3, 4]

[('r', 4),('w', 1),('s', 3),('t', 2)]

5. Partiendo de una pareja, cuntas parejas de conejos obtendremos despus de un nmero


dado de meses sabiendo que cada pareja al mes tiene una nueva pareja de bebs, la cual
no tendr conejos hasta que sea adulta, lo que ocurre a los dos meses de nacer.

6. Cree un programa que importe la librera Data.Char y contenga dos funciones: una
funcin para encriptar un texto, y otra funcin para desencriptar texto. Que funcione por
ejemplo de esta forma
Universidad Tecnolgica Nacional Paradigmas de Programacin
Facultad Regional Tucumn Trabajo Prctico N 1 Ciclo 2016
U.T.N. - F.R.T.

Main> encriptar "hola como estas"


"ipmb!dpnp!ftubt"
Main> desencriptar "ipmb!dpnp!ftubt"
"hola como estas"
7. Devolver una lista de nmeros primos de 1 a n: Para ello debemos crear nuestra funcin
para saber si un nmero es primo o no y despus la aplicamos a la lista por comprensin,
de la siguiente forma:

Main> primos 100


[1,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97]
8. Desarrollar una funcin mayorDist (todas las auxiliares necesarias) que devuelva una 3-
upla al recibir una lista de listas de enteros. La 3-upla resultante deber contener lo
siguiente : el primer elemento es la mayor de las diferencias entre el entero menor y el
mayor de cada sublista; el segundo es el elemento menor de dicha sublista, y el tercero, el
elemento mayor de dicha sublista.

Ejemplo:

mayorDist [[1,5,2], [4,6,9,2], [8,3,5], [5,11]] -> (7,2,9)

EQUIPO DE TRABAJO

N DIVISIN: PROFESOR: FECHA DE ENTREGA


GRUPO AUXILIAR:

LEGAJO APELLIDO Y NOMBRE FIRMA

Вам также может понравиться