3.6 Introducción a Maude
|
|
- María Antonia Franco Suárez
- hace 5 años
- Vistas:
Transcripción
1 3-64 CAPÍTULO 3. MÉTODO ALGEBRAICO DE ESPECIFICACIÓN. 3.6 Introducción a Maude Maude es un lenguaje que permite la ejecución simbólica de especificaciones algebraicas dadas mediante ecuaciones y pertenencias, es modular y admite la definición de módulos parametrizados así como su instanciación. A continuación veremos, de manera sucinta, sus características sintácticas Especificación de módulos La especificación de un módulo (funcional) en Maude tiene el aspecto siguiente: fmod <nombre del modulo> is <cuerpo del modulo> y en el cuerpo de un módulo pueden aparecer las siguientes declaraciones con los formatos que se enuncian en los ejemplos: Declaraciones de universos y de subuniversos (pueden repetirse): sort S. sorts S1 S2 S3 S4. subsort S1 < S2. subsorts S1 < S2 < S3. subsorts S1 < S2 S4 < S3. En el último caso, los universos S2 y S4 no están relacionados aunque ambos contienen a S1 y están contenidos en S3. Declaraciones de operaciones: op p : -> S1. op p : S1 S2 -> S3. ops p q : S1 S2 -> S3. Estas declaraciones pueden etiquetarse con [ctor] para indicar que se trata de una operación generadora del tipo del resultado. Las operaciones pueden declararse infijas mediante guiones de subrayado en los lugares donde deban aparecer los argumentos. Declaraciones de variables: 2 Para una descripción más completa de la sintaxis de Maude véase Maude: Specification and Programming in Rewriting Logic y A Maude Tutorial, ambos documentos disponibles en la dirección
2 3.6. INTRODUCCIÓN A MAUDE 3-65 var X : S. vars X Y : S. Declaraciones de axiomas: ecuaciones y pertenencias. Ambos tipos pueden aparecer condicionados, pero las condiciones se reducen siempre a un término b de tipo booleano obtenido a partir de expresiones construidas con las operaciones predefinidas _==_ y _=/=_ correspondientes al test de igualdad semántica y su fallo, y con _:_ o test de pertenencia, definidos para todos los universos. Declaraciones de ecuaciones: eq t1 = t2. ceq t1 = t2 if b. Declaraciones de pertenencias: mb t : S. cmb t : S if b. Declaraciones de importación de módulos (pueden repetirse): including <nombre de modulo>. protecting <nombre de modulo>. La primera indica una importación sin restricciones semánticas y se utiliza para especificaciones no acabadas en las que se pueden producir ampliaciones o reducciones de los conjuntos de valores. En cambio, la segunda indica que se va a respetar la especificación importada añadiendo, a lo más, alguna función nueva que no afecta a los conjuntos de valores establecidos. Las declaraciones de importación se escriben al principio del cuerpo del módulo, después aparecerán las declaraciones de universos y de subuniversos, las operaciones, las variables y los axiomas (aunque este orden puede alterarse). Todas las variables que se utilicen en los axiomas deben estar declaradas y en las expresiones puede utilizarse cualquier operación declarada en el módulo o importada de otro módulo Ejemplos Veamos cómo se escribirían en Maude los módulos correspondientes a algunas de las especificaciones que se han estudiado en los apartados anteriores. Un módulo para la especificación del universo de los booleanos quedaría:
3 3-66 CAPÍTULO 3. MÉTODO ALGEBRAICO DE ESPECIFICACIÓN. fmod BOOL is sort Bool. ops true false : -> Bool [ctor]. op not_ : Bool -> Bool. ops _and or_ : Bool Bool -> Bool. var X : bool. eq not true = false. eq not false = true. eq X and true = X. eq X and false = false. eq X or true = true. eq X or false = X. Un módulo como éste (con algunas operaciones más) está predefinido en Maude y se importa de forma automática en cada módulo que se defina, por lo que los valores las operaciones lógicas siempre están disponibles sin que necesaria su importación explícita. El módulo para la especificación de números naturales que aparece en el Ejemplo 3.7, con algunas operaciones de ejemplos posteriores, queda fmod NAT is sorts NatNz Nat Nat?. subsorts NatNz < Nat < Nat?. op z : -> Nat [ctor]. op s_ : Nat -> NatNz [ctor]. ops _+ *_ : Nat Nat -> Nat. op _-_ : Nat Nat -> Nat?. op _/_ : Nat NatNz -> Nat. op _mod_ : Nat NatNz -> Nat. op mcd : Nat Nat -> Nat?. op raiz : Nat -> Nat. op rz : Nat Nat -> Nat?. *** op. auxiliar *** op _<=_ : Nat Nat -> Bool. op _<_ : Nat Nat -> Bool. vars M N : Nat. var P : NatNz.
4 3.6. INTRODUCCIÓN A MAUDE 3-67 eq z + N = N. eq (s M) + N = s (M + N). eq z * N = z. eq (s M) * N = (M * N) + N. cmb M - N : Nat if N <= M. eq M - z = M. eq (s M) - (s N) = M - N. ceq M / P = z if M < P. ceq M / P = s ((M - P) / P) if P <= M. ceq M mod P = M if M < P. ceq M mod P = (M - P) mod P if P <= M. cmb mcd(m, N) : Nat if (M =/= z) or (N =/= z). eq mcd(p, z) = P. ceq mcd(m, N) = mcd(n, M) if M < N. ceq mcd(m, P) = mcd(m - P, P) if P <= M. eq raiz(n) = rz(n, z). cmb rz(n, M) : Nat if (M * M) <= N. ceq rz(n, M) = M if ((M * M) <= N) and (N < ((s M) * (s M))). ceq rz(n, M) = rz(n, s M) if ((s M) * (s M)) <= N. eq z <= N = true. eq (s M) <= z = false. eq (s N) <= (s M) = N <= M. eq M < z = false. eq z < (s N) = true. eq (s M) < (s N) = M < N. donde, por lo que se ha dicho más arriba, ya no es necesario declarar ni importar explícitamente los valores lógicos. Un módulo para los números enteros, donde se utilizan los subuniversos Pos y Neg correspondientes a los números positivos y a los números negativos, queda fmod ENT is
5 3-68 CAPÍTULO 3. MÉTODO ALGEBRAICO DE ESPECIFICACIÓN. sorts Ent Nat Pos Neg. subsorts Pos < Nat < Ent. subsort Neg < Ent. op z : -> Nat [ctor]. ops s_ p_ : Ent -> Ent [ctor]. ops _+ - *_ : Ent Ent -> Ent. op abs : Ent -> Nat. op _div_ : Nat Pos -> Nat. op mcd : Nat Nat -> Nat. ops _<= <_ : Ent Ent -> Bool. vars E E1 E2 : Ent. var N N1 N2 : Nat. var P : Pos. var Q : Neg. mb s N : Pos. mb p z : Neg. mb p Q : Neg. eq s (p E) = E. eq p (s E) = E. eq z + E2 = E2. eq (s E1) + E2 = s (E1 + E2). eq (p E1) + E2 = p (E1 + E2). eq E1 - z = E1. eq E1 - (s E2) = p (E1 - E2). eq E1 - (p E2) = s (E1 - E2). eq z * E2 = z. eq (s E1) * E2 = (E1 * E2) + E2. eq (p E1) * E2 = (E1 * E2) - E2. eq abs(n) = N. eq abs(q) = z - Q. ceq N div P = z if N < P.
6 3.6. INTRODUCCIÓN A MAUDE 3-69 ceq N div P = s ((N - P) div P) if P <= N. eq mcd(n, z) = N. ceq mcd(n1, N2) = mcd(n1 - N2, N2) if N2 <= N1. ceq mcd(n1, N2) = mcd(n2, N1) if N1 < N2. ceq E1 <= E2 = true if E2 - E1 : Nat. ceq E1 <= E2 = false if E1 - E2 : Pos. ceq E1 < E2 = true if E2 - E1 : Pos. ceq E1 < E2 = false if E1 - E2 : Nat. Y un módulo para los números racionales representados mediante pares formados por un número entero (numerador) y un entero positivo (denominador) queda: fmod RAC is protecting ENT. sorts RacNz Rac. subsort Ent < Rac. subsort Pos Neg < RacNz < Rac. op _/_ : Ent Pos -> Rac [ctor]. op a-ent : Rac -> Rac. ops _+. -. *._ : Rac Rac -> Rac. op _/._ : Rac RacNz -> Rac. ops _<. <=._ : Rac Rac -> Bool. vars e e1 e2 : Ent. vars p p1 p2 : Pos. var n : Neg. cmb e / p : RacNz if e =/= z. *** simplificacion de racionales *** ceq p1 / p = (p1 div mcd(p1, p)) / (p div mcd(p1, p)) if (s z) < mcd(p1, p). ceq n / p = (z - (abs(n) div mcd(abs(n), p))) / (p div mcd(abs(n), p)) if (s z) < mcd(abs(n), p). eq z / p = z. eq e1 / s z = e1. *** operaciones ***
7 3-70 CAPÍTULO 3. MÉTODO ALGEBRAICO DE ESPECIFICACIÓN. eq e1 +. e2 = e1 + e2. eq e +. (e2 / p2) = ((e * p2) + e2) / p2. eq (e1 / p1) +. e = (e1 + (e * p1)) / p1. eq (e1 / p1) +. (e2 / p2) = ((e1 * p2) + (e2 * p1)) / (p1 * p2). eq e1 -. e2 = e1 - e2. eq e -. (e2 / p2) = ((e * p2) - e2) / p2. eq (e1 / p1) -. e = (e1 - (e * p1)) / p1. eq (e1 / p1) -. (e2 / p2) = ((e1 * p2) - (e2 * p1)) / (p1 * p2). eq e1 *. e2 = e1 * e2. eq e *. (e2 / p2) = (e * e2) / p2. eq (e1 / p1) *. e = (e1 * e) / p1. eq (e1 / p1) *. (e2 / p2) = (e1 * e2) / (p1 * p2). eq e /. p = e / p. eq e /. n = (z - e) / (z - n). eq e /. (p1 / p) = (e * p) / p1. eq e /. (n / p) = (z - (e * p)) / (z - n). eq (e1 / p1) /. p = e1 / (p1 * p). eq (e1 / p1) /. n = (z - e1) / (z - (p1 * n)). eq (e1 / p1) /. (p / p2) = (e1 * p2) / (p * p1). eq (e1 / p1) /. (n / p2) = (z - (e1 * p2)) / (z - (n * p1)). eq e <. (e1 / p) = (e * p) < e1. eq (e1 / p) <. e = e1 < (p * e). eq (e1 / p1) <. (e2 / p2) = (e1 * p2) < (e2 * p1). eq e <=. (e1 / p) = (e * p) <= e1. eq (e1 / p) <=. e = e1 <= (p * e). eq (e1 / p1) <=. (e2 / p2) = (e1 * p2) <= (e2 * p1). donde los números enteros se consideran parte de los racionales y se establecen ecuaciones de simplificación para las representaciones de racionales que pueden llegar a producir un número entero Especificaciones genéricas Las especificaciones genéricas en Maude implican cuatro tipos de construcciones: la especificación de parámetros o teorías, la especificación de módulos parametrizados, la
8 3.6. INTRODUCCIÓN A MAUDE 3-71 instanciación de parámetros o especificación de enfoques de teorías y la particularización de módulos parametrizados. Una especificación de parámetro o teoría se enuncia de manera parecida a un módulo, salvo por los delimitadores, fth <nombre del parametro> is <cuerpo> endfth con la única diferencia de que no pueden aparecer operaciones constructoras y las ecuaciones no son necesariamente reglas de reescritura (pueden aparecer variables nuevas a la derecha) y se interpretan como teoremas que deben satisfacerse en los módulos que sustituyan a dicho parámetro. Una especificación de parámetro denota a cualquier álgebra que cumpla sus axiomas (no necesariamente al álgebra inicial) y sirve para fijar los requisitos que debe cumplir un módulo para que pueda sustituir a un parámetro. Algunos ejemplos de teorías son: la teoría trivial TRIV, fth TRIV is sort Elt. endth que únicamente impone como requisito la existencia de un dominio de valores; la teoría ORDTOT, fth ORDTOT is sort Elt. op _<_ : Elt Elt -> Bool. vars E1 E2 E3 : Elt. eq E1 < E1 = false. ceq E1 < E2 = true if E1 < E3 and E3 < E2. ceq E1 < E2 or E2 < E1 = true if E1 =/= E2. endth que exige la existencia de un dominio con una relación de orden total; y la teoría COTA, fth COTA is protecting NAT. tmax : -> NatNz. endth que impone como requisito la existencia de un valor natural no nulo.
9 3-72 CAPÍTULO 3. MÉTODO ALGEBRAICO DE ESPECIFICACIÓN. Un módulo parametrizado se declara de manera parecida a como se declara un módulo con las diferencias siguientes: junto al nombre del módulo debe aparecer una lista con los nombres de los parámetros y sus correspondientes teorías, estos parámetros se utilizan como si se tratase de importaciones con la salvedad de que los universos declarados en las teorías de los parámetros, cuando se utilicen, deben etiquetarse de manera postfija con los nombres de los parámetros correspondientes (para evitar ambigüedades cuando se empleen varios parámetros caracterizados por la misma teoría), y los universos que se definan en el módulo parametrizado deberán aparecer parametrizados en los mismos parámetros que el módulo. fmod <nombre del modulo> [X :: <nombre de teoria>] is protecting <nombre de modulo>. sort S[X]. subsort S.X < S[X] Una instancia o un enfoque de una teoría es una forma de ver un módulo concreto como un caso particular de la teoría; para fijar dicho enfoque es necesario establecer una serie de identificaciones entre elementos del módulo y sus correspondientes elementos en la teoría. Esto se hace en Maude con la construcción siguiente view <nom. enfoque> form <nom. teoria> to <nom. modulo> is sort <sort de la teoria> to <sort del modulo>.... op <op. de la teoria> to <op. del modulo>.... endv Una particularización de un módulo parametrizado se obtiene importando, de forma protegida, dentro de un módulo el nombre del módulo parametrizado con los parámetros sustituidos por enfoques. fmod <nombre instancia> is protecting <nom. modulo parametrizado>[nom enfoque]
10 3.6. INTRODUCCIÓN A MAUDE 3-73 Ejemplos de especificaciones genéricas o módulos parametrizados, así como de instanciaciones de dichos módulos, se irán viendo en los capítulos siguientes donde también se irán introduciendo algunas particularidades sobre la notación.
Características. Tipos Cocientes 2
Tipos Cocientes Características La característica básica de los tipos cocientes es que los distintos términos construidos con operaciones generadoras no siempre representan valores distintos del tipo:
Más detallesTipos lineales I. Tipos Lineales 2
Tipos Lineales Tipos lineales I En los ordenadores la información se almacena normalmente de manera secuencial: secuencias de bits, secuencias de bloques, secuencias de registros,... En muchos lenguajes
Más detallesSEMINARIO DE ESPECIFICACIONES ALGEBRAICAS
Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º, Año 2004/2005 SEMINARIO DE ESPECIFICACIONES ALGEBRAICAS Contenidos: 1. Descripción general de Maude 2. Comandos básicos 3. Formato
Más detallesSEMINARIO DE ESPECIFICACIONES ALGEBRAICAS
Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º, Año 2003/2004 SEMINARIO DE ESPECIFICACIONES ALGEBRAICAS Contenidos: 1. Descripción general de Maude 2. Comandos básicos 3. Formato
Más detallesTEMA 1. ESPECIFICACIONES FORMALES ALGEBRAICAS EN MAUDE
Algoritmos y Estructuras de Datos I Grado en Ingeniería Informática, Curso 2º TEMA 1. ESPECIFICACIONES FORMALES ALGEBRAICAS EN MAUDE Contenidos: 1. Descripción general de Maude 2. Comandos básicos 3. Formato
Más detallesEspecificación de Tipos Abstractos de Datos
Especificación de Tipos Absracos de Daos Méodo algebraico: Los universos de daos como dominios de un álgebra Inroducción Lenguajes de programación Signaura básica: operaciones y propiedades Represenación
Más detallesIsabelle como un lenguaje funcional
Capítulo 1 Isabelle como un lenguaje funcional 1.1 Introducción Nota 1.1.1. Esta notas son una introducción a la demostración asistida utilizando el sistema Isabelle/HOL/Isar. La versión de Isabelle utilizada
Más detallesFundamentos de la especificación formal
Fundamentos de la especificación formal Métodos Formales en Ingeniería del Software María Alpuente El lenguaje Maude Sintaxis: se utilizan reglas de reescritura (como Haskell, ML, Scheme o Lisp) Semántica:
Más detallesGuía rápida sobre ejecución de especificaciones algebraicas en Maude bajo el entorno Eclipse para estudiantes de Estructuras de Datos.
Guía rápida sobre ejecución de especificaciones algebraicas en Maude bajo el entorno Eclipse para estudiantes de Estructuras de Datos. Actualizado para poder utilizar la herramienta de testing. 1. Introducción
Más detallesTema 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 detallesMétodo Algebraico de Especificación.
Capítulo 3 Método Algebraico de Especificación. Los lenguajes de programación proporcionan habitualmente una signatura básica que incluye los universos siguientes: BOOLEAN, CARDINAL, INTEGER, REAL y CHAR,
Más detallesTema 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 detallesTema 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 detallesEspecificación de TAD. Lección 2
Especificación de TAD Lección 2 Esquema Características generales de una especificación Especificación algebraica Especificación no formal Lectura recomendada: sección 1.3 del libro de Z.J. Hernández et
Más detallesEl 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 detallesFunciones 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 detalles1.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 detallesLENGUAJES Y COMPILADORES
LENGUAJES Y COMPILADORES Repaso. La clase pasada presentamos el lenguaje imperativo simple y dimos las ecuaciones para casi todas las construcciones del lenguaje. En efecto, teníamos que [ ] Σ
Más detallesAxiomas del Cálculo de Predicados
Axiomas del Cálculo de Predicados Si bien el cálculo proposicional nos permitió analizar cierto tipo de razonamientos y resolver acertijos lógicos, su poder expresivo no es suficiente para comprobar la
Más detallesUNIDAD IV Programación Funcional. Lic. Jesús Germán Andrés PAUTSCH - FCEQyN - UNaM
UNIDAD IV Programación Funcional Porqué? 2 Introducción Porque aprender programación funcional? - Recursión - Abstracción funcional - Funciones de primer orden Estos conceptos se han incorporado en la
Más detallesSEMINARIO DE ESPECIFICACIONES ALGEBRAICAS
Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º, Año 2004/2005 SEMINARIO DE ESPECIFICACIONES ALGEBRAICAS Contenidos: 1. Descripción general de Maude 2. Comandos básicos 3. Formato
Más detallesLenguajes funcionales: λ-cálculo
Lenguajes funcionales: λ-cálculo λ-cálculo (Church 1933) Cálculo para el estudio formal del comportamiento de las funciones Sintaxis: λ expresiones Reglas de reducción de λ expresiones Método matemático
Más detallesGuardas 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 detalles1/10. Diseño Modular III. 25 de febrero de 2017
1/10 Diseño Modular III Josefina Sierra Santibáñez 25 de febrero de 2017 2/10 Implementación de Clases en C++ La implementación una clase requiere elegir una representación para el tipo de datos, i.e.
Más detallesPara 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 detallesUnidad 1. Análisis de Algoritmos. Ing. Leonardo R. L. Estructura de datos - Generalidades Unidad I Pág 1
Unidad 1 Análisis de Algoritmos Ing. Leonardo R. L. Estructura de datos - Generalidades Unidad I Pág 1 GENERALIDADES Qué se necesita para escribir un programa eficiente? Para diseñar programas eficientes
Más detallesContenido. Prólogo... Prólogo a la edición en español Argumentos y proposiciones lógicas Introducción
CONTENIDO vii Contenido Prólogo... Prólogo a la edición en español... XVIl XXI 1 Cálculo proposicional... 1 1.1 Argumentos y proposiciones lógicas 1.1.1 Introducción 1 1 1.1.2 Algunos argumentos lógicos
Más detallesMódulo 1. (Primera Parte) INTRODUCCIÓN AL LENGUAJE LÓGICO- MATEMÁTICO
Módulo 1 (Primera Parte) INTRODUCCIÓN AL LENGUAJE LÓGICO- MATEMÁTICO Qué es un símbolo? El concepto de símbolo (una palabra que deriva del latín simbŏlum) sirve para representar, de alguna manera, una
Más detallesIntroducció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 detallesComponentes 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 detallesSímbolos (4) - Información y lenguaje
Símbolos (4) - Información y lenguaje Fundamentos de Informática I I.T.I. Sistemas (2005-06) César Llamas Bello Universidad de Valladolid 1 Familia de Problemas Representación de la información Marco apropiado
Más detallesFORMATO 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 detallesClasificación de Grafos
Grafos Clasificación de Grafos Los grafos se utilizan en aplicaciones muy diversas (redes de comunicaciones, redes de transporte, circuitos, planificación de tareas) cada una de las cuales utiliza una
Más detallesTÍTULO: MATEMÁTICA DISCRETA Y LÓGICA Disponibilidad
TÍTULO: MATEMÁTICA DISCRETA Y LÓGICA Disponibilidad Calculo proposicional 1 Argumentos y proposiciones lógicas 1 Algunos argumentos lógicos importantes 2 Proposiciones 4 Conexiones lógicas 5 Negación (tabla)
Más detallesIntroducción a la Programación
0,25 puntos cada pregunta 1. Observa el siguiente esquema de código. Cuándo se ejecuta Instrucción4? IF Condición1 THEN Instrucción1 ELSE IF Condición2 THEN Instrucción2 ELSE IF Condición3 THEN Instrucción3;
Más detallesTipos abstractos. Taller de Álgebra I. Segundo cuatrimestre de 2013
Tipos abstractos Taller de Álgebra I Segundo cuatrimestre de 2013 Acerca de los tipos algebraicos 1 Su forma se declara expĺıcitamente a través de los constructores. 2 Toda expresión del tipo representa
Más detallesApuntes de Programación y estructuras de datos. Abstracción y modularidad
Apuntes de Programación y estructuras de datos. Abstracción y modularidad Nikos Mylonakis nicos@lsi.upc.edu Dept. Llenguatges i Sistemes Informátics Universitat Politécnica de Catalunya Barcelona April
Más detallesIntroducció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 detallesTipos 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 detallesTema 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 detallesDivisibilidad y congruencia
Divisibilidad y congruencia Taller de Álgebra I Verano 2017 Algoritmo de la división Teorema Dados a, d Z, d 0, existen únicos q, r Z tales que a = qd + r, 0 r < d. Idea de la demostración: (caso a 0,
Más detallesJavaScript Básico. Elementos Básicos: Comentarios: Literales: Valores que puede tomar una variable o una constante.
Javascript (II) 1 Elementos Básicos: Comentarios: Para una línea // Esto es un Comentario Para un bloque /*......... */ Literales: Valores que puede tomar una variable o una constante. Ejemplos: "Soy una
Más detallesDESCRIPCIÓN DEL LENGUAJE DE PROGRAMACIÓN P-0
DESCRIPCIÓN DEL LENGUAJE DE PROGRAMACIÓN P-0 Este documento define los elementos de programación del lenguaje P-0, basado en un subconjunto del lenguaje de programación Arduino. 1.- PROGRAMA Un programa
Más detalles2. Tipos abstractos de datos TEMA 3: SEMÁNTICA AXIOMÁTICA. 2. Tipos abstractos de datos. 2. Tipos abstractos de datos. 2. Tipos abstractos de datos
TEMA 3: SEMÁNTICA AXIOMÁTICA 1. Semántica axiomática de un lenguaje de programación Para poder utilizar tipos estructurados en los programas, será necesario tenerlos definidos como Tipos Abstractos de
Más detallesIntroducció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 detallesPROGRAMACIÓN DECLARATIVA
UNIVERSIDAD DE MALAGA DEPARTAMENTO DE LENGUAJES Y CIENCIAS DE LA COMPUTACION PROGRAMACIÓN DECLARATIVA CURSO 2000-2001 I. PROGRAMACIÓN LÓGICA II. PROGRAMACIÓN FUNCIONAL BIBLIOGRAFÍA Programación Lógica:
Más detallesTema 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 detallesApuntes de Tipos Abstractos de Datos. Juan M. Molina Bravo
Apuntes de Tipos Abstractos de Datos Juan M. Molina Bravo curso 2001-2002 0-2 Capítulo 1 Introducción a la Programación Basada en Tipos Abstractos de Datos. 1.1 Diseño basado en ttaadd Los sistemas de
Más detallesTipos 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 detallesGuía 1: Funciones, precedencia y tipado
Introducción a los Algoritmos - do. cuatrimestre 014 Guía 1: Funciones, precedencia y tipado Docentes: Walter Alini, Luciana Benotti El objetivo de los siguientes ejercicios es introducirnos en la programación
Más detallesPOLINOMIOS Y FRACCIONES ALGEBRAICAS
POLINOMIOS Y FRACCIONES ALGEBRAICAS Monomio: Monomio es una expresión algebraica en la que las únicas operaciones que aparecen entre las variables son el producto y la potencia de exponente natural. 2x
Más detalles1/1. Diseño Modular. 18 de febrero de 2017
1/1 Diseño Modular Josefina Sierra Santibáñez 18 de febrero de 2017 2/1 Introducción al Diseño Modular Orientación a Objetos En esta asignatura utilizaremos la orientación a objetos como mecanismo de C++
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 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 detallesLÓGICA FORMAL TEORIAS DE PRIMER ORDEN. Sintaxis y semántica
LÓGICA FORMAL TEORIAS DE PRIMER ORDEN Sintaxis y semántica Pedro López Departamento de Inteligencia Artificial Facultad de Informática Universidad Politécnica de Madrid Lenguajes de primer orden 1 La lógica
Más detallesAlgoritmos en teoría de números
Algoritmos en teoría de números IIC2283 IIC2283 Algoritmos en teoría de números 1 / 92 Para recordar: aritmética modular Dados dos números a, b Z, si b > 0 entonces existen α, β Z tales que 0 β < b y a
Más detallesApéndice 1: Fundamentos de lógica, teoría de conjuntos y estructuras algebraicas. . Analizando el
Apéndice 1: Fundamentos de lógica, teoría de conjuntos y estructuras algebraicas Polinomios Dedicaremos este apartado al repaso de los polinomios. Se define Rx a 0 a 1 x a 2 x 2...a n x n a 0,a 1,a 2,...,a
Más detallesOperadores y reglas de precedencia
Capítulo 5 1 Operadores y reglas de precedencia MIA Ricardo González Lozano 2 Categoría de Operadores Los operadores son los elementos del lenguaje que nos permiten asignar, calcular y comparar expresiones,
Más detallesLenguajes 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 detallesTema 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 detallesALGEBRA DE BOOLE George Boole C. E. Shannon E. V. Hungtington [6]
ALGEBRA DE BOOLE El álgebra booleana, como cualquier otro sistema matemático deductivo, puede definirse con un conjunto de elementos, un conjunto de operadores y un número de axiomas no probados o postulados.
Más detallesAlgoritmos 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 detallesGUÍAS DE ESTUDIO PROGRAMA DE ALFABETIZACIÓN, EDUCACIÓN BÁSICA Y MEDIA PARA JÓVENES Y ADULTOS
GUÍAS DE ESTUDIO Código PGA-0-R0 1 INSTITUCIÓN EDUCATIVA CASD PROGRAMA DE ALFABETIZACIÓN, EDUCACIÓN BÁSICA Y MEDIA PARA JÓVENES Y ADULTOS UNIDAD DE TRABAJO Nº PERIODO 1 ÁREA INTEGRADA: MATEMÁTICAS. ASIGNATURA:
Más detallesProgramación funcional
Programación funcional Inferencia de tipos manual para programas Haskell J. Sánchez Hernández Enero de 2007 El sistema de tipos de Haskell Es una variante del propuesto R. Milner en 1978 (con antecedentes
Más detallesCapítulo 5. Los números reales y sus representaciones Pearson Education, Inc. Diapositiva 5-3-1
Capítulo 5 Los números reales y sus representaciones 2012 Pearson Education, Inc. Diapositiva 5-3-1 Capítulo 5: Los números reales y sus representaciones 5.1 Números reales, orden y valor absoluto 5.2
Más detallesGLOSARIO 1. Qué es bit y byte? Bit: Es la unidad mínima de información. Puede ser 0 o 1. Byte: Es el conjunto de 8 bits. Ejemplo:
Cuestionario Modulo 1.1 GLOSARIO 1. Qué es bit y byte? Bit: Es la unidad mínima de información. Puede ser 0 o 1. Byte: Es el conjunto de 8 bits. Ejemplo: 1001 0110. 2. qué es Dato? Definición: Es toda
Más detallesCAPÍ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 detallesAlgebras booleanas. B2) Leyes Distributivas. Cada operación es distributiva con respecto a la otra:
Algebras booleanas AXIOMAS DEL ALGEBRA DE BOOLE Sea B un conjunto en el cual se han definido dos operaciones binarias, + y * (En algunos casos se definen en términos de y respectivamente), y una operación
Más detallesLenguajes de Programación Programación funcional
Lenguajes de Programación Programación funcional Roberto Bonvallet Departamento de Informática Universidad Técnica Federico Santa María Concepto de función En el paradigma imperativo: Una función es una
Más detallesTipos Abstractos de Datos
Objetivos Repasar los conceptos de abstracción de datos y (TAD) Diferenciar adecuadamente los conceptos de especificación e implementación de TAD Presentar la especificación algebraica como método formal
Más detallesProgramación Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC.
Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC. Variables Conceptos de Memoria Una variable es un espacio en la memoria del PC Cada variable tiene un nombre, un tipo, un tamaño y un valor
Más detallesTipos de datos en Haskell
Tipos de datos en Haskell Ejercicios 1. Tipos enumerados Cuando los distintos valores que debemos distinguir en un tipo son finitos, entonces podemos enumerar todos los valores distintos para el tipo.
Más detallesProgramació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
Más detallesEl 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 detallesMecanismo de Reducción
Mecanismo de Reducción Taller de Álgebra I 1er Cuatrimestre 2017 Repaso: Qué vimos hasta ahora? Programar para qué? Implementar algoritmos que solucionen problemas. Pensamiento algorítmico Ver los problemas
Más detallesGuía práctica de estudio 05: Pseudocódigo
Guía práctica de estudio 05: Pseudocódigo Elaborado por: M.C. Edgar E. García Cano Ing. Jorge A. Solano Gálvez Revisado por: Ing. Laura Sandoval Montaño Autorizado por: M.C. Alejandro Velázquez Mena Guía
Más detallesGuía N 1 Introducción a las Matemáticas
Glosario: Guía N 1 Introducción a las Matemáticas - Aritmética: Es la rama de las matemáticas que se dedica al estudio de los números y sus propiedades bajo las operaciones de suma, resta, multiplicación
Más detallesTipos 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 detallesUnidad 2: Ecuaciones, inecuaciones y sistemas.
Unidad 2: Ecuaciones, inecuaciones y sistemas 1 Unidad 2: Ecuaciones, inecuaciones y sistemas. 1.- Factorización de polinomios. M. C. D y m.c.m de polinomios. Un número a es raíz de un polinomio es 0.
Más detallesInformá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 detallesDefiniciones 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 detallesDepartamento de Matemáticas. ÁLGEBRA: Ecuaciones
3.5. Ecuaciones bicuadradas. Empezamos ahora a analizar qué pasa cuando el polinomio tiene grado más grande que dos. Todas éstas se engloban dentro de la misma estrategia de resolución que, como posteriormente
Más detallesMatemáticas Básicas para Computación
Matemáticas Básicas para Computación MATEMÁTICAS BÁSICAS PARA COMPUTACIÓN 1 Sesión No. 6 Nombre: Álgebra Booleana Objetivo Durante la sesión el participante identificará las principales características
Más detallesParadigma Funcional Caso de estudio: ML. Lenguajes de Programación 2017
Paradigma Funcional Caso de estudio: ML Lenguajes de Programación 2017 Paradigma Funcional FUNCIÓN: Mapeo de un dominio en un rango El mapeo se puede describir por medio de una EXPRESIÓN f(1) = 2 f(2)
Más detallesTipos Abstractos de Datos
Objetivos! Introducir el mecanismo de abstracción y justificar la necesidad de los TAD! Diferenciar adecuadamente los conceptos de especificación e implementación de TAD! Presentar la especificación algebraica
Más detallesAnálisis y Diseño de Sistemas
Análisis y Diseño de Sistemas Dpto. Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Clase 21 Especificación Formal Lic. María Mercedes Vitturini [mvitturi@cs.uns.edu.ar] 1er. CUATRIMESTRE
Más detallesTema 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 detallesTema 2. Polinomios y fracciones algebraicas
Tema. Polinomios y fracciones algebraicas. Polinomios.... Definiciones.... Operaciones con polinomios.... Factorización de un polinomio.... Teorema del resto. Criterio de divisibilidad por -a.... Propiedades
Más detallesConceptos previos. Revisión de Sistemas Lógicos Formatos Numéricos. Dpto. Ingeniería Electrónica y Comunicaciones
Conceptos previos Revisión de Sistemas Lógicos Formatos Numéricos Revisión de Sistemas Lógicos Álgebra de Boole Base matemática de la Electrónica Digital Consta de dos elementos: 0 lógico y 1 lógico Tecnología
Más detallesProgramació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 detallesElementos de un lenguaje de programación. Lenguajes de Programación 1
Elementos de un lenguaje de programación Lenguajes de Programación 1 Que nos brinda el lenguaje a + b que tipos de valores brinda qué operaciones proporciona qué significan los símbolos a y b es legal
Más detallesUniversidad 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
Más detallesintroducción...13 Capítulo 1. lógica y conjuntos...15
Índice introducción...13 Capítulo 1. lógica y conjuntos...15 1.1 Elementos de lógica [proposicional]...15 1.1.1 Conectivos lógicos...17 1.1.2 Combinación de operaciones...19 1.1.3 Tautología...19 1.1.4
Más detallesEstructura de un programa en Java. Tipos de datos básicos. class miprimerprograma{ // comentario, no es parte del programa
Contenido Estructura de un programa en Java... 2 Tipos de datos básicos... 2 Operadores... 3 Literales... 4 Entrada / Salida... 4 Sentencias condicionales... 5 Funciones... 5 Ejercicios... 6 Variables,
Más detallesCapítulo 1. Numeración 1 Variables... 2 Números naturales... 2 Números enteros... 3 Números reales Ejercicios Orden y valor absoluto...
ÍNDICE Capítulo 1. Numeración 1 Variables... 2 Números naturales... 2 Números enteros... 3 Números reales... 3 Ejercicios... 5 Orden y valor absoluto... 6 Ejercicios... 7 Suma de números reales... 9 Reglas
Más detallesTutorial Haskell David Julián Guzmán Cárdenas Cristian Alexanther Rojas Cárdenas Luis Ernesto Gil Castellanos
Tutorial Haskell David Julián Guzmán Cárdenas Cristian Alexanther Rojas Cárdenas Luis Ernesto Gil Castellanos Agenda 1. 2. 3. 4. 5. 6. Introducción Aspectos básicos del lenguaje Tipos y clases de tipos
Más detallesJavaScript: Variables
JavaScript: Variables Una variable es un elemento que se emplea para almacenar y hacer referencia a otro valor. Gracias a las variables es posible crear "programas genéricos", es decir, programas que funcionan
Más detallesIntroducción al Cálculo Simbólico a través de Maple
1 Introducción al Cálculo Simbólico a través de Maple Introducción A manera de introducción, podemos decir que los lenguajes computacionales de cálculo simbólico son aquellos que permiten la representación
Más detallesInformá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 detallesDivisibilidad y congruencia
de los ejercicios de la clase 8 Divisibilidad y congruencia Taller de Álgebra I Segundo cuatrimestre de 2016 Introducción A continuación les presentamos algunas soluciones para los ejercicios de la clase
Más detalles