Tema 2: Introducción a Haskell

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Tema 2: Introducción a Haskell"

Transcripción

1 El Lenguaje Haskell Tema 2: Introducción a Haskell A. Chávez-González 1 A. Riscos-Núñez 1 F. Sancho-Caparrini 1 1 Departamento de Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Lógica y Programación, 2006/07

2 Índice El Lenguaje Haskell 1 El lenguaje Haskell 2 simples predefinidos 3 predefinidos 4 5 predefinidos su definición Prioridad y Asociatividad de los operadores 6 Patrones y otros tipos de Expresiones

3 El Lenguaje Haskell Características Haskell es un lenguaje funcional puro, no estricto y fuertemente tipificado. Puro: Transparencia referencial. Una expresión denota siempre el mismo valor, en cualquier punto del programa en que aparezca. Razonamiento ecuacional utilizado en matemáticas. No estricto: orden no aplicativo. Evaluación perezosa: Normalizante Trabajo mínimo Eficiente Trabajo con estructuras de datos infinitas Tipificación fuerte: elementos clasificados en categorías. Sistema de tipos estático: comprobación en la compilación Sistema de tipos polimórfico: más flexible Permite la sobrecarga: el mismo nombre Son aconsejables las anotaciones de tipo en los programas

4 El Lenguaje Haskell Un programa Haskell consiste en una o varias definiciones de funciones Ejemplo: Declaración: tipo Definición: método de cómputo -- Un ejemplo de fichero Haskell -- Calcula el siguiente entero al argumento sucesor :: Integer -> Integer sucesor x = x Calcula la suma de los cuadrados de sus argumentos sumacuadrados :: Integer -> Integer -> Integer sumacuadrados x y = x * x + y * y

5 Índice El Lenguaje Haskell 1 El lenguaje Haskell 2 simples predefinidos 3 predefinidos 4 5 predefinidos su definición Prioridad y Asociatividad de los operadores 6 Patrones y otros tipos de Expresiones

6 El tipo Bool El Lenguaje Haskell Expresiones lógicas cuyo resultado puede ser verdadero o falso. Constructores: True, False Funciones y operadores: (&&) :: Bool -> Bool -> Bool ( ) :: Bool -> Bool -> Bool not :: Bool -> Bool otherwise :: Bool

7 El tipo Int El Lenguaje Haskell Números enteros de precisión limitada en el intervalo [ 2 29, ] Funciones y operadores: (+)(-)(*) :: Int -> Int -> Int ( ) :: Int -> Int -> Int div, mod :: Int -> Int -> Int abs :: Int -> Int signum :: Int -> Int negate :: Int -> Int even, odd :: Int -> Bool Ejemplo: Podemos definir otras funciones a partir de ellas maximo :: Int -> Int -> Int maximo x y = div ((x + y) + abs(x - y)) 2

8 El Lenguaje Haskell El tipo Integer Los valores son enteros de precisión ilimitada que se usan cuando los números tratados se salen del rango de los valores del tipo Int El cálculo es menos eficiente Las operaciones disponibles son las mismas que para el tipo de datos Int

9 El tipo Float El Lenguaje Haskell Números reales. Notación: 1.35, , 1.0 ó 1 1.5e7, 1.5e - 17 Funciones y operadores: (+)(-)(*)(/) :: Float -> Float -> Float ( ) :: Float -> Int -> Float (**) :: Float -> Float -> Float abs :: Float -> Float signum :: Float -> Float (-1.0, 0.0, 1.0) negate :: Float -> Float sin, asin, cos, acos, tan, atan :: Float -> Float

10 El tipo Float El Lenguaje Haskell Funciones y operadores: atan2 :: Float -> Float -> Float log, exp :: Float -> Float sqrt :: Float -> Float pi :: Float trucate, round, floor, ceiling :: Float -> Float fromint :: Int -> Float frominteger :: Integer -> Float

11 El Lenguaje Haskell El tipo Double Números reales en un intervalo mayor que Float Más precisión (doble) Operaciones disponibles: las mismas que para Float

12 El tipo Char El Lenguaje Haskell Un valor tipo Char representa un carácter ( a, 1,? ) Caracteres especiales van precedidos por \ \n Salto de línea \t Tabulador \ Comilla \ Comilla doble \ El carácter \ Funciones: ord :: Char -> Int chr :: Int -> Char isupper, islower, isdigit, isalfa :: Char -> Bool toupper, tolower :: Char -> Char

13 El tipo Char El Lenguaje Haskell Ejemplos: Prelude> toupper a A :: Char Prelude> isupper a False :: Bool Prelude> ord a 97 :: Int Prelude> chr 98 b :: Char

14 El Lenguaje Haskell de igualdad y orden Para todos los tipos básicos están definidos los operadores binarios que devuelven un valor booleano: (<) mayor que ( ) mayor o igual que (<) menor que ( ) menor o igual que (==) igual que ( ) distinto de

15 El Lenguaje Haskell de igualdad y orden El tipo de los dos argumentos debe ser el mismo Prelude> Prelude> b > a True :: Bool True :: Bool Prelude> x == y Prelude> False < True False :: Bool True :: Bool Prelude> x y Prelude> (1 < 5) && (10 > 9) True :: Bool True :: Bool Prelude> True < a ERROR : Type error in application *** Expression : True < a *** Term : True *** Type : Bool *** Does not match : Char

16 El Lenguaje Haskell de igualdad y orden Orden para el tipo Char: mayúsculas son menores que minúsculas. Dentro de cada grupo se mantiene el orden alfabético. Orden para el tipo Bool: False menor que True (==) es el símbolo de igualdad, = se reserva para definir funciones Para todos los tipos que definen un orden, están definidas las funciones max y min

17 Índice El Lenguaje Haskell 1 El lenguaje Haskell 2 simples predefinidos 3 predefinidos 4 5 predefinidos su definición Prioridad y Asociatividad de los operadores 6 Patrones y otros tipos de Expresiones

18 El Lenguaje Haskell Además de los tipos simples, Haskell define tipos estructurados que permiten representar colecciones de objetos. Tuplas Una tupla es un dato compuesto donde cada componente puede ser de un tipo diferente Si v 1, v 2,..., v n son valores con tipo t 1, t 2,..., t n, entonces (v 1, v 2,..., v n )es una tupla con tipo (t 1, t 2,..., t n ) Ejemplos: Prelude> ( a, True, 1.5) ( a, True, 1.5) :: (Char, Bool, Double) Útiles cuando una función tiene que devolver más de un valor predsuc :: Integer -> (Integer, Integer) predsuc = (x - 1, x + 1)

19 El Lenguaje Haskell Listas Una lista es una colección de cero o más elementos todos del mismo tipo. Hay dos constructores u operadores para construir valores para listas: [] Lista vacía (:) Añade un elemento al princicipo de una lista. Si v 1, v 2,..., v n son valores con tipo t, entonces v 1 : (v 2 : (... (v n 1 : (v n : []))... )) es una lista con tipo [t] Ejemplos: 1 : [] Lista que almacena un único entero; tipo [Integer] 3 : (1 : []) Lista que almacena dos enteros; primero el 3 y luego el 1; tipo [Integer] a : (1 : []) Error de tipo

20 El Lenguaje Haskell Listas Una lista es una colección de cero o más elementos todos del mismo tipo. Hay dos constructores u operadores para construir valores para listas: [] Lista vacía (:) Añade un elemento al princicipo de una lista. Si v 1, v 2,..., v n son valores con tipo t, entonces v 1 : (v 2 : (... (v n 1 : (v n : []))... )) es una lista con tipo [t] Ejemplos: 1 : [] Lista que almacena un único entero; tipo [Integer] 3 : (1 : []) Lista que almacena dos enteros; primero el 3 y luego el 1; tipo [Integer] a : (1 : []) Error de tipo

21 El Lenguaje Haskell Listas Asociatividad a la derecha del operador (:). La lista x 1 : x 2 : : x n 1 : x n : [] representará x 1 : (x 2 : ( : (x n 1 : (x n : []))... )) Haskell permite una sintaxis más cómoda [x 1, x 2,..., x n 1, x n ] Ejemplos: Prelude> 1:(2:(3:[])) [1,2,3] :: [Integer] Prelude> 1:2:3:[] [1,2,3] :: [Integer] Prelude> [1,2,3] [1,2,3] :: [Integer]

22 El Lenguaje Haskell Listas Asociatividad a la derecha del operador (:). La lista x 1 : x 2 : : x n 1 : x n : [] representará x 1 : (x 2 : ( : (x n 1 : (x n : []))... )) Haskell permite una sintaxis más cómoda [x 1, x 2,..., x n 1, x n ] Ejemplos: Prelude> 1:(2:(3:[])) [1,2,3] :: [Integer] Prelude> 1:2:3:[] [1,2,3] :: [Integer] Prelude> [1,2,3] [1,2,3] :: [Integer]

23 El Lenguaje Haskell Cadenas de caracteres Una cadena de caracteres es una secuencia de cero o más caracteres. Lista de caracteres x 1 x 2... x n 1 x n representa [ x 1, x 2,..., x n 1, x n] Ejemplos: Prelude> [ U, n,, C, o, c, h, e ] Un Coche :: [Char] Prelude> Un Coche Un Coche :: String Prelude> U : n : : C : o : c : h : e :[] Un Coche :: [Char]

24 El Lenguaje Haskell Cadenas de caracteres Una cadena de caracteres es una secuencia de cero o más caracteres. Lista de caracteres x 1 x 2... x n 1 x n representa [ x 1, x 2,..., x n 1, x n] Ejemplos: Prelude> [ U, n,, C, o, c, h, e ] Un Coche :: [Char] Prelude> Un Coche Un Coche :: String Prelude> U : n : : C : o : c : h : e :[] Un Coche :: [Char]

25 El Lenguaje Haskell El constructor de tipo ( ) Para declarar el tipo correspondiente a las funciones. Si t 1, t 2,..., t n, t r son tipos válidos, entonces t 1 t 2 t n t r es el tipo de una función con n argumentos Ejemplo: inc :: Integer -> Integer inc x = x + 1

26 El Lenguaje Haskell El constructor de tipo ( ) Para declarar el tipo correspondiente a las funciones. Si t 1, t 2,..., t n, t r son tipos válidos, entonces t 1 t 2 t n t r es el tipo de una función con n argumentos Ejemplo: inc :: Integer -> Integer inc x = x + 1

27 El Lenguaje Haskell El constructor de tipo ( ) Funciones como argumento o resultado. Funciones que devuelven otra función (orden superior): componer :: (Int -> Int) -> (Int -> Int) -> Int -> Int componer f g x = g (f x) No pueden eliminarse los paréntesis componer inc inc 10 = sustituyendo en la definición de componer inc(inc10) = por la definición de inc (inc10) + 1 = por la definición de inc (10 + 1) + 1, por la definición de (+): , y de nuevo por la definición de (+): 12

28 Índice El Lenguaje Haskell 1 El lenguaje Haskell 2 simples predefinidos 3 predefinidos 4 5 predefinidos su definición Prioridad y Asociatividad de los operadores 6 Patrones y otros tipos de Expresiones

29 El Lenguaje Haskell Insertar comentarios Dos modos de incluir comentarios (texto ignorado por el evaluador) en un programa: de una sola ĺınea: comienzan por dos guiones consecutivos ( ) y abarcan hasta el final de la ĺınea actual: f :: Integer -> Integer f x = x Esto es un comentario de más de una ĺınea: comienzan por los caracteres {- y acaban con -} {- Esto es un comentario de más de una línea -} g :: Integer -> Integer g x = x - 1

30 Índice El Lenguaje Haskell predefinidos su definición Prioridad y Asociatividad 1 El lenguaje Haskell 2 simples predefinidos 3 predefinidos 4 5 predefinidos su definición Prioridad y Asociatividad de los operadores 6 Patrones y otros tipos de Expresiones

31 El Lenguaje Haskell predefinidos su definición Prioridad y Asociatividad son funciones binarias cuyo nombre es simbólico (cadena de signos, no letras) Pueden ser invocados de forma infija Hay operadores predefinidos como &&,, +,,, /y Podemos definir nuevos operadores utilizando uno o más de los siguientes símbolos: :! #$%& + / <=>?@\ sólo una vez y al principio. Solo es reservado Los operadores que comienzan por (:) tienen un significado especial, constructores infijos de datos Ejemplos de operadores: && == // $ % + < + >? Reservados: :: :.. \

32 Cláusulas Infix El Lenguaje Haskell predefinidos su definición Prioridad y Asociatividad Al definir un nuevo operador podemos indicar su prioridad (0 a 9) y su asociatividad infix [prioridad] [identificador] No asociativo infixl [prioridad] [identificador] Asociativo a izda. infixr [prioridad] [identificador] Asociativo a dcha. Ejemplo de definición de operador infix 4 = -- Prioridad 4, no asociativa ( =) :: Float -> Float -> Bool -- Tipo x = y = abs (x - y) < Definición Obligatorio escribirlo entre paréntesis en la declaración de tipo Puede usarse de modo infijo Main> 1.0 = 2.0 Main> 1.0 = False :: Bool True :: Bool

33 Prioridades El Lenguaje Haskell predefinidos su definición Prioridad y Asociatividad Ante prioridades distintas, se agrupan en primer lugar los de mayor prioridad, en ausencia de paréntesis Ejemplo: La expresión se interpreta como 1 + (2 4) ya que ( ) tiene mayor prioridad (7) que (+) (6) Si se desea otra interpretación, se pueden utilizar paréntesis: (1 + 2) 4 La llamada a una función tiene prioridad máxima (10) La prioridad no aclara qué ocurre cuando un mismo operador aparece varias veces en una expresión: puede ser intepretado como ((8 5) 1) ó (8 (5 1)). La asociatividad indica que la primera opción es la correcta

34 El Lenguaje Haskell predefinidos su definición Prioridad y Asociatividad Asociatividades Si un operador es asociativo a la izquierda: x 1 x 2 x n 1 x n = (... (x 1 x 2 ) x n 1 ) x n Si un operador es asociativo a la derecha: x 1 x 2 x n 1 x n = x 1 (x 2 (x n 1 x n )... )

35 El Lenguaje Haskell predefinidos su definición Prioridad y Asociatividad Asociatividades Si un operador es asociativo a la izquierda: x 1 x 2 x n 1 x n = (... (x 1 x 2 ) x n 1 ) x n Si un operador es asociativo a la derecha: x 1 x 2 x n 1 x n = x 1 (x 2 (x n 1 x n )... )

36 El Lenguaje Haskell predefinidos su definición Prioridad y Asociatividad Si un operador es no asociativo, no puede utilizarse más de una vez sin aclarar el significado con paréntesis Ejemplos: infix 7 ( ) :: Integer -> Integer x y = div x y Main> ERROR: Ambiguous use of operator with Main> (7 4) 2 0 :: Integer Main> 1 < 2 == True ERROR: Ambiguous use of operator < with == En Haskell, todo operador no declarado con cláusulas infix, toma por defecto prioridad 9 y asociatividad izquierda.

37 El Lenguaje Haskell predefinidos su definición Prioridad y Asociatividad Tabla de Prioridad y Asociatividad de los operadores predefinidos infixr 9 infixl 9!! infixr 8,, infixl 7, /, quot, rem, div, mod infixl 6 +, - infixr 5 :, ++ infix 4 ==,, <,,, >, elem, notelem infixr 3 && infixr 2 infixl 1, = infixr 1 = infixr 0 $, $!, seq

38 El Lenguaje Haskell frente a funciones predefinidos su definición Prioridad y Asociatividad Cualquier operador puede usarse de modo prefijo o infijo, independientemente de como esté declarado infix 4 = ( =) :: Float -> Float -> Bool ( =) x y = abs (x - y) < Toda función puede convertirse en un operador si se escribe entre acentos franceses: suma :: Integer -> Integer -> Integer suma x y = x + y x suma y = x + y Main> suma 1 2 Main> 1 suma 2 Se puede dar prioridad y asociatividad al uso infijo de cualquier función: infixl 6 suma

39 Índice El Lenguaje Haskell Patrones y otros tipos de Expresiones 1 El lenguaje Haskell 2 simples predefinidos 3 predefinidos 4 5 predefinidos su definición Prioridad y Asociatividad de los operadores 6 Patrones y otros tipos de Expresiones

40 El Lenguaje Haskell Comparación de patrones Patrones y otros tipos de Expresiones En Haskell los parámetros formales de una función no sólo pueden ser nombres de variables, un argumento puede ser un patrón (una expresión) Es posible definir una función dando más de una ecuación para ésta. Cada ecuación definirá el comportamiento de la función para distintas formas del argumento. Los patrones capturan dicha forma Al aplicar una función a un parámetro concreto la comparación de patrones determina la ecuación a utilizar

41 Patrones constantes El Lenguaje Haskell Patrones y otros tipos de Expresiones Un patrón constante puede ser un número, un carácter o un constructor de datos. f :: Integer -> Bool = True f 2 = False Main> f 1 True :: Bool Main> f 3 Program error: f 3

42 Patrones constantes El Lenguaje Haskell Patrones y otros tipos de Expresiones La función está parcialmente definida. Si queremos definirla totalmente, añadimos otra ecuación: f :: Integer -> Integer f 1 = True f 2 = False -- Tercera línea f x = True Atención al orden. Y si apareciera f 1 False en la tercera ĺınea?

43 Patrones constantes El Lenguaje Haskell Patrones y otros tipos de Expresiones Con un patrón constante sólo unifica un argumento que coincida con esa constante Cuando la función tiene más de un argumento: Se comprueban los patrones correspondientes a las distintas ecuaciones en el orden dado por el programa, hasta que se encuentre una que coincida Dentro de una misma ecuación se intentan unificar los patrones correspondientes a los argumentos de izquierda a derecha Cuando un patrón falla para un argumento, se pasa a la siguiente ecuación La función que se está definiendo puede aparecer como parte de la expresión resultado: RECURSIVIDAD El uso de patrones y recursividad permite definiciones compactas y elegantes

44 Recursividad El Lenguaje Haskell Patrones y otros tipos de Expresiones Ejemplo: fact :: Integer -> Integer fact 0 = 1 fact n = n * fact(n - 1) Para que una definición recursiva sea efectiva hay que garantizar que: Exista un caso no recursivo, al menos. Caso base. En el ejemplo, fact0 En cada llamada recursiva, el valor del argumento se acerca al caso base El caso base se alcanza, es decir, la reducción acaba. Como en el ejemplo.

45 Recursividad El Lenguaje Haskell Patrones y otros tipos de Expresiones Si una de estas condiciones falla, la reducción no terminará: fact :: Integer -> Integer fact 0 = 1 fact n = n * (n - 1) * fact (n - 2) -- Falla la tercera condición. -- No termina para impares

46 Patrones para listas El Lenguaje Haskell Patrones y otros tipos de Expresiones Los patrones que se usan al definir funciones que trabajen con listas toman las siguientes formas: [] Sólo unifica con un argumento que sea una lista vacía [x], [x, y], etc. sólo unifican con listas de uno, dos, etc. argumentos (x : xs) unifica con listas con al menos un elemento (x : y : zs) unifica con listas con al menos dos elementos... suma :: [Integer] -> Integer suma [] = 0 -- Caso base suma (x:xs) = x + suma xs -- Caso recursivo

47 Patrones para tuplas El Lenguaje Haskell Patrones y otros tipos de Expresiones Puede usarse la sintaxis de tuplas en patrones primero2 :: (Integer, Integer) -> Integer primero2 (x, y) = x -- Primero para pares primero3 :: (Integer, Integer, Integer) -> Integer primero3 (x, y, z) = x -- Primero para ternas Los patrones pueden anidarse sumapares :: [(Integer, Integer)] -> Integer sumapares [] = 0 sumapares ((x, y):xs) = x + y + sumapares xs

48 Patrones aritméticos El Lenguaje Haskell Patrones y otros tipos de Expresiones Un patrón aritmético es de la forma (n + k), donde k es un número natural factorial :: Integer -> Integer factorial 0 = 1 factorial (n + 1) = (n + 1) * factorial n

49 El Lenguaje Haskell Patrones nombrados o Seudónimos Patrones y otros tipos de Expresiones Un patrón seudónimo o patrón alias sirve para nombrar un patrón utilizar el seudónimo en vez del patrón en la parte derecha de la definición factorial :: Integer -> Integer factorial 0 = 1 factorial m@(n + 1) = m * factorial n El en la segunda ecuación asigna el seudónimo m al patrón (n + 1)

50 Patrón subrayado El Lenguaje Haskell Patrones y otros tipos de Expresiones Un patrón subrayado ( ) unifica con cualquier argumento pero no establece ninguna ligadura longitud :: [Integer] -> Integer longitud [] = 0 longitud ( :xs) = 1 + longitud xs

51 El Lenguaje Haskell Patrones y evaluación perezosa Patrones y otros tipos de Expresiones La unificación determina qué ecuación es seleccionada para reducir una expresión a partir de la forma de los argumentos esvacía :: [a] -> Bool esvacía [] = True esvacía ( : ) = False Para poder reducir una expresión como esvacía l es necesario saber si l es una lista vacía o no Haskell evalúa un argumento hasta obtener un número de constructores suficiente para resolver el patrón, sin obtener necesariamente su forma normal infinita :: [Integer] esvacía infinita infinita = 1: infinita = esvacía (1: infinita) False

52 Expresiones case El Lenguaje Haskell Patrones y otros tipos de Expresiones La sintaxis de esta construcción es: case expr of patron 1 resultado 1 patron 2 resultado 2... patron n resultado n Todos los patrones son del mismo tipo (el mismo que el de expr) Todos los resultados deben ser del mismo tipo, el tipo del resultado Ejemplo: long :: [Integer] -> Integer long ls = case ls of [] 0 :xs 1 + long xs

53 La función error El Lenguaje Haskell Patrones y otros tipos de Expresiones Permite controlar casos sin sentido en funciones parciales y generar un mensaje de error cabeza :: [Integer] -> Integer cabeza [] = error lista vacía cabeza (x: ) = x Main> cabeza [1, 2, 3] 1 :: Integer Main> cabeza [] Program error: lista vacía

54 El Lenguaje Haskell Funciones a trozos (por partes) Patrones y otros tipos de Expresiones En ellas el resultado depende de cierta condición absoluto :: Integer -> Integer absoluto x x 0 = x x < 0 = -x El sangrado es obligatorio (con el tabulador, no espacios) Guardas, son de tipo Bool Se evalúan las guardas en el orden textual hasta encontrar un valor True, en cuyo caso se devuelve la expresión a la derecha de dicha guarda Puede usarse como guarda otherwise, que equivale a True

55 El Lenguaje Haskell Expresiones condicionales Patrones y otros tipos de Expresiones Otro modo de escribir expresiones cuyo resultado depende de cierta condición: if exprbool then exprsi else exprno Funcionamiento: Se evalúa exprbool, de tipo Bool Si el valor es True, devuelve exprno En otro caso, exprsi Los tipos de ambos resultados deben coincidir Al ser perezoso, no se evalúa más que el resultado que se devuelve Es válida la expresión 2 if a < z then 10 else 4

56 El Lenguaje Haskell Expresiones condicionales Patrones y otros tipos de Expresiones Ejemplo: maxent :: Integer -> Integer -> Integer maxent x y = if x y then x else y

57 Definiciones locales El Lenguaje Haskell Patrones y otros tipos de Expresiones Nombrando subexpresiones: raices :: Float Float Float (Float, Float) raices a b c b 2 4 a c 0 = (( b + sqrt(b 2 4 a c))/(2 a), ( b sqrt(b 2 4 a c))/(2 a)) otherwise = error raices complejas

58 Definiciones locales El Lenguaje Haskell Patrones y otros tipos de Expresiones raices :: Float Float Float (Float, Float) raices a b c disc 0 = (( b + raizdisc)/denom, ( b raizdisc)/denom) otherwise = error raices complejas where disc = b 2 4 a c raizdisc = sqrt disc denom = 2 a Las definiciones locales where solo pueden aparecer a final de una definición de función

59 Definiciones locales El Lenguaje Haskell Patrones y otros tipos de Expresiones Para introducir definiciones locales en cualquier parte de una expresión se usa let e in. Prelude> let f n = n in f :: Integer

60 Expresiones lambda El Lenguaje Haskell Patrones y otros tipos de Expresiones Haskell permite definir funciones anónimas Ejemplo: λ x x + 1 Con un argumento: Prelude> :t λ x -> isupper x λ x -> isupper x :: Char -> Bool Con más de un argumento: Prelude> :t λ x y -> isupper x && isupper y λ x y -> isupper x && isupper y :: Char -> Char -> Bool Prelude> (λ x y -> isupper x && isupper y) A z False :: Bool

61 Sangrado El Lenguaje Haskell Patrones y otros tipos de Expresiones Cuándo acaba una definición Definiciones globales Definiciones locales introducidas por where, let Alternativa al layout: llaves y ; h x y = let {dob n = 2 * n; tri n = 3 * n}in dob x + tri y

62 Ámbitos y módulos El Lenguaje Haskell Patrones y otros tipos de Expresiones Reglas de ámbitos f :: Integer -> Integer f x = x * h 7 where h z = x z ^ 2 (+++) :: Integer -> Integer -> Integer a +++ b = 2 * a + f b import

Introducción a Haskell. El lenguaje Haskell

Introducción a Haskell. El lenguaje Haskell Capítulo 2. Introducción a Haskell 9 Introducción a Haskell Un ejemplo de fichero Haskell El lenguaje Haskell Haskell es un lenguaje funcional puro, no estricto y fuertemente tipificado. Puro = transparencia

Más detalles

Tema 3. Patrones y Definiciones de Funciones

Tema 3. Patrones y Definiciones de Funciones Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Tema 3. Patrones y Definiciones de Funciones 3.1 Comparación de Patrones Patrones constantes Patrones para listas Patrones

Más detalles

Tema 3. Patrones y Definiciones de Funciones

Tema 3. Patrones y Definiciones de Funciones Programación Declarativa Haskell Informática Sistemas Curso 2003-2004 Pepe Gallardo Universidad de Málaga Tema 3. Patrones y Definiciones de Funciones 3.1 Comparación de Patrones Patrones constantes Patrones

Más detalles

Tema 2. Tipos predefinidos

Tema 2. Tipos predefinidos Programación Declarativa Haskell Informática Sistemas Curso 2003-2004 Pepe Gallardo Universidad de Málaga Tema 2. Tipos predefinidos 2.1 Tipos simples predefinidos El tipo Bool El tipo Int El tipo Integer

Más detalles

Tema II: Introducción al Lenguaje Funcional

Tema II: Introducción al Lenguaje Funcional Tema II: Introducción al Lenguaje Funcional Características de Haskell Lenguaje funcional de o. superior fuertemente tipificado. Clasifica los entes de un programa en: objetos (constantes y funciones)

Más detalles

Lógica y Programación

Lógica y Programación Lógica y Programación Programación funcional con Haskell Antonia M. Chávez, Carmen Graciani, Agustín Riscos Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Programación

