incluir Predefinido {- Ejercicio 1: Escribir una funcion pareja que dado un par de enteros (x,y) devuelva el par (x+1,y) si x > y, (x, y+1) si no -} {- Ejercicio 2: Escribir una funcion cuatorcifras que dad un natural de cuatro cifras y devuelve una cuaterna formada por las cifras. Ejemplo cuatrocifras(1234)= (1,2,3,4)- Escribir una funcion que dada una cuaterna de maturales devuelva el segundo y el cuarto componente de la misma. -} {- Ejercicio 3: Escribir una funcion esPar que dado un natural determine si es par o impar (¿que significa eso?) (devuelva True si es par, False si no) -} {- Ejercicio 4: dado el conjunto Respuesta, definir una función dosNat que tome un par de naturales y devuelva el valor del conjunto que corresponda a las componentes de los pares (DosPares si ambas son pares, etc). Ver eficiencia: poner parImpar antes implica tener que testear mas condiciones -} conj Respuesta = { DosPares, ParImpar, DosImpares } {- Ejercicio 5: Escribir una funcion maxTres que dados tres numeros reales devuelva el maximo de los tres numeros -} {- Ejercicio 6: Escribir una funcion promedio que dados tres numeros reales devuelva su promedio -} {- Ejercicio 7: Escribir una funcion potencia que dados dos naturales a y b calcula a^b en forma recursiva -} {- Ejemplo: potencia (2,3) = 2 * potencia (2, 2) = 2 * 2 * potencia(2,1) = 2 * 2 * 2 * potencia(2, 0) = 2 * 2 * 2 * 1 -} {- Ejercicio 8: Escribir una funcion fac que dado un natural devuelve su factorial. -} {- Secuencias -} {- Ejercicio 9: Definir una funcion prodSec que dada una secuencia de naturales devuelva el producto de sus elementos. -} {- Ejercicio 10: Usando las funciones rango y prodSec escribir otra definición de la finción factorial. -} {- Ejercicio 11: La funcion esprimo de Predefinido, dado un natural, determina si es primo o no. Escriba una funcion rangoPrimos para hallar los primos entre dos naturales a y b a < b, usando la funcion esprimo. ¿Que significa el enunciado? El conjunto de datos de entrada es N X N. Observar que el enunciado dice "hallar los primos ..." Para transformar este enunciado en el enunciado de un problema algoritmico debemos especificar a qué conjunto pertenecen los datos de salida, que en este caso es una secuencia de naturales. El problema algoritmico es: dado un par de naturales (a,b), devolver la secuencia se numeros primos entre a y b. Observar que la condición de que a < b no podemos ponerla en el dominio de la funcion, a difernecia de otras por ejemplo que sean naturales sin el 0. -} {- Escribir una funcion veces, que dado un entero y una secuencia de enteros devuelva la cantidad de veces que el entero aparece en la secuencia. -} {- Escribir una funcion esIgual que dado un entero n y una secuencia s de enteros devuelve la secuencia de los elementos de s que son iguales a n. Escribir la funcion veces usando esIgual y la funcion largo. -} {- largo :: R* -> N largo (s) = 0 si s == [] o 1 + largo(resto(s)) -} {- Graficas -} {- Expresiones algebraicas de recta y parabola -} recta1 :: R -> R recta1 (x) = x + 1 recta2 :: R -> R recta2 (x) = -2 * x - 1 parabola1 :: R -> R parabola1 (x) = x^2 + 2 * x - 3 parabola2 :: R -> R parabola2 (x) = (-2) * x^2 + 3 * x + 2 {- expresión algebraica: P(x) = a * x^2 + b * x + c a /= 0 -} {- Dada la tabla de raices r1 y r2, escribir o y graficar los polinomios correspondientes para a = 2 r1 1 -2 1/2 -1/2 r2 -1 2 3/2 -1 -} {- Para cada uno de los los siguientes valores de a 2 -2 3 -3 1 -1 escribir y graficar los polinomios cuyas raices son r1 = 1, r2 = -1 -} {- Graficar el polinomio g1 :: R -> R g1 (x) = - (x + 3) * (x + 3) * (x + 3) -}