Está en la página 1de 41

Instituto Tecnológico Superior de Felipe Carrillo Puerto

“2020, Año de Leona Vicario, Benemérita Madre de la Patria”


“2020, Año del 50 Aniversario de la Fundación de Cancún”

Tecnológico Nacional de México


Campus Felipe Carrillo Puerto
Ingeniería en
Sistemas Computacionales
ISC-6E
Asignatura
Lenguajes y Automatas I
Tema No 1
CARPETA DE EVIDENCIAS

Alumno(s):
Jose Luis Castillo Xool
David Antonio Carrillo uc
Samantha Margarita Chan Chimal
Profesora
Ing. Doris Surisaday peraza Rojas

Unidad Académica Chunhuhub, Quintana Roo a


12 de marzo del 2020

Carretera Vigía Chico S/N Col. Centro, C.P. 77200


Felipe Carrilo Puerto, Quintana Roo
Tels. (983) 267 1070 y (983) 834 00 51
www.tecnm.mx
www.itscarrillopuerto.edu.mx
Indice
INTRODUCCIÓN...............................................................................................3
COMPETENCIA ESPECÍFICA DE LA ASIGNATURA......................................4
COMPETENCIA DEL TEMA 1..........................................................................4
GUIA DE OBSERVACION PARTICIPACION Y ASISTENCIA.........................5
INVESTIGACIÓN...............................................................................................6
INTRODUCCIÓN.........................................................................................7
TEMA 1: INTRODUCCIÓN A LA TEORIA DE LENGUAJES FORMALES 8
1.1 ALFABETO............................................................................................8
1.2 CADENAS.............................................................................................8
1.3 LENGUAJES, TIPOS Y HERRAMIENTAS.........................................10
1.4 ESTRUCTURA DE UN TRADUCTOR................................................12
1.5 FASES DE UN COMPILADOR...........................................................14
CONCLUSIÓN...........................................................................................17
FUENTES DE INFORMACIÓN.................................................................18
RUBRICA DE INVESTIGACIÓN...............................................................19
CUADRO COMPARATIVO TRADUCTORES Y COMPILADORES...............21
LISTA DE COTEJO...................................................................................22
INVESTIGACIÓN MÁQUINA DE TURING......................................................24
REPORTE DE LECTURA................................................................................25
LISTA DE COTEJO REPORTE DE LECTURA........................................28
EXPOSICIÓN...................................................................................................29
GUIA DE OBSERVACIÓN EXPOSICIÓN.................................................32
EVALUACION DIGNOSTICA..........................................................................33
EVALUACION DE LA PRIMERA UNIDAD......................................................36
CONCLUSIÓN.................................................................................................39
INTRODUCCIÓN

Lo primero que hará, en esta primera unidad sobre la asignatura de


Lenguajes y Autómatas 1, es la investigación del tema 1. El tema principal de
la unidad 1, tratara sobre la introducción de la Teoría de Lenguajes Formales.
El Lenguaje Formal es un conjunto de cadenas de símbolos que pueden ser
reguladas por leyes que son específicas para cada una de estas ciencias.
Como siguiente se explicarán los subtemas que tiene el tema principal, los
cuales son los siguientes:
1.1Alfabeto: Es un conjunto no vacío y finito de símbolos.
1.2Cadenas: es una secuencia finita de símbolos pertenecientes a un
alfabeto.
1.3 Lenguajes, tipos y Herramientas: los lenguajes son un conjunto de
cadenas que incluyen símbolos de un alfabeto. Los tipos son Lenguajes
declarativos  Lenguajes de alto nivel  Lenguajes ensambladores y
Lenguajes máquina. Las herramientas son muy importantes para los
lenguajes, algunas de ello son los siguientes: editor de estructuras,
impresoras estéticas, verificadores estáticos y compiladores.
1.4 Estructura de un traductor: Un traductor es un programa que tiene
como entrada un texto escrito en un lenguaje, que también puede ser
nombrado como, (lenguaje fuente) y como salida produce un texto escrito
en un lenguaje objeto que tiene el significado de origen.
1.5Fases de un compilador: las fases de un compilador son varias y cada
una tiene su interpretación de diferente sobre el código fuente, el primero es
análisis léxico, análisis sintáctico, análisis semántico, generación de código
intermedio, optimización, generación de código principal, tabal de símbolos y
ejemplos rápidos asta terminar con el proceso.
Así mismo lo siguiente que se realizara y que se presentara en esta carpeta,
es una exposición sobre los lenguajes, tipos y herramientas. Para poder
compre de una manera más sencilla el tema, también se realizará un cuadro
comparativo sobre los lenguajes. Como siguiente y ultima actividad se
realizará un reporte de lectura sobre todo la unidad y de esa manera saber lo
suficiente que se aprendió sobre el tema “la Teoría de Lenguajes Formales.”
COMPETENCIA ESPECÍFICA DE LA ASIGNATURA

