Compilación. Jaime Gutiérrez Alfaro Compiladores e Intérpretes. II semestre,

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Compilación. Jaime Gutiérrez Alfaro Compiladores e Intérpretes. II semestre,"

Transcripción

1 Compilación Jaime Gutiérrez Alfaro Compiladores e Intérpretes II semestre,

2 Agenda 2. Compilación Estructura del proceso de compilación Estructuras de datos Pasadas Opciones de diseño de un compilador Ejemplo de un compilador completo Aho, Sethi y Ulman Compiladores: principios, técnicas y herramientas

3 Proceso de compilación involucra dos partes a groso modo: 1. Análisis Divide al programa fuente en sus elementos componentes y crea una representación interna del programa fuente para facilitar el trabajo. Muchas herramientas de programación ayudan previamente 2. Generación (Síntesis) Construye el nuevo programa objeto a partir de la representación intermedia.

4 Preprocesador: No siempre un programa fuente tiene todos los archivos necesarios para ser utilizados en el proceso de compilación. Un programa en Java puede utilizar una serie de paquetes que están en archivos independientes en forma de código fuente o en forma binaria (.class) y es necesario tener todo listo para la compilación. Ensamblador / Editor de carga y Enlance Posterior al proceso se deben ejecutar otros programas involucrados en lograr hacer efectiva la ejecución en la máquina

5 Código fuente Estructura del proceso de compilación Árbol Sintáctico Abstracto (AST) Árbol Sintáctico Abstracto Decorado (ASTD) Código objeto Análisis sintáctico Análisis contextual Generación de código Reporte de errores Reporte de errores ** Esta estructura está basada en la propuesta de D.A.Watt Propone incluir el análisis léxico como parte del análisis sintáctico. Para propósitos prácticos el análisis contextual es equivalente al semántico El AST y ASTD son estructuras de datos intermedias que representan las transformaciones y validaciones llevadas a cabo. Otra: tablas de símbolos

6 1. Análisis léxico (lineal, exploración, rastreador, scanner): Se lee el código fuente y se agrupa en componentes léxicos o tokens (secuencias de caracteres que tienen un significado) Ejemplo: a[index] = cuantos caracteres encuentra y cuantos tokens?

7 1. Análisis léxico (lineal, exploración, rastreador, scanner): Se lee el código fuente y se agrupa en componentes léxicos o tokens (secuencias de caracteres que tienen un significado) Ejemplo: a[index] = cuantos caracteres encuentra y cuantos tokens? Caracteres: 16 y Tokens 8: a identificador [ corchete izquierdo index identificador ] corchete derecho = asignación 4 número + signo más 2 número

8 1. Análisis léxico (lineal, exploración, rastreador, scanner): Se lee el código fuente y se agrupa en componentes léxicos o tokens (secuencias de caracteres que tienen un significado) Adicionalmente: Se puede ir ingresando identificadores en la tabla de símbolos Puede introducir literales en la tabla de literales: Constantes numéricas: Cadenas de texto: Hola mundo

9 2. Análisis sintáctico (jerárquico, parser): Los tokens son analizados para determinar la correcta estructura del programa (identificadores, expresiones, comandos, etc) Como herramienta de representación se puede utilizar un árbol de sintaxis abstracta

10 2. Análisis sintáctico (jerárquico, parser): árbol de sintaxis abstracto a[index] = Nodos: etiquetados con los nombres de las estructuras que representan Hojas: tokens ( terminales o no terminales?)

11 2. Análisis sintáctico (jerárquico, parser): árbol de sintaxis abstracto a[index] = Se eliminan algunos nodos... cuales? Y por qué?

12 3. Análisis semántico: Revisiones para asegurarse que los componentes se ajusten a su contexto (tengan sentido) Algunos detalles semánticos no pueden ser analizados hasta que el programa se ejecute sin embargo otro si, esos responden a la semántica estática y serán los de interés en el análisis semántico. Características típicas a ser revisadas: relación entre identificadores y declaraciones, tipos de datos asociados a expresiones, etc. Esos detalles revisados y detectado serán llamados atributos y frecuentemente son añadidos como etiquetas a alguna estructura de datos disponible durante el proceso. Al etiquetar el árbol sintáctico abstracto lo llamamos decorado (ASA Decorado o Decorated AST)

13 3. Análisis semántico: Árbol sintáctico abstracto decorado a[index] = 4 + 2

14 3.5 Optimización de código fuente Se resuelven expresiones sencillas o de las cuales ya se tienen los valores (incorporación de constantes) En el ejemplo se resuelve la parte derecha el árbol ( = 6)

15 3. Análisis semántico: Árbol sintáctico abstracto decorado (ejemplo 2: Watt)

16 3. Análisis semántico: Árbol sintáctico abstracto decorado (ejemplo 3: Watt)

17 4. Generación de código: Toma el código intermedio del árbol (y las otras estructuras de datos) con el objetivo de generar el código en ensamblador / lenguaje máquina. Se debe conocer a profundidad la arquitectura de la máquina para la cual se genera el código. MOV R0, index ;;valor de index R0 MUL R0, 2 ;;doble valor en R0 MOV R1, &a ;;dirección de a R1 ADD R1, R0 ;; sumar R0 a R1 MOV *R1, 6 ;; constante 6 dirección en R1

18 4. Generación de código: Ejemplo: a[index] = MOV R0, index ; valor de index Registro 0 MUL R0, 2 ; multiplicación por 2 del valor en Registro 0 MOV R1, &a ; dirección de a Registro 1 ADD R1, R0 ; sumar R0 a R1 MOV *R1, 6 ; constante 6 dirección en R1 Qué podemos intuir del tipo entero de éste lenguaje?

