miércoles, 1 de junio de 2016

Clase 1 - Inicio



UNIVERSIDAD CAPITAN GENERAL GERARDO
BARRIOS


Estudiante:
Fidel Ángel Sandoval Bran.

Catedrática:
IGN. Marvin Osmaro Parada. 

Facultad:
Ciencia & Tecnología. 
       
Carrera:
Ingeniería En Sistemas & Redes Informáticas.

Cátedra:

Compiladores e interpretes.


Compiladores e interpretes

Contenido:
  • Inicio
  • Presentación de programa
  • Introduccióng

Normativa en el aula:
  • GUARDAR SILENCIO.
  • MANTENER EL CELULAR EN VIBRADOR.
  • NO USAR GORRA DENTRO DEL SALÓN DE CLASES
  • NO SALIR Y ENTRAR INNECESARIAMENTE DEL AULA.
  • PEDIR LA PALABRA PARA INTERVENIR EN LA CLASE.
  • RESPETAR LAS OPINIONES DE LOS DEMÁS.
  • PUNTUALIDAD.
  • OTRAS NORMAS QUE SERÁN INCLUIDAS EN EL TRANSCURSO DEL CICLO.



Acerca de…

ASIGNATURA:
COMPILADORES E INTERPRETES
DOCENTE TITULAR:
ING. MARVIN OSMARO PARADA
GRUPO:
INGENIERIA EN SISTEMAS Y
REDES INFORMATICAS CICLO I - 2016
HORARIO: MARTES Y JUEVES.
HORA: 10.40 – 12.40 AULA: Lab. Computo y 3

DESCRIPCIÒN DE LA ASIGNATURA
  • La cátedra de Compiladores e Intérpretes presenta una introducción al software cuya función única es compilar programas fuentes en un determinado lenguaje, y producir programas ejecutables, la asignatura cubre los fundamentos conceptuales, el principio de funcionamiento, la estructura básica; así también presenta un estudio de aspectos, léxicos, sintácticos y semánticos propios de un compilador.
  • Al final se realiza un proyecto que será el producto de la asistencia técnica proporcionada al alumno y su ingenio en el diseño de compiladores e intérpretes.
OBJETIVO DEL AREA DE COMPETENCIA 
Aplicar técnicas y procedimientos para traducir código fuente en código intermedio y final. 
COMPETENCIAS ESPERADAS DE LA  ASIGNATURA
  • Propone modelos en versión académica de los módulos internos de un compilador, incluyendo la conversión de código fuente a código intermedio.
  • Conoce la teoría relacionada con los traductores, compiladores e intérpretes.
  • Conoce  la estructura básica de un compilador
ACERCA DEL PROGRAMA DE ESTUDIO…….

Unidad 01: Introducción a Los Traductores
¨  1.1 Conceptos Generales
¨  1.2 Clasificación de los Traductores
¨  1.3 Metalenguajes
¨  1.4 Estructura de un Compilador
Unidad 02: Análisis Léxico
¨  2.1 Definición – Implementación
¨  2.2 Conceptos de Token, patrones, lexema y atributo
¨  2.3 Especificaciones de un Token. Expresiones regulares
¨  2.4 El Autómata Finito
¨  2.5 La Tabla de Transición
¨  2.6 Tratamiento de Errores
¨  2.7 Tabla de Símbolos
Unidad 03: Análisis Sintáctico
¨  3.1 Gramáticas Libres de Contexto
¨  3.2 Derivación. Ambigüedad
¨  3.3 Analizador Sintáctico. Tipos
¨  3.4 Analizador Sintáctico descendente determinista LL(1)
¨  3.5 Comprobación si una gramática es LL(1). Iniciales y seguidores autómatas de pilas
¨  3.6 Tabla de Análisis
¨  3.7 Tratamiento de errores.
Unidad 04 Análisis Semántico
¨  4.1 Introducción
¨  4.2 Especificación formal
¨  4.3 Fases en el Análisis Semántico
¨  4.4 Determinación de los tipos de Comprobaciones
Semánticas a Realizar
¨  4.5 Implementación de acciones Semánticas
Unidad 05 Lenguajes Intermedios y Generación de Código
¨  5.1 Lenguajes Intermedios, Definición y Tipos
¨  5.2 Optimización Independiente de la Máquina
¨  5.3 Generador de Código Intermedio y Final
¨  5.4 Optimización Dependiente de la Máquina Unidad 06 Proyecto
¨  6.1 Proceso para Diseñar un Lenguaje de Programación
¨  6.2 Implementación del Analizador Léxico
¨  6.3 Implementación del Analizador Sintáctico
¨  6.4 Implementación del Analizador Semántico
¨  6.5 Obtención de código Intermedio

