PDF de programación - Tema 3: Tipos y clases - Informática (2016–17)

Tema 3: Tipos y clases - Informática (2016–17)gráfica de visualizaciones

Publicado el 6 de Agosto del 2017
489 visualizaciones desde el 6 de Agosto del 2017
266,7 KB
46 paginas
Creado hace 3a (15/10/2016)
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

IM Tema 3: Tipos y clases

Tema 3: Tipos y clases
1. Conceptos básicos sobre tipos
2. Tipos básicos
3. Tipos compuestos

Tipos listas
Tipos tuplas
Tipos funciones

4. Parcialización
5. Polimorfismo y sobrecarga

Tipos polimórficos
Tipos sobrecargados

6. Clases básicas

2 / 32

IM Tema 3: Tipos y clases

Conceptos básicos sobre tipos

¿Qué es un tipo?

Un tipo es una colección de valores relacionados.
Un ejemplo de tipos es el de los valores booleanos: Bool
El tipo Bool tiene dos valores True (verdadero) y False (falso).
v :: T representa que v es un valor del tipo T y se dice que “v

tiene tipo T”.

Cálculo de tipo con :type

Prelude> :type True
True :: Bool
Prelude> :type False
False :: Bool

El tipo Bool -> Bool está formado por todas las funciones cuyo

argumento y valor son booleanos.

Ejemplo de tipo Bool -> Bool

Prelude> :type not
not :: Bool -> Bool

3 / 32

IM Tema 3: Tipos y clases

Conceptos básicos sobre tipos

¿Qué es un tipo?

Un tipo es una colección de valores relacionados.
Un ejemplo de tipos es el de los valores booleanos: Bool
El tipo Bool tiene dos valores True (verdadero) y False (falso).
v :: T representa que v es un valor del tipo T y se dice que “v

tiene tipo T”.

Cálculo de tipo con :type

Prelude> :type True
True :: Bool
Prelude> :type False
False :: Bool

El tipo Bool -> Bool está formado por todas las funciones cuyo

argumento y valor son booleanos.

Ejemplo de tipo Bool -> Bool

Prelude> :type not
not :: Bool -> Bool

3 / 32

IM Tema 3: Tipos y clases

Conceptos básicos sobre tipos

¿Qué es un tipo?

Un tipo es una colección de valores relacionados.
Un ejemplo de tipos es el de los valores booleanos: Bool
El tipo Bool tiene dos valores True (verdadero) y False (falso).
v :: T representa que v es un valor del tipo T y se dice que “v

tiene tipo T”.

Cálculo de tipo con :type

Prelude> :type True
True :: Bool
Prelude> :type False
False :: Bool

El tipo Bool -> Bool está formado por todas las funciones cuyo

argumento y valor son booleanos.

Ejemplo de tipo Bool -> Bool

Prelude> :type not
not :: Bool -> Bool

3 / 32

IM Tema 3: Tipos y clases

Conceptos básicos sobre tipos

¿Qué es un tipo?

Un tipo es una colección de valores relacionados.
Un ejemplo de tipos es el de los valores booleanos: Bool
El tipo Bool tiene dos valores True (verdadero) y False (falso).
v :: T representa que v es un valor del tipo T y se dice que “v

tiene tipo T”.

Cálculo de tipo con :type

Prelude> :type True
True :: Bool
Prelude> :type False
False :: Bool

El tipo Bool -> Bool está formado por todas las funciones cuyo

argumento y valor son booleanos.

Ejemplo de tipo Bool -> Bool

Prelude> :type not
not :: Bool -> Bool

3 / 32

IM Tema 3: Tipos y clases

Conceptos básicos sobre tipos

Inferencia de tipos

Regla de inferencia de tipos
f :: A → B e :: A

f e :: B
Tipos de expresiones:

Prelude> :type not True

not True :: Bool
Prelude> :type not False

not False :: Bool
Prelude> :type not (not False)