19 4.5 Optimización de código objeto: Esta parte incluye una complejidad aún mayor pues se debe conocer a mayor profundidad la arquitectura de la máquina para la cual se genera el código. Ejemplo: a[index] = MOV R0, index ; Valor de index Registro 0 SHL R0 ; Duplica el valor del Registro 0 ; por medio de un shift a la izquierda MOV *a[r0], 6 ; Constante 6 a dirección a + R0 Por qué hacer un shift a la izquierda (SHL) es equivalente a multiplicar por dos? Esta optimización es solo de tiempo o también de recursos?

20 Estructuras de Datos Tokens Unidad básica identificada por el scanner (rastreador). Manejados de manera simbólica, un tipo de elemento de un conjunto de tokens del lenguaje. Hace la asociación entre el tipo de elemento y el nombre que se le atribuye Tabla de símbolos

21 Estructuras de Datos Tabla de Símbolos Mantiene información de identificadores: funciones, variables, constantes y tipos de datos. Tiene interacción con prácticamente todas las etapas del proceso de compilación: en las primeras etapas escribirán en ella en las de producción será consultada. Tabla de literales: específicamente para constantes y cuestiones de alcance global. Nota: no olvidar el Árbol Sintáctico

22 Estructuras de dato Las etapas de generación de código tendrán necesidad de utilizar algunas estructuras para almacenar: Código intermedio: el generado en una primera iteración para luego optimizarlo Archivos temporales: según las características de la computadora donde se ejecute el compilador puede ser necesario almacenar partes del proceso en archivos en disco y no en memoria.

23 Pasadas Los pasos descritos anteriormente pueden realizarse una única iteración o durante varias sucesivas a esto se le llama pasadas Existen muchas técnicas para compilar: separación de las etapas en módulos con uno dedicado a controlar el proceso, módulos que trabajan en paralelo, etc... El concepto debe comprenderse de la forma más natural: las veces que se pasa por una etapa(s) generando o actualizando una estructura de datos intermedia para mejorar en alguna medida el proceso como un todo. Notas: Una pasada: eficiente en tiempo pero no en consumo de recursos. Más pasadas: con el objetivo de optimizar el código objeto resultante. Generalmente: se realiza una pasada para el análisis léxico y sintáctico, otra para análisis semántico y optimización del código fuente y finalmente una pasada para generación de código objeto y optimización.

24 Opciones de diseño de un compilador De alguna forma es responder a las preguntas: Cuantas pasadas se van a realizar? Qué estructura de datos (EdD) voy a necesitar? Velocidad Un compilador de 1 pasada con EdD gruesas que me permitan obtener el resultado rápidamente o sea optimizadas para el acceso a datos. Espacio El diseño debe estar centrado en utilizar EdD optimizadas en términos de uso de memoria y no de acceso a los datos. La cantidad de pasadas puede afectar las EdD utilizadas. Un enfoque modular en el procesamiento del programa a compilar puede ayudar a realizar la optimización de uso de las EdD.

25 Opciones de diseño de un compilador Modularidad En el sentido del compilador o sea de la separación de las etapas del proceso. Se ve favorecida por un diseño de múltiples capas con un elemento de software que sea el coordinador de la compilación. En una sola etapa la cohesión será muy alta Flexibilidad Hasta que punto el diseñado soporta que dos etapas puedan modificar el orden en que trabajan. Ejemplo: con el Árbol sintáctico es posible alternar el orden de la generación de código y el análisis semántico Optimización Todo sea en nombre de la optimización... Dentro de ésta perspectiva es posible inclusive modificar el código fuente conservando la semántica.

26 Opciones de diseño de un compilador Características del diseño del lenguaje Un compilador no puede crear código saltando restricciones que vienen impuestas en el código fuente original Ejemplo: si los identificadores (de funciones) deben ser declaradas entes de ser usadas puedo utilizar un compilador de 1 pasada, si pueden estar declaradas después de usarlos necesariamente tengo que hacer al menos 2 pasadas. Manejo de Errores Es fundamental informar adecuadamente al programador de los errores encontrados. También es importante que el compilador haga lo posible por recuperarse a la mayor cantidad de fallos que pueda.

27 Ejemplo de un compilador completo Triangle Tools Por: D.A. Watt and D.F. Brown Disponible en: Tarea Moral: descargarlo y travesearlo un poco para revisar los conceptos descritos en esta presentación. Otros compiladores: TINY (Kenneth C. Louden)

28 Resumen Etapas Se revisó qué transformaciones se llevan a cabo en la traducción de un programa y no cómo se implementan (más adelante) Pasadas: cuantas veces el compilador le pregunta al código algo para validarlo. Opciones de diseño del compilador: decisiones, costo/beneficio, programación/ejecución... evaluación de factores.

29 Referencias y Lecturas Complementarias D. A. Watt y D.F. Brown, Compilation en Programming Language Processors in Java. Gran Bretaña:Pearson, Kenneth C. Louden, Construcción de compiladores. Aho, Sethi y Ulman Compiladores: principios, técnicas y herramientas Material suministrado por el profesor José Enrique Araya del Instituto Tecnológico de Costa Rica. II semestre 2011.

30 *La licencia de la presentación no cubre las imágenes utilizadas*

Lenguaje de programación. COMPILADORES Unidad I: Introducción al proceso de compilación

Lenguaje de programación. COMPILADORES Unidad I: Introducción al proceso de compilación COMPILADORES Unidad I: Introducción al proceso de compilación Flor Prof. Flor Narciso GIDyC-Departamento de Computación LABSIULA-Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de

