Vous êtes sur la page 1sur 7

Universidad Tecnolgica Nacional Paradigmas de Programacin Paradigmas de Programacin

Facultad Regional Tucumn Trabajo Prctico N 1 Ciclo 2014


UTN ! FRT
Tema" Paradigma F#ncional $as%ell
Objetivos: Introduccin. Lenguaje Haskell 98. Conceptos bsicos, caractersticas. La biblioteca
!relude. Clculo La"bda.
1.1. Dada la siguiente declaracin de funcin que calcula el doble de su argumento:
doble
:: Integer Integer
doble x = x + x
Calcular el valor de la expresin 5*doble 3 , mediante reduccin de expresiones.
Calcular el dobledoble3! utili"ando reduccin de expresiones en orden aplicativo #
normal
1.$. Defina una expresin que calcule el coseno de $pi.
1.3. %robar en &as'ell # luego indicar que devuelve en cada caso:
a! (, )a), *gato*!
b! :t (, )a), *gato*!
c! :t )a), *"apato*!
d! :t *+as'ell*,*matematica*!
e! :t ,rue, 5!
f! :t -.-,* pepito *!
g! :t *cualquiera*,3.1(,/alse!!
1.(. Definir una funcin que devuelva el predecesor # el sucesor del argumento como una
tupla.
1.5. Definir una funcin recursiva fact que calcule el factorial de un numero natural
+aciendo uso de patrones.
1.0. Definir la funcin maxEnt entre $ n1meros enteros utili"ando una expresin condicional
# plantear la misma funcin con guarda.
1.2. Con expresin lambda una funcin una expresin lambda que calcule la suma de
cuadrados.
1.3. Consideremos la siguiente funcin
dosVeces
:: (Integer Integer ) Integer Integer
dosVeces f x = f (f x )
4Cu5l es el tipo de la siguiente funcin.
fun = dosVeces (+1)
6scribe una 78expresin equivalente a la funcin fun .
1. Problemas a resolver en clase
Universidad Tecnolgica Nacional Paradigmas de Programacin Paradigmas de Programacin
Facultad Regional Tucumn Trabajo Prctico N 1 Ciclo 2014
UTN ! FRT
6scribe una seccin equivalente a la funcin fun
1.9. Define una funcin que devuelva:
,odos los segmentos iniciales de una lista:
? inits [1, 2, 3]
[ [ ], [1], [1, 2], [1, 2, 3] ]
:: [[Integer ]]
:os segmentos finales de una lista:
? tails [1, 2, 3]
[ [1, 2, 3], [2, 3], [3], [ ] ]
:: [[Integer ]]
:os segmentos de datos consecutivos de una lista:
? segs [1, 2, 3]
[ [ ], [1], [2], [3], [1, 2], [2, 3], [1, 2, 3] ] :: [[Integer ]]
;ota: no es necesario que los resultados apare"can en el mismo orden que
en los e<emplos.
1.1=. De>nir por recursin la funcin sumar%ositivo :: ?@ntegerA 8B @nteger tal que
sumar%ositivo xs! es la suma de los n1meros positivos de xs
6<: sumarPositivo [0,-1,3,-4,8,-1] == 12
1.11. Definir por comprensin, la funcin listaCuadradosC :: ?@ntegerA 8B ?@ntegerA, tal que
listaCuadradosC xs! es la lista de los cuadrados de xs.
6<: listaCuadradosC ?1,$,5A CCB ?1,(,$5A
Universidad Tecnolgica Nacional Paradigmas de Programacin Paradigmas de Programacin
Facultad Regional Tucumn Trabajo Prctico N 1 Ciclo 2014
UTN ! FRT
$.1 Dean las siguientes definiciones
doble
:: Integer Integer
doble x = x + x
cuadruple:: Integer Integer
cuadruple x = doble (doble x )
Eeduce la expresin cuadruple 1 F $! utili"ando orden aplicativo, orden normal #
evaluacin pere"osa.
2.2 Defina una expresin que calcule el volumen de un cilindro radio 5 cm
altura 1= cm.
$.3 6n caso de que sean correctas, 4Cu5l es el tipo de las siguientes expresiones. Di no
son correctas indica porqueG .
(True , True )
(True , False )
(True , a, False)
(1 > 7, even 4, isUpper a )

[a, b, c ]
abc
$.( ,upla. Definir una funcin que dado dos puntos de coordenadas en un plano devuelva
la distancia entre ellos.
$.5 6scribe una funcin que devuelva el i8Hsimo n1mero de la sucesin de fibonacci. 6ste
sucesin tiene como primer terrmino =, como segundo 1, # cualquier otro termino se
obtiene sumado los dos que le preceden, es decir la secuencia es =, 1, 1, $, 3, 5, 3,
13, . . .. %or e<emplo:
? fibonacci 0
0 :: Integer
? fibonacci 6
8 :: Integer
$.0 6l argumento de la funcin indica la posicin dentro de la secuencia del elemento que
queremos obtener. Consideraremos que el primer elemento de la secuencia tiene
2 Problemas Pro&#estos
Universidad Tecnolgica Nacional Paradigmas de Programacin Paradigmas de Programacin
Facultad Regional Tucumn Trabajo Prctico N 1 Ciclo 2014
UTN ! FRT
posicin cero. Definir una funcin recursiva que calcule la sucesion de fibonacci,
+aciendo uso de patrones.

$.2 Definir la funcin minEnt entre 3 n1meros enteros utili"ando una expresin condicional
# luego plantear la misma funcin con guarda
$.3 Con expresin lambda una funcin una expresin lambda que calcule la superficie de
un rect5ngulo
$.9 6scribe una funcin que determine si un aIo es bisiesto, utili"ando una expresin
condicional # plantear la misma funcin con guarda.. Jn aIo es bisiesto si es m1ltiplo
de ( por e<emplo 193(!. Jna excepcin a la regla anterior es que los aIos m1ltiplos
de 1== slo son bisiestos cuando a su ve" son m1ltiplos de (== por e<emplo 13== no
es bisiesto, mientras que $=== lo ser5! :
? esBisiesto 1984
True:: Bool
$.1= 6scribe una funcin derivada que devuelva la derivada de una funcin de reales en
reales usando la siguiente definicin %ara aproximar el lKmite, simplemente eval1a la
expresin con un valor pequeIo para L!:
f
0
x = l
f (x + !)

f x
"#r e$e%l#:
coseno :: Float Float
!
0 !
coseno = derivada sin
? derivada s!rt 1"0
0"499487 :: Float
? coseno 0"0
1"0 :: Float
4Cu5l es el tipo de la funcion derivada .
$.11 Eeali"ar una funcin de recursin que multiplique $ n1meros sin usar el operador
de multiplicacin.
$.1$ &aciendo uso de la lista ?1..1=A definir las siguientes listas por comprensin.
lista1 C ?11,1$,13,1(,15,10,12,13,19,$=A
lista$ C ??$A,?(A,?0A,?3A,?1=AA
lista3 C ?1=,9,3,2,0,5,(,3,$,1A
lista( C ?,rue,/alse,,rue,/alse,,rue,/alse,,rue,/alse,,rue,/alseA
Universidad Tecnolgica Nacional Paradigmas de Programacin Paradigmas de Programacin
Facultad Regional Tucumn Trabajo Prctico N 1 Ciclo 2014
UTN ! FRT
lista5 C ?3,,rue!,0,,rue!,9,,rue!,1$,/alse!,15,/alse!,13,/alse!A
lista0 C ?11,1$!,13,1(!,15,10!,12,13!,19,$=!A
lista2 C ??5,0,2A,?5,0,2,3,9A,?5,0,2,3,9,1=,11A,?5,0,2,3,9,1=,11,1$,13AA
$.13 Definir la funcin suma tal suma n! es la suma de los n primeros n1meros.
Universidad Tecnolgica Nacional Paradigmas de Programacin Paradigmas de Programacin
Facultad Regional Tucumn Trabajo Prctico N 1 Ciclo 2014
UTN ! FRT
$.1( Definir, por comprensin, la funcin sumaConsecutivos :: ?@ntA 8B ?@ntA tal que
sumaConsecutivos xs! es la suma de los pares de elementos consecutivos de la lista
xs.
$.15 Definir por recursin la funcin borra :: 6q a CB a 8B ?aA 8B ?aA tal que borra x xs! es
la lista obtenida borrando una ocurrencia de x en la lista xs.
3.1 6n caso de que sean correctas, 4Cu5l es el tipo de las siguientes expresiones. Di no
son correctas indica porquH .
(True , (a

, False ))
isUpper
isUpper a
[True,#a#, False ]
([True , False ],a
)
3.$ Definir una funcin maximo::@nteger, @nteger!8B@nteger que devuelve el ma#or de sus
dos argumentos.
3.3 Definir una funcin par::@nteger8BMool que indica si su argumento es par Dugerencia:
Jtili"ar el operador NmodN!.
3.( Definir por recursin funcin listaCuadradosE :: ?@ntegerA 8B ?@ntegerA, Eeali"ar el
calculo para listaCuadradosE?1,3,3A!.
3.5 Definir la funcin por recursin imparesC :: ?@nteger A8B ?@ntegerA tal que imparesC xs!
es la lista de los n1meros impares de xs.
%or e<emplo: imparesC ?1,$,3A CCB ?1,3A
3.0 De>nir la funcin potencia$ :: @nteger 8B @nteger 8B @nteger tal que potencia x n! es xn
usando la siguiente propiedad:
3.2 De>nir la funcin eliminaDuplicados1 :: 6q a CB ?aA 8B ?aA tal que eliminaDuplicados
xs! es una lista que contiene los mismos elementos que xs pero sin duplicados.
' Problemas (dicionales
Universidad Tecnolgica Nacional Paradigmas de Programacin Paradigmas de Programacin
Facultad Regional Tucumn Trabajo Prctico N 1 Ciclo 2014
UTN ! FRT
3.8 De>nir, por comprensin, la funcin enEangoC :: @nt 8B @nt 8B ?@nt] 8B ?@nt] tal que
enEangoC a b xs! es la lista de los elementos de xs menores o iguales que a #
menores o iguales que b. %or e<emplo,
enEangoC 5 1= ?1..15] CCB ?5,0,2,3,9,1=] Dada dos listas de enteros, devolver de la
primera lista los que son m1ltiplos de la segunda
3.9 Definir la funcin calcula%i tal que calcula%i n! es la aproximacin del n1mero pi
calculada mediante la expresin (*1 8 1O3 F 1O5 8 1O2 F ...F 81!**nO$*nF1!!
EQUIPO DE TRABAJO
&'
()*"+
,-.-/-0&: ")+12/+): 12345 ,2 2&T)2(5
5*6-7-5):
LEGAJO APELLIDO Y NOMBRE FIRMA

Vous aimerez peut-être aussi