not (not False) :: Bool

Error de tipo:

Prelude> :type not 3
Error: No instance for (Num Bool)
Prelude> :type 1 + False
Error: No instance for (Num Bool)

4 / 32

IM Tema 3: Tipos y clases

Conceptos básicos sobre tipos

Inferencia de tipos

Regla de inferencia de tipos
f :: A → B e :: A

f e :: B
Tipos de expresiones:

Prelude> :type not True

not True :: Bool
Prelude> :type not False

not False :: Bool
Prelude> :type not (not False)

not (not False) :: Bool

Error de tipo:

Prelude> :type not 3
Error: No instance for (Num Bool)
Prelude> :type 1 + False
Error: No instance for (Num Bool)

4 / 32

IM Tema 3: Tipos y clases

Conceptos básicos sobre tipos

Inferencia de tipos

Regla de inferencia de tipos
f :: A → B e :: A

f e :: B
Tipos de expresiones:

Prelude> :type not True

not True :: Bool
Prelude> :type not False

not False :: Bool
Prelude> :type not (not False)

not (not False) :: Bool

Error de tipo:

Prelude> :type not 3
Error: No instance for (Num Bool)
Prelude> :type 1 + False
Error: No instance for (Num Bool)

4 / 32

IM Tema 3: Tipos y clases

Conceptos básicos sobre tipos

Inferencia de tipos

Regla de inferencia de tipos
f :: A → B e :: A

f e :: B
Tipos de expresiones:

Prelude> :type not True

not True :: Bool
Prelude> :type not False

not False :: Bool
Prelude> :type not (not False)

not (not False) :: Bool

Error de tipo:

Prelude> :type not 3
Error: No instance for (Num Bool)
Prelude> :type 1 + False
Error: No instance for (Num Bool)

4 / 32

IM Tema 3: Tipos y clases

Conceptos básicos sobre tipos

Ventajas de los tipos

Los lenguajes en los que la inferencia de tipo precede a la

evaluación se denominan de tipos seguros.

Haskell es un lenguaje de tipos seguros.
En los lenguajes de tipos seguros no ocurren errores de tipos

durante la evaluación.

La inferencia de tipos no elimina todos los errores durante la

evaluación. Por ejemplo,
Prelude> :type 1 `div` 0
1 `div` 0 :: (Integral t) => t
Prelude> 1 `div` 0
*** Exception: divide by zero

5 / 32

IM Tema 3: Tipos y clases

Tipos básicos

Tipos básicos

Bool (Valores lógicos):

Sus valores son True y False.

Char (Caracteres):

Ejemplos: ’a’, ’B’, ’3’, ’+’
String (Cadena de caracteres):

Ejemplos: "abc", "1 + 2 = 3"
Int (Enteros de precisión fija):
Enteros entre −231 y 231 − 1.
Ejemplos: 123, -12

Integer (Enteros de precisión arbitraria):

Ejemplos: 1267650600228229401496703205376.

Float (Reales de precisión arbitraria):

Ejemplos: 1.2, -23.45, 45e-7

Double (Reales de precisión doble):

Ejemplos: 1.2, -23.45, 45e-7

6 / 32

IM Tema 3: Tipos y clases

Tipos compuestos

Tipos listas

Tema 3: Tipos y clases

1. Conceptos básicos sobre tipos

2. Tipos básicos

3. Tipos compuestos

Tipos listas
Tipos tuplas
Tipos funciones

4. Parcialización

5. Polimorfismo y sobrecarga

6. Clases básicas

7 / 32

IM Tema 3: Tipos y clases

Tipos compuestos

Tipos listas

Tipos listas

Una lista es una sucesión de elementos del mismo tipo.
[T] es el tipo de las listas de elementos de tipo T.
Ejemplos de listas:
[False, True]
:: [Bool]
['a','b','d'] :: [Char]
["uno","tres"] :: [String]

Longitudes:

