Semantica.

Slides:



Advertisements
Presentaciones similares
Métodos y parámetros.
Advertisements

Programación de Computadores
En PHP, casi cualquier cosa que escribes es una expresión. La forma más simple y ajustada de definir una expresión es "cualquier cosa que tiene un valor".
Análisis Lexicográfico
Uso de variables de tipo valor
Clase 2 Tipos de datos Asignación de valores Estructura IF Ejercicios
Tema: Decibilidad Integrantes: Ileana Rdguez Soto
Metodología de la Programación
INSTITUTO TECNOLOGICO DE MINATITLAN
Teoría de lenguajes y compiladores
1 Parsing Un parser podría ser definido como un programa que analiza una porción de texto para determinar su estructura lógica: la fase de parsing en un.
Programación 1 Introducción
Aplicación del paradigma orientado a objetos
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Teoría de lenguajes y compiladores
Aspectos Avanzados de Haskell
Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.
MÓDULO DE PROCEDIMIENTOS Los módulos también pueden contener subrutinas y funciones → MÓDULO DE PROCEDIMIENTOS  PROCEDIMIENTOS → son compilados como parte.
FUNCIONES Y PROCEDIMIENTOS
CONCEPTOS INTRODUCTORIOS DE JAVASCRIPT Preparado por: Prof. Nelliud D. Torres 14/octubre/2004.
ANALISIS SINTACTICO El análisis gramatical es la tarea de determinar la sintaxis, o estructura, de un programa. Por esta razón también se le conoce como.
T A D : Módulos Los módulos proporcionan la única manera de construir tipos abstractos de datos (TAD) en Haskell.
TRAMPAS EN EL DISEÑO DE LENGUAJES CON RELACIÓN A LOS NOMBRES - REGLAS DE ALCANCE - COMPILACIÓN POR SEPARADO CONTROL DE FLUJO - EVALUACIÓN DE EXPRESIONES.
Fundamentos de Programación
Un lenguaje funcional avanzado:
Sesión 6 Sentencias de Repetición Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
Características de “C”
Características de “C” Y Esta conformado por un Ambiente Integrado. Y Es un Lenguaje de Nivel medio. Y Es un compilador. YContiene un conjunto de palabras.
Formateador y Analizador de textos
Características y elementos fundamentales J.M. Morales-del-Castillo
Problemas, algoritmos y programas: Modelar: Simular o programar su solución en un computador. Algoritmos: Es un conjunto finito, y no ambiguo de etapas.
ANALISIS SINTACTICO Parte I
Sintaxis.
Capítulo 2 – Estructuras de Control
Clasificación de Gramáticas y Manejo de Errores
Compiladores (23/04/ :35) Compiladores Tema 3 Análisis Lexicográfico Scanners.
ESTRUCTURA DE DATOS ESD-243
Historia. Historia Historia Su nombre rinde homenaje a: Haskell Brooks Curry ( ) Lógico y matemático norteamericano Pionero de la lógica.
Agenda Clase 16 Motivación e Historia de la Programación Funcional y la Programación Lógica. Concepto y Características de la Programación Funcional. Ventajas.
COMPONENTES DE UN ALGORITMOS
Unidad 3 Instrucciones secuenciales
Resumen Fundamentos de Programación/ Programación I
EXPRESIONES Y SENTENCIAS
El Concepto de Tipo Los tipos permiten indicar la característica de los valores (datos) manipulados en un programa. Toda variable tiene asociado un tipo.
Unidad 1: FUNDAMENTOS DE COMPUTACIÓN Y PSEUDOLENGUAJE
Características de “C” Y Esta conformado por un Ambiente Integrado. Y Es un Lenguaje de Alto Nivel. Y Es un compilador. YContiene un conjunto de palabras.
FUNDAMENTOS DE PROGRAMACIÓN
Términos algoritmo diseñar algoritmo implementar algoritmo
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
Computación I (CI-2125) Clase 2 Prof. Mireya Morales.
PRINCIPIOS DE PROGRAMACIÓN

Presente un cuestionario con los aspectos mas importantes sobre los
Introducción a los TADs
Lic. Carla Aguirre Montalvo
Programación de Computadores
* Cuando nos permite desarrollar un programa que necesitamos para tomar un conjunto de buenas prácticas para hacer eso. Esto se debe a que podemos ahorrar.
IV. GRAMÁTICAS DISTRIBUIDAS Y TABLAS DE SÍMBOLOS
Programación de Sistemas
Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.
ESTRUCTURAS DE DECISION MULTIPLE
PARADIGMA Es un marco de referencia que impone reglas sobre cómo se deben hacer las cosas. CONCEPTO DE PARADIGMA DE PROGRAMACION colección de modelos conceptuales.
U2 Tipos de datos, referenciación y errores 1. Datos problema simple enteroreal carácter booleano Ingeniero = Oreja+catalejo modelo ordenador solución.
Características de “C” Esta conformado por un Ambiente Integrado. Es un Lenguaje de Nivel medio.Es un compilador. Contiene un conjunto de palabras reservadas.
Tratamientos Secuenciales Generalizados II Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 19 Versión
MATEMÁTICAS IV MULTIVERSIDAD LATINOAMERICANA CAMPUS DURANGO COMPETENCIA: RECONOCE FUNCIONES Y TIPOS DE FUNCIONES. ELABORÓ: M.E. VERONICA LEYVA GUTIERREZ.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
Prof. Jonathan Silva Ingeniería Civil – Informática I Ingeniería Civil Informática I Clase 5.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Transcripción de la presentación:

Semantica

Sistemas de Inferencia En haskell no es obligatorio declarar el tipo de las expresiones. Haskell declara el tipo de alguna expresión, el sistema chequea que el tipo declarado coincide con el tipo inferido.

Ejemplo de inferencia eligeSaludo x = if x then "adios" else "hola” El sistema infiere automáticamente que el tipo es eligeSaludo::Bool -> String y, si el programador hubiese declarado que tiene un tipo diferente, el sistema daría un error de tipos.

Nombres de función: Identificadores y operadores Existen dos formas de nombrar una función: Identificador ej: sum,product y fact símbolo de operador ej: * y +

Palabras reservadas case of where let in if then else data type infix infixl infixr primitive class instance

Operadores : ! # $ % & * + . / < = > ? @ \ ^ | -

Operadores -> ~ => :: = .. @ \ | <- Los nombres de operador que comienzan con (:) son utilizados para funciones constructoras. :: = .. @ \ | <- -> ~ =>

Operadores de igualdad y orden Para todos los tipos básicos. > Mayor que < Menor que == Igual a >= Mayor o igual que <= Menor o igual que /= Distinto de

Evaluación de expresiones I)La precedencia "2 * 3 + 4” "(2 * 3) + 4” "2 * (3 + 4)“ La precedencia La expresión "2 * 3 + 4" podría interpretarse como "(2 * 3) + 4" o como "2 * (3 + 4)". Para resolver la ambigüedad, cada operador tiene asignado un valor de precedencia (un entero entre 0 y 9). En una situación como la anterior, se comparan los valores de precedencia y se utiliza primero el operador con mayor precedencia (en el standar prelude el (+) y el (*) tienen asignados 6 y 7, respectivamente, por lo cual se realizaría primero la multiplicación).

Evaluación de expresiones Para resolver esta ambigüedad: Cada operador tiene asignado un valor de precedencia (un entero entre 0 y 9). Esta precedencia la dicta el Standar prelude que es cargado al arrancar el sistema.

Standar Prelude Que es el Standar prelude: Es la cadena de precedencia de haskell para saber que operador debe utilizar primero dependiendo de una enumeración que se le asigna a cada operador. Posee una larga colección de funciones: Con dichas funciones se pueden realizar una gran cantidad de operaciones útiles

Standar Prelude

Evaluación de expresiones II) La asociatividad: "1 - 2 - 3“ "(1 - 2) - 3“ = -4 "1 - (2 - 3)“ = 2 La asociatividad: La regla anterior resolvía ambigüedades cuando los símbolos de operador tienen distintos valores de precedencia, sin embargo, la expresión "1 - 2 - 3" puede ser tratada como "(1 - 2) - 3" resultando -4 o como "1 - (2 - 3)" resultando 2. Para resolverlo, a cada operador se le puede definir una regla de asociatividad. Por ejemplo, el símbolo (-) se puede decir que es: Asociativo a la izquierda: si la expresión "x-y-z" se toma como "(x-y)-z" Asociativo a la derecha: si la expresión "x-y-z" se toma como "x-(y-z)" No asociativo: Si la expresión "x-y-z" se rechaza como un error sintáctico.

Asociatividad A cada operador se le puede definir una regla de asociatividad. Asociativo a la izquierda: si la expresión "x-y-z" se toma como "(x-y)-z“ Asociativo a la derecha: si la expresión "x-y-z" se toma como "x-(y-z)“ No asociativo: Si la expresión "x-y-z" se rechaza como un error sintáctico.

Asociatividad Standar prelude el (-) se toma como asociativo a la izquierda. Por lo tanto: "1 - 2 - 3" se tratará como "(1-2)-3".

Asociatividad Por defecto, todo símbolo de operador se toma como no-asociativo y con precedencia 9. infixl digito ops Para declarar operadores asociativos a la izquierda infixr digito ops Para declarar operadores asociativos a la derecha infix digito ops Para declarar operadores no asociativos En el standar prelude el (-) se toma como asociativo a la izquierda, por lo que la expresión "1 - 2 - 3" se tratará como "(1-2)-3". Por defecto, todo símbolo de operador se toma como no-asociativo y con precedencia 9. Estos valores pueden ser modificados mediante una declaración con los siguientes formatos: infixl digito ops Para declarar operadores asociativos a la izquierda infixr digito ops Para declarar operadores asociativos a la derecha infix digito ops Para declarar operadores no asociativos ops representa una lista de uno o más símbolos de operador separados por comas y digito es un entero entre 0 y 9 que asigna una precedencia a cada uno de los operadores de la lista. Si el dígito de precedencia se omite se toma 9 por defecto.

Asociatividad Existen ciertas restricciones en la utilización de estas declaraciones: Sólo pueden aparecer en ficheros de definición de función que sean cargados en el sistema. Para un operador particular, sólo se permite una declaración

Instrucciones de control IF Ecuaciones con guardas

Mecanismos de repetición: Haskell no posee un mecanismo de repetición, Haskell se basa en la recursividad.

Reglas de ejecución La característica principal de la programación funcional es que los cálculos se ven como una función matemática que hacen corresponder entradas y salidas. Trabaja con llamadas a funciones Dichas funciones estan cargadas en el Standar Prelude.

Funciones básicas de Entrada/salida