Tema 2. Tipos predefinidos

Documentos relacionados
Tema 7. El sistema de clases

Lógica y Programación

Datos y tipos de datos

El lenguaje Haskell 98

Datos y tipos de datos

Tema 3.- Predicados y sentencias condicionales

GUÍA BÁSICA DE SCHEME v.4

Programación Funcional Haskell Clase 21

Tema 3: Tipos y clases

Tema 3: Tipos y clases

Principios de Computadoras II

Programación 1 Tema 3. Información, datos, operaciones y expresiones

Lenguajes de Inteligencia Artificial Segundo curso. Primer cuatrimestre

1 Estructura básica de un programa C++

Tema 3. Tipos de datos simples

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

El lenguaje C. 1. Identificadores, constantes y variables

Constantes. Las constantes no cambian durante la ejecucion de un programa en C++, en C++ existen 4 tipos de constantes:

Lección 2 Introducción al lenguaje C

FUNDAMENTOS DE INFORMÁTICA

Capítulo 7 OPERADORES Y EXPRESIONES. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Curso de Programación Avanzada en C

4. Operadores Operador asignación

Ficha de Aprendizaje N 13

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

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS

Fundamentos de la programación

11/02/2009 IEC de febrero de 2009 Antonio Cambronero, Product Engineer OMRON Electronics Iberia S.A.U. IEC ( Programación en ST )

OPERADORES Y EXPRESIONES

PHP: Lenguaje de programación

Introducción al lenguaje JAVA

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

CONTROLADORES DE FLUJO DE PROGRAMA

U i n d id d a 3. El Element os á bá i s cos de un programa

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Elementos de un programa en C

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Tema 4. Operadores y Expresiones

1 ELEMENTOS BASICOS DEL LENGUAJE

Tema 3 Elementos básicos de programación

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos

Hoja de ejercicios del Tema 3

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF

DIAGRAMAS DE FLUJO ELEMENTOS E INSTRUCCIONES A USAR EN UN DIAGRAMA DE FLUJO

Programación en Pascal

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN. Métodos Numéricos Carlos Zotelo

Unidad III. Fórmulas y funciones

Expresiones y sentencias

PROCEDIMIENTOS Y FUNCIONES DE LA PROGRAMACIÓN (VISUAL BASIC)

Es toda la información que utiliza el computador. Según sea la información que guardemos en los datos, se clasifican en los siguientes tipos:

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Programación. Test Autoevaluación Tema 3

Tema 3 Constantes, Variables y Tipos

QUÉ ES UNA FUNCIÓN? ESTRUCTURA DE UNA FUNCIÓN. La sintaxis de cualquier función es:

Tipos primitivos y clases de interés

Introducción a la Programación 11 O. Humberto Cervantes Maceda

Programación Funcional

Programación En Lenguaje C

Algunas funciones intrínsecas útiles para trabajar con números en Fortran 90

INICIACIÓN A LA PROGRAMACIÓN II

2. EXPRESIONES 3. OPERADORES Y OPERANDOS 4. INDENTIFICADORES COMO LOCALIDADES DE MEMORIA

Capítulo 1: Sistemas de representación numérica Introducción. Dpto. de ATC, Universidad de Sevilla - Página 1 de 8

Ejercicio 3 Funciones Parte 1.

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.

Tema 2. El lenguaje de programación Java (Parte 1)

Computación II. Introducción a Visual Basic

Una función es una fórmu SINTAXIS DE UNA FUNCI. Ejemplo de sintaxis: escriben entre los paréntes Ejemplo: =SUMA(A1:C8) argumentos.

Java para programadores

Isabelle como un lenguaje funcional

Tema 2: Los tipos de datos

3.1. Trabajando con distintos tipos de números

CONCEPTOS BASICOS DEL LENGUAJE JAVA

Tema 2. El lenguaje JAVA

FUNDAMENTOS DE INFORMÁTICA

FUNDAMENTOS DE INFORMÁTICA

Teoría de Conjuntos y Conjuntos Numéricos

Teoría de Conjuntos y Conjuntos Numéricos

Introducción a los Algoritmos Validez, Satisfactibilidad, Tipos y Funciones

Variables. Profesor Leonardo Carámbula - Programación III EMT I.S.B.O.

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Sintaxis básica, variables y 7pos

Un identificador le da nombre único a un elemento en un programa (Variables, procedimientos, etc.). No puede contener operadores como + - * /

Estructura de Computadores

Manual de turbo pascal

Tema Árboles generales. 9.2 Árboles binarios 9.3 Árboles de búsqueda

Objetivo de aprendizaje del tema

Fundamentos Conceptuales de la Informática. Funciones. Prof. Manuel Rivas

Enteros: números pertenecientes a un subconjunto finito de los números enteros. Lógicos: los dos valores lógicos, VERDADERO (true) o FALSO (false).