Define, diseña y programa las fases del analizador léxico y sintáctico de un


traductor o compilador para preámbulo de la construcción de un compilador.

COMPETENCIA DEL TEMA 1

Identifica los conceptos de lenguajes formales para comprender las fases de


un compilador y traductor.
GUIA DE OBSERVACION PARTICIPACION Y ASISTENCIA
Tecnológico Nacional de México
Campus Felipe Carrillo Puerto
Ingeniería en
Sistemas Computacionales
ISC-6E
Asignatura
Lenguajes y Automatas I
Tema No 1

INVESTIGACIÓN
Tema 1: Introducción a la teoria de lenguajes formales
Alumno(s):
Jose Luis Castillo Xool
David Antonio Carrillo uc
Samantha Margarita Chan Chimal
Profesora
Ing. Doris Surisaday peraza Rojas

Unidad Académica Chunhuhub, Quintana Roo a


6 de febrero del 2020
INTRODUCCIÓN

Este tema tratara sobre la Introducción a la teoría de lenguajes formales y


sus respectivos subtemas los cuales son: alfabeto, Cadena, lenguajes, tipos y
herramientas, estructura de un traductor y fases de un compilador. un
lenguaje formal es un lenguaje cuyos símbolos primitivos y reglas para unir
esos símbolos están formalmente especificados. Al conjunto de los símbolos
primitivos se le llama el alfabeto o vocabulario del lenguaje, y al conjunto de
las reglas se lo llama la gramática formal o sintaxis. A una cadena de
símbolos formada de acuerdo a la gramática se la llama una fórmula bien
formada o palabradel lenguaje. Estrictamente hablando, un lenguaje formal
es idéntico al conjunto de todas sus fórmulas bien formadas.
TEMA 1: INTRODUCCIÓN A LA TEORIA DE LENGUAJES FORMALES

1.1 ALFABETO

Se llama alfabeto a un conjunto finito, no vacío, cuyos elementos se


denominan “letras” o “símbolos”. Se denomina palabra a toda secuencia finita
de letras formada con los símbolos de un alfabeto. Se definen los alfabetos
por la enumeración de los símbolos que contiene. Un "símbolo" es una
entidad abstracta. Las letras y los dígitos son ejemplos de símbolos usados
con frecuencia.

Se utilizan meta–símbolos (tal como {, }, =, y la coma) para escribir sobre lo


que hablamos. Desde el contexto siempre será claro, si se trata de un
símbolo del alfabeto o si se trata de un meta–símbolo.
Usamos subíndices para distinguir diferentes alfabetos.
Usamos normalmente las minúsculas como alfabeto S = {a, . . . , z}, en los
ejemplos normalmente letras desde el principio del alfabeto.
Cardinalidad del alfabeto (número de elementos del alfabeto): |S| > 0, |S| < 8

1.2 CADENAS

Una cadena o palabra sobre un alfabeto Σ. admitimos la existencia de una


única cadena que no tiene símbolos, la cual se denomina cadena vacía y se
denota con λ. la cadena vacía desempeña, en la teoría de lenguajes
formales, un papel similar al que desempeña el conjunto vacío Ø en la teoría
de conjuntos.
Longitud de cadena.
La longitud de cadena es el numero de símbolos que contiene. La notación
empleada es la que es la que se indica en el ejemplo:
Utilizamos las cadenas de los ejemplos:
I abcb I = 4,
I a + 2*b I = 5
Concatenación de cadenas.
La concatenación de dos cadenas u y v, escrita uv, es "pegar" las dos
cadenas para formar una nueva.
Ejemplo:
Sea:
 u = ab
 v = ca
 w = bb.
