2. Información General
ENCUENTROS POR
SEMANA
3
TORAL DE
SEMANAS
14
INICIO DE CLASES 13/Abril/2015 14 Semanas
FIN DE CLASES 17/Julio/2015
Exámenes 21/07/2015-
31/07/2015
2 Semanas
Convocatorias I 11/08/2015-
14/08/2015
1 Semana
Convocatorias II 17/08/2015-
21/08/2015
1 Semana
3. Objetivo General
Aprender las bases teóricas para diseñar lenguajes de
programación de tipo procedural y dominar los conceptos
básicos que soportan los procesos de traducción de un
lenguaje fuente a un lenguaje destino.
Adquirir habilidades en el diseño de analizadores lexicales
y sintácticos con ayuda de generadores.
4. Objetivos Específicos
Conocer, ejercitar y aprender los conceptos básicos de la teoría de
lenguajes formales: conceptos de vocabulario y cadena, operaciones sobre
cadenas; concepto de lenguajes, operaciones sobre lenguajes y clasificación
de los lenguajes.
Aprender el concepto de Autómata Finito Determinista (AFD) y No
deterministas (AFN), principales características y propiedades de los
Autómatas Finitos y sus aplicaciones prácticas, fundamentalmente en el
desarrollo de dispositivos para el reconocimiento de los lenguajes
clasificados como regulares.
Aprender el concepto de Autómata de Pila Determinista y No Determinista,
así como sus principales propiedades, características y aplicación práctica,
sobre todo en el reconocimiento de lenguajes clasificados como libres del
contexto.
5. Objetivos Específicos
Aprender a definir el léxico, la sintaxis y la semántica de un lenguaje de
programación, así como también a construir y programar los dispositivos
capaces de reconocer si un programa cualquiera escrito en dicho lenguaje esta
correcto desde el punto de vista lexical, sintáctico y semántico.
Formar habilidades en el uso de programas generadores de analizadores
lexicales, analizadores sintácticos y conocer como se realiza la integración de los
mismos en la construcción de programas traductores y/o compiladores.
6. Unidades Temáticas
I • Introducción
II • Lenguajes y Gramáticas
III • Lenguajes Regulares
IV • Lenguajes Libres de Contexto
V • Análisis Sintáctico
VI • Máquina de Turing
7. Unidad I: Introducción
En esta unidad se expone la generalidad de la
asignatura, características de los lenguajes, se
introduce la noción de paradigma de programación y
su influencia en el estilo de programación, se
introduce el concepto de compilador e intérprete y
sus diferencias. Se recomienda hacer referencias a
los paradigmas de programación.
8. Unidad II: Lenguajes y Gramáticas
El contenido de esta unidad pretende que el estudiante aprenda los
conceptos de alfabeto, cadenas, como definir cadenas validad
dentro de un alfabeto, y las deferentes operaciones sobre cadenas,
la definición de un lenguaje desde el punto de vista de la teoría de la
computabilidad y sus diferentes operaciones, introducción a los
lenguajes regulares conceptos y definiciones, así como conceptos
básicos de gramática. Ejercitar en el uso de formación de palabras,
valides de las palabras, ejemplificar con lenguajes actuales y mostrar
algunos ejemplos prácticos.
9. Unidad III: Lenguajes Regulares
En esta unidad se aborda los Autómatas Finitos Determinista, en su definición
formal matemática, como máquina de estado finito, que representa un modelo
computacional para realizar procesamiento de entrada de datos y producir una
salida, se aborda las expresiones regulares y el AFD equivalente, algunos algoritmos
para programar AFD, y se realizan prácticas en Simuladores, se realizan ejercicios de
aplicación de autómatas a problemas reales. Se aborda la definición formal de
Autómata Finito No Determinista, su definición formal y como se aplica a la
resolución de problemas que no pueden ser abordados por los AFD, y como los AFD
y AFND se pueden expresar en la notación de Gramáticas, como un conjunto de
reglas de formación que definen cadenas de caracteres tanto en los lenguajes
formales o lenguajes naturales, sin entrar en los detalles del significado, solo se
estudia su forma. Se realizan ejercicios prácticos relacionados con los autómatas,
abordar con ejemplos, tanto académicos como prácticos el uso y aplicación de los
autómatas, y como nos ayudan al concepto de gramática.
10. Unidad IV: Lenguajes Libres de Contexto
En esta unidad se aborda el concepto de árbol de
derivación como una representación del análisis
realizado por las gramáticas en el reconocimiento de
una cadena, Se aborda los autómatas de pila, y
algunos modelos algoritmos que pueden ser
programados, para realizar análisis de gramáticas
básicas.
11. Unidad V: Análisis Sintáctico
En esta unidad se aborda el Análisis Sintácticos LR, conocidos
como Parser, como un tipo de analizador de gramáticas libre
de contexto, pertenecientes a la familia de analizadores
ascendentes, y como construir el árbol de Derivación,
utilizando las técnicas de análisis por desplazamiento
reducción, LR, LALR (K), además la manera de como se realiza
el tratamiento de errores a nivel básico. En esta unidad nos
apoyamos de los analizadores Lex y Yacc o sus versiones Open
Source Flex y Bison, en un ambiente de desarrollo Linux
preferiblemente, para mostrar la generación de analizadores
léxicos o escáner, y generadores sintácticos respectivamente.
14. Bibliografía
Textos Autor Año de Edición Título / ISBN
UNIDAD I – II
Básicos
Brooksh Ear, J. Glenn 1999 Teoría de la computación
UNIDAD III-IV
Dean Kelly 1998
Teoría de Autómatas y
Lenguajes Formales
UNIDAD IV- V
Complementario
Francisco Javier Ceballos 1997 Enciclopedia de Lenguaje C
UNIDAD V
Brian W. Kernighan 1995
El entorno de Programación
Unix
UNIDAD VI
John C. Martin 2004
Lenguajes formales y teoría
de la computación
22. Historia de la Computación
Un aspecto importante en el desarrollo de las
computadoras, es sin duda, su aplicación para resolver
problemas científicos y empresariales. Esta aplicación
hubiese resultado muy difícil son la utilización de
procedimientos que permitan resolver estos problemas
mediante una sucesión de pasos claros, concretos y
sencillos, es decir algoritmos. El avance de las matemáticas
permite la utilización de nuevas metodologías para la
representación y manejo de la información.
23. Tres caminos para la computación
1. Computación Teórica
◦ Autómatas, Funciones Recursivas…..etc
2. Ordenadores Digitales
◦ Nuevas Tecnologías, Nuevos Lenguajes……
3. Intentos de modelizar el cerebro biológico.
◦ Redes Neuronales, Conjunto y Lógica Difusa.
24. Reflexión
Estilo de Vida
En sociología, un estilo de vida es la manera en que vive una persona (o un
grupo de personas). Esto incluye la forma de las relaciones personales, del
consumo, de la hospitalidad y la forma de vestir. Una forma de vida típicamente
también refleja las actitudes, los valores o la visión del mundo de un individuo. El
término hace referencia a una combinación de unos factores claves intangibles o
tangibles. Los factores tangibles relacionan específicamente con las variables
demográficas, esto es un perfil demográfico individual mientras que los factores
intangibles tratan de los aspectos psicológicos de uno individuo como valores
personales, preferencias y actitud.