Programación orientada a objetos. Resumen de Temas Unidad 4: Sobrecarga

En este artículo vamos a conocer los tipos de datos que podemos manejar programando en C.

JavaScript Básico. Ejemplo. Arreglos en JavaScript Creación de Arreglos. Asignación de valores. var miarray = new Array() var miarray = new Array(10)

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Funciones útiles de Visual foxpro

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

UNIDAD DE APRENDIZAJE II

TIPO DE DATO ABSTRACTO (TDA)

Lenguajes de programación

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

Transcripción:

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 El tipo Float El tipo Double El tipo Char Operadores de igualdad y orden 2.2 Constructores de tipo predefinidos Tuplas Listas El constructor de tipo ( )

2.1 Tipos simples predefinidos El tipo Bool Los valores de este tipo representan expresiones lógicas cuyo resultado puede ser verdadero o falso. Solo hay dos valores para el tipo: T rue y False. Funciones y operadores (&&) :: Bool Bool Bool conjunción lógica. ( ) :: Bool Bool Bool disyunción lógica. not :: Bool Bool negación lógica. otherwise :: Bool función constante que devuelve el valor True. Comportamiento de las funciones anteriores: v1 v2 v1 && v2 v1 v2 T rue T rue T rue T rue T rue F alse F alse T rue F alse T rue F alse T rue F alse F alse F alse F alse v T rue F alse not v F alse T rue? True && False False :: Bool? not (True && False) True :: Bool Informática Pepe Gallardo Universidad de Málaga 2.1

El tipo Int Números enteros de precisión limitada que cubren al menos el rango [ 2 29, 2 29 1]. Funciones y operadores (+), ( ), ( ) :: Int Int Int. Suma, resta y producto de enteros. ( ) :: Int Int Int. Operador potencia. El exponente debe ser mayor o igual a cero. div, mod :: Int Int Int. Cociente y resto de dividir dos enteros. abs :: Int Int. Valor absoluto. signum :: Int Int. devuelve +1, -1 o 0, según el signo del entero argumento. negate :: Int Int. Invierte el signo de su argumento. También puede usarse un signo menos prefijo. even, odd :: Int Bool. Comprueban la naturaleza par o impar de un número. Informática Pepe Gallardo Universidad de Málaga 2.2

El tipo Integer Los valores de este tipo son números enteros de precisión ilimitada. Para los valores del tipo Integer están disponibles las mismas operaciones que para el tipo Int. Los cálculos con datos de tipo Integer son menos eficientes que con datos de tipo Int.? 2 100 1267650600228229401496703205376 :: Integer? 111111111 111111111 12345678987654321 :: Integer Informática Pepe Gallardo Universidad de Málaga 2.3

El tipo Float Subconjunto de un intervalo de los números reales. Hay dos modos de escribir valores reales: La notación habitual: Por ejemplo, 1.35, 15.345, 1.0, 1 La notación científica: Por ejemplo, 1.5e7, 1.5e 17 Funciones y operadores (+), ( ), ( ), (/) :: Float Float Float. Suma, producto, resta y división de reales ( ) :: Float Int Float. Potencia, de base real, pero exponente entero y positivo. ( ) :: Float Float Float. Potencia, de base y exponente real. abs :: Float Float. Valor absoluto. signum :: Float Float. Devuelve -1.0, 0.0 ó +1.0 dependiendo del signo del real argumento. negate :: Float Float. Devuelve el valor del real argumento negado. Puede usarse también el signo menos prefijo. Informática Pepe Gallardo Universidad de Málaga 2.4

Funciones y operadores (2) sin, asin, cos, acos, tan, atan :: Float Float. Funciones trigonométricas (trabajan con radianes) atan2 :: Float Float Float. atan2 x y devuelve la arcotangente de x y. log, exp :: Float Float. Funciones logarítmicas y exponenciales. sqrt :: Float Float. Raíz cuadrada. pi :: Float. El valor del número π. truncate, round, floor y ceiling :: Float Integer o Float Int. Funciones de redondeo. fromint :: Int Float y frominteger :: Integer Float. Funciones de conversión de tipo. El tipo Double Se trata de un subconjunto de un intervalo de los números reales. El subconjunto es mayor que el correspondiente al tipo Float y las aproximaciones más precisas. Todas las operaciones disponibles para el tipo Float están también disponibles para el tipo Double. Informática Pepe Gallardo Universidad de Málaga 2.5

