1 / 10

Subrutinas

Subrutinas. Subrutinas. Haskell en las funciones utiliza parámetros y estos son pasados por valor. Por ejemplo: c uadrado :: Integer -> Integer cuadrado x = x*x

omana
Download Presentation

Subrutinas

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Subrutinas

  2. Subrutinas • Haskell en las funciones utiliza parámetros y estos son pasados por valor. Por ejemplo: • cuadrado :: Integer->Integer • cuadrado x = x*x • También existen las Funciones de Orden Superior, estas permiten que las funciones sean tratadas como parametros que son pasados como argumentos de funciones y que sean devueltas como resultados. • La idea de Funciones de Orden Superior es equivalente a subrutinas.

  3. Funciones de OrdenSuperior Funciones que reciben como argumento una función o que devuelven una función como resultado

  4. Función como argumento: • dosveces:: (Integer->Integer) ->Integer->Integer • dosveces f x = f (f x ) • inc::Integer->Integer • inc x = x + 1 • dec::Integer->Integer • dec x = x - 1

  5. Ejemplo: • En este ejemplo, la función sumara dos veces la cantidad de 1 al parámetro ingresado, en la parte “dosveces :: (Integer -> Integer)” se especifica que la el primer parámetro es una función que tiene un ingreso como Integer y como salida otro Integer, luego el Integer siguiente que esta fuera del paréntesis es el segundo parámetro que se ingresa y este no es función, y por último el ultimo Integer es el dato de salida. • En la parte “dosveces f x = f (f x)” se ejecuta la siguiente acción: f es la función que se quiere ejecutar y x es el parámetro para tratar, en la parte • f (f x) primero se ejecuta el paréntesis, entonces ingresas la función f y el parámetro x, en este ejemplo se ejemplifican dos funciones “inc” y “dec” la cual una suma 1 y la otra resta 1 respectivamente, como funciona: se puede ingresar de la siguiente forma “dosvecesinc 5” aquí se pasan los parámetros a las funciones correspondientes, en este caso, ejecutará la función dosveces e ingresará la función inc con el parámetro 5, realizara los procesos correspondientes y el resultado será 7, el cual es un tipo de retorno Integer.

  6. Función como resultado: • f2 ::Int-> (Int->Int) • f2 x y = y + x • En este ejemplo, el tipo de paso de parámetros son: los datos ingresados a “x” e “y” y estos son usados en la función y + x, entonces el tipo de retorno de la función f2 es la función x y que es de tipo (Int -> Int) • Se llama la función f2 y se le dan los dos parámetros, por ejemplo: • Ingresamos “f2 5 3” y resulta 8.

  7. Función como argumento y como resultado: • f3 :: (Int->Int) -> (Int->Int) • f3 g y = 2 * g (y+1) • uno ::Int->Int • uno a = a + 30 • En este ejemplo, el tipo de paso de parámetros son: los datos ingresados a “g” e “y”, en el cual g es una función del tipo (Int -> Int) y estos son usados en la función f3, entonces el tipo de retorno de la función f3 es la función “uno” que es de tipo (Int -> Int). • Se llama a la función f3, primero se le ingresan una función y luego un parámetro, por ejemplo: “f3 uno 1” luego llama a la función uno dentro de la función f3 y le da el parámetro de 1” luego el resultado es 64. • En haskell los programas, reciben valores de distinto tipo según sea la función, y cada función trabaja con esos valores, entregando el resultado ya procesado.

  8. Manejo de Excepciones

  9. Manejo de Excepciones • Manejo de Excepciones • El sistema de incluye un mecanismo simple de control de excepciones. Cualquier operación de Entrada/Salida podría lanzar una excepción en lugar de devolver un resultado. Las excepciones se representan como valores de tipo IOError. • El tipo IOError representa todas las posibles excepciones que pueden ocurrir al ejecutar operaciones.

  10. Ejemplo: • dividir ::Float->Float->Float • dividir x 0 = error "Division por cero" • dividir x y = x / y • En el siguiente programa, al ingresar dos valores, por ejemplo “3” y “0” lanzará por pantalla un error, “división por cero”, que es usada gracias a la función “error”.

More Related