Más detalles

Introducción a Haskell. Cecilia Manzino

Introducción a Haskell. Cecilia Manzino Paradigmas de programación Un paradigma de programación representa un estilo particular o filosofía para la construcción del software. Los más comunes dan lugar a los siguientes tipos de programación:

Más detalles

Tema 1: Programación Funcional

Tema 1: Programación Funcional Tema 1: Programación Funcional A. Chávez-González 1 A. Riscos-Núñez 1 F. Sancho-Caparrini 1 1 Departamento de Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla http://www.cs.us.es/cursos/lp/

Más detalles

Funciones Segunda parte

Funciones Segunda parte Expresiones condicionales Matemática Discreta usando el computador 2011 Funciones Segunda parte Una expresión condicional utiliza una expresión de tipo Bool para decidir entre dos opciones Estructura if...then...

Más detalles

Tema 5: Introducción a la programación funcional.

Tema 5: Introducción a la programación funcional. Tema 5: Introducción a la programación funcional. Qué es la programación Funcional (I) La programación funcional apareció como un paradigma independiente a principio de los sesenta. Su creación es debida

Más detalles

Práctica 1. Programación Funcional Introducción a Helium

Práctica 1. Programación Funcional Introducción a Helium Práctica 1. Programación Funcional Introducción a Helium Who? Lenguajes y Paradigmas de Programación Objetivo de la práctica Presentar las facilidades básicas del entorno de programación Helium Presentar

Más detalles

GUÍA BÁSICA DE SCHEME v.4

GUÍA BÁSICA DE SCHEME v.4 Esta guía básica pretende ser una introducción elemental al lenguaje de programación Scheme. Se presenta como una guía de comienzo rápido de tal forma que permita conocer de una forma muy esquemática los

Más detalles

Tema 7. El sistema de clases

Tema 7. El sistema de clases Programación Declarativa Haskell Informática Sistemas Curso 2003-2004 Pepe Gallardo Universidad de Málaga Tema 7. El sistema de clases 7.1 Funciones Sobrecargadas Clases e Instancias 7.2 Algunas Clases

Más detalles

Tema 6. Definiciones de tipos

Tema 6. Definiciones de tipos Programación Declarativa Haskell Informática Sistemas Curso 2003-2004 Pepe Gallardo Universidad de Málaga Tema 6. Definiciones de tipos 6.1 Sinónimos de tipo 6.2 Definiciones de tipos de datos Tipos enumerados

Más detalles

Programación Funcional Haskell Clase 22

Programación Funcional Haskell Clase 22 Programación Funcional Haskell Clase 22 José Raymundo Marcial Romero rmarcial@fi.uaemex.mx BUAP c José Raymundo Marcial Romero. Clase Número 22 p.1/?? Temas de la clase Tipos Numéricos de Haskell Tipos

Más detalles

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos Algoritmos y Estructuras de Datos I 1 cuatrimestre de 009 Departamento de Computación - FCEyN - UBA Programación funcional - clase Tipos algebraicos Tipos algebraicos y abstractos ya vimos los tipos básicos

Más detalles

El sistema de clases de Haskell. Introducción

El sistema de clases de Haskell. Introducción Capítulo 5. El sistema de clases de Haskell 56 El sistema de clases de Haskell Introducción Función monomórfica: sólo se puede usar para valores de un tipo concreto not :: Bool Bool not True = False not

Más detalles

Informática Haskell Matemáticas Curso Pepe Gallardo Universidad de Málaga. Temario

Informática Haskell Matemáticas Curso Pepe Gallardo Universidad de Málaga. Temario Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Temario 1 Introducción y semántica operacional 2 Tipos predefinidos 3 Patrones y Definiciones de Funciones 4 Funciones

Más detalles

Tema 3: Tipos y clases

Tema 3: Tipos y clases Tema 3: Tipos y clases Informática (2016 17) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla 2 / 32 IM Tema 3: Tipos y clases

Más detalles

Tema 3: Tipos y clases

Tema 3: Tipos y clases Tema 3: Tipos y clases Informática (2017 18) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla 2 / 32 IM Tema 3: Tipos y clases

Más detalles

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

Apunte Laboratorio ALPI - El lenguaje de programación Pascal Apunte Laboratorio ALPI - El lenguaje de programación Pascal 1 2 ÍNDICE GENERAL Índice 1. Estructura de un Programa en Pascal 3 2. Sintaxis de Pascal 4 2.1. Uso de mayúsculas.....................................

Más detalles

Tema 3: Tipos y clases

Tema 3: Tipos y clases Tema 3: Tipos y clases Programación declarativa (2010 11) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla Tema 3: Tipos y clases

Más detalles

Definiciones de tipo. Sinónimos de tipo

Definiciones de tipo. Sinónimos de tipo Capítulo 4. Definiciones de tipo 40 Definiciones de tipo Sinónimos de tipo Un sinónimo de tipo renombra un tipo existente. El nuevo nombre y el antiguo son totalmente intercambiables. type Entero =Integer

Más detalles

Programación Funcional Haskell Clase 19

Programación Funcional Haskell Clase 19 Programación Funcional Haskell Clase 19 José Raymundo Marcial Romero rmarcial@fi.uaemex.mx BUAP c José Raymundo Marcial Romero. Clase Número 19 p.1/23 Temas de la clase Lenguajes Funcionales Haskell y

Más detalles

Tema 3: Tipos y clases

Tema 3: Tipos y clases Tema 3: Tipos y clases Programación declarativa (2009 10) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla Tema 3: Tipos y clases

Más detalles

Tema 2: Introducción a la programación con Haskell

Tema 2: Introducción a la programación con Haskell Tema 2: Introducción a la programación con Haskell Informática (2010 11) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla 2

Más detalles

Tema 2: Introducción a la programación con Haskell

Tema 2: Introducción a la programación con Haskell Programación declarativa (2010 11) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla 2. 4. 2 / 26 El sistema GHC El sistema GHC

Más detalles

Tema 2: Introducción a la programación con Haskell

Tema 2: Introducción a la programación con Haskell Tema 2: Introducción a la programación con Haskell Programación declarativa (2009 10) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad

Más detalles

Tema 2: Introducción a la programación con Haskell

Tema 2: Introducción a la programación con Haskell Tema 2: Introducción a la programación con Haskell Informática (2017 18) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla 2

Más detalles

Para entender la recursividad primero tenemos que entender la recursividad

Para entender la recursividad primero tenemos que entender la recursividad Para entender la recursividad primero tenemos que entender la recursividad Funcional Clase 1 Matias Reparaz, Agustín Nieto Departamento de Computación, FCEyN,Universidad de Buenos Aires. 20 de Septiembre

Más detalles

UNIDAD 2 Descripción de un programa