El tipo Char Un valor de tipo Char representa un carácter (una letra, un dígito, un signo de puntuación, etc.). Un valor constante de tipo carácter se escribe entre comillas simples. a, 1,? Algunos caracteres especiales se escriben precediéndolos del carácter \: \ n es el carácter de salto de línea. \ t es el carácter tabulador. \ es el carácter comilla. \ es el carácter comilla doble. \\ es el carácter \. Funciones ord :: Char Int. código ASCII del carácter argumento. chr :: Int Char. Función inversa a la anterior. isupper, islower, isdigit, isalpha :: Char Bool. Comprueban si un carácter es una letra mayúscula, minúscula, un dígito o una letra. toupper, tolower :: Char Char. Convierten un carácter a mayúscula o minúscula. Informática Pepe Gallardo Universidad de Málaga 2.6

Operadores de igualdad y orden Para todos los tipos básicos comentados están definidos los siguientes operadores binarios, que devuelven un valor booleano: (>) mayor que (>=) mayor o igual que (<) menor que (<=) menor o igual que (==) igual que (/=) distinto que El tipo de los dos argumentos debe ser el mismo (no se pueden comparar valores de tipos distintos). Ejemplos? 10 <= 15 True :: Bool? x == y False :: Bool? x /= y True :: Bool? True < ERROR a : Type error in application Expression : True < a Term : True Type : Bool Does not match : Char Para el tipo Char el orden viene dado por el código ASCII del carácter. Para el tipo Bool, el valor False se considera menor que True. Informática Pepe Gallardo Universidad de Málaga 2.7

2.2 Constructores de tipo predefinidos Haskell define tipos estructurados que permiten representar colecciones de objetos. Tuplas Una tupla es un dato compuesto donde el tipo de cada componente puede ser distinto. Tuplas 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:? () () :: ()? ( a, True) ( a, True) :: (Char, Bool)? ( a, True, 1.5) ( a, True, 1.5) :: (Char, Bool, Double) Las tuplas son útiles cuando una función tiene que devolver más de un valor. predsuc :: Integer (Integer, Integer) predsuc x = (x 1, x + 1) Informática Pepe Gallardo Universidad de Málaga 2.8

Listas Una lista es una colección de cero o más elementos todos del mismo tipo. Hay dos constructores para listas: [ ] Representa la lista vacía (lista con cero elementos). (:) Permite añadir un elemento a principio de una lista. Si xs es una lista con n elementos, y x es un elemento, entonces x : xs es una lista con n + 1 elementos. Listas 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 : [ ] Una lista que almacena un único entero. Tiene tipo [Integer]. 3 : (1 : [ ]) Una lista que almacena dos enteros. El valor 3 ocupa la primera posición dentro de la lista. El valor 1 la segunda. a : (1 : [ ]) Es una expresión errónea (produce un error de tipos). Informática Pepe Gallardo Universidad de Málaga 2.9

Listas (2) El constructor (:) es asociativo a la derecha: Asociatividad derecha de (:) x 1 : x 2 :... x n 1 : x n : [ ] ===> x 1 : (x 2 : (... (x n 1 : (x n : [ ])))) Aún así, la notación sigue siendo engorrosa. Haskell permite una sintaxis para listas más cómoda: Sintaxis para listas [x 1, x 2,... x n 1, x n ] ===> x 1 : (x 2 : (... (x n 1 : (x n : [ ])))) Tres modos de escribir la misma lista:? 1 : (2 : (3 : [ ])) [1, 2, 3] : : [Integer]? 1 : 2 : 3 : [ ] [1, 2, 3] :: [Integer]? [1, 2, 3] [1, 2, 3] :: [Integer] Informática Pepe Gallardo Universidad de Málaga 2.10

Cadenas de caracteres (Strings) Una cadena de caracteres es una secuencia de cero o más caracteres. En Haskell, las cadenas de caracteres son listas de caracteres. El tipo asociado a las cadenas de caracteres es String (un modo equivalente de escribir el tipo [Char]). Haskell permite una sintaxis más cómoda para escribir cadenas de caracteres: escribir el texto entre comillas dobles: Cadenas de caracteres x 1 x 2... x n 1 x n ===> [ x 1, x 2,... x n 1, x n ] Ejemplos:? U : n : : C : o : c : h : e : [ ] Un Coche :: [Char]? [ U, n,, C, o, c, h, e ] Un Coche :: [Char]? Un Coche Un Coche :: String Informática Pepe Gallardo Universidad de Málaga 2.11

El constructor de tipo ( ) Es posible declarar el tipo correspondiente a las distintas funciones. Para ello disponemos de un único constructor: ( ). Tipos Funcionales 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 El tipo del resultado es t r Ejemplos: inc :: Integer Integer inc x = x + 1 escero :: Integer Bool escero x = (x == 0) sumacuadrados :: Integer Integer Integer sumacuadrados x y = x 2 + y 2 Informática Pepe Gallardo Universidad de Málaga 2.12

Objetivos del tema El alumno debe: Conocer los distintos tipos simples predefinidos Conocer las distintas funciones y operadores predefinidos para cada tipo Conocer los tipos estructurados predefinidos Informática Pepe Gallardo Universidad de Málaga 2.13