Sistemas de Evaluación

ACTI.: Actividad.
POND.: Ponderación de cada actividad. 
P. C.: Ponderación del cómputo. ASIST.: Asistencia. 
PRAC.: Practica
TAR. : Tarea del Laboratorio.
E. C.: Examen Corto del Laboratorio



Introducción:
TRADUCTORES 

Existen dos tipos principales de traductores de los lenguajes de programación de alto nivel:
  • Compiladores
  • Interpretes
Ocupan una posición intermedia entre los lenguajes naturales humanos y los precisos lenguajes de máquina.
Gracias a la progresiva complejidad de los lenguajes traductores que permiten convertir
las instrucciones de un lenguaje de programación al lenguaje de máquina, la
programación puede usar lenguajes de computación que se parecen cada vez más a los
lenguajes naturales.
  
A los lenguajes máquina se les conoce como lenguajes de primera generación.
Los ensambladores son los lenguajes de segunda generación.
Los simbólicos de alto nivel de tipo procedural se les denomina de tercera generación y a
los relacionales se considera que son de cuarta generación.

A la tercera generación pertenecen lenguajes conocidos como el FORTRAN, COBOL,
RPG, BASIC, PL1, SIMULA, ALGOL, PASCAL, ADA, C, LISP, PROGOL.

SQL es un lenguaje convertido en estándar mundial como lenguaje de cuarta generación,
una serie de lenguajes orientados a objetos. Entre estos destaca el Visual Basic de
Microsoft. Además hay que prestar una seria atención al lenguaje de programación Java,
desarrollado por SUN

Compilador: DEFINICIÓN

Proceso de traducción que convierte un programa fuente escrito en un lenguaje
de alto nivel a un programa objeto en código máquina y listo por tanto para
ejecutarse en el ordenador, con poca o ninguna preparación adicional.

Un compilador         analiza el programa y lo traduce al idioma "maquina". La      acción fundamental de los compiladores es equivalente a la de un traductor humano , que toma nota de lo que esta escuchando y reproduce por escrito en otra lengua.

INTERPRETES
Analiza el programa fuente y lo ejecuta directamente, Ejemplo del traductor humano, éste sería un traductor humano que conforme a lo que está escuchando va ejecutando, sin generar ningún escrito.


Conceptos Relacionados

Para ser buen programador
Saber como se obtiene un ejecutable permite saber más sobre corrección y eficiencia

Para entender más sobre lenguajes
Tipificación: estática, dinámica, fuerte, polimorfismo, conversiones, sobrecarga de
operadores...
Estructura de bloques, ámbitos
Paso de parámetros
Gestión de memoria, punteros

La teoría es imprescindible
Antes de la aplicación de teoría de autómatas y lenguajes formales, programación, etc. Los
compiladores eran muy malos

Aplicar la teoría y herramientas a otros campos:
Intérpretes de comandos y consultas
Lenguajes de simulación (GPSS)
Intérpretes Gráficos (PS, GIF, JPEG)

Compilador; Definiciones I
Ensamblador:
Compilador sencillo, el lenguaje fuente tiene una estructura simple que permite una
traducción de una sentencia fuente a una instrucción en código máquina.
Compilador cruzado:
Compilador que traduce un lenguaje fuente a objeto, el objeto es para un ordenador
distinto del que compila

Esquema de Compilación

Agrupación lógica de un compilador
Etapa Inicial
Fases, o parte de fases que dependen del lenguaje fuente y que son independientes de la
máquina
Análisis léxico, sintáctico, semántico y generación de código intermedio, manejo de
errores de cada parte
Etapa Final
Fases que depende de la máquina, depende del lenguaje intermedio
Optimización de código, generación de código, operaciones con la tabla de símbolos.



I.     
HOJA DE DATOS GENERALES



Ciclo Académico
:I-2016
Carrera
: Ingeniería de Sistemas y Redes
Asignatura
: Compiladores e Interpretes
N° de orden en Pensum
: 28
Código 
: 83
Número de Horas por Ciclo
: 80 Horas
Duración del Ciclo en Semanas
: 20 Semanas
Unidades Valorativas
: 4 U.V.
Identificación del Ciclo Académico
: VII
Pre – Requisito
: Programación Computacional IV
Pre – Requisito Para
Horas Teóricas Semanales 
: 2 Horas
Horas Prácticas Semanales
: 2 Horas
Duración de Horas - Clase 
: 50 Minutos

HORARIO
MARTES      10:40 a 12:20 PM     Lab. Computo
JUEVES       10:40 a 12:20 PM     3


