Documentos de Académico
Documentos de Profesional
Documentos de Cultura
LABORATORIO SUMATIVO N° 1
GRUPO: William Abrego – 8-805-929
FECHA DE ENTREGA: lunes 18 de abril de 2022
Desarrollo
1. Una Expresión Regular: Es una secuencia de caracteres y símbolos que definen un conjunto de cadenas
y que son útiles para validar la entrada y asegurar que los datos estén en un formato específico.
Ejemplo: Consideremos el alfabeto simple constituido por sólo tres caracteres alfabéticos: Σ= {a, b, c).
También el conjunto de todas las cadenas en este alfabeto que contengan exactamente una b. Este
conjunto es generado por la expresión regular (a/c) *b(a/c) *.
Ejercicio: obtenga un AFD dado el siguiente lenguaje definido en el alfabeto Σ = {0, 1}. El conjunto de
cadenas que inician en “0”.
Conjunto de cadenas que inician en "0". AFD.
Ejercicio: Obtenga un AFND dado el siguiente lenguaje definido en el alfabeto Σ = {0, 1}. El conjunto
de cadenas que inician en 0.
Conjunto de cadenas que inician en "0". AFND.
Diseño de compiladores
3. Diagrama de Transición (DT): Es una herramienta de modelado que sirve para describir el
comportamiento requerido de los sistemas de tiempo real, al igual que la porción de la interfaz humana
que la mayoría de los sistemas en línea tiene, como ejemplo de estos sistemas se tienen el control de
procesos, sistemas de conmutación telefónica, sistemas de captura de datos de alta velocidad y sistemas
de control y mando militares.
El DT se usa para desarrollar un modelo esencial del sistema, es decir, un modelo de cómo se
comportaría el sistema si hubiera la tecnología perfecta (ideal).
Componentes del DT:
• Estados: Los estados representan los diferentes comportamientos del sistema que son
observables y que perduran en algún periodo de tiempo finito. Los estados se representan con un
rectángulo o con círculos.
• Cambios de Estados: Si un sistema solo tiene un estado se lo llama estático y no tiene sentido
estudiarlo. En cambio, se estudian los sistemas que cambian a través del tiempo. Se identifican
los estados inicial y final, entre otros intermedios. Puede haber más de un estado inicial y final.
Se representan con flechas.
• Condiciones: Una condición es un acontecimiento en el ambiente externo que el sistema es
capaz de detectar (señal, interrupción) y son las causantes de los cambios de estados.
• Acciones: Son las acciones que realiza el sistema cuando cambia de estado. Como parte del
cambio de estado, el sistema hará una o más acciones (producir una salida, llevar a cabo un
cálculo), las acciones son respuestas regresadas al ambiente externo para poder responder a algún
acontecimiento futuro.
4. Los traductores: Son programas que traducen los programas en código fuente, escritos en lenguajes de
alto nivel, a programas escritos en lenguaje máquina. Los traductores pueden ser de dos tipos:
compiladores e intérpretes.
Diseño de compiladores
Los lenguajes C y C++ son lenguales que utilizan un compilador. El trabajo del compilador y su
función es llevar el código fuente escrito en C/C++ a un programa escrito en lenguaje maquina.
Entrando en mas detalle, un programa en código fuente es compilado obteniendo un archivo
parcial (objeto) que tiene extensión obj. Luego el compilador invoca el “linker” que convierte al
archivo objeto en un ejecutabl con extensión exe; este ultimo archivo es un archivo en formato
binario y puede funcionar por sí solo.
Además, el compilador al realizar su tarea realiza tambien una comprobación de errores en el
programa; es decir, revisa que todo esté en orden. Por ejemplo variables y funciones bien
definidas, todo lo referente a cuestiones sintácticas, etc. Está fuera de su alcance que el algoritmo
utilizado en el problema funcione bien.
Diseño de compiladores
5. Los compiladores difieren de los interpretes en varios aspectos: Un programa que ha sido compilado
puede correr por sí solo, pues en el proceso de compilación se le transformó en otro lenguaje (lenguaje
máquina).
Un interprete traduce el programa cuando lo lee, convirtiendo el código del programa directamente en
acciones. La ventaja del intérprete es que dado cualquier programa se puede interpretar en cualquier
plataforma (sistema operativo). En cambio, el archivo generado por el compilador solo funciona en la
plataforma donde se le ha creado.
Sin embargo, hablando de la velocidad de ejecución, un archivo compilado es de 10 a 20 veces más
rápido que un archivo interpretado.
• Análisis semántico: en esta fase se busca establecer que el código fuente cumpla con la
semántica solicitada por el compilador, es decir que el código este correctamente escrito para
poder ser interpretado.
Síntesis: Consiste en generar el código objeto equivalente al programa fuente. Sólo se genera código
objeto cuando el programa fuente está libre de errores de análisis, lo cual no quiere decir que el
programa se ejecute correctamente, ya que un programa puede tener errores de concepto o expresiones
mal calculadas.
• · Generación de código intermedio: este código se genera con el fin de mejorar el uso de la
memoria con el fin de optimizar código fuente. ·
• Optimización de código: el objeto de esta fase es mejorar el código para que sea más rápido
ejecutarlo. ·
• Generación de código: Aquí se crea el código final de salida que va a ser interpretado por la
máquina.
7. Clasificación de los compiladores: En un sentido más amplio, un compilador traduce las instrucciones
que el usuario hace (en alto nivel) a instrucciones que la computadora pueda interpretar y ejecutar
(código binario). Por lo tanto, estas instrucciones son pulsaciones electrónicas ejecutables y para cada
lenguaje de programación se requiere un compilador separado.
Diseño de compiladores
8.