Entonces
 uv = abca
 uw = cabb
 (uv) w = abcabb
 u(vw) = abcabb
El resultado de la concatenación de u, v y w es independiente del orden en
que las operaciones son ejecutadas. Matemáticamente esta propiedad es
conocida como asociatividad.
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.
1.3 LENGUAJES, TIPOS Y HERRAMIENTAS

Un lenguaje es un conjunto de cadenas, todas ellas seleccionadas de un


subconjunto finito donde el conjunto es un determinado alfabeto. Es una
forma de representar información basada en un conjunto finito de signos o
símbolos.
La elección del termino "lenguaje" puede parecer extraña. Sin embargo, los
lenguajes habituales pueden interpretarse como conjuntos de cadenas. Un
ejemplo seria el Ingles, donde la colección de las palabras correctas inglesas
es un conjunto de cadenas del alfabeto que consta de todas las letras. Otro
ejemplo es el lenguaje C.
Tipos de lenguajes.
Lenguaje natural (castellano)
Nosotros estamos relacionados con el concepto tradicional de gramática que,
de esta forma intuitiva, podemos considerar un conjunto de reglas el cual nos
indican que es correcto y que no lo es del, lenguaje natural. Con este fin
podemos acércanos a la definición mas clara y formal de la lengua
castellana.
Lenguaje artificial.
en este lenguaje aplicamos el mismo método en el cual definimos un
fragmento del lenguaje de programación. Donde pretendemos describir las
instrucciones el cual nos permite asignar un valor a una expresión ó a una
variable en un lenguaje C.
Lenguaje regular.
Llamamos así a los lenguajes porque sus palabras contienen "regularidades"
o repeticiones de los mismos componentes, por ejemplo en este lenguaje L1
= { ab, abab, ababab, abababab,...} Este ejemplo podemos apreciar las
palabras de L1 son solo repeticiones de "ab" donde se repiten varias veces.
Su regularidad consiste en las palabras que contienen "ab" varias veces.
Lenguajes de bajo nivel
Son lenguajes totalmente dependientes de la máquina, es decir que el
programa que se realiza con este tipo de lenguajes no se puede migrar o
utilizar en otras máquinas. Al estar prácticamente diseñados a medida del
hardware, aprovechan al máximo las características del mismo.
Dentro de este grupo se encuentran:
El lenguaje maquina: este lenguaje ordena a la máquina las operaciones
fundamentales para su funcionamiento. Consiste en la combinación de 0's y
1's para formar las ordenes entendibles por el hardware de la máquina. Este
lenguaje es mucho más rápido que los lenguajes de alto nivel.
La desventaja es que son bastantes difíciles de manejar y usar, además de
tener códigos fuente enormes donde encontrar un fallo es casi imposible.
El lenguaje ensamblador: es un derivado del lenguaje máquina y está
formado por abreviaturas de letras y números llamadas mnemotécnicos. Con
la aparición de este lenguaje se crearon los programas traductores para
poder pasar los programas escritos en lenguaje ensamblador a lenguaje
máquina. Como ventaja con respecto al código máquina es que los códigos
fuentes eran más cortos y los programas creados ocupaban menos memoria.
Las desventajas de este lenguaje siguen siendo prácticamente las mismas
que las del lenguaje ensamblador, añadiendo la dificultad de tener que
aprender un nuevo lenguaje difícil de probar y mantener.
Lenguajes de alto nivel
Son aquellos que se encuentran más cercanos al lenguaje natural que al
lenguaje máquina. Están dirigidos a solucionar problemas mediante el uso de
EDD's.
Se tratan de lenguajes independientes de la arquitectura del ordenador. Por
lo
que, en principio, un programa escrito en un lenguaje de alto nivel, lo puedes
migrar de una máquina a otra sin ningún tipo de problema.
Estos lenguajes permiten al programador olvidarse por completo del
funcionamiento interno de la maquina/s para la que están diseñando el
programa. Tan solo necesitan un traductor que entiendan el código fuente
como las características de la máquina.
Suelen usar tipos de datos para la programación y hay lenguajes de propósito
general (cualquier tipo de aplicación) y de propósito específico (como
FORTRAN para trabajos científicos).
HERRAMIENTAS COMPUTACIONALES LIGADAS CON LENGUAJES
Editores de estructuras
Un editor de estructuras toma como entrada una secuencia de órdenes para
construir un programa fuente. El editor de estructuras no solo realiza las
fuentes de creación y modificación de textos de un editor de textos ordinarios,
sino que también analiza el texto del programa, imponiendo al programa
fuente una estructura jerárquica apropiada. De esa manera el editor de
estructuras puede realizar tareas adicionales útiles para la preparación de
programas.
Impresoras estéticas
Una impresora estética analiza un programa y lo imprime de forma que la
estructura del programa resulte claramente visible. Por ejemplo los
comentarios pueden aparecer con un tipo de letra especial, y las
proposiciones pueden aparecer con una indentación proporcional a la
profundidad de su anidamiento en la organización jerárquica de las
proposiciones. EJEMPLOS: Word, Excel, Power Point, Photoshop, etc.
Verificadores estáticos
Un verificador estático lee un programa, lo analiza e intenta descubrir errores
potenciales sin ejecutar el programa. La parte del análisis a menudo es
similar a la que se encuentra en los compiladores de optimización así un
verificador estático puede detectar si hay partes de un programa que nunca
se podrán ejecutar o si cierta variable se usa antes de ser definida. Puede
detectar errores de lógica, como intentar utilizar una variable real como
apuntador, empleando las técnicas de verificación de tipos.
Intérpretes
Un intérprete realiza las operaciones que implica el programa fuente. Para
una proposición de asignación, por ejemplo, un intérprete podría construir un
árbol y después efectuar las operaciones de los nodos con forme “recorre” el
árbol. Muchas veces los intérpretes se usan para ejecutar lenguajes de
órdenes, pues cada operador que se ejecuta en un lenguaje de órdenes
suele ser una invocación de una rutina compleja, como un editor o un
compilado.

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. Ejemplos de
traductores son los ensambladores y los compiladores.
En el proceso de traducción se identifican dos fases principales:

