Documentos de Académico
Documentos de Profesional
Documentos de Cultura
LENGUAJES Y PARADIGMAS
DE PROGRAMACIÓN
(CUESTIONES DE EXAMEN)
PROGRAMACIÓN FUNCIONAL
Marı́a Alpuente y Marı́a José Ramı́rez
1
LENGUAJES Y PARADIGMAS: INTRODUCCIÓN
2
4. Indica cuál de las siguientes afirmaciones es falsa.
A semántica axiomática
B semántica operacional
C semántica denotacional
D semántica algebraica
3
8. Indica cuál de las siguientes afirmaciones es cierta.
A su gramática generadora.
B su compilador.
C su analizador sintáctico.
D su semántica.
4
12. Indica cuál de las siguientes afirmaciones sobre la programación declarativa
en comparación con la programación imperativa es FALSA:
A semántica operacional.
B semántica axiomática.
C semántica por punto fijo.
D semántica denotacional.
5
PROGRAMACIÓN FUNCIONAL
[a] → Int
A [ ], →
B a, Int
C [a], →, Int
D a
A [a] → Bool
B [Int] → Bool
C Int → Bool
D Bool
pippo x
|x>0 =0
| otherwise = “double′′
A (·) :: a → c
B (·) :: (b → c) → (a → b)
C (·) :: (b → c) → (a → b) → a → c
D (·) :: (b → c) → (a → b) → c
6
18. Una lista de enteros [x1 , x2 , . . . , xn−1 , xn ] está ordenada si y sólo si (x1 ≤ x2
∧ . . . ∧ xn−1 ≤ xn ) = True. La siguiente definición se basa en la idea an-
terior
esOrdenada xs = and [x ≤ y|(x, y) ← zip xs (tail xs)]
where and . . .
A los divisores de n.
B los múltiplos de n.
C los pares comprendidos entre 1 y n.
D los impares comprendidos entre 1 y n.
A dosVeces f x = f(f x)
B (f · g)x = f(g x)
C aplicar f x = f ∗ x
D dosVeces f = f · f
7
22. Indica cuál de las siguientes ecuaciones define una función f :: Int− > Int
que haga válida mitad(f x) = x siendo mitad = (‘div‘ 2)
A fx=x
B f x = f(f x)
C f = 2∗
D fx=x∗x
23. Indica cuál de las siguientes reglas define una función no estricta en su
argumento:
A f (x:xs) = x
B f x = 0
C f x
| x>0 = 1
| otherwise = 0
D f x = if (even x) then 0 else 1
A f (a,b) ++ zipWith f as bs
B [f a b] : zipWith f as bs
C f a b : zipWith f as bs
D ninguna de las anteriores
8
26. Dada la función pair xy = (x, y), indicar cuál de las siguientes ecuaciones
define la función estándar zip usando la función zipWith de la pregunta
anterior:
A (x y):applylist(xs y)
B [x(y)]:applylist(xs y)
C [(x y):applylist(xs,y)]
D [x:y:applylist(xs)]
9
30. Indica cuál de las siguientes funciones f1, f2, f3, f4 no es equivalente
a las otras (es decir, no computa los mismo valores cuando dicha función
se aplica a un entero y una lista de entradano vacı́a):
es cierta.
A Es no estricta
B La evaluación perezosa y voraz de cualquier expresión de la forma
tres e, siendo e una expresión de tipo Int, devuelve el valor 3
C Se trata de una definición local
D Se trata de una definición parcial
10
33. Dada la siguiente definición
ejFun x y = x + 12
ejFun2 x =x+x
f0z=0
g0=0
A (g x)
B (g 0)
C f (g x) (g 0)
D f 0 0
11
36. Indica cuál es la forma normal de la expresión g (f 0) en el siguiente
programa funcional:
g0=0
g (s (s x)) = (s 0)
f x = s (f x)
A 0
B (s 0)
C (s (s 0))
D la expresión no tiene forma normal porque, bajo cualquier estra-
tegia de evaluación, la computación no termina
f(x, y) = h(y)
h(h(x)) = x
h(a) = f(a, a)
38. Indicar la forma normal del término f x con respecto al siguiente progra-
ma:
f Cero = Cero
f (Suc x) = f x
A Cero
B x
C f Cero
D fx
A incompleta.
B incorrecta.
C de éxito.
D de fallo.
12
40. Indica cuál de las siguientes afirmaciones referentes a la semántica deno-
tacional de los lenguajes funcionales perezosos es falsa.
42. Sabiendo que f :: a → a, indica cuál es el tipo inferido por Helium para
la función fix que se define mediante la siguiente ecuación
fix f = f(fix f)
A fix :: (a → a) → a
B fix :: (a → a) → a → a
C fix :: a → a
D fix :: a
13
43. El tipo abstracto de datos Pila a (que representa una pila de valores de
tipo a) consta de las siguientes operaciones:
pilaVacia :: Pila a
meteEnPila :: a → Pila a → Pila a
sacaDePila :: Pila a → (a, Pila a)
topeDePila :: Pila a → a
estaVaciaPila :: Pila a → Bool
A meteEnPila x xs = x + + xs
B meteEnPila x xs = (x : xs)
C meteEnPila x xs = xs + + [x]
D meteEnPila x xs = xs
44. Dado el siguiente tipo algebraico que define un árbol de valores de tipo ⁀a
14
45. Dada la siguiente función
A [(1,1,1),(2,2,2),(3,3,3)]
B [(1,1,1),(1,1,2),(1,1,3),(1,2,2),(1,2,3),(1,3,3),(2,2,2),(2,2,3),
(2,3,3),(3,3,3)]
C [(1,1,1),(1,1,2),(1,1,3),(1,2,1),(1,2,2),(1,2,3),(1,3,1),
(1,3,2),
(1,3,3),(2,1,1),(2,1,2),(2,1,3),(2,2,1),(2,2,2),(2,2,3),...]
D [(1,1,1),(1,2,2),(1,3,3),(2,2,2),(2,3,3),(3,3,3)]
A esPar = multiploDe 2
B esPar x = multiploDe x 2
C esPar = multiploDe 0
D ninguna de las anteriores
15
48. Indica qué calcula el siguiente programa en Helium:
opera 0 a = [a]
opera n f a = a : opera (n − 1) f (f a)
49. ¿Cuál es el tipo inferido por Helium para la función opera de la pregunta
anterior?
16
51. Indica con cuál de las siguientes definiciones de tipo se construyen árboles
binarios de elementos de tipo a:
52. Indica qué computa la siguiente función, siendo max la función que de-
vuelve el mayor de dos números:
pippo (x:xs) = foldl max x xs
53. Completar la definición de la función zip3 que toma tres listas y devuelve
una lista de triplas:
zip3 (a : x) (b : y) (c : z) =
zip3 x y z = [ ]
A [a,b,c] ++ zip3(x,y,z)
B (a b c):zip3(x,y,z)
C (a,b,c):zip3 x y z
D a:b:c:(zip3 x y z)
17
54. Indica cuál de los siguientes programas implementa una función que trans-
forma un número entero positivo en una cadena de caracteres que contiene
los mismos dı́gitos, por ejemplo
pasaChar(125) = ”125”
55. Indicar cuál de las siguientes afirmaciones es cierta, en relación a los pro-
gramas de la pregunta anterior, cuando se evalúa la expresión pasaChar
(-4):
18
56. Indica cuál de las siguientes opciones define correctamente en Haskell la
función miAccion :: IO(String) que lee un texto introducido desde el
teclado y lo pasa a mayúsculas:
A
19