I.      PERSONAL ACADÉMICO RESPONSABLE
         
Decano /a: Licda. Azucena Edelmira Guevara

Vice-Decano /a: Lic. Salvador Ernesto Manzanares


Profesor Titular: Ing. Marvin Osmaro Parada Benítez


II.     DESCRIPCION DE LA ASIGNATURA

La cátedra de Compiladores e Intérpretes presenta una introducción al software cuya
función única es compilar programas fuentes en un determinado lenguaje, y producir
programas ejecutables, la asignatura cubre los fundamentos conceptuales, el principio de
funcionamiento, la estructura básica interna; así también presenta un estudio de
aspectos, léxicos, sintácticos y semánticos propios de un compilador. Al final se realiza
un proyecto que será el producto de la asistencia técnica proporcionada al alumno y  su
ingenio en el diseño de compiladores e intérpretes. 

I.     
ELEMENTOS DE COMPETENCIAS GENERALES

Ø  Análisis y síntesis. 
Ø  Planificar y Organizar 
Ø  Resolución de problemas  y Toma de Decisiones  Ø Pensamiento creativo e innovador.  
Ø  Pensamiento Critico  Ø Trabajo en equipo. 
Ø  Aprender – aprender.   
Ø  Responsabilidad social y Compromiso ciudadano. 
Ø  Comunicación Lingüística  Ø Compromiso Ético. 
Ø  Habilidad en el uso de las TIC´s.

II.    
AREA DE COMPETENCIA ESPECIFICA

Aplicar técnicas y procedimientos para traducir código fuente en código intermedio y final.

III.    OBJETIVO DEL AREA DE COMPETENCIA

El desarrollo tecnológico de las sociedades, implica diferentes escenarios, desde el nivel cognoscitivo teórico - pragmático, pasando por la capacidad técnica de implementar, integrar y operar, hasta ascender a los niveles más abstractos y teóricos como es la construcción de recursos especializados (compiladores) que permiten desarrollar nuevas herramientas de tecnología (lenguaje de programación), que posteriormente serán utilizadas para automatizar el quehacer de las sociedades. Lograr que los estudiantes exploren este último escenario continúa siendo un reto insoslayable para la formación de profesionales en el área de tecnología. 

Es por esto que el objetivo del área de competencia de la asignatura, se basa principalmente en explora niveles abstractos y teóricos involucrados en la construcción de recursos especializados (compiladores), que posteriormente permitan desarrollar nuevas herramientas de tecnología (lenguaje de programación), orientadas a automatizar el quehacer de las sociedades.



IV.  
COMPETENCIAS ESPERADAS DE LA  ASIGNATURA

Ø  Propone modelos en versión académica de los módulos internos de un compilador, incluyendo la conversión de código fuente a código intermedio.
Ø  Conoce la teoría relacionada con los traductores, compiladores e intérpretes.
Ø  Conoce  la estructura básica de un compilador 
Ø  Explora modelos académicos de los diferentes módulos que conforman los compiladores. 
Ø  Interpreta modelos académicos de los módulos internos de un compilador.
Ø  Construye la base teórica de los analizadores léxicos, sintáctica y semántica.
Ø  Aplica técnicas y procedimientos para traducir código fuente en código intermedio.
Ø  Aplica técnicas de análisis léxico, sintáctico y semántico
Ø  Propone modelos elementales de los módulos de un compilador

V.   
CONTENIDO DE LA ASIGNATURA

Unidad 01:     Introducción a Los Traductores
1.1          Conceptos Generales
1.2          Clasificación de los Traductores
1.3          Metalenguajes
1.4          Estructura de un Compilador

Unidad 02:     Análisis Léxico
2.1          Definición – Implementación
2.2          Conceptos de Token, patrones, lexema y atributo
2.3          Especificaciones de un Token. Expresiones regulares 
2.4          El Autómata Finito
2.5          La Tabla de Transición
2.6          Tratamiento de Errores
2.7          Tabla de Símbolos

Unidad 03:     Análisis Sintáctico
3.1          Gramáticas Libres de Contexto
3.2          Derivación. Ambigüedad
3.3          Analizador Sintáctico. Tipos
3.4          Analizador Sintáctico descendente determinista LL(1)
3.5          Comprobación si una gramática es LL(1). Iniciales y seguidores autómatas de pilas
3.6          Tabla de Análisis
3.7          Tratamiento de errores.

Unidad 04      Análisis Semántico
4.1          Introducción
4.2          Especificación formal
4.3          Fases en el Análisis Semántico
4.4          Determinación de los tipos de Comprobaciones Semánticas a Realizar
4.5          Implementación de acciones Semánticas