Fase de análisis

Fase de Síntesis

1.5 FASES DE UN COMPILADOR

• Los compiladores son programas de computadora que traducen de un


lenguaje a otro. Un compilador toma como su entrada un programa escrito en
lenguaje fuente y produce un programa equivalente escrito en lenguaje
objeto.

• Un compilador se compone internamente de varias etapas, o fases, que


realizan operaciones lógicas. Es útil pensar en estas fases como piezas
separadas dentro del compilador, y pueden en realidad escribirse como
operaciones codificadas separadamente aunque en la práctica a menudo se
integran.

--Análisis Léxico
– Análisis Sintáctico
– Análisis Semántico
– Generación y Optimización de código intermedio
– Generación de código objeto

• 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.

• 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.

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.
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.

Generación 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.

• 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.

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.
 Se trataran sólo errores estáticos (en tiempo de compilación). Respecto a los
errores en tiempo de ejecución, es necesario que el traductor genere código
para la comprobación de errores específicos, su adecuado tratamiento y los
mecanismos de tratamiento de excepciones para que el programa se
continúe ejecutando.

La mayoría de los compiladores son dirigidos por la sintaxis, es decir, el


proceso de traducción es dirigido por el analizador sintáctico. El análisis
sintáctico genera la estructura del programa fuente a través de tokens. El
análisis semántico proporciona el significado del programa basándose de la
estructura del árbol de análisis sintáctico.

• Las fases de análisis léxico y análisis sintáctico se pueden automatizar de


manera relativamente fácil, las verdaderas dificultades en la construcción de
compiladores son el análisis semántico, la generación y la optimización de
código.

 • El número de pasadas, es decir, el número de veces que hay que analizar


el código fuente, está en función del grado de optimización. Típicamente se
realiza una pasada para realizar el análisis léxico y sintáctico, otra pasada
para el análisis semántico y optimización del lenguaje intermedio y una
tercera pasada para generación de código y optimizaciones dependientes de
la máquina. Estructuras de datos Empleado.
CONCLUSIÓN

Como se pudo observar en este tema, se hablo sobre la Introducción a la


