Está en la página 1de 15

DIRECCIÓN ACADÉMICA

Guía estructurada de evaluación


FO-205P11000-13
División: (1) Ingeniería en Sistemas Computacionales
Docente: (2) M.T.I Brian Antonio Mejía Díaz
Asignatura: (3) Lenguaje y Autómatas I
Nombre y número de
Zamudio Franco Luis Jesús 193107070 Grupo: (6) 352M
control: (5)

Evidencia de aprendizaje: (7) Investigación Documental


Criterios de evaluación:
CRITERIOS
SI NO OBSERVACIONES
DE EVALUACIÓN

 Contiene portada con las especificaciones (Nombre


del Docente, Nombre del Estudiante, # de control,
grupo y tema a investigar).

 Contiene introducción a 1 cuartilla.


 Contiene las tablas correspondientes a:
 Índice de Contenido
 Índice de Imágenes
Estructura del  Índice de Tablas
Documento Respectivamente y en caso de existir.
 Contiene desarrollo parafraseado y en ¾ de cuartilla
respectivamente.
 Contiene conclusión de acuerdo con las
características propias de hacerlo en inglés y con sus
propias palabras, de acuerdo con el nivel que presente
sin utilizar ninguna clase de traductor a ½ cuartilla.
 Referencias Bibliográficas (al menos 2 libros)

 Faltas de Ortografía.

 Márgenes Definidos 2.5 por lado.

 Interlineado a 1.5 y justificado.


Características del  Numeración de las hojas a partir del desarrollo.
Documento
 Utiliza los títulos de manera apropiada.
 Las referencias se encuentran en formato OXFORD o
en HARVARD-OXFORD.
 Entrega en tiempo y forma de acuerdo con las
indicaciones del docente.

Puntuación 1ª oportunidad 2ª oportunidad


Alcanzada (10)
División en Ingeniería en Sistemas Computacionales

Investigación documental

Asignatura:
Lenguajes y Automatas I

Elaborado por:
Zamudio Franco Luis Jesús
193107070
Docente:
M.T.I Brian Antonio Mejía Díaz

Grupo:
352-M

Tema:
INTRODUCCIÓN A LA TEORÍA DE LOS LENGUAJES FORMALES
Contenido
Introducción............................................................................................................................4
1.1 Alfabeto........................................................................................................................5
1.2 Cadenas.............................................................................................................................6
1.3 Lenguajes, tipos y herramientas........................................................................................7
1.3.1 Tipos de lenguajes..........................................................................................................8
1.3.2 Las Herramientas del lenguaje.......................................................................................8
1.4 Estructura de un traductor...............................................................................................10
1.5 Fases de un compilador...................................................................................................12
CONCLUSION.....................................................................................................................15
Introducción.

En el siguiente reporte de investigación vamos a tomar en cuenta los temas que nos marca
nuestra instrumentación didáctica respecto a la competencia uno. El tema de la competencia
es introducción a la teoría de los lenguajes formales.

La teoría de los lenguajes formales estudia unas entidades matemáticas abstractas


denominadas lenguajes que en ningún momento debemos confundir o equiparar con las
lenguas naturales. Sin embargo, como veremos, los lenguajes formales pueden, en
determinadas circunstancias, servirnos como modelos abstractos de determinadas
propiedades de las lenguas naturales, de ahí la importancia de conocer los fundamentos de
la teoría.

Con esta investigación se pretende presentar la contextualización histórica de la Teoría de


Autómatas y lenguajes formales, de manera en que cada uno de los subtemas sean lo más
precisos posibles y mayormente entendibles para el lector, para así presentar la normativa,
los contenidos y objetivos de la asignatura poniendo énfasis en las aplicaciones prácticas de
la materia que se va a estudiar.

Es importante mencionar que se identificaran cada uno de los temas. cada uno con la
mayor de características posibles para que así con ayuda de nuestro conocimiento y con la
retroalimentación que se dará durante este parcial sea cada vez más extenso y a la hora de
llegar al campo práctico, la teoría este bien captada.
1. INTRODUCCION A LA TEORIA DE LOS LENGUAJES FORMALES.