Más detalles

Generación de Código Intermedio

Generación de Código Intermedio Generación de Código Intermedio Programación II Margarita Álvarez Generación de código intermedio Con la generación de código intermedio se inicia la tarea de síntesis. Aunque un programa fuente se puede

Más detalles

Unidad I Introducción a la programación de Sistemas. M.C. Juan Carlos Olivares Rojas

Unidad I Introducción a la programación de Sistemas. M.C. Juan Carlos Olivares Rojas Unidad I Introducción a la programación de Sistemas M.C. Juan Carlos Olivares Rojas Agenda 1.1 Qué es y que estudia la programación de sistemas? 1.2 Herramientas desarrolladas con la teoría de programación

Más detalles

16 Análisis sintáctico I

16 Análisis sintáctico I 2 Contenido Recordando la estructura de un compilador Recordando el análisis léxico l análisis sintáctico Comparación con el análisis léxico l Rol del Parser Lenguajes de programación Gramáticas structura

Más detalles

CUP. Diseño de compiladores. Estructura del archivo CUP. Estructura del archivo CUP. Estructura del archivo CUP. Estructura del archivo CUP 20/04/2014

CUP. Diseño de compiladores. Estructura del archivo CUP. Estructura del archivo CUP. Estructura del archivo CUP. Estructura del archivo CUP 20/04/2014 CUP Diseño de compiladores CUP Cup es un generador de analizadores sintácticos LALR Recibe de entrada un archivo con la estructura de la gramática y su salida es un parser escrito en Java Manual oficial:

Más detalles

PROGRAMA DE LABORATORIO SECCIÓN: ÁREA A LA QUE PERTENECE: POS-REQUISITO: AUXILIAR:

PROGRAMA DE LABORATORIO SECCIÓN: ÁREA A LA QUE PERTENECE: POS-REQUISITO: AUXILIAR: UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERÍA ESCUELA DE CIENCIAS PROGRAMA DE LABORATORIO CÓDIGO: 777 CRÉDITOS: 4 NOMBRE CURSO: ESCUELA: PRE-REQUISITO: Organización de Lenguajes y Compiladores

Más detalles

El proceso del Análisis Léxico

El proceso del Análisis Léxico El proceso del Análisis Léxico El proceso de análisis léxico se refiere al trabajo que realiza el scanner con relación al proceso de compilación. El scanner representa una interfaz entre el programa fuente

Más detalles

Las Etapas de la Compilación

Las Etapas de la Compilación Las de la Compilación El en la Compilación Universidad de Cantabria Outline 1 El Problema 2 Las y el Qué pasos son necesarios dar para hallar la estructura de un programa? En qué pasos podemos dividirlos

Más detalles

Tema V Generación de Código

Tema V Generación de Código Tema V Generación de Código Una vez que se ha realizado la partición HW/SW y conocemos las operaciones que se van a implementar por hardware y software, debemos abordar el proceso de estas implementaciones.

Más detalles

Tema 2 Introducción a la Programación en C.

Tema 2 Introducción a la Programación en C. Tema 2 Introducción a la Programación en C. Contenidos 1. Conceptos Básicos 1.1 Definiciones. 1.2 El Proceso de Desarrollo de Software. 2. Lenguajes de Programación. 2.1 Definición y Tipos de Lenguajes

Más detalles

Profs. Carlos Pérez y Ricardo Monascal

Profs. Carlos Pérez y Ricardo Monascal TRADUCTORES E INTERPRETADORES Clase 0: Introducción al Curso Quiénes somos? Prof. Carlos Pérez caperez@ldc.usb.ve Prof. Ricardo Monascal rmonascal@ldc.usb.ve Oficina: MYS-228A (Sí, es la misma) Recursos

Más detalles

Toda copia en PAPEL es un "Documento No Controlado" a excepción del original.

Toda copia en PAPEL es un Documento No Controlado a excepción del original. S U P E RIO R DE MISANTLA Apartado: 7.1 Copia No. Código:PD-SCD-1016 Versión No.: 02 Hoja : 2 de 12 4.- COMPETENCIAS A DESARROLLAR 4.1 Competencias Específicas: Diseña mediante el uso de reglas semánticas

Más detalles

TEMA 3: El proceso de compilación, del código fuente al código máquina

TEMA 3: El proceso de compilación, del código fuente al código máquina TEMA 3: El proceso de compilación, del código fuente al código máquina 3.1 Fase de compilación y linkado (link, montado o enlace) Un programa escrito en un lenguaje de alto nivel, no puede ser ejecutado

Más detalles

Técnicas de Programación

Técnicas de Programación Técnicas de Programación 2.1.- Introducción: unos conceptos previos y primeros conceptos de la API Introducción La resolución de un problema con medios informáticos implica generalmente la siguiente secuencia

Más detalles

Compiladores: Generación de Código. Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. María Constanza Pabón

Compiladores: Generación de Código. Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. María Constanza Pabón Compiladores: Generación de Código Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. María Constanza Pabón Generación de Código Representación Intermedia Tabla de Símbolos

Más detalles

Unidad II: Análisis semántico

Unidad II: Análisis semántico Unidad II: Análisis semántico Se compone de un conjunto de rutinas independientes, llamadas por los analizadores morfológico y sintáctico. El análisis semántico utiliza como entrada el árbol sintáctico

Más detalles

Evolución del software y su situación actual

Evolución del software y su situación actual Evolución del software y su situación actual El software es el conjunto de programas que permite emplear la PC, es decir, es el medio de comunicación con la computadora, el control de sus funciones y su

Más detalles