teoría de lenguajes formales y sus subtemas, ya que con base a esto se
aprendio a distinguir en que momento aplicarlo. Por tanto puedo concluir que
un alfabeto es un conjunto no vacío y finito de símbolos denotado por el
símbolo Ʃ, con el cual se pueden desarrollar distintas cadenas de texto o
numeros. Las cadenas obtenidas pueden ser empleadas en distintos
automatas para que asi puedan realizar la tarea que tengan programada.
Cuando ingresa una señal el automata se encarga de procesarlo y asi
generar una salidad, pero de pendiendo de la programacion aplicada solo se
podra ingresar un tipo de alfabeto, a excepcion de que este programada lo
contrario.
De igual manera en este tema se investigo sobre los interpretes y sobre los
lenguajes de programacion con los cuales es posible realizar un programa y
ejecutarlo en un equipo de computo. Los interpretes se encargan de
interpretar el codigo escrito a codigo que la computadora pueda entender y
procesar. Tambien se investigo sobre las facez de un compilador con el cual
se logra que un texto escrito en un lenguaje programacion se en cargar de
pasarlo a un lenguaje objeto. Entre las principales funciones que realiza un
compilador en un entorno de desarrolo son las de analizar el codigo escrito
en busca de errores que puedan afectar el funcionamiento de el programa. El
compilador se ejecuta en segundo plano y se actualiza constantemente.
Ademas de detectar errores, tambien se encarga de verificar la sintaxis del
texto que se este redactando para decidir si el texto escrito coincide con el
del lenguaje de programacion seleccionado, de loo contrario lo marcara como
un error que debe ser corregido.
FUENTES DE INFORMACIÓN

Lenguajes autómatas.(2014, 30 de enero). luis ymay. Fecha de consulta:


febrero 3, 2020 desde https://es.slideshare.net/LuyzMeyner/lenguajes-
autmatas
Lenguajes y Autómatas 1.(). Gabriela Perales. Fecha de consulta: febrero 3,
2020 desde https://www.academia.edu/15275019/Lenguajes_y_Aut
%C3%B3matas_1
Lenguajes y Autómatas I. (2019, 22 de enero).Fecha de consulta: febrero 3,
2020 desde https://equipoverdelya.blogspot.com/2019/01/12-cadenas.html
Unidad 1: Introducción a la Teoría de Lenguajes y Autómatas.().Fecha de
consulta: febrero 3, 2020 desde http://10380054.galeon.com/u1.htm
Estructura de un traductor.(2015, 16 de febrero).
lenguajesyautomatasitsh.blogspot. Fecha de consulta: febrero 3, 2020 desde
http://lenguajesyautomatasitsh.blogspot.com/2015/02/16-estructura-de-un-
traductor.html
RUBRICA DE INVESTIGACIÓN
Tecnológico Nacional de México
Campus Felipe Carrillo Puerto
Ingeniería en sistemas computacionales
ISC-6E
Asignatura
Lenguajes y autómatas
Tema No1
Cuadro comparativo
Traductores y compiladores: ventajas, desventajas,
características
Alumno(s):
José Luis Castillo Xool
David Antonio Carrillo UC
Samantha Margarita Chan Chimal
Profesor
Ing. Doris Surisaday Peraza Rojas
Unidad Académica Chunhuhub, Quintana Roo a 21 de febrero del
2020
CUADRO COMPARATIVO TRADUCTORES Y COMPILADORES

CONCEPTO DEFINICIÓN TIPOS VENTAJA DESVENTAJA


TRADUCTORES Son programas  Compiladores.  Genera un código más sencillo Son de muy bajo nivel y su
DE LENGUAJE que traducen a su  Interpretes. y comprensible. tarea consiste básicamente
vez los  Escribir un código valido para en ofrecer nombre simbólico
programas fuente diversas máquinas y a las distintas
escritos en posiblemente, sistemas Instrucciones, parámetros y
lenguajes de alto operativos. cosas tales como los modos
nivel a código  facilidad de codificación y en de direccionamiento.
máquina general su velocidad de cálculo.
COMPILADOR Es un traductor  Compilador  Genera programas más rápidos  Código poco optimizado,
que convierte un y eficientes que el intérprete. programas más lentos,
cruzado
texto escrito en  poco o ningún control
lenguaje de alto  Compiladores  Fácil de aprender, compacto, sobre el código
nivel a un gran productividad, permite generado, más difícil de
lenguaje de bajo  optimizadores depurar.
incorporar ASM dentro del
nivel (código  Compiladores JIT código, gran cantidad de
objeto o maquina) librerías, fácil manejo de  Es un lenguaje no
. operaciones matemáticas, estructurado que puede
Analiza el disminución del número de crear malos hábitos de
programa fuente errores, más fácil memorizar, programación, no tienen
y lo traduce a otro lenguaje más cercano al tantas librerías como
lenguaje humano. otros lenguajes, es
equivalente. menos eficiente que el
 Código eficiente y rápido. "C" y el "ASM".