Unidad 05      Lenguajes Intermedios y Generación de Código
5.1          Lenguajes Intermedios, Definición y Tipos
5.2          Optimización Independiente de la Máquina
5.3          Generador de Código Intermedio y Final
5.4          Optimización Dependiente de la Máquina

Unidad 06      Proyecto
6.1          Proceso para Diseñar un Lenguaje de Programación
6.2          Implementación del Analizador Léxico
6.3          Implementación del Analizador Sintáctico
6.4          Implementación del Analizador Semántico
6.5          Obtención de código Intermedio



COMPETENCIAS ESPERADAS AL FINALIZAR LA ASIGNATURA
CONOCIMIENTOS 
HABILIDADES 
ACTITUDES 
VALORES
Identifica el funcionamiento de los  traductores
Aplica algoritmos especializados para el análisis léxico, sintáctico y semántico.
Se identifica como persona que desarrollará software y no solo utilizarlo a nivel de usuario. 
Persistencia
Ética
Responsable
Innovador
Análisis y síntesis. 
Planificar y Organizar  Pensamiento creativo, innovador y crítico.  
Trabajo en equipo. 
Responsabilidad social
Identifica el funcionamiento compiladores e intérpretes
Modifica los módulos de un compilador versión académica.
Se identifica como persona que desarrollará software y no solo utilizarlo a nivel de usuario.
CONOCIMIENTOS 
HABILIDADES 
ACTITUDES 
VALORES
Conoce los métodos aplicados para analizadores
léxicos, sintácticos y semánticos.
Propone modelos elementales de los módulos de un compilador.
Es capaz de comprender y hacer frente a los contenidos difíciles que incluye la asignatura.
y              Compromiso ciudadano. 
Buena comunicación

Domina las técnicas para generar código intermedio
Aplica las técnicas para convertir código fuente en código intermedio y final.
Visualiza el desarrollo de un proyecto de software y se considera capaz de su desarrollo.
Desarrolla prototipos de lenguajes compiladores.
Combina las etapas para el desarrollo de lenguajes intermedios.
Se visualiza como profesional que desarrolla software que será usado por otras personas.

I.     

PROPUESTA  METODOLÓGICA 

METODOS 
TECNICAS
METODOS PARA CLASES TEÓRICAS
Ø  Clases Expositivas
Ø  Método de preguntas
Ø  Lluvia de ideas
Ø  Demostración de ejemplos
METODOS PARA CLASES PRACTICAS
Ø  Guías de ejercicios
Ø  Resolución de casos prácticos que permitan adquirir conocimientos fundamentales de compiladores e intérpretes.
Ø  Aprendizaje basado en problemas Ø Hojas de cotejo
METODOS PARA TAREAS
Ø  Método de proyectos Ø Método de casos

Ø  Proporcionar a los estudiantes, metodologías y estrategias que les faciliten la comprensión y desarrollo de código fuente para su respectiva compilación. 
Ø  Resolución de casos prácticos que permitan adquirir conocimientos fundamentales para el desarrollo de un proyecto de lenguaje compilador.
Ø  Desarrollo de clases expositivas con apoyo audio y visual.
Ø  Clases demostrativas con ejemplos previamente desarrollados y su posterior aplicación por parte del estudiante.
Ø  Proporcionar a los estudiantes las técnicas y procedimientos que les faciliten la traducción del código fuente en código intermedio.
Ø  Realizar la gestión y administración del desarrollo de un proyecto de software.

I.     
PROPUESTAS DE EVALUACIÓN Y CRITERIOS DE DESEMPEÑO

La evaluación debe ser gradual y formativa, además de realizar evaluación sumativa que
permita determinar el grado de aprendizaje alcanzado. La propuesta de evaluación y
criterios de desempeño son los siguientes:

Propuesta de Evaluación: se realizaran un total de seis laboratorios y tres exámenes
parciales durante el ciclo. Cada cómputo incluye dos laboratorio y un parcial.  El
porcentaje para los laboratorios es de 30% y 40% para los parciales.

Además se tomará en cuenta para la evaluación los siguientes aspectos:

* Asistencia a clases.
*  Participación en clases cuando se aplique la metodología de preguntas y lluvia de ideas.
Capacidad de análisis para resolver ejercicios propuestos. 
* Entrega de tareas individuales y grupales.

Criterios de desempeño: 
  •        Interpretar y saber aplicar las etapas para desarrollar un lenguaje compilador.

* Resolución de ejercicios de las guías de práctica.
* Trabajo en equipo durante el proceso de creación de una guía final
sobre el proceso de creación de un lenguaje compilador según
requerimientos. 



No hay comentarios.:

Publicar un comentario