Compiladores e intérpretes Análisis Léxico I. Análisis Léxico I

Compiladores e intérpretes Análisis Léxico I. Análisis Léxico I Análisis Léxico I Profesor: Eridan Otto Análisis Léxico I Introducción Funciones Tokens,Patrones y Lexemas Reconocimiento de tokens Implementación de un AL 1 Análisis léxico: Introducción En esta unidad

Más detalles

Un. VI. Generador de código intermedio.

Un. VI. Generador de código intermedio. Un. VI. Generador de código intermedio. La administración de la memoria se da en esta etapa. Se debe considerar tanto la memoria estática como dinámica, y en esta se utilizan generalmente pilas. Los lenguajes

Más detalles

INICIACIÓN A LA PROGRAMACIÓN 1ª parte

INICIACIÓN A LA PROGRAMACIÓN 1ª parte TEMA 4 INICIACIÓN A LA PROGRAMACIÓN 1ª parte Qué es la programación? La programación es el proceso de diseñar, codificar, depurar y mantener el código fuente de programas computacionales. En la actualidad,

Más detalles

Introducción a la programación

Introducción a la programación Introducción a la programación Conceptos Básicos El objetivo fundamental de éste curso es enseñar a resolver problemas mediante una computadora. El programador de computadoras es antes que nada una persona

Más detalles

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

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

Más detalles

Algoritmos y Lenguajes de Programación

Algoritmos y Lenguajes de Programación Introducción y horario Algoritmos y Lenguajes de Programación 543242-2 mariomedina@udec.cl Código: 543242-2 Carrera: Ing. Civil Electrónica Clases 7 de Marzo a 28 de Junio Horario clases Martes, 9:10 a

Más detalles

Tema 7. Generación de código

Tema 7. Generación de código Departamento de Tecnologías de la Información Tema 7 Generación de código Ciencias de la Computación e Inteligencia Artificial Índice 7.1 Visión general 7.2 Código de tres direcciones 2 Índice 7.1 Visión

Más detalles

Colección de Tesis Digitales Universidad de las Américas Puebla. Romero Martínez, Modesto

Colección de Tesis Digitales Universidad de las Américas Puebla. Romero Martínez, Modesto 1 Colección de Tesis Digitales Universidad de las Américas Puebla Romero Martínez, Modesto El procesamiento de consultas en un sistema multibase de datos es la pieza mas importante para la operación del

Más detalles

Programación de Sistemas Depuradores (Debugger) MIS. Lizbeth Hdz. Glz.

Programación de Sistemas Depuradores (Debugger) MIS. Lizbeth Hdz. Glz. Programación de Sistemas Depuradores (Debugger) MIS. Lizbeth Hdz. Glz. TIPOS DE ERRORES Sintácticos. Los errores de sintaxis, o sintácticos, ocurren cuando el programador escribe código que no va de acuerdo

Más detalles

Métodos que devuelven valor Dado el siguiente triángulo rectángulo:

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

Más detalles

1. Computadores y programación

1. Computadores y programación 1. Computadores y programación Informática y computadora (RAE) Informática (Ciencia de la computación) Conjunto de conocimientos científicos y técnicos que hacen posible el tratamiento automático de la

Más detalles

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria 1.2. Jerarquía de niveles de un computador Qué es un computador? Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria Es un sistema tan complejo

Más detalles

PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07

PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07 PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07 1. En qué método de análisis sintáctico puede suceder que en la construcción del árbol de derivación de las posibles expansiones de un símbolo no terminal

Más detalles

Procesadores de lenguaje Tema 6 La tabla de símbolos

Procesadores de lenguaje Tema 6 La tabla de símbolos Procesadores de lenguaje Tema 6 La tabla de símbolos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen La tabla de símbolos. Requerimientos de información. Diseño de la tabla de

Más detalles

Es un conjunto de palabras y símbolos que permiten al usuario generar comandos e instrucciones para que la computadora los ejecute.

Es un conjunto de palabras y símbolos que permiten al usuario generar comandos e instrucciones para que la computadora los ejecute. Los problemas que se plantean en la vida diaria suelen ser resueltos mediante el uso de la capacidad intelectual y la habilidad manual del ser humano. La utilización de la computadora en la resolución

Más detalles

Elementos de un programa en C

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

Más detalles

Diseño de compiladores. Organización de memoria. Organización de memoria. Organización de memoria. Zona de código 04/05/2014 ORGANIZACIÓN DE MEMORIA

Diseño de compiladores. Organización de memoria. Organización de memoria. Organización de memoria. Zona de código 04/05/2014 ORGANIZACIÓN DE MEMORIA Diseño de compiladores Gestión de la memoria / Generación de código ORGANIZACIÓN DE MEMORIA Organización de memoria Depende del tipo de lenguaje (declarativos, imperativos), del compilador y del sistema

Más detalles

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

Tema 2 Conceptos básicos de programación. Fundamentos de Informática Tema 2 Conceptos básicos de programación Fundamentos de Informática Índice Metodología de la programación Programación estructurada 2 Pasos a seguir para el desarrollo de un programa (fases): Análisis

Más detalles

Operadores y Expresiones

Operadores y Expresiones Operadores y Expresiones Los programas Java constan de datos, sentencias de programas y expresiones. Una expresión es normalmente, una ecuación matemática, tal como 3 * x + 5 * z. En esta expresión, los

Más detalles

JavaCC Parte I. 1 Compiladores / Guía VII / Ciclo Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores.

JavaCC Parte I. 1 Compiladores / Guía VII / Ciclo Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores. 1 Compiladores / Guía VII / Ciclo 02-2016 Centro de Investigación y Transferencia de Tecnología JavaCC Parte I Contenido Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores En la presente

Más detalles

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

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

Más detalles

Programación en java. Estructuras algorítmicas

Programación en java. Estructuras algorítmicas Programación en java Estructuras algorítmicas Estructuras algoritmicas 1. Conceptos basicos 1. Dato 2. Tipos de datos 3. Operadores 2. dsd Conceptos Basicos DATO: se considera una representación simbólica

Más detalles

Unidad I: Introducción a las estructuras de datos

Unidad I: Introducción a las estructuras de datos Unidad I: Introducción a las estructuras de datos 1.1 Tipos de datos abstractos (TDA) Los tipos de datos abstractos (TDA) encapsulan datos y funciones que trabajan con estos datos. Los datos no son visibles

Más detalles

Unidad I: Organización del Computador. Ing. Marglorie Colina

Unidad I: Organización del Computador. Ing. Marglorie Colina Unidad I: Organización del Computador Ing. Marglorie Colina Arquitectura del Computador Atributos de un sistema que son visibles a un programador (Conjunto de Instrucciones, Cantidad de bits para representar

Más detalles

Universidad Autónoma Metropolitana Unidad Azcapotzalco. División de Ciencias Básicas e Ingeniería. Licenciatura en Ingeniería en Computación

Universidad Autónoma Metropolitana Unidad Azcapotzalco. División de Ciencias Básicas e Ingeniería. Licenciatura en Ingeniería en Computación Universidad Autónoma Metropolitana Unidad Azcapotzalco División de Ciencias Básicas e Ingeniería Licenciatura en Ingeniería en Computación Propuesta de Proyecto Terminal Clasificación de servicios web

Más detalles

Estructuras en LabVIEW.

Estructuras en LabVIEW. Estructuras en LabVIEW. Sumario: 1. Ejecución según el flujo de datos. 2. Estructuras básicas disponibles en LabVIEW. a) Estructura Sequence. b) Estructura Case. c) Estructura For Loop. d) Estructura While

Más detalles

Compiladores y Lenguajes de Programación. Maria de Guadalupe Cota Ortiz

Compiladores y Lenguajes de Programación. Maria de Guadalupe Cota Ortiz Compiladores y Lenguajes de Programación Maria de Guadalupe Cota Ortiz Organizaciones que rigen las normas para estandarización de Lenguajes de Programación IEEE (Instituto de Ingenieros Eléctricos y Electrónicos)

Más detalles

Operaciones básicas con hojas de cálculo

Operaciones básicas con hojas de cálculo Operaciones básicas con hojas de cálculo Insertar hojas de cálculo. Para insertar rápidamente una hoja de cálculo nueva al final de las hojas de cálculo existentes, haga clic en la ficha Insertar hoja

Más detalles

TIPOS DE SOFTWARE. A grandes rasgos, se puede decir que existen tres tipos de software:

TIPOS DE SOFTWARE. A grandes rasgos, se puede decir que existen tres tipos de software: SOFTWARE Software es un término informático que hace referencia a un programa o conjunto de programas de cómputo que incluye datos, procedimientos y pautas que permiten realizar distintas tareas en un

Más detalles

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

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

Más detalles

Computación I Curso 2016 Facultad de Ingeniería Universidad de la República

Computación I Curso 2016 Facultad de Ingeniería Universidad de la República Computación I Curso 2016 Facultad de Ingeniería Universidad de la República Objetivos de la programación Exactitud en la realización de la tarea Tiene que satisfacer la especificación exactamente. Simplicidad.

Más detalles

Introducción a compiladores. Universidad Autónoma de Aguascalientes Prof. Eduardo Serna-Pérez Correo-e: eduardo.serna@gmail.com

Introducción a compiladores. Universidad Autónoma de Aguascalientes Prof. Eduardo Serna-Pérez Correo-e: eduardo.serna@gmail.com Introducción a compiladores Universidad Autónoma de Aguascalientes Prof. Eduardo Serna-Pérez Correo-e: eduardo.serna@gmail.com Introducción a compiladores Definición de compilador Historia de los compiladores

Más detalles

TEMA 2 Introducción a C# ANÁLISIS Y DESARROLLO DE APLICACIONES INFORMÁTICAS Curso 2010/2011

TEMA 2 Introducción a C# ANÁLISIS Y DESARROLLO DE APLICACIONES INFORMÁTICAS Curso 2010/2011 TEMA 2 Introducción a C# ANÁLISIS Y DESARROLLO DE APLICACIONES INFORMÁTICAS Curso Origen Nuevo lenguaje de propósito general de Microsoft para la plataforma.net Es el único que ha sido diseñado específicamente.net

Más detalles

Laboratorio de Herramientas Computacionales

Laboratorio de Herramientas Computacionales Laboratorio de Herramientas Computacionales M.C. Sergio Jhovanne Domínguez González 2014/2015 SS 2 Índice general 1. Introducción y conceptos de computación. 7 1.1. Componentes físicos de la computadora

Más detalles

METACOMPILADOR DIDÁCTICO GENERADOR DE CÓDIGO JAVA

METACOMPILADOR DIDÁCTICO GENERADOR DE CÓDIGO JAVA METACOMPILADOR DIDÁCTICO GENERADOR DE CÓDIGO JAVA Erick Leonel Rico Preciado 1, Ana Cristina Bueno Campos 1, José Gerardo Carpio Flores 2, Ruth Sáez de Nanclares Rodríguez 2, Martha Alicia Rocha Sánchez

Más detalles

2.5.1. Procesamiento de documentos XML.

2.5.1. Procesamiento de documentos XML. 2.5.1. Procesamiento de documentos XML. Un analizador o parser XML es una herramienta encargada de leer documentos XML [17], poder acceder a sus elementos y comprobar si el documento es sintácticamente

Más detalles

Procesadores de Lenguaje

Procesadores de Lenguaje Procesadores de Lenguaje Generación de código intermedio Cris%na Tirnauca Domingo Gómez Pérez DPTO. DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN Este tema se publica bajo Licencia: CreaIve Commons BY NC SA

Más detalles

C1 INTRODUCCIÓN AL LENGUAJE C. Fundamentos de Informática Departamento de Ingeniería de Sistemas y Automática. EII. Universidad de Valladolid

C1 INTRODUCCIÓN AL LENGUAJE C. Fundamentos de Informática Departamento de Ingeniería de Sistemas y Automática. EII. Universidad de Valladolid C1 INTRODUCCIÓN AL LENGUAJE C Fundamentos de Informática Departamento de Ingeniería de Sistemas y Automática. EII. Universidad de Valladolid Índice 1. Lenguajes de Programación 1. Definición. 2. Niveles

Más detalles

Enteros. Son los números que no contienen componentes fraccionarios y, por tanto, no contienen punto decimal.

Enteros. Son los números que no contienen componentes fraccionarios y, por tanto, no contienen punto decimal. LENGUAJE DE PROGRAMACIÓN TURBO PASCAL El lenguaje de programación de alto nivel Pascal fue diseñado el 1968 por Niklaus Wirth con una finalidad eminentemente pedagógica El 1983, el Pascal fue estandarizado

Más detalles

LENGUAJES JÓVENES PROGRAMADORES

LENGUAJES JÓVENES PROGRAMADORES LENGUAJES JÓVENES PROGRAMADORES SCRATCH Qué es Scratch? Es un lenguaje de programación creado por el MIT (Instituto Tecnológico de Massachusetts, EE.UU.) y diseñado para el aprendizaje de la programación.

Más detalles

Universidad Centroccidental Lisandro Alvarado. Decanato de Ciencias y Tecnología Departamento de Sistemas

Universidad Centroccidental Lisandro Alvarado. Decanato de Ciencias y Tecnología Departamento de Sistemas Universidad Centroccidental Lisandro Alvarado Decanato de Ciencias y Tecnología Departamento de Sistemas PROGRAMA INSTRUCCIONAL PROGRAMA: ANALISIS DE SISTEMAS DEPARTAMENTO: SISTEMAS ASIGNATURA: INTRODUCCIÓN

Más detalles

Objetos de aprendizaje: Computadora

Objetos de aprendizaje: Computadora MOMENTO I. BLOQUE 1. Opera las funciones básicas del sistema operativo y garantiza la seguridad de la información Objetos de aprendizaje: Computadora Lectura 1: La Computadora La computadora es una máquina

Más detalles

Base de Datos Oracle 10g: Programación con PL/SQL Código: D Duración: 5 días (40 horas)

Base de Datos Oracle 10g: Programación con PL/SQL Código: D Duración: 5 días (40 horas) Base de Datos Oracle 10g: Programación con PL/SQL Código: D17214 - Duración: 5 días (40 horas) Lo que aprenderá Esta clase es aplicable para los usuarios de Oracle8i, Oracle9i y Oracle Database 10g. Este

Más detalles

Diagramas De Casos De Uso

Diagramas De Casos De Uso Estáticos Diagramas De Casos De Uso Los diagramas de casos de uso documentan el comportamiento de un sistema desde el punto de vista del usuario.. Por lo tanto los casos de uso determinan los requisitos

Más detalles

Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales

Informá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 detalles

Conceptos básicos sobre gramáticas

Conceptos básicos sobre gramáticas Procesamiento de Lenguajes (PL) Curso 2014/2015 Conceptos básicos sobre gramáticas Gramáticas y lenguajes Gramáticas Dado un alfabeto Σ, un lenguaje es un conjunto (finito o infinito) de cadenas de símbolos

Más detalles

Curso de Programación en C. Licenciatura, FCQeI. APUNTADORES.

Curso de Programación en C. Licenciatura, FCQeI. APUNTADORES. APUNTADORES. La memoria de una máquina esta ordenada en forma de celdas numeradas consecutivamente y que se pueden manipular individualmente o en grupos contiguos. La siguiente figura muestra una representación

Más detalles

Conceptos y definiciones básicos en computación

Conceptos y definiciones básicos en computación UNIVERSIDAD MICHOACANA DE SAN NICOLÁS DE HIDALGO FACULTAD DE INGENIERIA ELECTRICA Laboratorio de Herramientas Computacionales Conceptos y definiciones básicos en computación M.I. Rosalía Mora Lab. Juárez

Más detalles

Programación. Test Autoevaluación Tema 3

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.

Más detalles

REPRESENTACIÓN DE DATOS

REPRESENTACIÓN DE DATOS REPRESENTACIÓN DE DATOS Tipos de datos primitivos Tipos de Datos Estructurados TIPOS DE DATOS SIMPLES O PRIMITIVOS Dato Longitud Rango 2 TIPOS DE DATOS SIMPLES O PRIMITIVOS Surgen de la necesidad de tener

Más detalles

METODOLOGÍAS PARA EL DESARROLLO DE SISTEMAS

METODOLOGÍAS PARA EL DESARROLLO DE SISTEMAS !387" APÉNDICE A, APARTADO 1 METODOLOGÍAS PARA EL DESARROLLO DE SISTEMAS DOCUMENTACIÓN 1. La necesidad de los diagramas Los diagramas o representaciones gráficas representan una parte fundamental en el

Más detalles

Tema: Análisis Sintáctico

Tema: Análisis Sintáctico Compiladores. Guía 3 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Análisis Sintáctico Contenido En esta guía se abordarán los conceptos pertenecientes al componente de análisis

Más detalles

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos

$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,

Más detalles

OPTIMIZACIÓN DE CÓDIGO

OPTIMIZACIÓN DE CÓDIGO OPTIMIZACIÓN DE CÓDIGO INTRODUCCION La finalidad de la optimización de código es producir un código objeto lo más eficiente posible. En algunos casos también se realiza una optimización del código intermedio.

Más detalles

Estructuras de Datos Declaraciones Tipos de Datos

Estructuras de Datos Declaraciones Tipos de Datos Departamento de Informática Universidad Técnica Federico Santa María Estructuras de Datos Declaraciones Tipos de Datos Temas: 2-3-4 IWI-131, paralelo 01 Profesor: Teddy Alfaro O. Lenguaje de Programación

Más detalles

ASIGNATURA: ESTRUCTURA DE DATOS II

ASIGNATURA: ESTRUCTURA DE DATOS II ASIGNATURA: ESTRUCTURA DE DATOS II Cód: 31-206 Régimen cuatrimestral Horas reloj semanales: 4 Horas teóricas: 15 Horas prácticas: 45 Horas totales: 60 Carrera: Sistemas 2016 FUNDAMENTOS: Un tipo de dato

Más detalles

Programación Básica Estructuras de Datos y Funciones en C

Programación Básica Estructuras de Datos y Funciones en C Arturo Vega González a.vega@ugto.mx Division de Ciencias e Ingenierías Universidad de Guanajuato Campus León Sesión 8 Universidad de Guanajuato, DCI, Campus León 1 / 33 Contenido 1 Estructuras de Datos

Más detalles

CAPITULO III CONTROLADORES

CAPITULO III CONTROLADORES CAPITULO III CONTROLADORES 3.1 Controladores El controlador es el segundo elemento en un sistema de control automático, éste toma una señal de entrada y la compara con un valor establecido para obtener

Más detalles

ÁRBOLES DE SINTAXIS. Los nodos no terminales (nodos interiores) están rotulados por los símbolos no terminales.

ÁRBOLES DE SINTAXIS. Los nodos no terminales (nodos interiores) están rotulados por los símbolos no terminales. ÁRBOLES DE SINTAXIS ÁRBOL grafo dirigido acíclico. Los nodos no terminales (nodos interiores) están rotulados por los símbolos no terminales. Los nodos terminales (nodos hojas) están rotulados por los

Más detalles

Programación Avanzada

Programación Avanzada Programación Avanzada Instructivo de Compilación 1 1 Índice 1 ÍNDICE... 2 2 INTRODUCCIÓN... 3 3 HERRAMIENTAS... 3 3.1 SINTAXIS DE LOS COMANDOS GCC Y G++... 3 3.2 OTRAS HERRAMIENTAS:... 4 3.3 EJEMPLOS:...

Más detalles

PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 4

PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 4 PROCESADORES DE LENGUAJES I PRÁCTICA DE LABORATORIO 4 En esta práctica trabajaremos con ANTLR a nivel semántico utilizando gramáticas con atributos. ANTLR permite implementar con facilidad los dos modelos

Más detalles

Unidad III: Lenguaje de presentación

Unidad III: Lenguaje de presentación Unidad III: Lenguaje de presentación 3.1 Introducción Un lenguaje de presentación define un conjunto de etiquetas y atributos válidos y que ofrecen un significado visual para cada elemento del lenguaje,

Más detalles

Pruebas de escritorio

Pruebas de escritorio Pruebas de escritorio Es un proceso que consiste en hacer seguimiento a un algoritmo recorriendo sus líneas simulando el funcionamiento del procesador del computador. Ejemplo: Realizar un algoritmo que

Más detalles

Expresiones y sentencias

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

Más detalles

1.1 Tipos de Datos Primitivos. 1.2 Tipos de datos estructurados. 1.3 Definición de estructura de datos

1.1 Tipos de Datos Primitivos. 1.2 Tipos de datos estructurados. 1.3 Definición de estructura de datos 1.1 Tipos de Datos Primitivos 1.2 Tipos de datos estructurados 1.2.1 Arreglos unidimensionales, bidimensionales y cadenas de caracteres 1.2.2 Registros o Estructuras (unión y estructura) 1.3 Definición

Más detalles

La última versión disponible cuando se redactó este manual era la 5 Beta (versión ), y sobre ella versa este manual.

La última versión disponible cuando se redactó este manual era la 5 Beta (versión ), y sobre ella versa este manual. Manual de Dev-C++ 4.9.9.2 Página 1 de 11 Introducción Dev-C++ es un IDE (entorno de desarrollo integrado) que facilita herramientas para la creación y depuración de programas en C y en C++. Además, la

Más detalles

UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERIA ESCUELA DE CIENCIAS Y SISTEMAS

UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERIA ESCUELA DE CIENCIAS Y SISTEMAS UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERIA ESCUELA DE CIENCIAS Y SISTEMAS PROGRAMA DEL CURSO DE INTRODUCCION A LA PROGRAMACION DE COMPUTACION 2 CODIGO: 771 CREDITOS: 5 ESCUELA: Ciencias

Más detalles

Principios de Computadoras II

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

Más detalles

Contenido. Capítulo 1. Teoría de conjuntos. 1. Capítulo 2. Lenguaje. 39. Capítulo 3. Lenguajes formales. 55