LISTA DE COTEJO
Tecnológico Nacional de México
Campus Felipe Carrillo Puerto
Ingeniería en
Sistemas Computacionales
ISC-6E
Asignatura
Lenguajes y Automatas I
Tema No 1
Investigación de
Maquina de Turing
Alumno(s):
Jose Luis Castillo Xool
Samantha Margarita Chan Chimal
David Antonio Carrillo uc

Profesor
Ing. Doris Surisaday peraza Rojas

Unidad Académica Chunhuhub, Quintana Roo a


20 de febrero del 2020
INVESTIGACIÓN MÁQUINA DE TURING

Una máquina de Turing es un
dispositivo que manipula símbolos sobre
una tira de cinta de acuerdo con una
tabla de reglas. A pesar de su
simplicidad, una máquina de Turing
puede ser adaptada para simular la
lógica de
cualquier algoritmo de computador y es
particularmente útil en la explicación de
las funciones de una CPU dentro de un
computador.
Originalmente fue definida por el matemático inglés Alan Turing como una
«máquina automática» en 1936 en la revista Proceedings of the London
Mathematical Societynota 1. La máquina de Turing no está diseñada como
una tecnología de computación práctica, sino como un dispositivo hipotético
que representa una máquina de computación. Las máquinas de Turing
ayudan a los científicos a entender los límites del cálculo mecánico.34
Turing dio una definición sucinta del experimento en su ensayo de 1948,
«Máquinas inteligentes». Refiriéndose a su publicación de 1936, Turing
escribió que la máquina de Turing, aquí llamada una máquina de
computación lógica, consistía en:

“una ilimitada capacidad de memoria obtenida en la forma de una cinta


infinita marcada con cuadrados, en cada uno de los cuales podría imprimirse
un símbolo. En cualquier momento hay un símbolo en la máquina; llamado el
símbolo leído. La máquina puede alterar el símbolo leído y su
comportamiento está en parte determinado por ese símbolo, pero los
símbolos en otros lugares de la cinta no afectan el comportamiento de la
máquina. Sin embargo, la cinta se puede mover hacia adelante y hacia atrás
a través de la máquina, siendo esto una de las operaciones elementales de la
máquina. Por lo tanto cualquier símbolo en la cinta puede tener finalmente
una oportunidad”
Turing (1948, p. 61.)
una máquina de Turing consta de:
1. Una cinta que se divide en celdas, una al lado de la otra. Cada celda
contiene un símbolo de algún alfabeto finito.
2. Un cabezal que puede leer y escribir símbolos en la cinta y mover la cinta
a la izquierda y a la derecha una (y sólo una) celda a la vez. En algunos
modelos el cabezal se mueve y la cinta es estacionaria.
3. Un registro de estado que almacena el estado de la máquina de Turing,
uno de los estados finitos. 
4. Una tabla finita de instrucciones (llamada ocasionalmente como tabla de
acción o función de transición).
Tecnológico Nacional de México
Campus Felipe Carrillo Puerto
Ingeniería en
Sistemas computacionales.
Asignatura
Lenguajes y Autómatas 1.
Tema No 1°
Actividad

REPORTE DE LECTURA

1.5 Conceptos fundamentales de la teoría de autómatas

Alumno(s):
Samantha margarita chan chimal
David Antonio carrillo uc
José Luis castillo xool
Profesora
Ing. Doris Surisaday Peraza Rojas

Unidad Académica Chunhuhub, Quintana Roo a 2 de Marzo del


2020
1.5 Conceptos fundamentales de la teoría de autómatas
Un alfabeto es un conjunto de símbolos finito y no vacío que están
conformados por elementos como los números, símbolos o letras del
abecedario, Este sirve para formar cadenas de caracteres, Existen tres tipos
alfabeto de texto plano, binario y Unicode.

