Universidad Nacional de Loja

Slides:



Advertisements
Presentaciones similares
Presentado por: Yuli Dominguez. Portal Educa Panamá. Sistema de numeración.
Advertisements

1 MATEMATICAS I ITESM-Preparatoria Esmeralda Prof. Q.F.B. Mary Luz Noguera Números.
Una vez observado el producto programado que se debe construir, es importante que realice los siguientes ejercicios con la ayuda del docente. 1)Con la.
Programación II Sesión 3. TABLA DE CONTENIDO  Tipos de Datos en C  Delimitadores  Tipo Char  Tipo Int  Tipo Float  Tipo Double  Constantes  Operadores.
Traducción dirigida por la Sintaxis Teoría de Autómatas y Lenguajes Formales Alma María Pisabarro, 2007.
Conversión a formato de Punto Flotante.
Unidad 1 Principios de electrónica digital
Funciones Polinomicas
SISTEMAS NUMERICOS ING. SUSANA BELTRAN.
Derivadas algebraicas
LÍMITES Y CONTINUIDAD IVºELECTIVO
Tipos de Datos: Punto Flotante
ESTADÍSTICAS Y BASES DE DATOS.
ESTRUCTURAS CONDICIONALES
Desigualdades.
A EJEMPLO 1. Acerca del circuito de dos mallas de la figura, conteste a las siguientes preguntas: (a) ¿Qué lectura de corriente indicará el amperímetro.
Técnica de evaluación y revisión de programas
Tema 4 Elementos para el Desarrollo de Algoritmos
POTENCIACION GRADO 5.
Árboles Binarios * Recorridos * Tipo
POTENCIAS Y RAÍCES.
Tema 6. Conceptos básicos de programación (Clase 2)
Propiedades generales de un campo
POLINOMIOS U. D. 5 * 4º ESO E. Angel Prieto Benito
UNIVERSIDAD AUTONOMA DE SANTO DOMINGO FACULTAD DE CIENCIAS Escuela de Informática Materia: Introducción al procesamiento de datos INF-101 Tema: Sistemas.
Listas Dinámicas.
LÓGICA DE PROGRAMACIÓN
Unidad 2. Algoritmos Unidad 4. Control de flujo
Unidad 3. Introducción a la programación
Sesión 2 Tablas.
Estudio del movimiento
Tema 7. Introducción a lenguaje de programación Visual Basic (clase 1)
¿QUE SE DESEA CON LA PRESENTACIÓN
Aplicaciones de RECURSIVIDAD
Organización del Computador 1 Sistemas de Representación.
LOGARITMOS LICEO VILLA MACUL ACADEMIA
HERRAMIENTAS DE PROGRAMACIÓN
Árboles clase 6 Apoyo de Práctica. Resumen ●Árboles ○Concepto ○Características ○Dinámica ○Recorridos o barridos. ●Ejercicio Sugerido.
Estructuras de Repetición Pseudocodigo1 Estructuras de Repetición Algoritmos Mientras Hacer-Mientras Para.
ÁRBOLES ESTRUCTURA DE DATOS II ING. CARLOS ALBERTO PULLAS.
Unidad 3: Sistemas de Numeración. Í ndice Definición y Principios. Sistema de numeración decimal. Sistema de numeración binario. Conversión de un número.
Criterios Evaluación Portafolio de evidencias 5 Mapa conceptual 10 Practicas 30 Examen teórico 20 Analizador Sem. 35.
El poder generalizador de los SIMBOLOS
INFORMÁTICA II BLOQUE I: ALGORITMOS Y DIAGRAMAS DE FLUJO
Árboles Binarios de Búsqueda (ABB)
Instituto Tecnológico de Minatitlán
Recursividad Estructura de datos 2005.
GRAFOS ESTRUCTURAS DE DATOS.
1 Números Índice del libro Los números reales
Ensamblador MC Beatriz Beltrán Martínez
Estructura de Datos M.C. J. Andrés V. F. FCC/BUAP
Punto Flotante Además de los enteros, existen problemas que se desea modelar en la computadora que requieren de números fraccionarios, que en matemática.
Notación científica = 5 x lugares a la izquierda = exponente = 6 x lugares a la derecha = exponente -3.
Estructura de Datos M.C. José Andrés Vázquez Flores FCC/BUAP Árboles AVL Objetivos:  Entender la importancia que tiene el balanceo en un ABB.  Describir.
Arboles. Árboles ¿Qué son? Son Estructuras de datos “No lineales”” ¿Para que se utilizan? Representar Fórmulas Algebraicas Organizar Objetos Inteligencia.
Tema 6. Conceptos básicos de programación (Clase 2)
Tema 7. Introducción a lenguaje de programación Visual Basic (clase 1)
Árboles Binarios Recorridos.
NATURALEZA DE LOS DATOS Valores Numéricos Son los valores que se pueden hacer cálculos aritméticosritméticos Tipos de valores Entero Real Cadena ( “ h”
1 Radicales Definición del concepto Vocabulario Propiedades de los radicales Simplificar expresiones con radicales Operaciones con radicales Resolver ecuaciones.
CAPITULO I Límite de Funciones de una Variable 1.Límites de funciones reales de una variable. Límites mediante la gráfica. Límites por aproximaciones.
Completando la Recta Real
UNIDAD 1 Análisis semántico 1.1 ARBOLES DE EXPRESIONES.
Notación Cientifica Objetivo: Expresar un número utilizando notación cientifica.
Actividad 9 Realiza un análisis del siguiente tema, así como revisar el procedimiento que se emplea para resolver los ejemplos y realiza los ejercicios.
ALGUNOS EJERCICIOS.
Dr. Edwin Alfonso Sosa1 Aritmética: Propiedades y operaciones con números reales Fundamentos de álgebra Dr. Alfonso-Sosa.
UNIDAD II Generalidades sobre Algoritmos
FORMULAS DE EXCEL Las fórmulas de Excel son lo que dan un tremendo poder a nuestras hojas de cálculo. Sin las fórmulas nuestras hojas de cálculo serían.
EXCEL INTERMEDIO FILTROS AVANZADOS – TABLA DINAMICA – AUDITORIA DE FORMULAS JORGE LUIS AGUILAR ALCALDE.
Transcripción de la presentación:

Universidad Nacional de Loja COMPILADORES ANÁLISIS SEMÁNTICO ALUMNO: EDISON ROJAS L. DOCENTE: ING. WILMAN CHAMBA MÓDULO: IX “B” FECHA: 3/2/2010

EJERCICIO 6.2 Escriba una gramática con atributos para el valor de punto flotante de un número decimal dado por la gramática siguiente. (SUGERENCIA: Utilice un atributo conteo para contar el número de dígitos a la derecha del punto decimal). dnum num . num num num digito | digito digito 0|1|2|3|4|5|6|7|8|9

ANÁLISIS Para trabajar con punto flotante de un numero real se hace uso de notación científica. La estructura de Punto flotante para un numero decimal: a = m x be donde: a= numero real. m= mantisa. b= base(2, 8, 10, 16,…) e= exponente. Por ejemplo: 10.75= 10.75 x 100 1.075 x 101 REGLA: Como su nombre lo indica el punto flotante permite mover el punto hacia la derecha o izquierda y el exponente tomará el valor de los espacios que recorra. si se mueve hacia la el exponente será negativo 32.452 Normalizado 3.2452 E 1 Sin normalizar 32452 E -3

El ejercicio plantea como sugerencia que se utilice un atributo conteo para contar el numero de dígitos hacia la derecha del punto decimal, por lo cual utilizaré la forma no normalizada de punto flotante. Además se trabajará en base 10. Atributos: v para almacenar el valor numérico. c valores de 0 – 1 para al final del recorrido del árbol conocer el numero de dígitos a la derecha del punto. Utilizaré atributos sintetizados. Dentro del analizador semántico haremos uso de una variable booleana bandera inicializada con false que nos permitirá establecer el momento que empezamos a contar los dígitos de la parte derecha. Los valores que ingresan son enteros por ello se los debe tratar a estos valores como tales, por ello se los multiplica por 10 y se realiza la acción semántica asignada. (Esta operación esta establecida en las reglas semánticas del siguiente cuadro)

DESARROLLO (Tabla de reglas) REGLAS GRAMATICALES REGLAS SEMÁNTICAS 1 dnum num1 . num2 bandera=true dnum.v=num1.v +(num2.v*10^(-num2.c)) Imprimir(num1.v.concatenado(num2.v)+ “E -”+num2.c) 2 num num1 digito num.v=(num1.v*10)+digito.v num.c=(num1.c+digito.c) 3 num digito num.v= digito.v if (bandera=true) entonces num.c=1 sino num.c=0 4 digito 0 digito.v=0; digito.c=0; 5 digito 1 digito.v=1; digito.c=0; 6 digito 2 digito.v=2; digito.c=0; 7 digito 3 digito.v=3; digito.c=0; 8 digito 4 digito.v=4; digito.c=0; 9 digito 5 digito.v=5; digito.c=0; 10 digito 6 digito.v=6; digito.c=0; 11 digito 7 digito.v=7; digito.c=0; 12 digito 8 digito.v=8; digito.c=0; 13 digito 9 digito.v=9; digito.c=0;

CREACION DEL ÁRBOL Trabajemos con la siguiente cadena: 32.452 la cual representada en punto flotante sin normalizar sería: 32452 E -3 Para ello simplemente seguimos las reglas gramaticales. Por ejemplo con la primera producción obtenemos los primeros nodos. Además bandera=false; 1 dnum num1 . num2 dnum . num 1 num Y asi continuamos hasta obtener los siguientes nodos: Dentro de los círculos amarillos especificaré la regla gramatical que se utilizó, para obtener los nodos del árbol;

. ÁRBOL Los círculos amarillos indican la producción que se aplicó. Árbol totalmente creado, el siguiente paso es decorarlo. dnum . num 1 num num 2 digito 2 num digito 2 digito num 3 digito 6 6 2 2 3 digito 9 5 7 3 8 4

DECORAR EL ÁRBOL SINTÁCTICO Ahora decoraremos cada nodo con sus respetivos atributos (v para el valor y c para el contador). Para ello hacemos uso de las reglas semánticas. Empezamos recorriendo el árbol desde los nodos hacia la raíz. Observemos que el primer nodo se obtuvo de la produccion (7) de nuestra gramática, por ello asociamos las acciones semánticas y realizamos: dnum . num num num digito num digito num digito (7) digito.v=3; digito.c=0; 2 digito (digito.v=3) (digito.c=0) 2 digito 7 3 5 4

PILA Mientras realizamos el recorrido debemos apoyarnos en una pila para poder almacenar los datos que se van calculando: Estructura estado símbolo valor conteo Por lo tanto nuestra pila lleva los siguientes datos: num digito 3

Continuamos recorriendo el árbol ascendentemente Continuamos recorriendo el árbol ascendentemente. Aplicamos la siguiente acción semántica (3) (3) num.v= digito.v if (bandera=true) entonces num.c=1 sino num.c=0 dnum Pila Borramos la pila y asignamos los nuevos valores num . num num (num.v=3) (num.c=0) digito num 3 num digito 2 num digito 3 2 num digito 3 digito (digito.v=3) (digito.c=0) digito 7 3 5 4

Ahora siguiendo el recorrido, se aplica la siguiente acción semántica (2) Además debemos considerar dentro del algoritmo de recorrido del árbol que cuando se encuentre un nodo que se divide en ramas, se debe almacenar los valores en la pila y empezar a recorrer la rama derecha. dnum (2 ) num.v=(num1.v*10)+digito.v num.c=(num1.c+digito.c) num . num num.v=(3*10)+digito.v num.c=(0+digito.c) Pila Borramos la pila y asignamos los nuevos valores 2 num (num.v=3) (num.c=0) num digito digito dnum (3*10)+digito.v 30+0 0+0 2 num digito 2 3 digito (digito.v=3) (digito.c=0) num 3 digito 7 3 5 4

Bien en la pila queda almacenada la fórmula, que será utilizada luego de recorrer la rama derecha. En este caso toca aplicar la acción semántica (6) (6) digito.v=2 digito.c=0 dnum num num.v=(3*10)+digito.v num.c=(0+digito.c) num . Pila 2 num (num.v=3) (num.c=0) digito (digito.v=2) (digito.c=0) num 3 num digito 6 num digito 3 2 2 digito (digito.v=3) (digito.c=0) dnum (3*10)+digito.v 30+0 0+0 digito 7 3 5 4

Si continuamos recorriendo el árbol y obtenemos los valores para sustituirlos en la fórmula almacenada en la pila. dnum num num.v=(3*10)+2 num.c=(0+0) num . Pila 2 num (num.v=3) (num.c=0) digito (digito.v=2) (digito.c=0) num 3 num digito 6 num digito 3 2 2 digito (digito.v=3) (digito.c=0) dnum (3*10)+digito.v 30+0 0+0 digito 7 3 5 4

. Hasta el momento tenemos lo siguiente: dnum Pila num num.v= 32 num.c= 0 num dnum num 32 . num (num.v=3) (num.c=0) digito (digito.v=2) (digito.c=0) num 3 num digito num digito 2 2 digito (digito.v=3) (digito.c=0) dnum (3*10)+digito.v 30+0 0+0 digito 3 5 4

dnum.v=32 +(num2.v*10^(-num2.c)) Ahora aplicamos la producción (1) dnum dnum.v=32 +(num2.v*10^(-num2.c)) (1) bandera=true . 1 num num num.v= 32 num.c= 0 Pila raíz(dnum) 32 +(num2.v*10^(-num2.c)) 32+0 num digito num (num.v=3) (num.c=0) digito (digito.v=2) (digito.c=0) num digito 2 dnum num 32 2 digito (digito.v=3) (digito.c=0) digito 5 4 3

dnum.v=32 +(num2.v*10^(-num2.c)) Igual que en pasos anteriores empezamos a recorrer la parte derecha de dnum. Quedan en la pila almacenadas las formulas que se deben aplicar. Y se recorre el árbol ascendentemente, ahora desde el valor 4, donde se aplicó la producción (8). dnum dnum.v=32 +(num2.v*10^(-num2.c)) (8) digito.v=8 digito.c=0 num num.v= 32 num.c= 0 num . Pila num (num.v=3) (num.c=0) num digito digito (digito.v=2) (digito.c=0) num digito 4 digito num 2 2 digito (digito.v=3) (digito.c=0) 5 digito (digito.v=4) (digito.c=0) raíz(dnum) 32 +(num2.v*10^(-num2.c)) 32+0 8 3 4

dnum.v=32 +(num2.v*10^(-num2.c)) Continuamos el recorrido ascendente , aplicando la acción semántica (3) (3) num.v= digito.v if (bandera=true) entonces num.c=1 sino num.c=0 dnum dnum.v=32 +(num2.v*10^(-num2.c)) Algo importante es que ahora la bandera tiene el valor de true, por lo tanto el atributo c tiene el valor de 1. num num num.v= 32 num.c= 0 Pila . num 4 digito num num (num.v=3) (num.c=0) digito (digito.v=2) (digito.c=0) num (num.v=4) (num.c=1) digito num digito 4 2 2 digito (digito.v=4) (digito.c=0) digito (digito.v=3) (digito.c=0) 5 raíz(dnum) 32 +(num2.v*10^(-num2.c)) 32+0 8 3 4

Continuamos recorriendo el árbol hasta llegar a la raíz Continuamos recorriendo el árbol hasta llegar a la raíz. Obteniendo el siguiente árbol dnum (dnum.v=32+(152^-3)) num (num.v=(3*10)+2) (num.c=0+0) . num (num.v=(45*10)+2) (num.c=3) digito (digito.v=2) (Digito.c=1) num (Num.v=(4*10)+5) (Num.c=2) num (num.v=3) (num.c=0) digito (digito.v=2) (digito.c=0) num (num.v=4) (num.c=1) digito (digito.v=5) (digito.c=1) 2 digito (digito.v=3) (digito.c=0) 2 digito (digito.v=4) (digito.c=0) 5 3 4

. dnum (dnum.v=32+(152^-3)) num (num.v=(3*10)+2) (num.c=0+0) num digito (digito.v=2) (Digito.c=1) num (Num.v=(4*10)+5) (Num.c=2) num (num.v=3) (num.c=0) digito (digito.v=2) (digito.c=0) num (num.v=4) (num.c=1) digito (digito.v=5) (digito.c=1) 2 digito (digito.v=3) (digito.c=0) 2 digito (digito.v=4) (digito.c=0) 5 3 4

Al final de todo el recorrido y aplicación de las reglas semánticas, obtendremos lo siguiente: dnum.v= 32.452 Y el mensaje : 32452 E -3