Contenido. Capítulo 1. Teoría de conjuntos. 1. Capítulo 2. Lenguaje. 39. Capítulo 3. Lenguajes formales. 55 Contenido Capítulo 1. Teoría de conjuntos. 1 1.1 Conjuntos.... 3 1.1.1 Definiciones básicas.... 3 1.1.2 Operaciones sobre conjuntos.... 6 1.1.3 Diagrama de Venn.... 7 1.1.4 Álgebra de conjuntos.... 7 1.2

Más detalles

REDES DE DATOS Modelo OSI. Angélica Flórez Abril, MSc.

REDES DE DATOS Modelo OSI. Angélica Flórez Abril, MSc. REDES DE DATOS Modelo OSI Angélica Flórez Abril, MSc. Jerarquía de protocolos Organización en capas o niveles. El número de capas y sus funciones difieren de red a red. Cada capa ofrece servicios a las

Más detalles

INSTITUCIÓN EDUCATIVA SAN CRISTÓBAL

INSTITUCIÓN EDUCATIVA SAN CRISTÓBAL INSTITUCIÓN EDUCATIVA SAN CRISTÓBAL MEDIA TÉCNICA EN PROGRAMACIÓN DE SOFTWARE TEMA: LOS LENGUAJES DE PROGRAMACIÓN Profesora: Beatriz Elena Herrera Legarda Qué es una computadora? Computadora electrónica

Más detalles

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

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación. Java Avanzado. Guía 1 Java Avanzado Facultad de Ingeniería. Escuela de computación. Java Avanzado. Guía 2 Introducción Este manual ha sido elaborado para orientar al estudiante de Java Avanzado en el desarrollo

Más detalles

PROGRAMA JAVA SE (Standard Edition) MODALIDAD ONLINE

PROGRAMA JAVA SE (Standard Edition) MODALIDAD ONLINE PROGRAMA JAVA SE (Standard Edition) MODALIDAD ONLINE JAVA SE (Standard Edition): El curso proporciona la base que necesita cualquier programador de Java, tanto en cuanto a las peculiaridades de la tecnología

Más detalles

2. Codificar de forma sistemática la secuencia de instrucciones en un lenguaje.

2. Codificar de forma sistemática la secuencia de instrucciones en un lenguaje. Modulo 1. Introducción a los lenguajes de programación La solución de problemas mediante en uso de un computador nos lleva a desarrollar programas o aplicaciones, la construcción de estos programas debe

Más detalles

Expresiones y sentencias

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 C, todas las sentencias

Más detalles

Unidad V Análisis Semántico. M.C. Juan Carlos Olivares Rojas

Unidad V Análisis Semántico. M.C. Juan Carlos Olivares Rojas Unidad V Análisis Semántico M.C. Juan Carlos Olivares Rojas Agenda 5.1 Analizador semántico 5.2 Verificación de tipos en expresiones. 5.3 Conversión de tipos. 5.4 Acciones agregadas en un analizador sintáctico

Más detalles

Las optimizaciones pueden realizarse de diferentes formas. Las optimizaciones se realizan en base al alcance ofrecido por el compilador.

Las optimizaciones pueden realizarse de diferentes formas. Las optimizaciones se realizan en base al alcance ofrecido por el compilador. Unidad III: Optimización Las optimizaciones pueden realizarse de diferentes formas. Las optimizaciones se realizan en base al alcance ofrecido por el compilador. La optimización va a depender del lenguaje

Más detalles

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo TEMA 2: CONCEPTOS BÁSICOS DE ALGORÍTMICA 1. Definición de Algoritmo 1.1. Propiedades de los Algoritmos 2. Qué es un Programa? 2.1. Cómo se construye un Programa 3. Definición y uso de herramientas para

Más detalles

TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES TRABAJO DE PRÁCTICAS. Convocatoria de junio de 2013

TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES TRABAJO DE PRÁCTICAS. Convocatoria de junio de 2013 TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES Ingeniería Técnica en Informática de Sistemas Segundo curso Departamento de Informática y Análisis Numérico Escuela Politécnica Superior Universidad de Córdoba

Más detalles

Escribir programas a partir de un diagrama de flujo

Escribir programas a partir de un diagrama de flujo Escribir programas a partir de un diagrama de flujo por Iván Cruz En esta lectura se revisará una estrategia específica para lograr implementar un programa computacional a partir de un diagrama de flujo,

Más detalles

Lenguajes y Compiladores Análisis Sintáctico Parte I. Teoría Lenguajes 1

Lenguajes y Compiladores Análisis Sintáctico Parte I. Teoría Lenguajes 1 Facultad de Ingeniería de Sistemas Lenguajes y Compiladores Análisis Sintáctico Parte I 1 Introducción El analizador sintáctico recibe una secuencia de tokens y decide si la secuencia está correcta o no.

Más detalles

Fundamentos de Programación 2017-I

Fundamentos de Programación 2017-I Fundamentos de Programación 2017-I Fundamentos para la construcción de código a partir del algoritmo Objetivo: El alumno construirá programas utilizando el lenguaje de programación C a través de un análisis

Más detalles

Lenguajes de Programación. Juan Zamora O. Semestre II Nombres, Ambitos y Ligados

Lenguajes de Programación. Juan Zamora O. Semestre II Nombres, Ambitos y Ligados Lenguajes de Programación Nombres, Ambitos y Ligados Juan Zamora O. Semestre II - 2013 Nombres, Ambitos y Ligados Aspectos semánticos fundamentales de las variables. Conceptos a revisar: Abstracción Nombres

Más detalles