La longitud de una lista es el número de elementos.
La lista de longitud 0, [], es la lista vacía.
Las listas de longitud 1 se llaman listas unitarias.

El tipo de una lista no informa sobre su longitud:

Comentarios:

['a','b'] :: [Char]
['a','b','c'] :: [Char]

El tipo de los elementos de una lista puede ser cualquiera:

[['a','b'],['c']] :: [[Char]]

8 / 32

IM Tema 3: Tipos y clases

Tipos compuestos

Tipos tuplas

Tema 3: Tipos y clases

1. Conceptos básicos sobre tipos

2. Tipos básicos

3. Tipos compuestos

Tipos listas
Tipos tuplas
Tipos funciones

4. Parcialización

5. Polimorfismo y sobrecarga

6. Clases básicas

9 / 32

IM Tema 3: Tipos y clases

Tipos compuestos

Tipos tuplas

Tipos tuplas

Una tupla es una sucesión de elementos.
(T1, T2, . . . , Tn) es el tipo de las n–tuplas cuya componente

i–ésima es de tipo Ti.

Ejemplos de tuplas:

(False,True)
(False,'a',True) :: (Bool,Char,Bool)

:: (Bool,Bool)

Aridades:

La aridad de una tupla es el número de componentes.
La tupla de aridad 0, (), es la tupla vacía.
No están permitidas las tuplas de longitud 1.

Comentarios:

El tipo de una tupla informa sobre su longitud:

('a','b')
('a','b','c') :: (Char,Char,Char)

:: (Char,Char)

El tipo de los elementos de una tupla puede ser cualquiera:

(('a','b'),['c','d']) :: ((Char,Char),[Char])

10 / 32

IM Tema 3: Tipos y clases

Tipos compuestos
Tipos funciones

Tema 3: Tipos y clases

1. Conceptos básicos sobre tipos

2. Tipos básicos

3. Tipos compuestos

Tipos listas
Tipos tuplas
Tipos funciones

4. Parcialización

5. Polimorfismo y sobrecarga

6. Clases básicas

11 / 32

IM Tema 3: Tipos y clases

Tipos compuestos
Tipos funciones

Tipos funciones

Una función es una aplicación de valores de un tipo en valores de

T1 → T2 es el tipo de las funciones que aplica valores del tipo T1

otro tipo.

en valores del tipo T2.
Ejemplos de funciones:

:: Bool -> Bool
not
isDigit :: Char -> Bool

12 / 32

IM Tema 3: Tipos y clases

Tipos compuestos
Tipos funciones

Funciones con múltiples argumentos o valores

Ejemplo de función con múltiples argumentos:

suma (x,y) es la suma de x e y. Por ejemplo, suma (2,3) es 5.

suma :: (Int,Int) -> Int
suma (x,y) = x+y

Ejemplo de función con múltiples valores:

deCeroA n es la lista de los números desde 0 hasta n. Por
ejemplo, deCeroA 5 es [0,1,2,3,4,5].

deCeroA :: Int -> [Int]
deCeroA n = [0..n]

Notas:

1. En las definiciones se ha escrito la signatura de las funciones.
2. No es obligatorio escribir la signatura de las funciones.
3. Es conveniente escribir las signatura.

13 / 32

IM Tema 3: Tipos y clases

Tipos compuestos
Tipos funciones

Funciones con múltiples argumentos o valores

Ejemplo de función con múltiples argumentos:

suma (x,y) es la suma de x e y. Por ejemplo, suma (2,3) es 5.

suma :: (Int,Int) -> Int
suma (x,y) = x+y

Ejemplo de función con múltiples valores:

deCeroA n es la lista de los números desde 0 hasta n. Por
ejemplo, deCeroA 5 es [0,1,2,3,4,5].

d
  • Links de descarga
http://lwp-l.com/pdf6120

Comentarios de: Tema 3: Tipos y clases - Informática (2016–17) (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad