Trabajo Practico 1 PDF

Title Trabajo Practico 1
Course Programacion Logica y Funcional
Institution Universidad Nacional de Santiago del Estero
Pages 4
File Size 98.4 KB
File Type PDF
Total Downloads 73
Total Views 139

Summary

Primer trabajo practico de la asignatura...


Description

Programacion Logica y Funcional

TP N° 1

1. A partir del script que se encuentra en la Actividad 1 del aula virtual del CUV, identificar y resolver los errores de codificación para que el código función media ns = sum ns `div` length ns factorial n = product [1..n] b = 10 c = 3 a = b + c where b = 1 c = 2 d = 0 * 2 n = a `div` length xs where a = 10 xs = [1,2,3,4,5]

2. Seleccione la expresión prefija correspondiente a las siguientes expresiones infijas 2.a. ii

- (*) 6 ((-) 11 2)

2.b. iii - (+) 2 (div 7 ((*) 8 5)) 2.c. iii - (-) ((+)((*) 5 8) 6) 3

3. Evalúe las siguientes expresiones con el GHCi para obtener el resultado. Coloque paréntesis, en cada expresión, respetando la prioridad de operadores. Luego, reescríbalas para obtener un resultado diferente. 3.a. True || True && False

----

(True || True) && False

3.b. not True && False

----

not (True && False)

3.c. True && not True || False ----

???

3.d. 50 * 100 - 356

----

50 * (100 - 356)

3.e. succ 9 + max 5 4 + 1

----

succ 9 + max 5 (4 + 1)

3.f. 2 ^ 3 * 4

----

2 ^ (3 * 4)

3.g. 2 + 3 * 4 ^ 5

----

(2 + 3 * 4) ^ 5

5. Seleccione la opción correcta. 5.a.ii.

[Char]

Nicolás Maldonado

Legajo 204/15

Programacion Logica y Funcional

TP N° 1

5.b.iv. (Char, Char, Char) 5.c.i.

[(Bool, Char)]

5.d.i.

Num a => a -> a

5.e.iv. [1, 2, 3] ++ 4 5.f.ii.

[1, [2, 3], 4]

5.g.i.

[[Integer]]

6. ¿Cuáles de las siguientes implementaciones definen correctamente la función mitad :: [a] -> ([a],[a]) que separa, por la mitad, una lista con cantidad de elementos par? ¿Por qué las otras definiciones son incorrectas? 6.a. mal 6.b. bien 6.c. bien 6.d. mal 6.e. mal(saca el elemento n/2) 6.f. bien 6.g. mal 6.h. bien

7. La definición de la función tail no permite recibir como parámetro una lista vacía [], por lo que el compilador da un mensaje de error. Seleccione cómo se podría definir la función cola :: [a] -> [a], que solucione dicho error. 7.a. bien 7.b. bien 7.c. mal 7.d. bien 7.e. bien 7.f. mal 7.g. bien

Nicolás Maldonado

Legajo 204/15

Programacion Logica y Funcional

TP N° 1

8. Defina la función remover :: Int -> [a] -> [a] que toma como parámetro un número y una lista, y elimina de la lista el elemento en la posición indicada por el número ingresado. Por ejemplo: remover 0 [1, 2, 3, 4] = [2, 3, 4]. remover n xs = (take n xs) ++ (drop (n+1) xs)

9. Dada la función func :: Int -> [a] -> [a] func x xs = take (x + 1) xs ++ drop x xs

9.a. Duplica el elemento en la posicion x de la lista 9.b. [1,2,3,4,4,5,6,7]

10. Utilizando listas por comprensión defina una expresión que calcule la suma de los cuadrados de los números del 1 al 100. sum [x^2 | x a -> [a] definida en el Standard Prelude, produce una lista con elementos idénticos. replicate n x = [x|_ [b] -> [(a,b)], definida en el Standard Prelude, permite generar una lista de tuplas a partir de dos listas. a. Teniendo en cuenta la definición de la función zip, defina una salida válida para la función f, si se da como entrada la lista [1, 2, 3, 4] f :: [a] -> [(a,a)] f xs = zip xs (tail xs)

Salida:

> [(1,2),(2,3),(3,4)] b. Utilizando la función zip, definir la función productoEscalar :: [Int] -> [Int] -> Int, que devuelve el producto escalar de dos listas. productoEscalar xs ys = sum( [x*y|(x,y) [a] -> [a], que intercala los elementos de dos lista intercalar xs ys = concatMap (\(x,y) -> [x,y]) (zip xs ys)

d. Investigue la definición de la función zipWith. ¿Cómo podría redefinir el productoEscalar utilizando dicha función? productoEscalar2 xs ys = sum(zipWith (*) xs ys)

Nicolás Maldonado

Legajo 204/15

Programacion Logica y Funcional

TP N° 1

13. Identifique las salidas válidas para las siguientes funciones: 13.a.ii. [1,2,3,4,4,5,6,7] 13.b.iii. [(1,1),(1,2),(2,1),(2,2)]

Nicolás Maldonado

Legajo 204/15...


Similar Free PDFs