1.1 Alfabeto.
Leyendo sobre varios autores para comprender la definición de alfabeto puedo decir
claramente que Deán Kelly en su libro “Teoría de autómatas y lenguajes formales” nos dice
que un alfabeto “Es un conjunto no vacío y finito de símbolos” por otro lado, Jonh E.
Hpocroft, Rajeev Motwani y Jeffrey D. Ullman en su libro “Introducción a la teoría de
autómatas, Lenguajes y Computación” nos definen que un alfabeto es un conjunto finito no
vacío de símbolos, sin embargo Otros autores como Pedro García, Tomás Pérez, José Ruíz,
Encarna Segarra, José M. Sempere y M. Vázquez de Parga nos dicen en su libro “Teoría de
autómatas y lenguajes formales” que un alfabeto es cualquier conjunto finito y no vacío de
elementos que denominan símbolos y los denotaran con el símbolo Ʃ. Con otro autor como
John Martin en su libro “Lenguajes formales y teoría de la computación” Por tanto puedo
concluir que un alfabeto es un conjunto no vacío y finito de símbolos denotado por el
símbolo Ʃ.

Como definición personal de acuerdo a las definiciones ya consultadas tanto de varios sitios
y de varios autores puedo decir que el alfabeto o abecedario como le solemos llamar es un
conjunto de letras, con un determinado orden. podríamos precisamente decir que el alfabeto
es un conjunto de letras (caracteres o grafemas) de un sistema de escritura, cada una
representa aproximadamente un fonema (consonante o vocal).
Como vino convencionalmente, utilizamos el símbolo ∑ (sumatoria) para designar un
alfabeto. Entre los alfabetos más comunes se incluyen los siguientes:

Ø ∑= {0,1}, el alfabeto binario


Ø ∑= {a, b, ……. z}, es el conjunto de todas las letras minúsculas
Ø El conjunto de todos los caracteres ASCII

1.2 Cadenas

La definición de cadena se puede encontrar con varias definiciones como Deán Kelly en su
libro “Teoría de autómatas y lenguajes formales” nos dice que en su libro definirá cadena
como palabra y dice que es una secuencia finita de símbolos de un determinado alfabeto es
conocido como palabra ó cadena.
Otra definición seria que una cadena es una secuencia finita de símbolos que pertenecen a
un alfabeto y comúnmente se denota con la letra.

Ø EJEMPLO: si ∑= {0,1}, entonces ∑1= {0,1}, ∑2= {00, 01, 10, 11}, ∑3= {000, 001,
010, 011, 100, 101, 110, 111}, etc.

LA CADENA VACÍA
La cadena vacía es aquella cadena que presenta cero apariciones de símbolos. Esta cadena,
designada por £, es una cadena que puede construirse en cualquier alfabeto

Ø EJEMPLO: observe que ∑0= {£}, independientemente de cuál sea el alfabeto ∑. Es


decir, £ es la única cadena cuya longitud es 0.
Algunas operaciones sobre cadenas pueden ser:

 La longitud o tamaño |x| de una cadena x = a1 . . . an, se define como |x| = n.

 La concatenación x · y (o xy) de dos cadenas x = a 1 . . . an e y = b1 . . . bm se define


como xy = a1 . . . anb1 . . . bm

 La potencia xi con i ≥ 0 de una cadena x se define mediante xi = xx ..i .. x

Ejemplos: Considerando las cadenas x = 101 e y = 11 definidas sobre {0, 1}

Longitud |0| = 1, |λ| = 0, |x| = 3

Concatenación xy = 10111, yx = 11101

Potencia 02 = 00, (10)3 = 101010, x2= 101101

1.3 Lenguajes, tipos y herramientas.


Primero definiremos que es un lenguaje, un lenguaje es un conjunto de cadenas, todas ellas
seleccionadas de un ∑*, donde ∑ es un determinado alfabeto se denomina lenguaje. Ya que
estas pueden ser cualquier cadena que cumpla con lo siguiente, está formada por los
símbolos. Los lenguajes habituales pueden interpretarse como conjuntos de cadenas.

