10
Subrutinas

Subrutinas

  • Upload
    omana

  • View
    32

  • Download
    0

Embed Size (px)

DESCRIPTION

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 - PowerPoint PPT Presentation

Citation preview

Page 1: Subrutinas

Subrutinas

Page 2: Subrutinas

SubrutinasHaskell 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.

Page 3: Subrutinas

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

Page 4: Subrutinas

Función como argumento:dosveces :: (Integer -> Integer) -> Integer ->

Integerdosveces f x = f (f x ) inc :: Integer -> Integerinc x = x + 1 dec :: Integer -> Integerdec x = x - 1

Page 5: Subrutinas

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 “dosveces inc 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.

Page 6: Subrutinas

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.

Page 7: Subrutinas

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.

Page 8: Subrutinas

   

   Manejo de Excepciones

Page 9: Subrutinas

Manejo de ExcepcionesManejo 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.

 

Page 10: Subrutinas

Ejemplo:dividir :: Float -> Float -> Floatdividir 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”.