Definiciones de tipo. Sinónimos de tipo
|
|
- Purificación Gutiérrez Moya
- hace 7 años
- Vistas:
Transcripción
1 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 type DeEnteroEnEntero =Entero Entero uno :: Entero uno = 1 sucesor :: DeEnteroEnEntero sucesor x = x + 1 type ParFlotantes = (Float, Float) parceros :: ParFlotantes parceros = (0.0, 0.0) Un sinónimo de tipo muy usado, definido en Prelude, es String: type String = [Char] nombre :: String nombre = [ p, e, p, e ] nombreyapellidos :: String nombreyapellidos = Jośe E. Gallardo Main> length nombre 4 :: Int16 :: Int Main> length nombreyapellidos 16 :: Int
2 Capítulo 4. Definiciones de tipo 41 Definiciones de tipos de datos El programador puede definir nuevos tipos. Tipos enumerados Haskell permite usar los constructores de datos como patrones: esfinsemana :: DíaSemana Bool esfinsemana Sábado = True esfinsemana Domingo = True esfinsemana = False data DíaSemana = Lunes Martes Miércoles Jueves Viernes Sábado Domingo undía :: DíaSemana undía = Lunes laborables :: [DíaSemana] laborables = [Lunes, Martes, Miércoles, Jueves, Viernes] DíaSemana es un constructor de tipo Lunes, Martes,... son constructores de datos Un constructor de dato también puede ser simbólico, y en ese caso debe ser un operador que comience por el carácter dos puntos : Un mismo constructor de dato no puede aparecer en dos tipos distintos en un mismo ámbito. data Dirección = Norte Sur Este Oeste girar 90 :: Dirección Dirección girar 90 Norte = Este girar 90 Sur = Oeste girar90 Este = Sur girar 90 Oeste = Norte data ColorSemáforo = Rojo Verde Amarillo En Prelude data Bool = False True deriving (Eq, Ord, Ix, Enum, Read, Show, Bounded)
3 Capítulo 4. Definiciones de tipo 42 Uniones Podemos definir nuevos tipos uniendo dos tipos existentes: data LetraOEntero = Letra Char Entero Integer unvalor :: LetraOEntero unvalor = Letra x otrovalor :: LetraOEntero otrovalor = Entero 15 Es incorrecto: data LetraOEntero = Char Integer Temperaturas expresadas en dos escalas: Incorrecto!!! data Temp = Centígrado Float Fahrenheit Float estácongelado :: Temp Bool estácongelado (Centígrado grados) = grados 0.0 estácongelado (Fahrenheit grados) = grados 32.0 listamixta :: [LetraOEntero] listamixta = [ Letra a, Entero 10, Entero 12, Letra b ] Cada constructor de dato tiene un tipo. Letra :: Char LetraOEntero Entero :: Integer LetraOEntero incloe :: LetraOEntero LetraOEntero incloe (Entero n) = Entero. (+1) $ n incloe (Letra c) = Letra. chr. (+1). ord $ c Main> incloe (Letra a ) Letra b :: LetraOEntero Main> incloe (Entero 10) Entero 11 :: LetraOEntero
4 Capítulo 4. Definiciones de tipo 43 Productos También es posible definir tipos con un único constructor y varias componentes: data Racional = Par Integer Integer El constructor en este caso tiene el tipo Par :: Integer Integer Racional unmedio :: Racional unmedio = Par 1 2 Usando patrones podemos definir operaciones para trabajar con racionales: numerador numerador (Par x denominador denominador (Par :: Racional Integer ) = x :: Racional Integer y) = y por :: Racional Racional Racional (Par a b) por (Par c d) = Par (a c) (b d) Main> (Par 1 2) por (Par 1 3) Par 1 6 :: Racional Nombre, apellidos y edad de una persona: type Nombre =String type Apellido1 =String type Apellido2 =String type Edad =Integer data Persona =UnaPersona Nombre Apellido1 Apellido2 Edad pepe :: Persona pepe = UnaPersona Jośe Pérez Sánchez 18 Haskell permite nombrar las distintas componentes de un tipo: type Nombre =String type Apellido =String type Edad =Integer data Persona =UnaPersona { nombre :: Nombre, apellido1 :: Apellido, apellido2 :: Apellido, edad :: Edad }
5 Capítulo 4. Definiciones de tipo 44 Con registros, los datos se pueden declarar con la sintaxis habitual o nombrando los campos: pepe :: Persona pepe = UnaPersona Jośe Pérez Sánchez 18 juan :: Persona juan = UnaPersona { nombre = Juan, apellido1 = López, apellido2 = Giménez, edad =24 } Además, se introducen automáticamente funciones selectoras para las componentes: Main> : t edad edad :: Persona Edad Main> edad juan 24 :: Integer Se puede construir un nuevo valor a partir de otro existente, indicando el valor de las componentes que defieren: Main> juan {apellido1 = Boj, apellido2 = Sanz } UnaPersona {nombre = Juan, apellido1 = Boj, apellido2 = Sanz, edad = 24} :: Persona Lo cual, por supuesto, no afecta para nada al valor de juan: Main> juan UnaPersona {nombre = Juan, apellido1 = López, apellido2 = Giménez, edad = 24} :: Persona La siguiente función devuelve una nueva Persona con la edad incrementada: cumpleaños :: Persona Persona cumpleaños p = p {edad = edad p + 1} Main> cumpleaños juan UnaPersona{nombre = Juan, apellido1 = López, apellido2 = Giménez, edad = 25} :: Persona
6 Capítulo 4. Definiciones de tipo 45 Los identificadores de constructores binarios de dato también pueden ser simbólicos Siempre han de comenzar por el carácter dos puntos data Complejo =Float : Float origen :: Complejo origen = 0.0 : 0.0 partereal partereal (x : :: Complejo Float ) = x El constructor de dato introducido tiene el siguiente tipo: (: ) :: Float Float Complejo Main> (: ) : 2.0 :: Complejo Main> 1.0 : : 2.0 :: Complejo Un constructor literal puede usarse de forma infija si se escribe entre acentos franceses: dostercios :: Racional dostercios = 2 Par 3 También es posible definir registros variantes Un tipo que representa cuatro clases de figuras: type Radio =Float type Lado =Float data Figura = C írculo Radio Cuadrado Lado Rectángulo Lado Lado Punto unc írculo :: Figura unc írculo = C írculo 25.0 unrectángulo :: Figura unrectángulo = Rectángulo listafiguras :: [Figura] listafiguras = [C írculo 15.0, Cuadrado 3.0, Rectángulo ] Define dos funciones para calcular el área y per ímetro de una Figura.
7 Capítulo 4. Definiciones de tipo 46 Tipos recursivos Haskell permite la definición de tipos infinitos mediante declaraciones de tipos recursivos. Los naturales El cero es un número natural. Si n es un número natural, entonces n + 1 también lo es. En Haskell la declaración es: data Nat = Cero Suc Nat Cero :: Nat Suc :: Nat Nat Algunas funciones uno :: Nat uno = Suc Cero dos :: Nat dos = Suc (Suc Cero) puede escribirse Suc uno Cero, Suc Cero, Suc (Suc Cero),... los llamaremos valores definidos. Existen otros valores del tipo que no representan ningún número natural. undefined :: a undefined False = undefined siempre falla indefinidon :: Nat indefinidon = undefined Main> uno Suc Cero :: Nat Main> dos Suc (Suc Cero) :: Nat Main> indefinidon Program error : undefined Este valor suele denotarse semánticamente como (se lee bottom). Se considera que las evaluaciones que producen algún error o que no terminan (divergen) se reducen a. indefinidon =. Main> Suc indefinidon Suc Program error : undefined Main> Suc (Suc indefinidon ) Suc (Suc Program error : undefined
8 Capítulo 4. Definiciones de tipo 47 Obsérvese que dan lugar a evaluaciones distintas. Así, Suc indefinidon = Suc mientras que Suc (Suc indefinidon ) = Suc (Suc ) Suc indefinidon está algo más definido que indefinidon. escero :: Nat Bool escero Cero = True escero = False Main> escero indefinidon Program error : undefined Main> escero (Suc indefinidon ) False :: Bool infiniton :: Nat infiniton = Suc infiniton Main> infiniton Suc (Suc (Suc (Suc (Suc (Suc (Suc (Suc {Interrupted!} La siguiente función comprueba si un valor de tipo Nat representa un número par: espar :: Nat Bool espar Cero = True espar (Suc x) = not (espar x) El siguiente operador calcula la suma de dos valores del tipo Nat, analizando la forma del segundo argumento: infixl 6 <+> (<+>) :: Nat Nat Nat m <+> Cero = m m <+> (Suc n) = Suc (m <+> n) uno <+> dos =! definición de dos uno <+> Suc (Suc Cero) =! segunda ecuación de (<+>) Suc (uno <+> (Suc Cero)) =! segunda ecuación de (<+>) Suc (Suc (uno <+> Cero)) =! primera ecuación de (<+>) Suc (Suc (uno)) =! definición de uno Suc (Suc (Suc Cero))
9 Capítulo 4. Definiciones de tipo 48 En general, si una función tiene más de un argumento recursivo, podemos intentar realizar la recursión sobre uno de ellos. infixl 6 <+> (<+>) :: Nat Nat Nat Cero <+> n = n (Suc m) <+> n = Suc (m <+> n) No siempre es posible realizar la definición sobre cualquiera de los argumentos. Para el tipo Nat también es posible definir el producto y la potencia: infixl 7 < > (< >) :: Nat Nat Nat m < > Cero = Cero m < > (Suc n) = m < > n <+> m infixr 8 < > ya que m (n + 1) = m n + m (< >) :: Nat Nat Nat b < > Cero = Suc Cero b < > (Suc n) = b < > b < > n Expresiones aritméticas simples sobre enteros: data Expr = Valor Integer Expr :+: Expr Expr : : Expr Expr : : Expr Calcular el número de operadores que forman parte de una expresión: numopers :: Expr Integer numopers (Valor ) = 0 numopers (e1 :+: e2) = numopers e numopers e2 numopers (e1 : : e2) = numopers e numopers e2 numopers (e1 : : e2) = numopers e numopers e2 Define una función que calcule el valor de una expresión. Define una función que calcule cuántas constantes enteras aparecen en una expresión. Define una función que calcule el nivel de anidamiento máximo de un operador en una expresión. ya que b (n + 1) = b b n
10 Capítulo 4. Definiciones de tipo 49 Funciones de plegado Para cada tipo recursivo es posible definir un recursor de plegado. Muchas de las funciones definidas sobre el tipo Nat siguen un mismo patrón recursivo. Recordemos algunas: data Nat = Cero Suc Nat espar :: Nat Bool espar Cero = True espar (Suc n) = not (espar n) (<+>) :: Nat Nat Nat (<+>) m Cero = m (<+>) m (Suc n) = Suc (m <+> n) Siguen la plantilla: fun :: Nat a fun Cero = e fun (Suc n) = f (fun n) Función de plegado para el tipo Nat foldnat :: (a a) a Nat a foldnat f e Cero = e foldnat f e (Suc n) = f (foldnat f e n) Entonces: espar = foldnat not True (<+>) m =foldnat Suc m Comportamiento de foldnat foldnat h z (Suc (Suc ( i. veces.. (Suc Cero)))) = h (h ( i. veces.. h z)) espar (Suc (Suc Cero)) =! por definición de espar foldnat not True (Suc (Suc Cero)) =! por segunda ecuación de foldnat... True Escribe una función de plegado para el tipo Expr data Expr = Valor Integer Expr :+: Expr Expr : : Expr Expr : : Expr
11 Capítulo 4. Definiciones de tipo 50 Tipos Parametrizados (o Polimórficos) Algunos tipos predefinidos (como las listas) son polimórficos. Otro ejemplo: data Par a = UnPar a a (a es una variable de tipo). Main> UnPar 1 2 UnPar 1 2 :: Par Integer Main> UnPar True False UnPar True False :: Par Bool Main> UnPar a True ERROR : Type error in application Expression : UnPar a True Term : a Type : Char Does not match : Bool El tipo Either data Either a b = Left a Right b deriving (Eq, Ord, Read, Show) listamixta :: [Either Char Integer] listamixta = [Left a, Left c, Right 3, Left z ] otra :: [Either Bool Char] otra = [Left True, Right a, Right c ] El tipo Maybe data Maybe a = Nothing Just a deriving (Eq, Ord, Read, Show) recíproco :: Float Maybe Float recíproco 0 = Nothing recíproco x = Just (1/x) Main> recíproco Just :: Maybe Float Main> recíproco 0 Nothing :: Maybe Float
12 Capítulo 4. Definiciones de tipo 51 Definiciones newtype La declaración newtype crea un nuevo tipo isomorfo (con los mismos valores) a uno existente, pero con una identidad propia para el sistema de tipos. newtype Natural = UnNatural Integer Todo lo dicho para data vale para newtype. newtype evita el nivel extra de indirección (causado por la evaluación perezosa) que la declaración data introduciría. Las declaraciones newtype usan la misma sintaxis que las declaraciones data que poseen un único constructor con un único campo.
13 Capítulo 4. Definiciones de tipo 52 Propiedades de funciones Podemos entender mejor el significado de un programa estableciendo propiedades de las funciones que lo forman. Algunas propiedades pueden probarse directamente a partir de la definiciones de las funciones involucradas. Demostrar que la composición de funciones es asociativa (.) :: (b c) (a b) (a c) g. f = λ x g (f x) Asociatividad de (.) v ((f 1. f 2 ). f 3 ) v = (f 1. (f 2. f 3 )) v ((f 1. f 2 ). f 3 ) v! por definición de (.) (f 1. f 2 ) (f 3 v)! por definición de (.) f 1 (f 2 (f 3 v)) Transformamos ahora la parte derecha: f 1 ((f 2. f 3 ) v)! por definición de (.) f 1 (f 2 (f 3 v)) con lo cual queda demostrada la proposición original. Para tipos enumerados podemos probar la propiedad en cada caso not :: Bool Bool not True = False not False = True Doble negación x :: Bool not (not x) = x Si x es True, hay que probar not (not True) = True. not (not True)! por definición de not not False! por definición de not True Si x es False,... (f 1. (f 2. f 3 )) v! por definición de (.)
14 Capítulo 4. Definiciones de tipo 53 Las declaraciones de tipo recursivas dan lugar a conjuntos infinitos. La inducción es la técnica ideal para probar propiedades de funciones que actúan sobre tipos recursivos. El principio de inducción para el tipo Nat: data Nat = Cero Suc Nat Principio de inducción para valores definidos del tipo Nat P (Cero) x :: Nat P(x) x :: Nat P (x) P (Suc x) P Cero (demostrado en caso base)! por paso inductivo P (Suc Cero)! por paso inductivo P (Suc (Suc Cero)) las dos condiciones del principio de inducción son suficientes!! Este principio de inducción no es válido para valores del tipo Nat parcialmente definidos (como indefinidon e infiniton ).
15 Capítulo 4. Definiciones de tipo 54 Para el operador suma, (<+>) :: Nat Nat Nat m <+> Cero = m m <+> (Suc n) = Suc (m <+> n) Cero es neutro por la izquierda: x :: Nat Cero <+> x = x Por el principio de inducción: Caso Base: Cero <+> Cero = Cero Paso Inductivo: x :: Nat Cero <+> x = x HI Cero <+> (Suc x) = Suc x Caso base: Cero <+> Cero! por definición de (<+>) Cero Paso inductivo:! por definición de (<+>) Suc (Cero <+> x)! por hipótesis de inducción Suc x Cuando en la proposición considerada aparece más de una variable se puede realizar la inducción sobre alguna de ellas. Asociatividad de (<+>) x, y, z :: Nat (x <+> y) <+> z = x <+> (y <+> z) Realizando la inducción sobre la variable z: z :: Nat P (z) donde P(z) = x, y :: Nat (x <+> y) <+> z = x <+> (y <+> z) Por el principio de inducción basta con probar: Caso Base: P(Cero) Paso Inductivo: z :: Nat P (z) P(Suc z) Principio de inducción para el tipo Expr (49)? Cero <+> (Suc x)
16 Capítulo 4. Definiciones de tipo 55 Sobrecarga Haskell permite definir funciones monomórficas y polimórficas. Un ejemplo de función monomórfica: not :: Bool Bool not True = False not False = True (sólo tiene sentido para booleanos). Un ejemplo de función polimórfica: id :: a a id x = x Prelude> id True True :: Bool id con tipo Bool Bool Prelude> (id not) True False :: Bool id con tipo (Bool Bool) (Bool Bool) Una función polimórfica tiene sentido para distintos usos. Función sobrecargada: a medio camino entre las funciones monomórficas y las polimórficas. Tienen sentido para más de un tipo, pero con restricciones. Si el tipo del operador (+) fuera: (+) :: a a a permitiría 1 + 2, y True + False. Haskell utiliza un sistema de clases para modelar la sobrecarga. Una clase es un conjunto de tipos para los que tiene sentido un grupo de funciones. Existen distintas clases predefinidas y cada una contiene una serie de (tipos) ejemplares. La clase Num incluye los tipos Int, Integer, Double y Float. El modo de restringir el polimorfismo es vía un contexto: (+) :: Num a a a a
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
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
Programación Funcional en Haskell
Programación Funcional en Haskell Paradigmas de Lenguajes de Programación 1 cuatrimestre 2006 1. Expresiones, valores y tipos Un programa en lenguaje funcional consiste en definir expresiones que computan
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
OPERADORES Y EXPRESIONES
OPERADORES Y EXPRESIONES Una expresión es una combinación de variables, literales y operadores, que representan un valor Operadores aritméticos Operador Función + suma - resta * producto / división % operador
CALENDARIO AÑO 2016 PICO Y PLACA AUTOMOVILES SERVICIO ESPECIAL PICO Y PLACA TAXIS
JULIO VIERNES 1 9 7-8 7-8 5-6 1-3-5-7-9 SABADO 2 8 9-0 9-0 7-8 NO APLICA DOMINGO 3 NO APLICA NO APLICA NO APLICA NO APLICA NO APLICA LUNES 4 FESTIVO FESTIVO FESTIVO FESTIVO FESTIVO MARTES 5 1 3-4 3-4 1-2
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
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
Práctica de constantes, expresiones y operadores. Programación en C 1
Práctica de constantes, expresiones y operadores Programación en C 1 Definición de variables (II) Las variables (automáticas) no inicializadas tienen cualquier valor. Una variable (automática) se inicializa
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
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
CALENDARIO AÑO 2016 PICO Y PLACA AUTOMOVILES SERVICIO ESPECIAL PICO Y PLACA TAXIS
ENERO VIERNES 1 FESTIVO FESTIVO FESTIVO FESTIVO FESTIVO SABADO 2 3 7-8 7-8 5-6 NO APLICA DOMINGO 3 NO APLICA NO APLICA NO APLICA NO APLICA NO APLICA LUNES 4 4 9-0 9-0 7-8 NO APLICA MARTES 5 5 1-2 1-2 9-0
Estatutos de Control C# Estatutos de Decisión (Selección)
SELECCIÓN Estatutos de Control C# Estatutos de Decisión (Selección) IF Condición THEN Estatuto1 ELSE Estatuto2 Estatuto1 Statement Condición... Antes de ver esta presentación: Lee el Capítulo correspondiente
Programación 1 Tema 3. Información, datos, operaciones y expresiones
Programación 1 Tema 3 Información, datos, operaciones y expresiones Índice Datos y tipos de datos Datos primitivos en C++ Expresiones e instrucción de asignación Datos y tipos de datos Problema información
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)
Objetivos de la sesión Entender el tipo de programas que se pueden realizar con aplicaciones de consola. Conocer el concepto de variable, la forma en que se declaran y su utilización. Conocer la forma
TIPO DE DATO ABSTRACTO (TDA)
TIPO DE DATO ABSTRACTO (TDA) Ing. Eduard Antonio Lozano Córdoba Nota: Toda la información fue copiada de: Libros físicos e Internet Actividad Extra Clases #include #include int binario(int
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
Las plantillas permiten definir funciones genéricas.
Introducción (Genericidad). Plantillas de funciones o funciones genéricas. Sintaxis de plantillas. Ejemplos de declaraciones. A tener en cuenta Un ejemplo de plantilla de funciones: Máximo de un vector.
Expresiones y sentencias
Expresiones y sentencias Expresión Construcción (combinación de tokens) que se evalúa para devolver un valor. Sentencia Representación de una acción o una secuencia de acciones. En Java, todas las sentencias
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
Programación Funcional Haskell Clase 21
Programación Funcional Haskell Clase 21 José Raymundo Marcial Romero rmarcial@fi.uaemex.mx BUAP c José Raymundo Marcial Romero. Clase Número 21 p.1/12 Temas de la clase Clase Anterior En Haskell cada expresión
Programación en Visual Basic Ricardo Rodríguez García
Manual Básico de Programación en Visual Basic 1.- Estructura de un proyecto Visual Basic Los programas o aplicaciones desarrolladas en Visual Basic van a constituir un único paquete que denominaremos proyecto.
Fundamentos de JAVA. Angel Kuri Enero, /2/2006
Fundamentos de JAVA Angel Kuri Enero, 2006 Enunciados y Expresiones Los siguientes son enunciados sencillos: int i = 1 import java.awt.font System.out.println( Esta moto es una + color + + marca); m.enginestate
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
Curso de Programación Avanzada en C
Curso de Programación Avanzada en C Copyright, 1996 Universidad Sim on Bol ivar 1 Prof. Mariela J. Curiel Contenido del Curso Conceptos BásicosB Estructuras de Control Arreglos Otros tipos de datos derivados
Capítulo 7 OPERADORES Y EXPRESIONES. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"
Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C" Autor: Carlos Javier Pes Rivas (correo@carlospes.com) Capítulo 7 OPERADORES Y EXPRESIONES 1 OBJETIVOS Conocer los tipos de operadores
Lección 2 Introducción al lenguaje C
Lección Introducción al lenguaje C Decimal Binario Hexadecimal A B C D E F Octal Equivalencia entre decimal, binario, hexadecimal y octal. Código ASCII (American Standard Code for Information Interchange)
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
ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF
ESCUELA POLITÉCNICA SUPERIOR GRADO EN DISEÑO IND. INFORMÁTICA CURSO 2012-13 PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF HASTA AHORA... En prácticas anteriores se ha aprendido: La estructura principal de un
Introducción a Java (II) Dr. (c) Noé Alejandro Castro Sánchez
Introducción a Java (II) Dr. (c) Noé Alejandro Castro Sánchez Sintaxis de Java Sintaxis Define las reglas que determinar el uso de palabras clave, operadores y variables para construir y evaluar expresiones.
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
Clases en Java. Declaración de clases en Java 02/09/16. Ing. Roberto Martínez Román - public class Alumno { private int matricula;
Clases en Java ESCRIBIENDO CLASES rmroman@itesm.mx Declaración de clases en Java public class Alumno private int matricula; public void mostrardatos() System.out.println("Matrícula: " + matricula); Firma
Java para programadores
Java para programadores Java y Servicios Web I Master en Ingeniería Matemática Manuel Montenegro Dpto. Sistemas Informáticos y Computación Desp. 467 (Mat) montenegro@fdi.ucm.es Contenidos Variables. Tipos
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
INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA
APUNTES DE JAVA FUNCIONAMIENTO DE UN PROGRAMA Assembler Ensamblador Ejecuta Programador Programa fuente BASIC Interprete Ejecuta C, C++, Pascal Compilador Compila Ejecuta Programa fuente Programa Objeto
Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C
Algoritmo y Estructura de Datos Ing. M. Laura López 1 Estructura de un programa en C 2 Estructura de un programa en C #include Archivos de cabecera # define Definición de constantes Declaraciones Globales
TEMA 4. ESTRUCTURAS DE CONTROL
M.P. Sesmero, P. de Toledo, F.J. Ordoñez, J. Gómez-Romero, J.A. Iglesias, J.L. Mira Programación TEMA 4. ESTRUCTURAS DE CONTROL Grado en Ingeniería en Tecnologías Industriales Programación CONTENIDOS 4.1.
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
Programación Funcional
Programación Funcional Jeroen Fokker 1996 Universidad de Utrecht Departamento de Informática Traducci on: Programa MEMI Universidad Mayor de San Simón Hielko R. Ophoff & Bernardo Sánchez J. Revisión: Universidad
Fecha Segundo Cuarto Sexto Octavo
PRIMER ORDINARIO Lunes 23 de Martes 24 de BASE DE Miércoles 25 de Jueves 26 de Viernes 27 de SEGUNDO ORDINARIO Lunes 23 de Martes 24 de BASE DE Miércoles 25 de Jueves 26 de Viernes 27 de TERCER ORDINARIO
Sintaxis básica, variables y 7pos
Contenidos Sintaxis básica, variables y 7pos Curso de Programación en Java! Sintaxis básica! Variables y 7pos! Entrada/Salida básica! Operadores y expresiones Jesús Montes Sánchez jmontes@fi.upm.es Estructura
Manual de turbo pascal
Universidad Nacional Experimental De Los Llanos Occidentales Ezequiel Zamora UNELLEZ-Barinas Manual de turbo pascal Bachilleres: Martinez Ninibeth C.I:20.867.002 Mora Yaco C.I:17.205.073 Estructura de
Se desea estudiar el comportamiento de una función a medida independiente x se aproxima a un valor específico.
Tema: Límites de las funciones Objetivos: Comprender el concepto de límite de una función y las propiedades de los límites. Calcular el límite de una función algebraica utilizando las propiedades de los
Tema Árboles generales. 9.2 Árboles binarios 9.3 Árboles de búsqueda
Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Tema 9. Árboles 9.1 Árboles generales 9.2 Árboles binarios 9.3 Árboles de búsqueda 9.1 Árboles generales Un árbol es
Programación Declarativa UNIVERSIDAD DE MÁLAGA
Programación Declarativa UNIVERSIDAD DE MÁLAGA (3 o de Ingeniería Técnica en Informática) E.T.S.I. INFORMÁTICA Septiembre de 2006 mbre: Especialidad: Prolog Grupo: Ejercicio 1.1 (1 punto) Realizad el árbol
Las clases como tipos de datos definidos por el usuario
. La clase Fraccional. Representación en UML de los niveles de acceso 3. Categorías de los objetos que aparecen en los métodos 4. El puntero this. Métodos operadores La clase Fraccional Vamos a diseñar
ALGEBRA y ALGEBRA LINEAL. Primer Semestre CAPITULO I LOGICA Y CONJUNTOS.
ALGEBRA y ALGEBRA LINEAL 520142 Primer Semestre CAPITULO I LOGICA Y CONJUNTOS. DEPARTAMENTO DE INGENIERIA MATEMATICA Facultad de Ciencias Físicas y Matemáticas Universidad de Concepción 1 La lógica es
Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.
LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan
Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta
Centro Asociado Palma de Mallorca Antonio Rivero Cuesta La Sintaxis de Java I... 5 Tipos de datos... 6 Tipos de datos simples... 7 Operadores... 11 Operadores Aritméticos... 12 Operadores relacionales...
INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN. Métodos Numéricos Carlos Zotelo
INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN Métodos Numéricos 2008 - Carlos Zotelo Introducción a Fortran 77 / 90 1. El lenguaje Fortran 77 / 90 2. Tipos de datos básicos 3. Constantes y variables 4. Entrada
Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas
2 - Introducción al lenguaje Java, identificadores y comentarios. Carlos Montenegro Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 1. Introducción: Java tiene como todos
ALGEBRA 1- GRUPO CIENCIAS- TURNO TARDE- Enteros
Resumen teoría Prof. Alcón ALGEBRA 1- GRUPO CIENCIAS- TURNO TARDE- Z = N {0} N Enteros Las operaciones + y. son cerradas en Z, es decir la suma de dos números enteros es un número entero y el producto
Algoritmos. Intro. Prof. Raquel Torres Peralta / Gerardo Sanchez S. Unison
Algoritmos Intro Prof. Raquel Torres Peralta / Gerardo Sanchez S. Unison La Computadora Las computadoras trabajan con una base de 0 y 1 llamado sistema binario. En principio todo lo que sucede en un dispositivo
5. Sentencias selectivas o condicionales
60 A. García-Beltrán y J.M. Arranz 5. Sentencias selectivas o condicionales Objetivos: a) Describir el funcionamiento de las sentencias selectivas o condicionales (if-else y switch) b) Interpretar el resultado
Capítulo 5 IDENTIFICADORES, VARIABLES Y CONSTANTES. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"
Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C" Autor: Carlos Javier Pes Rivas (correo@carlospes.com) Capítulo 5 IDENTIFICADORES, VARIABLES Y CONSTANTES 1 OBJETIVOS Saber qué
Bases Matemáticas para la Educación Primaria. Guía de Estudio. Tema 3: Números racionales. Parte I: Fracciones y razones Números racionales
Bases Matemáticas para la Educación Primaria Guía de Estudio Tema 3: Números racionales Parte I: Fracciones y razones Números racionales 1 Situación introductoria ANÁLISIS DE CONOCIMIENTOS PUESTOS EN JUEGO
Programación. Test Autoevaluación Tema 3
Programación Test Autoevaluación Tema 3 Autores: M. Paz Sesmero Lorente Paula de Toledo Heras Fco. Javier Ordoñez Morales Juan Gómez Romero José A. Iglesias Martínez José Luis Mira Peidro SOLUCIONES 1.
Estructuras de Datos. Dr. Pablo E. Fidel Martínez López Lic. en Ciencias de la Computación UNR
Estructuras de Datos Dr. Pablo E. Fidel Martínez López Lic. en Ciencias de la Computación UNR ...but note that an implementation need not be actualized as code a concrete design is sufficient. Chris Okasaki
Operaciones combinadas
Operaciones combinadas PROPIEDAD DISTRIBUTIVA DEL PRODUCTO RESPECTO DE LA SUMA La propiedad distributiva permite transformar un producto en una suma y viceversa. En general, si a, b y c son números enteros
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:
Tipos de datos. Dato: 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: I Numéricos: Almacenan números y con
$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos
PROGRAMACIÓN DE SHELL SCRIPTS EN LINUX El shell es un intérprete de órdenes, pero el shell no es solamente eso; los intérpretes de órdenes de Linux son auténticos lenguajes de programación. Como tales,
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
02 de septiembre de 2013-06 de septiembre de 2013
02 de septiembre de 2013-06 de septiembre de 2013 2 lunes 3 martes 4 miércoles 5 jueves 6 viernes 1 17/04/2013 10:23 09 de septiembre de 2013-13 de septiembre de 2013 9 lunes 10 martes 11 miércoles 12
FUNDAMENTOS DE INFORMÁTICA
FUNDAMENTOS DE INFORMÁTICA Tema 2 Expresiones, operadores y estructuras de control Departamento de Ingeniería de Sistemas y Automática Universidad de Vigo Fundamentos de Informática. Departamento de Ingeniería
Análisis Matemático I: Numeros Reales y Complejos
Contents : Numeros Reales y Complejos Universidad de Murcia Curso 2008-2009 Contents 1 Definición axiomática de R Objetivos Definición axiomática de R Objetivos 1 Definir (y entender) R introducido axiomáticamente.
Tema: Tipos de datos y conversiones
Tema: Tipos de datos y conversiones Objetivos: El propósito de este tema es que el alumno se familiarice con el entorno de desarrollo de Visual C# Express y realice diversos programas en el entorno Consola,
UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.
UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO. TRUJILLO 1.- Resumen de Prog1 Comentarios es C++ Declaraciones de variables.
EJERCICIOS DE LENGUAJES Y PARADIGMAS DE PROGRAMACIÓN (CUESTIONES DE EXAMEN) PROGRAMACIÓN FUNCIONAL
EJERCICIOS DE LENGUAJES Y PARADIGMAS DE PROGRAMACIÓN (CUESTIONES DE EXAMEN) PROGRAMACIÓN FUNCIONAL María Alpuente y María José Ramírez 1 LENGUAJES Y PARADIGMAS: INTRODUCCIÓN 1. Indica cuál de las siguientes
RESUMEN DE CONCEPTOS
RESUMEN DE CONCEPTOS 1º ESO MATEMÁTICAS NÚMEROS NATURALES (1) Múltiplo de un número: Un número es múltiplo de otro si el segundo está contenido en el primero un número exacto de veces. Ejemplo: 16 es múltiplo
PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez
PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez Elementos de lenguaje: Identificadores Tipos de datos 2 Tipos de datos primitivos 3 Tipos de datos referenciados Clases Interfaces Arrays
Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.
Tipos de Datos Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Entrada de datos Procesamientos de datos Salida de resultados Los
Guía práctica de estudio 05: Diagramas de flujo
Guía práctica de estudio 05: Diagramas de flujo Elaborado por: M.C. Edgar E. García Cano Ing. Jorge A. Solano Gálvez Revisado por: Ing. Laura Sandoval Montaño Guía práctica de estudio 05: Diagramas de
Conversión entre Tipos
Conversión entre Tipos La conversión entre tipos permite comparar y copiar valores entre diferentes tipos. En esta lección describiremos como convertir un tipo dado en otro. Conversión en VB y Existen
Computación II. Introducción a Visual Basic
Computación II Introducción a Visual Basic Introducción a Visual Basic Microsoft Visual Basic es un conjunto de herramientas que posibilitan el desarrollo de aplicaciones para Windows de una manera rápida
INTRODUCCIÓN AL LENGUAJE C
INTRODUCCIÓN AL LENGUAJE C Fundamentos de Informática EUP ULPGC Jose Torres 1 de 36 Historia de C Precursores: muchas ideas provienen de BCPL (Martin Richards, 1967) y de B (Ken Thompson, 1970) C fue diseñado
Laboratorio de Arquitectura de Redes. Punteros en lenguaje C
Laboratorio de Arquitectura de Redes Punteros en lenguaje C Punteros en lenguaje C Definición Declaración e inicialización de punteros Operadores de punteros: «*» y «&» Operaciones con punteros Operaciones
data Tree a = Tip Node a (Tree a) (Tree a) deriving Show
Preguntas seleccionadas de pruebas de evaluación Pregunta 1 Dadas las siguientes definiciones: data Tree a = Tip Node a (Tree a) (Tree a) deriving Show cambiar :: [Int] -> Tree [Int] -> Tree [Int] cambiar
CREAR TABLAS EN BASES DE DATOS CON phpmyadmin. TIPOS DE DATOS BÁSICOS (VARCHAR, INT, FLOAT). INSERTAR FILAS. (CU00840B)
APRENDERAPROGRAMAR.COM CREAR TABLAS EN BASES DE DATOS CON phpmyadmin. TIPOS DE DATOS BÁSICOS (VARCHAR, INT, FLOAT). INSERTAR FILAS. (CU00840B) Sección: Cursos Categoría: Tutorial básico del programador
Declaración de variables (integer, single, double, boolean, etc.) en Visual Basic. Dim. Ejemplos. (CU00309A)
aprenderaprogramar.com Declaración de variables (integer, single, double, boolean, etc.) en Visual Basic. Dim. Ejemplos. (CU00309A) Sección: Cursos Categoría: Curso Visual Basic Nivel I Fecha revisión:
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
Operadores de comparación
Operadores de comparación Los operadores de comparación en C son: Igual (==) Distinto (!=) Mayor (>) y Mayor o igual (>=) Menor (
Definición de Memoria
Arquitectura de Ordenadores Representación de Datos en Memoria Abelardo Pardo abel@it.uc3m.es Universidad Carlos III de Madrid Departamento de Ingeniería Telemática Definición de Memoria DRM-1 La memoria
Tipos primitivos y clases de interés
Programación Avanzada para Sistemas de Telecomunicación Tipos primitivos y clases de interés Juan Carlos Cruellas cruellas@ac.upc.es Objetos y clases Tipos primitivos. Clase String y asociadas. Clases
Universidad Católica del Maule. Fundamentos de Computación Especificación de tipos de datos ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS
Especificación algebraica ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS Un tipo abstracto de datos se determina por las operaciones asociadas, incluyendo constantes que se consideran como operaciones sin
CALENDARIO CURSO TÉCNICOS DEPORTIVOS 1ª SEMANA ( DEL 4 AL 9 DE JULIO) SESIONES LUNES 4 MARTES 5 MIÉRCOLES 6 JUEVES 7 VIERNES 8 SÁBADO 9
CALENDARIO CURSO TÉCNICOS DEPORTIVOS 1ª SEMANA ( DEL 4 AL 9 DE JULIO) SESIONES LUNES 4 MARTES 5 MIÉRCOLES 6 JUEVES 7 VIERNES 8 SÁBADO 9 INAUGURACIÓN DEL CURSO CALENDARIO CURSO TÉCNICOS DEPORTIVOS 2ª SEMANA
Métodos que devuelven valor Dado el siguiente triángulo rectángulo:
Métodos que devuelven valor Dado el siguiente triángulo rectángulo: hipotenusa altura base Para dibujar este triángulo necesitamos los siguientes datos: base y altura La base y la altura, se utilizarán
Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo
Algoritmos En general, no hay una definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten
C# para no Programadores
C# para no Programadores Programa de Estudio C# para no Programadores Aprende a programar con una de las tecnologías más utilizadas en el mercado de IT. Este curso está orientado a quienes no tienen experiencia
Elementos léxicos del lenguaje de programación C
Elementos léxicos del lenguaje de programación C Elementos léxicos de los lenguajes de programación (tokens) Palabras reservadas Identificadores Literales Operadores Delimitadores Comentarios Apéndices
Un identificador le da nombre único a un elemento en un programa (Variables, procedimientos, etc.). No puede contener operadores como + - * /
undamentos de sintaxis en algunas instrucciones de C#.Net Dr. Ramón Roque Hernández Identificadores Un identificador le da nombre único a un elemento en un programa (ariables, procedimientos, etc.). No
Guía 2: Funciones, listas, recursión e inducción
Introducción a los Algoritmos - 2do cuatrimestre 2016 Guía 2: Funciones, listas, recursión e inducción El objetivo de los siguientes ejercicios es continuar aprendiendo programación funcional, es decir,
Farmacias de Guardia de TOCINA-LOS ROSALES desde 30-dic-2013 hasta 05-ene-2014
Farmacias de Guardia de TOCINA-LOS ROSALES desde 30-dic-2013 hasta 05-ene-2014 LUNES 30 MARTES 31 MIERCOLES 1 JUEVES 2 VIERNES 3 SABADO 4 DOMINGO 5 Farmacias de Guardia de TOCINA-LOS ROSALES desde 06-ene-2014
Universidad de Managua
Universidad de Managua Introducción a la Programación Tema 7 Introducción a la programación en lenguaje C# Objetivos - Describir la estructura básica de un programa en Lenguaje C# - Explicar las estructuras
Tema 13: Programas interactivos
Tema 13: Programas interactivos Informática (2015 16) José A. Alonso Jiménez Grupo de Lógica Computacional Departamento de Ciencias de la Computación e I.A. Universidad de Sevilla 2 / 38 Tema 13: Programas
Clase adicional 2. Estructuras básicas de control. Temas
Clase adicional 2 Temas Estructuras de control Sentencia condicional Iteración Clases Definir una clase Crear una instancia de una clase Campos estáticos Problemas de la clase adicional Problema de diseño
Algoritmos y Estructuras de Datos II
8 de abril de 2015 Clase de hoy 1 Repaso Tipos concretos versus abstractos Tipos abstractos de datos 2 3 4 TAD Pila Especificación del TAD Pila Repaso Tipos concretos versus abstractos Tipos abstractos
Lenguajes de Dominio Específico (o Lenguajes para Todos)
Lenguajes de Dominio Específico (o Lenguajes para Todos) Mauro Jaskelioff 20/11/2015 Lenguajes para Todos Todo sistema que acepte entrada de un usuario es un procesador de lenguaje. John Reynolds Los lenguajes
Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1
Prologo Agradecimientos Nota de los autores Índice general I III V VII 1 Problemas, algoritmos y programas 1 1.1 Programas y la actividad de la programación.................... 4 1.2 Lenguajes y modelos
INTRODUCCIÓN AL LENGUAJE C++
Transparencias del libro Rodríguez Artalejo, M., González-Calero, P.A., Gómez Martín, M.A.: Estructuras de datos, un enfoque moderno. Editorial Complutense 2011. TEMA 0 INTRODUCCIÓN AL LENGUAJE C++ El