Ø EJEMPLO: Seria el inglés, donde la colección de las palabras correctas inglesas es un


conjunto de cadenas del alfabeto que consta de todas las letras.

Ø EJEMPLO: Es el lenguaje C, o cualquier otro lenguaje de programación, donde los


programas correctos son un subconjunto de las posibles cadenas que pueden formarse a
partir del alfabeto del lenguaje.
1.3.1 Tipos de lenguajes.
Ø LENGUAJES DECLARATIVOS: Es fundamentalmente lenguajes de órdenes,
dominados por Sentencias que expresan “lo que hay que hacer” en vez de “cómo hacerlo”.

Ø LENGUAJES DE ALTO NIVEL: Son los más utilizados como lenguajes de


programación permiten que los algoritmos se expresen en un nivel y estilo de escritura
fácilmente legible y comprensible por otros programadores.

Ø LENGUAJE ENSAMBLADOR: Es el programa en que se realiza la tracción de un


programa escrito en un programa escrito en ensamblador y lo pasa a lenguaje máquina.
Directa o no directa de la traducción en que las instrucciones no son más que instrucciones
que ejecuta la computadora.

Ø LENGUAJE MAQUINA: Es como la maquina interpreta lo que nosotros queremos hacer


es una lectura de 0 y 1 es decir binario.

1.3.2 Las Herramientas del lenguaje


TRADUCTOR:
Un traductor es un programa que tiene como entrada un texto escrito en un lenguaje
(lenguaje fuente) y como salida produce un texto escrito en un lenguaje (lenguaje objeto)
que preserva el significado de origen.

Ejemplos de traductores son los ensambladores y los compiladores.

COMPILADOR:
El compilador es un programa informático que traduce un programa escrito en lenguaje de
programación y lo pasa a lenguaje de programación, podemos decir que este programa nos
permite traducir un código fuente de un programa en lenguaje de nivel alto, y lo pasmos a
otro nivel inferior (lenguaje maquina).

INTERPRETES:
Los interpretes son los que realizan normalmente dos operaciones:
 Traducen el código fuente a un formato interno.
 Ejecuta o interpretan el programa traducido al formato interno.
Donde la primera pertenece al interprete el cual llama a veces al compilador, así se genera
el código interno, pero no es el lenguaje de máquina, ni lenguaje de símbolos, ni mucho
menos un lenguaje de nivel alto.

ENSAMBLADORES:
El ensamblador es el programa en que se realiza la tracción de un programa escrito en
ensamblador y lo pasa a lenguaje maquina. Directa o no directa la traducción en que las
instrucciones no son mas que instrucciones que ejecuta la computadora.

GRAMATICA:
La gramática es un ente formal para especificar, de una manera finita, el conjunto de
cadenas de símbolos que constituyen un lenguaje.
Es un conjunto finito de reglas que describen toda la secuencia de símbolos pertenecidas a
un lenguaje especifico y dos gramáticas que describen el mismo lenguaje que llaman
gramáticas equivalentes

1.4 Estructura de un traductor.


Un traductor es un programa que tiene como entrada un texto escrito en un lenguaje
(lenguaje fuente) y como salida produce un texto escrito en un lenguaje (lenguaje objeto)
que preserva el significado de origen.

También lo podemos definir como un programa que traduce o convierte desde un texto o
programa escrito en un lenguaje fuente hasta un texto o programa equivalente escrito en un
lenguaje destino produciendo, si cabe, mensajes de error.

Ejemplos de traductores son los ensambladores y los compiladores.

2. En el proceso de traducción se identifican dos fases principales:


3. Fase de análisis.

4. Fase de Síntesis
1.5 Fases de un compilador.
Es un programa traductor cuya función es traducir (compilar) un programa fuente escrito en
algún lenguaje de alto nivel a lenguaje máquina. Este programa traducido o programa
objeto, normalmente es guardado en memoria secundaria en forma ejecutable y es cargado
a memoria principal cada vez que requiera ser ejecutado.