Se puede decir que la teoría de autómatas se refiere ala forma en el que una
máquina es capas de procesar por si solo una información de entrada, la cual
se someterá a transformaciones simbólicas que pueden adoptar la forma de
un cálculo o computación y genera un resultado de salida. Para que la
maquina realice todo este proceso se desarrolla en “etapas”.

 Alfabeto:
Es un conjunto finito no vacío de letras o símbolos. Sea “a” una letra y
Σ un alfabeto.

 Símbolo:
Es una entidad abstracta, (letras, dígitos, caracteres, etc.) Forman
parte de un alfabeto. También posible encontrar símbolos formados
por varios caracteres.

 Palabra:
Es toda secuencia finita de símbolos del alfabeto.
 Ejemplo:
Σ1= {A, B, C, ..., Z}; palabras sobre Σ1 JUAN,
Isabel, etc. Σ2= {0, 1}; palabras sobre Σ2 00011101

 Longitud de palabra:
Es cada número de símbolos que componen una palabra. Se
representa por ⎟ x⎟

 Ejemplos: Σ1= {A, B, C, ...,Z}; ⎟ x⎟ = ⎟ JUAN ⎟ = 4


 Palabra vacía λ:
Es aquella palabra cuya longitud es cero Se representa por λ, ⎟ λ ⎟ =
0 Sobre cualquier alfabeto es posible construir λ

 Cadenas de caracteres:
Es una secuencia finita de símbolos seleccionados de algún alfabeto.

 Potencias de un alfabeto:
Si es un alfabeto, podemos expresar el conjunto de todas las cadenas
de una determinada longitud de dicho alfabeto utilizando una notación
exponencial. Definimos k para que sea el conjunto de las cadenas de
longitud k, tales que cada uno de los símbolos de las mismas
pertenece a Σ.

 Concatenación de cadena:
sean dos palabras x, y.

 Universodel discurso, W(Σ):


Son todas las palabras que se pueden formar con los símbolos de un
alfabeto Σ, También se denomina Lenguaje Universal del alfabeto Σ y
Se representa como W(Σ).
 Es un conjunto infinito (i.e. número infinito de palabras.)

 Lenguaje (L):

Son todo subconjunto del lenguaje universal de Σ, L ⊂ W(Σ) y todo el


conjunto de palabras sobre un determinado Σ
LISTA DE COTEJO REPORTE DE LECTURA
EXPOSICIÓN
GUIA DE OBSERVACIÓN EXPOSICIÓN
EVALUACION DIGNOSTICA
EVALUACION DE LA PRIMERA UNIDAD
CONCLUSIÓN

Como conclusión acerca de este tema 1° referente a la introducción a la


teoría de lenguajes formales, como sabemos son de gran importancia en la
sociedad para referirse de una forma más técnica y de igual forma que el
lenguaje de programación también es considerado un lenguaje formal, se
puede decir que con base a este existen algunas clasificaciones de los
lenguajes y poseen reglas que rigen el lenguaje como sintáctica y semántica
que permiten mejorar su compresión y control. En el lenguaje de
programación se entrelaza con el lenguaje formal, pero este se desarrolla en
etapas, se podría decir. el alfabeto es un conjunto finito no vacío, cuyos
elementos se denominan letras o símbolos. La cadena vacía es la única
cadena de caracteres de tamaño cero. Los tipos de lenguaje que se ocupan
son lenguajes declarativos, lenguaje de alto nivel Y lenguajes ensamblador,
como sabemos la estructura de 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. Ya en lo que son las fases de un compilador realiza una
secuencia de varias fases. Cada fase dura entrada de su etapa anterior, tiene
su propia representación del programa de origen, y alimenta su resultado a la
siguiente fase del compilador. Nos permiten entender las fases de un
compilador. Esta conformado por análisis léxico, sintaxis análisis, análisis
semántico, generación de código intermedio, optimización de código,
generación de código y tabla de símbolos esta es la estructura de datos que
mantendrá en todas las fases de un compilador. Este trabajo realizo con el
motivo de obtener los mas conocimiento acerca de la teoría de lenguajes que
nos ayudara a saber en que momento aplicarla.

También podría gustarte