UNIDAD 2 Descripción de un programa Descripción de un programa Estructura general de un programa. Elementos básicos. Tipos de datos simples: enteros, reales y carácter. Representación de datos en memoria. Operaciones sobre tipos de datos

Más detalles

Tema 4: Definición de funciones

Tema 4: Definición de funciones Tema 4: Definición de funciones Informática (2010 11) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla 2 / 30 Tema 4: Definición

Más detalles

Tema 4: Definición de funciones

Tema 4: Definición de funciones Programación declarativa (2009 10) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla Constantes como patrones Variables como

Más detalles

1.1 Define un operador ( ) que devuelva True si y solo si tan solo uno de sus argumentos es True. Por ejemplo:? (3 > 2) (2 > 5)

1.1 Define un operador ( ) que devuelva True si y solo si tan solo uno de sus argumentos es True. Por ejemplo:? (3 > 2) (2 > 5) 1 Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Práctica 1 1.1 Define un operador ( ) que devuelva True si y solo si tan solo uno de sus argumentos es True. Por ejemplo:?

Más detalles

Introducción a OCaml. October 19, 2015

Introducción a OCaml. October 19, 2015 Introducción a OCaml October 19, 2015 OCaml: introducción Es un dialecto de ML. Lenguaje de programación funcional. Fuertemente tipado. Con inferencia de tipos. Polimórfico. [Página oficial: http://www.ocaml.org/

Más detalles

Tipos de datos y clases de tipos

Tipos de datos y clases de tipos Tipos de datos y clases de tipos Taller de Álgebra I Verano 2017 Tipos de datos Tipo de dato Un conjunto de valores a los que se les puede aplicar un conjunto de funciones. Ejemplos 1 Integer = (Z, {+,,,

Más detalles

Un calculadora avanzada... y algo más!

Un calculadora avanzada... y algo más! INFORMÁTICA, GRUPO D Un calculadora avanzada... y algo más! Vamos a familiarizarnos con el entorno interactivo de Python. Vamos a construir expresiones aritméticas y a guardar los resultados en variables

Más detalles

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Algoritmos y programas. Algoritmos y Estructuras de Datos I Algoritmos y programas Algoritmos y Estructuras de Datos I Primer cuatrimestre de 2012 Departamento de Computación - FCEyN - UBA Programación funcional - clase 1 Funciones Simples - Recursión - Tipos de

Más detalles

CAPÍTULO IV: 4.1 Introducción a la. Programación Funcional

CAPÍTULO IV: 4.1 Introducción a la. Programación Funcional CAPÍTULO IV: Programación Funcional 4.1 Introducción a la Programación Funcional 1 Programación Funcional Paradigma diferente a los imperativos, que se aleja de la máquina de von Neumann Basado en funciones

Más detalles

Tipos en Haskell. Cecilia Manzino

Tipos en Haskell. Cecilia Manzino Tipos Tipo: conjunto de valores asociados a operaciones. Ejemplos: enteros, caracteres, booleanos, funciones de enteros a enteros. Sirven para: detectar errores antes de la evaluación especificar programas

Más detalles

Programación Declarativa. Ingeniería Informática Cuarto curso. Primer cuatrimestre. Escuela Politécnica Superior de Córdoba Universidad de Córdoba

Programación Declarativa. Ingeniería Informática Cuarto curso. Primer cuatrimestre. Escuela Politécnica Superior de Córdoba Universidad de Córdoba Programación Declarativa Ingeniería Informática Cuarto curso. Primer cuatrimestre Escuela Politécnica Superior de Córdoba Universidad de Córdoba Curso académico: 2016 2017 Práctica número 1.- Introducción

Más detalles

Guardas y Tipos de datos

Guardas y Tipos de datos Guardas y Tipos de datos Taller de Álgebra I 1er Cuatrimestre 2017 Definiciones de funciones por casos Podemos usar guardas para definir funciones por casos: f (n) = { 1 si n = 0 0 si no f n n == 0 = 1

Más detalles

Comprender las diferencias entre tipos de datos primitivos similares, y aprender a elegir el tipo más conveniente en cada caso.

Comprender las diferencias entre tipos de datos primitivos similares, y aprender a elegir el tipo más conveniente en cada caso. Elementos básicos de programación en Java Objetivos del tema Conocer la estructura básica de un programa Java. Comprender los conceptos de tipo, valor y variable. Comprender las diferencias entre tipos

Más detalles

Elementos de un programa en C

Elementos de un programa en C Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución

Más detalles

El lenguaje Haskell 98

El lenguaje Haskell 98 El lenguaje Haskell 98 Un lenguaje perezoso completamente Curry con sobrecarga. Juan Pedro Villa Introducción Las razones agudas son ronquidos para los oídos tontos. William

Más detalles

Programación Declarativa. Ingeniería Informática Cuarto curso. Primer cuatrimestre. Escuela Politécnica Superior de Córdoba Universidad de Córdoba

Programación Declarativa. Ingeniería Informática Cuarto curso. Primer cuatrimestre. Escuela Politécnica Superior de Córdoba Universidad de Córdoba Programación Declarativa Ingeniería Informática Cuarto curso. Primer cuatrimestre Escuela Politécnica Superior de Córdoba Universidad de Córdoba Curso académico: 2017 2018 Práctica número 1.- Introducción

Más detalles

Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales

Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales UNA / AREA TRANSDEPARTAMENTAL DE ARTES MULTIMEDIALES Licenciatura en Artes Multimediales Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales JavaScript Algoritmo

Más detalles

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL.

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL. Tema 2. TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL. PARTE : VARIABLES, OPERADORES Y CONSTANTES.. INTRODUCCIÓN AL LENGUAJE C 2. PROGRAMAS BÁSICOS EN LENGUAJE C 3. DATOS EN LENGUAJE C

Más detalles

Tema 4. Funciones de orden superior

Tema 4. Funciones de orden superior Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Tema 4. Funciones de orden superior 4.1 Funciones de orden superior 4.2 Expresiones lambda 4.3 Aplicación parcial Secciones

Más detalles

El lenguaje C. 1. Identificadores, constantes y variables

El lenguaje C. 1. Identificadores, constantes y variables Principios de Programación El lenguaje C 1. Identificadores, constantes y variables 1.1. Conceptos de memoria Los nombres de variable como x, y, suma corresponden a localizaciones o posiciones en la memoria

Más detalles

Tipos de datos algebraicos

Tipos de datos algebraicos Tipos de datos algebraicos Taller de Álgebra I Segundo cuatrimestre de 2013 Programación funcional Recordemos que un tipo de datos es un conjunto dotado con una serie de operaciones sobre los elementos

Más detalles

Programación Declarativa

Programación Declarativa Programación Declarativa Tema 2: LISP (SCHEME) 2 Tema 2: LISP (SCHEME) Introducción Representación de Datos Definición de Funciones Predicados Listas 3 Introducción (I) SCHEME es un dialecto de LISP (LISt

Más detalles

Ficha de Aprendizaje N 13

Ficha de Aprendizaje N 13 Ficha de Aprendizaje N 13 Curso: Lógica y lenguaje de programación Tema: Fundamentos de programación Duración: 2 horas pedagógicas Logros de aprendizaje Identifica los diferentes tipos de operadores que

Más detalles

Principios de Computadoras II

Principios de Computadoras II Departamento de Ingeniería Electrónica y Computadoras Operadores y Expresiones rcoppo@uns.edu.ar Primer programa en Java 2 Comentarios en Java Comentario tradicional (multi-línea) Comentario de línea Comentario

Más detalles

Lenguajes de Inteligencia Artificial Segundo curso. Primer cuatrimestre

Lenguajes de Inteligencia Artificial Segundo curso. Primer cuatrimestre Lenguajes de Inteligencia Artificial Segundo curso. Primer cuatrimestre Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas Escuela Politécnica Superior Universidad

Más detalles

Introducción a la programación. Cecilia Manzino

Introducción a la programación. Cecilia Manzino Paradigmas Un paradigma es un modelo o patrón en cualquier disciplina científica. Un paradigma de programación representa un estilo de programación en cual se escriben soluciones a problemas en términos

Más detalles

Tema 2.- Expresiones y funciones

Tema 2.- Expresiones y funciones UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR DE CÓRDOBA DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO PROGRAMACIÓN DECLARATIVA INGENIERÍA INFORMÁTICA ESPECIALIDAD DE COMPUTACIÓN CUARTO CURSO PRIMER

Más detalles

Informática General 2018 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales

Informática General 2018 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales UNA / AREA TRANSDEPARTAMENTAL DE ARTES MULTIMEDIALES Licenciatura en Artes Multimediales Informática General 2018 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales JavaScript - Programación

Más detalles

Programación Declarativa Haskell Informática Sistemas Curso Pepe Gallardo Universidad de Málaga. Tema 8. Listas

Programación Declarativa Haskell Informática Sistemas Curso Pepe Gallardo Universidad de Málaga. Tema 8. Listas Programación Declarativa Haskell Informática Sistemas Curso 2003-2004 Pepe Gallardo Universidad de Málaga Tema 8. Listas 8.1 Secuencias aritméticas 8.2 Algunas funciones predefinidas 8.3 Listas por comprensión

Más detalles

Datos Elementales y formato de un programa en Java

Datos Elementales y formato de un programa en Java Datos Elementales y formato de un programa en Java PROGRAMACION I Grado en Matematicas Informática Programación I - 2015/2016 Datos, variables y mi primer programa 1 Introducción a la programación o Programa:

Más detalles

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice

Más detalles

Informática Haskell Matemáticas Curso Pepe Gallardo Universidad de Málaga. Tema 8. Listas

Informática Haskell Matemáticas Curso Pepe Gallardo Universidad de Málaga. Tema 8. Listas Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Tema 8. Listas 8.1 Secuencias aritméticas 8.2 Algunas funciones predefinidas 8.3 Listas por comprensión Ejemplo: QuickSort

Más detalles

Componentes Básicos. InCo. InCo Componentes Básicos 1 / 28

Componentes Básicos. InCo. InCo Componentes Básicos 1 / 28 Componentes Básicos InCo InCo Componentes Básicos 1 / 28 Modelo de Computación Vemos al computador como un procesador de datos. +------------+ Entrada ===> Computador ===> Salida +------------+ InCo Componentes

Más detalles

FORMATO DEL FICHERO CON LA TABLA DE SÍMBOLOS

FORMATO DEL FICHERO CON LA TABLA DE SÍMBOLOS FORMATO DEL FICHERO CON LA TABLA DE SÍMBOLOS Para la corrección de la Práctica de Procesadores de Lenguajes, y como se indica en la especificación de la misma (http://dlsiisv.fi.upm.es/procesadores/practica.html),

Más detalles

Tema 4. Funciones de orden superior

Tema 4. Funciones de orden superior Programación Declarativa Haskell Informática Sistemas Curso 2003-2004 Pepe Gallardo Universidad de Málaga Tema 4. Funciones de orden superior 4.1 Funciones de orden superior 4.2 Expresiones lambda 4.3

Más detalles

Tema 4. Operadores y Expresiones

Tema 4. Operadores y Expresiones Tema 4 Operadores y Expresiones Contenidos 1. Conceptos Básicos. 2. Operadores Aritméticos. 3. Operadores de Relación, de Igualdad y Lógicos. 4. Operadores de Incremento y Decremento. 5. Operadores y Expresiones

Más detalles

Programación con listas. El tipo lista

Programación con listas. El tipo lista Capítulo 6. Programación con listas 68 Programación con listas El tipo lista La lista representa colecciones de objetos homogéneas (todos los objetos han de tener el mismo tipo). infixr 5 : data [a] =

Más detalles

abril de 2017 Desarrollo de aplicaciones en Java Tipos de datos primitivos Tipos de datos Elementos de aplicaciones simples

abril de 2017 Desarrollo de aplicaciones en Java Tipos de datos primitivos Tipos de datos Elementos de aplicaciones simples Desarrollo de aplicaciones en Java Generación de código fuente Compilación Ejecución Elementos de aplicaciones simples EII147-01-02 Introducción a las tecnologías de información Escuela de Ingeniería Industrial

Más detalles

Tipos y Estructuras de Control. Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR

Tipos y Estructuras de Control. Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR Tipos y Estructuras de Control Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR Datos: variables y constantes Tipos básicos: entero, real, char, lógico Estructuras de control

Más detalles

Tipos de Datos Simples Contenido del Tema

Tipos de Datos Simples Contenido del Tema T E M A 3 Tipos de Datos Simples Contenido del Tema 3.1. Concepto de Tipo 3.1.1. Elementos básicos: atributos y operaciones 3.1.2. Tipos. Concepto y necesidad 3.1.3. Operadores básicos 3.2. Tipos de Datos

Más detalles

GUÍA DE TRABAJO N 1 C# Ing. Néstor Raúl Suarez Perpiñan Página 1 de 13

GUÍA DE TRABAJO N 1 C# Ing. Néstor Raúl Suarez Perpiñan Página 1 de 13 Página 1 de 13 Tema: FUNDAMENTOS DE PROGRAMACIÓN EN LENGUAJE C# Objetivo: Conocer y manejar correctamente los tipos de datos y las diferentes estructuras de programación que hacen parte del lenguaje de

Más detalles

21/03/2018. Variables y Constantes. Los datos de un programa están representados por variables o constantes y tienen asociado un tipo.

21/03/2018. Variables y Constantes. Los datos de un programa están representados por variables o constantes y tienen asociado un tipo. Variables y Constantes Dra. Jessica Andrea Carballido jac@cs.uns.edu.ar Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR Los datos de un programa están representados por variables

Más detalles

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS Una vez que ya sabes crear tus propios programas, vamos a analizar los fundamentos del lenguaje de programación C. Este capítulo incluye además los siguientes temas:

Más detalles

Tema 8: Funciones de orden superior

Tema 8: Funciones de orden superior Tema 8: Funciones de orden superior Programación declarativa (2010 11) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla 2 /

Más detalles

Tema 8: Funciones de orden superior

Tema 8: Funciones de orden superior Tema 8: Funciones de orden superior Programación declarativa (2009 10) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla Tema

Más detalles

INFOTECH MÓDULO 3 CURSO. Sintaxis del lenguaje de programación JAVA. Lógica y Lenguaje de Programación

INFOTECH MÓDULO 3 CURSO. Sintaxis del lenguaje de programación JAVA. Lógica y Lenguaje de Programación INFOTECH MÓDULO 3 Sintaxis del lenguaje de programación JAVA CURSO Lógica y Lenguaje de Programación INFOTECH Nombre del módulo 3 Contenidos Recursos Comprensión e información Capacidades específicas Indagación

Más detalles

4. Operadores Operador asignación

4. Operadores Operador asignación Programación orientada a objetos con Java 43 4. Operadores Objetivos: a) Describir los operadores (aritméticos, incrementales, de relación, lógicos y de asignación) y los tipos de dato primitivos sobre

Más detalles

Tema 2: Desarrollo de Algoritmos. E.E. de Algorítmica

Tema 2: Desarrollo de Algoritmos. E.E. de Algorítmica Tema 2: Desarrollo de Algoritmos E.E. de Algorítmica Temas a tratar Identificadores Variables Constantes Tipos de Datos Separadores Operadores Aritméticos Unarios Relacionales y Condicionales Nivel de

Más detalles

Tema 3.- Predicados y sentencias condicionales

Tema 3.- Predicados y sentencias condicionales UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR DE CÓRDOBA DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO PROGRAMACIÓN DECLARATIVA INGENIERÍA INFORMÁTICA ESPECIALIDAD DE COMPUTACIÓN CUARTO CURSO PRIMER

Más detalles

Tema 9: Declaraciones de tipos y clases

Tema 9: Declaraciones de tipos y clases Tema 9: Declaraciones de tipos y clases Programación declarativa (2009 10) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla

Más detalles

Java. Introducción a la Programación Orientada a Objetos

Java. Introducción a la Programación Orientada a Objetos Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código independiente de la arquitectura de la computadora

Más detalles

Datos y tipos de datos

Datos y tipos de datos Datos y tipos de datos Dato Representación formal de hechos, conceptos o instrucciones adecuada para su comunicación, interpretación y procesamiento por seres humanos o medios automáticos. Tipo de dato

Más detalles

Tema 9: Declaraciones de tipos y clases

Tema 9: Declaraciones de tipos y clases Tema 9: Declaraciones de tipos y clases Informática (2016 17) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla 2 / 41 Tema 9:

Más detalles

Los parámetros: son los campos que se comunican a los métodos de los objetos.

Los parámetros: son los campos que se comunican a los métodos de los objetos. Modulo 6. Variables y Operadores Variables Un objeto almacena los estados en campos, estos campos se conocen en java como variables. Por eso a menudo podemos ver estas dos palabras usadas para referirse

Más detalles

Instituto Tecnológico de Celaya

Instituto Tecnológico de Celaya ELEMENTOS BÁSICOS DE C++: DECLARACIÓN DE VARIABLES A través de operaciones aritméticas (suma, resta, etc.) y lógicas (por ejemplo, comparaciones) los programas manipulan datos tales como números y caracteres.

Más detalles

PHP: Lenguaje de programación

PHP: Lenguaje de programación Francisco J. Martín Mateos Carmen Graciani Diaz Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Tipos de datos Enteros Con base decimal: 45, -43 Con base octal: 043, -054

Más detalles

Laboratorio Análisis Lógico Práctica 2: Tipos de datos en Haskell

Laboratorio Análisis Lógico Práctica 2: Tipos de datos en Haskell Laboratorio Análisis Lógico Práctica 2: Tipos de datos en Haskell Pedro A. Góngora Luna 1 1. Operadores La figura 1 muestra la lista de algunos de los operadores básicos definidos en el preludio. La lista

Más detalles

Metodologías de Programación II Introducción a OCaml

Metodologías de Programación II Introducción a OCaml Metodologías de Programación II Introducción a OCaml Dr. Alejandro Guerra-Hernández Departamento de Inteligencia Artificial Facultad de Física e Inteligencia Artificial aguerra@uv.mx http://www.uv.mx/aguerra

Más detalles

Tema 3. Tipos de datos simples

Tema 3. Tipos de datos simples Tema 3. Tipos de datos simples Contenido del tema: Concepto de tipo. Tipos simples. Operadores. Expresiones. Semántica. Tipos y expresiones en lenguaje C++ Francisco J. Veredas Dpto. Lenguajes y Ciencias

Más detalles

Lenguajes de Programación. Capítulo 4. Expresiones.

Lenguajes de Programación. Capítulo 4. Expresiones. Lenguajes de Programación. Capítulo 4. Expresiones. Carlos Ureña Almagro Curso 2011-12 Contents 1 Introducción 2 2 Literales 5 2.1 Literales tipos primitivos......................................... 5

Más detalles

Introducción a la Programación

Introducción a la Programación Introducción a la Programación Fundamentos de Programación Ingeniería Informática en Sistemas de Información Alicia Troncoso 1 Contenido l Introducción l Mi primer programa l Etapas a seguir en la programación

Más detalles

Índice del capítulo. Capítulo 4. Expresiones. Las expresiones. Indice de la sección. Lenguajes de Programación. Introducción. 2.

Índice del capítulo. Capítulo 4. Expresiones. Las expresiones. Indice de la sección. Lenguajes de Programación. Introducción. 2. Índice del capítulo Capítulo 4. Expresiones Lenguajes de Programación Capítulo 4. Expresiones 1. Carlos Ureña Almagro 2. Dpt. Lenguajes y Sistemas Informáticos ETSI Informática y de Telecomunicación Universidad

Más detalles

FUNDAMENTOS DE INFORMÁTICA

FUNDAMENTOS DE INFORMÁTICA FUNDAMENTOS DE INFORMÁTICA Tema 1 Introducción a la Programación en Visual Basic Departamento de Ingeniería de Sistemas y Automática Universidad de Vigo undamentos de Informática. Departamento de Ingeniería

Más detalles

Informática de 1 o de Matemáticas. Ejercicios de Introducción a Haskell. Ejercicio 1 Consideremos la siguiente definición:

Informática de 1 o de Matemáticas. Ejercicios de Introducción a Haskell. Ejercicio 1 Consideremos la siguiente definición: Ejercicios de Introducción a Haskell Informática de 1 o de Matemáticas Ejercicio 1 Consideremos la siguiente definición: doble x = x + x El valor de doble(doble 3) se puede calcular usando distintos métodos

Más detalles