1.-Analizador léxico:
Lee la secuencia de caracteres de izquierda a derecha del programa fuente y agrupa las
secuencias de caracteres en unidades con significado propio (componentes léxicos o
“tokens” en ingles).
• Las palabras clave, identificadores, operadores, constantes numéricas, signos de
puntuación como separadores de sentencias, llaves, paréntesis, etc. , son diversas
clasificaciones de componentes léxicos.

2.-Análisis sintáctico:
Determina si la secuencia de componentes léxicos sigue la sintaxis del lenguaje y obtiene la
estructura jerárquica del programa en forma de árbol, donde los nodos son las
construcciones de alto nivel del lenguaje.
• Se determinan las relaciones estructurales entre los componentes léxicos, esto es
semejante a realizar el análisis gramatical sobre una frase en lenguaje natural. La estructura
sintáctica la definiremos mediante las gramáticas independientes del contexto.

3.-Análisis semántico:
Realiza las comprobaciones necesarias sobre el árbol sintáctico para determinar el correcto
significado del programa.
• Las tareas básicas a realizar son: La verificación e inferencia de tipos en asignaciones y
expresiones, la declaración del tipo de variables y funciones antes de su uso, el correcto uso
de operadores, el ámbito de las variables y la correcta llamada a funciones.
• Nos limitaremos al análisis semántico estático (en tiempo de compilación), donde es
necesario hacer uso de la Tabla de símbolos, como estructura de datos para almacenar
información sobre los identificadores que van surgiendo a lo largo del programa. El análisis
semántico suele agregar atributos (como tipos de datos) a la estructura del árbol semántico.

4.-Generación y optimización de código intermedio:


La optimización consiste en la calibración del árbol sintáctico donde ya no aparecen
construcciones de alto nivel. Generando un código mejorado, ya no estructurado, más fácil
de traducir directamente a código ensamblador o máquina, compuesto de un código de tres
direcciones (cada instrucción tiene un operador, y la dirección de dos operándoos y un
lugar donde guardar el resultado), también conocida como código intermedio.
5.-Generador de código objeto:
Toma como entrada la representación intermedia y genera el código objeto. La
optimización depende de la máquina, es necesario conocer el conjunto de instrucciones, la
representación de los datos (número de bytes), modos de direccionamiento, número y
propósito de registros, jerarquía de memoria, encauzamientos, etc.
• Suelen implementarse a mano, y son complejos porque la generación de un buen código
objeto requiere la consideración de muchos casos particulares.
6.-Tabla de Símbolos:
Es una estructura tipo diccionario con operaciones de inserción, borrado y búsqueda, que
almacena información sobre los símbolos que van apareciendo a lo largo del programa
como son: – los identificadores (variables y funciones) – Etiquetas – tipos definidos por el
usuario (arreglos, registros, etc.)
Además, almacena el tipo de dato, método de paso de parámetros, tipo de retorno y de
argumentos de una función, el ámbito de referencia de identificadores y la dirección de
memoria. Interacciona tanto con el analizador léxico, sintáctico y semántico que introducen
información conforme se procesa la entrada. La fase de generación de código y
optimización también la usan.

7.-Gestor de errores:
Detecta e informa de errores que se produzcan durante la fase de análisis. Debe generar
mensajes significativos y reanudar la traducción.
Encuentra errores: – En tiempo de compilación: errores léxicos (ortográficos), sintácticos
(construcciones incorrectas) y semánticos (p.ej. errores de tipo) – En tiempo de ejecución:
direccionamiento de vectores fuera de rango, divisiones por cero, etc. – De
especificación/diseño: compilan correctamente pero no realizan lo que el programador
desea.

CONCLUSION.
BIBLIOGRAFIA.
Rivera Diaz, H., 2016. Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría
de …. [online] Es.slideshare.net. Available at:
<https://es.slideshare.net/hugoalbertoriveradiaz/conceptos-unidad-1-lenguajes-automatas-
introduccin-a-la-teora-de-lenguajes-formales> [Accessed 8 September 2021].

También podría gustarte