SlideShare una empresa de Scribd logo
1 de 13
Descargar para leer sin conexión
INSTITUTO TECNOLOGICO SUPERIOR
DE
FELIPE CARRILLO PUERTO
INVESTIGACIÓN:
U1 INTRODUCCIÓN A LA TEORÍA DE LENGUAJES FORMALES.

D O C E N T E:
Ing. Marcos Gaspar Pech Cruz.

PRESENTA
Angulo Estrella Jesús Alberto
Lara Domínguez Efraín
Yama May José Luis
Tun Chulin Johnni Giovanni
Canul Chan Rolando
Estrada Canul Roger Alfredo

Aula: J2

No. De Control 111K0030
No. De Control 111K0043
No. De Control 111K0056
No. De Control 111K0235
No. De Control 111K0231
No. De Control 111K0038

Grupo: B

C A R R E R A:
Ingeniería en sistemas computacionales
M A T E R I A:
Lenguajes Y Automatas

Felipe Carrillo Puerto, Quintana Roo a 28 de Enero de 2014
Introducción a la Teoría de Lenguajes Formales

Contenido
1.1 ALFABETO ............................................................................................................................ 3
1.1.

CADENA ......................................................................................................................... 3

1.3 LENGUAJES .......................................................................................................................... 4
1.4 TIPOS DE LENGUAJES.......................................................................................................... 4
1.5 HERRAMIENTAS COMPUTACIONALES LIGADAS CON LENGUAJES. ..................................... 6
1.6 ESTRUCTURA DE UN TRADUCTOR. ...................................................................................... 8
1.7 FASES DE UN COMPILADOR. ............................................................................................. 11

ITS Carrillo Puerto

Lenguajes Y Autómatas

2
ISC-6B
Introducción a la Teoría de Lenguajes Formales

INTRODUCCIÓN TEORÍA 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.1. CADENA
Una cadena (o palabra) es una secuencia finita de símbolos yuxtapuestos. Por
ejemplo a, b y c son símbolos y casa es una cadena.
La longitud de una cadena w que se denota como |w|, es el número de
símbolos que componen la cadena. Por ejemplo casa tiene una longitud 4.
Habitualmente, se emplean las letras minúsculas del principio del alfabeto (o
dígitos) para designar a los símbolos y las letras minúsculas del final del
alfabeto,
normalmente w,
x,
y y
z,
para
designar cadenas.
La cadena vacía, denotada por E es aquella que presenta cero apariciones
de símbolos, es una cadena que puede construirse en cualquier alfabeto.

ITS Carrillo Puerto

Lenguajes Y Autómatas

3
ISC-6B
Introducción a la Teoría de Lenguajes Formales

La concatenación de dos cadenas es la cadena que se forma al escribir la
primera seguida de la segunda, sin que haya espacio entre ellas, Por ejemplo
la concatenación de padre y madre es padremadre. La yuxtaposición se utiliza
como el operador de concatenación. Esto es si w y x son cadenas, entonces wx
es la concatenación de estas dos cadenas. La cadena vacía es la identidad
para el operador de concatenación, es decir Ew=wE para cada cadena de w.

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

El conjunto vacío Ø y el conjunto formado por la cadena vacía { E } son
lenguajes.
El conjunto de palíndromos (cadenas que se leen igual de izquierda a
derecha y viceversa) sobre el alfabeto {0,1} es un lenguaje infinito. Algunos
elementos de este lenguaje son E, 0, 1, 00, 01,010, y 1101011.
Por consiguiente vemos que el conjunto de todos los palíndromos sobre
una colección finita de símbolos no es, técnicamente hablando, un lenguaje,
porque sus cadenas no se construyen colectivamente a partir de un alfabeto.

1.4 TIPOS DE LENGUAJES
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.

ITS Carrillo Puerto

Lenguajes Y Autómatas

4
ISC-6B
Introducción a la Teoría de Lenguajes Formales

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.
Nota: EDD's son las abreviaturas de Estructuras Dinámicas de Datos, algo muy
utilizado en todos los lenguajes de programación. Son estructuras que pueden
cambiar de tamaño durante la ejecución del programa. Nos permiten crear
estructuras de datos que se adapten a las necesidades reales de un programa.
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).
Lenguajes de Medio nivel
Estos lenguajes se encuentran en un punto medio entre los dos anteriores.
Dentro de estos lenguajes podría situarse C ya que puede acceder a los
registros del sistema, trabajar con direcciones de memoria, todas ellas
características de lenguajes de bajo nivel y a la vez realizar operaciones de alto
nivel.
Generaciones
La evolución de los lenguajes de programación se puede dividir en 5 etapas o
ITS Carrillo Puerto

Lenguajes Y Autómatas

5
ISC-6B
Introducción a la Teoría de Lenguajes Formales

generaciones.


Primera generación: lenguaje máquina.



Segunda generación: se crearon los primeros lenguajes ensambladores.



Tercera generación: se crean los primeros lenguajes de alto nivel. Ej. C,
Pascal, Cobol…



Cuarta generación. Son los lenguajes capaces de generar código por si
solos, son los llamados RAD, con lo cuales se pueden realizar aplicaciones
sin ser un experto en el lenguaje. Aquí también se encuentran los lenguajes
orientados a objetos, haciendo posible la reutilización d partes del código
para otros programas. Ej. Visual, Natural Adobe.



Quinta generación: aquí se encuentran los lenguajes orientados a la
inteligencia artificial. Estos lenguajes todavía están poco desarrollados. Ej.
LISP

1.5 HERRAMIENTAS COMPUTACIONALES LIGADAS CON LENGUAJES.
Herramientas Desarrolladas En Programación De Sistemas


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.
Ejemplos:
Editores de C, Pascal, Visual Studio (Fox Pro, Basic, etc.).
Para desarrollar un programa en Fortran, el primer paso es obviamente,
escribir el código fuente, utilizando un editor de texto disponible en la
computadora y guardándolo en archivos texto de extensión .f, .f90, .f95, .for o
de extensión que soporte el compilador y el sistema operativo de la
computadora.
En computadoras que funcionan bajo una versión de LINUX, lo usual
que se utiliza, como editor de texto, es emacs.
El Cornell Program Synthesizer (CPS). Es quizá el ejemplo más
conocido y el más referenciado en la literatura. Ha servido de ejemplo para
ITS Carrillo Puerto

Lenguajes Y Autómatas

6
ISC-6B
Introducción a la Teoría de Lenguajes Formales

desarrollar otros. Permite programar en un subconjunto del lenguaje PL/I
denominado PL/CS.
Gandalf es un conjunto de varios subproyectos. Su objetivo principal fue
crear un entorno completo de desarrollo de software, y no sólo un entorno de
programación.
Doxygen: Genera documentación de código C/C++ en forma de páginas
web, incluyendo diversos índices, el código fuente coloreado e indexado, e
incluso diagramas de dependencia entre módulos.
Javadoc: Para lenguaje Java. Usa un formato prefijado de comentario
para las descripciones, incluyendo marcas HTML embebidas y palabras clave
introducidas con el símbolo @. Se generan documentos en forma de páginas
web.
AdaBrowse/AdaDoc/Ada2html: Son herramientas similares a las
anteriores para código en lenguaje Ada. Igualmente generan páginas web.
GVim es la versión para Windows del editor de Unix Vim, un editor para
programadores altamente configurable.
JEdit es un editor orientado a la programación.
Komodo Edit es un editor para lenguajes dinámicos (Perl, PHP, Python,
Ruby y TCL) y de páginas web (JavaScript, CSS, HTML y XML). Este programa
es la versión libre de un programa comercial.
Minimum Profit es un editor de texto para programadores.
Notepad++ es un editor de código fuente para programadores basado
en Scintilla para java y c.


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
ITS Carrillo Puerto

Lenguajes Y Autómatas

7
ISC-6B
Introducción a la Teoría de Lenguajes Formales

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.
Ejemplos:
Editores de C y Pascal.
Verificadores estáticos de sintaxis (como lint) permiten detectar muchos
errores antes de la compilación. (Algo parecido a lo que se obtiene con la
opción -fsyntax- only del compilador de GNU gcc).


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
Ejemplos:
Los intérpretes (para lenguajes como Lisp o Basic, o para programas
con sus propios lenguajes interpretados como Derive o Mathematica) Shells de
sistemas operativos o de alguna aplicación como un SMBD.
http://es.scribd.com/doc/159086023/Lenguajes-y-Automatas-i#download

1.6 ESTRUCTURA DE UN TRADUCTOR.
Un traductor es un mediador entre dos entidades: emisoras y receptoras,
los mediadores enmascaran la complejidad y heterogeneidad de los lenguajes.
Un traductor convierte un lenguaje de entrada (código fuente) a una de salida
(código objeto).
Un traductor se define 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. Los traductores engloban tanto a los compiladores (en los que el lenguaje
destino suele ser código máquina) como a los intérpretes (en los que el
lenguaje destino está constituido por las acciones atómicas que puede ejecutar

ITS Carrillo Puerto

Lenguajes Y Autómatas

8
ISC-6B
Introducción a la Teoría de Lenguajes Formales

el intérprete). La figura 1.1 muestra el esquema básico que compone a un
compilador/intérprete.

Tipos de traductores.
Compiladores
Es aquel traductor que tiene como entrada una sentencia en lenguaje formal y
como salida tiene un fichero ejecutable, es decir, realiza una traducción de un
código de alto nivel a código máquina (también se entiende por compilador
aquel programa que proporciona un fichero objeto en lugar del ejecutable final).
Intérpretes
Es como un compilador, solo que la salida es una ejecución. El programa de
entrada se reconoce y ejecuta a la vez. No se produce un resultado físico
(código máquina) sino lógico (una ejecución). Su principal ventaja es que
permiten una fácil depuración. Entre los inconvenientes podemos citar, en
primer lugar, la lentitud de ejecución, ya que al ejecutar a la vez que se traduce
no puede aplicarse un alto grado de optimización. Otro inconveniente es que
durante la ejecución, el intérprete debe residir en memoria, por lo que
consumen más recursos.
La figura 1.2 muestra los pasos a seguir en estos lenguajes para obtener una
ejecución.

ITS Carrillo Puerto

Lenguajes Y Autómatas

9
ISC-6B
Introducción a la Teoría de Lenguajes Formales

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

Fase de Análisis

Fase de Síntesis

ITS Carrillo Puerto

Lenguajes Y Autómatas

10
ISC-6B
Introducción a la Teoría de Lenguajes Formales

1.7 FASES DE UN COMPILADOR.
Definición de Compilador.
Un compilador es un programa informático que traduce un programa escrito en
un lenguaje de programación a otro lenguaje de programación, es decir
programa que permite traducir el código fuente de un programa en lenguaje de
alto nivel, a otro lenguaje de nivel inferior (lenguaje máquina). Generando un
programa equivalente a capaz de interpretar.
FASES DE UN COMPILADOR.

Análisis Léxico. En esta fase se lee los caracteres del programa fuente y se
agrupan en cadenas que representan los componentes léxicos. A la secuencia

ITS Carrillo Puerto

Lenguajes Y Autómatas

11
ISC-6B
Introducción a la Teoría de Lenguajes Formales

de caracteres que representa un componente léxico se le llama lexema (o con
su nombre en inglés token).
Análisis Sintáctico. Los componentes léxicos se agrupan
gramaticales que el compilador utiliza para sintetizar la salida.

en

frases

Análisis Semántico. Intenta detectar instrucciones que tengan la estructura
sintáctica correcta, pero que no tengan significado para la operación implicada.
Generación de código Intermedio. Se puede considerar esta operación
intermedia como un subprograma para una máquina abstracta, a esta
representación debe tener dos propiedades importantes: debe ser fácil de
producir y fácil de traducir al programa objeto.
Optimización de Código. Se trata de mejorar el código intermedio, de modo
que resulte un código de máquina más rápido de ejecutar.
Generación de Código. Esta constituye la fase final de un compilador.
Administrador de la tabla de símbolos. Se encarga de manejar los accesos a la
tabla de símbolos, en cada una de las etapas de compilación de un programa.
Manejador de errores. Es posible encontrar errores. De esta forma podrán
controlarse más eficientemente los errores encontrados en cada una de las
fases de la compilación de un programa.
 Cada fase puede encontrar errores y debe tratarlo para continuar con la
Compilación, permitiendo detectar más errores
 Las fases de Análisis Sintáctico y Semántico manejan la mayoría de los
errores
 En el Análisis Semántico se detectan errores donde la estructura
sintáctica es correcta pero no tiene significado la operación (Por. ej.
sumar dos ID, donde uno es el nombre de una matriz y el otro un
nombre de procedimiento).
Programas Relacionados con un Compilador.
Preprocesadores (producen la entrada para una computadora).
Procesamiento de Macros
Inclusión de archivos
Preprocesadores “racionales” (estructura de control)
Extensiones a lenguajes (bases de datos).
Ensambladores Producen código ensamblador que se pasa a un ensamblador
para su procesamiento (versión mnemotécnica del código de máquina:
nombres de operaciones y nombres de direcciones de memoria).

ITS Carrillo Puerto

Lenguajes Y Autómatas

12
ISC-6B
Introducción a la Teoría de Lenguajes Formales

ITS Carrillo Puerto

Lenguajes Y Autómatas

13
ISC-6B

Más contenido relacionado

La actualidad más candente

Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1
Osiris Mirerus
 
Autómatas de Pila
Autómatas de PilaAutómatas de Pila
Autómatas de Pila
Pablo Guerra
 
Alfabeto, Cadenas, Lenguajes, y Problemas
Alfabeto, Cadenas, Lenguajes, y ProblemasAlfabeto, Cadenas, Lenguajes, y Problemas
Alfabeto, Cadenas, Lenguajes, y Problemas
Raul
 
Ventajas y desventajas de moprosoft
Ventajas y desventajas de moprosoftVentajas y desventajas de moprosoft
Ventajas y desventajas de moprosoft
Chuyito Alvarado
 
Organización y estructura interna del cpu
Organización y estructura interna del cpuOrganización y estructura interna del cpu
Organización y estructura interna del cpu
Isaí Beto Matz Mijes
 

La actualidad más candente (20)

Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1
 
Autómatas de Pila
Autómatas de PilaAutómatas de Pila
Autómatas de Pila
 
macros Lenguaje ensamblador
macros Lenguaje ensambladormacros Lenguaje ensamblador
macros Lenguaje ensamblador
 
Estándares para el Modelado de Procesos de Negocios
Estándares para el Modelado de Procesos de NegociosEstándares para el Modelado de Procesos de Negocios
Estándares para el Modelado de Procesos de Negocios
 
Tutorial de JFLAP
Tutorial de JFLAPTutorial de JFLAP
Tutorial de JFLAP
 
Gramática Libre de Contexto
Gramática Libre de ContextoGramática Libre de Contexto
Gramática Libre de Contexto
 
UNIDAD 2 PROGRAMACIÓN BASICA
UNIDAD 2 PROGRAMACIÓN BASICAUNIDAD 2 PROGRAMACIÓN BASICA
UNIDAD 2 PROGRAMACIÓN BASICA
 
Portafolio lenguajes y automatas unidad 3 - Autómatas finitos
Portafolio lenguajes y automatas unidad 3 - Autómatas finitosPortafolio lenguajes y automatas unidad 3 - Autómatas finitos
Portafolio lenguajes y automatas unidad 3 - Autómatas finitos
 
Programación lógica y funcional
Programación lógica y funcionalProgramación lógica y funcional
Programación lógica y funcional
 
Código intermedio
Código intermedioCódigo intermedio
Código intermedio
 
Traductor y su estructura
Traductor y su estructuraTraductor y su estructura
Traductor y su estructura
 
Unidad1 2 Lenguajes y automatas
Unidad1 2  Lenguajes y automatasUnidad1 2  Lenguajes y automatas
Unidad1 2 Lenguajes y automatas
 
LENGUAJE ENSAMBLADOR
LENGUAJE ENSAMBLADORLENGUAJE ENSAMBLADOR
LENGUAJE ENSAMBLADOR
 
Tipos de gramatica y arboles de derivacion
Tipos de gramatica y arboles de derivacionTipos de gramatica y arboles de derivacion
Tipos de gramatica y arboles de derivacion
 
Alfabeto, Cadenas, Lenguajes, y Problemas
Alfabeto, Cadenas, Lenguajes, y ProblemasAlfabeto, Cadenas, Lenguajes, y Problemas
Alfabeto, Cadenas, Lenguajes, y Problemas
 
Ventajas y desventajas de moprosoft
Ventajas y desventajas de moprosoftVentajas y desventajas de moprosoft
Ventajas y desventajas de moprosoft
 
Unidad1 Lenguajes y automatas
Unidad1 Lenguajes y automatasUnidad1 Lenguajes y automatas
Unidad1 Lenguajes y automatas
 
Organización y estructura interna del cpu
Organización y estructura interna del cpuOrganización y estructura interna del cpu
Organización y estructura interna del cpu
 
Automatas Finitos Deterministicos y No Deterministicos
Automatas Finitos Deterministicos y No DeterministicosAutomatas Finitos Deterministicos y No Deterministicos
Automatas Finitos Deterministicos y No Deterministicos
 
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesPortafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
 

Destacado

Quiz 1 Métodos Numéricos
Quiz 1 Métodos NuméricosQuiz 1 Métodos Numéricos
Quiz 1 Métodos Numéricos
Diego Perdomo
 
Revision de Presaberes Metodos Numericos
Revision de Presaberes Metodos NumericosRevision de Presaberes Metodos Numericos
Revision de Presaberes Metodos Numericos
Diego Perdomo
 
Quiz 3 Metodos Numericos
Quiz 3 Metodos NumericosQuiz 3 Metodos Numericos
Quiz 3 Metodos Numericos
Diego Perdomo
 
Revision de presaberes
Revision de presaberesRevision de presaberes
Revision de presaberes
Diego Perdomo
 
Reconocimiento unidad 3 Metodos Numericos
Reconocimiento unidad 3 Metodos NumericosReconocimiento unidad 3 Metodos Numericos
Reconocimiento unidad 3 Metodos Numericos
Diego Perdomo
 
Examen final Autómatas y Lenguajes Formales
Examen final Autómatas y Lenguajes FormalesExamen final Autómatas y Lenguajes Formales
Examen final Autómatas y Lenguajes Formales
Diego Perdomo
 
Leccion evaluativa 2
Leccion evaluativa 2Leccion evaluativa 2
Leccion evaluativa 2
Diego Perdomo
 
Leccion evaluativa 2
Leccion evaluativa 2Leccion evaluativa 2
Leccion evaluativa 2
Diego Perdomo
 

Destacado (20)

Circuitos electricos
Circuitos electricosCircuitos electricos
Circuitos electricos
 
ADMINISTRACION DE BASE DE DATOS UNIDAD 1
ADMINISTRACION DE BASE DE DATOS UNIDAD 1ADMINISTRACION DE BASE DE DATOS UNIDAD 1
ADMINISTRACION DE BASE DE DATOS UNIDAD 1
 
Quiz 1 Métodos Numéricos
Quiz 1 Métodos NuméricosQuiz 1 Métodos Numéricos
Quiz 1 Métodos Numéricos
 
Presentación unidad 1 redes de computadores luisa ballén
Presentación unidad 1 redes de computadores luisa ballénPresentación unidad 1 redes de computadores luisa ballén
Presentación unidad 1 redes de computadores luisa ballén
 
Reporte-Instalando Windows Server 2012
Reporte-Instalando Windows Server 2012Reporte-Instalando Windows Server 2012
Reporte-Instalando Windows Server 2012
 
Unidad 1 lenguajes regulares
Unidad 1 lenguajes regularesUnidad 1 lenguajes regulares
Unidad 1 lenguajes regulares
 
Revision de Presaberes Metodos Numericos
Revision de Presaberes Metodos NumericosRevision de Presaberes Metodos Numericos
Revision de Presaberes Metodos Numericos
 
Practica Resistencias Valor Practico y Relativo
Practica Resistencias Valor Practico y RelativoPractica Resistencias Valor Practico y Relativo
Practica Resistencias Valor Practico y Relativo
 
Quiz 3 Metodos Numericos
Quiz 3 Metodos NumericosQuiz 3 Metodos Numericos
Quiz 3 Metodos Numericos
 
Metodo congruencial mixto en java
Metodo congruencial mixto en javaMetodo congruencial mixto en java
Metodo congruencial mixto en java
 
Revision de presaberes
Revision de presaberesRevision de presaberes
Revision de presaberes
 
52 rec1 301405
52 rec1 30140552 rec1 301405
52 rec1 301405
 
Fractales + Trangulo de Sierpinski en Java
Fractales + Trangulo de Sierpinski  en JavaFractales + Trangulo de Sierpinski  en Java
Fractales + Trangulo de Sierpinski en Java
 
Conversión de un AFN a un AFD.
Conversión de un AFN a un AFD.Conversión de un AFN a un AFD.
Conversión de un AFN a un AFD.
 
Reconocimiento unidad 3 Metodos Numericos
Reconocimiento unidad 3 Metodos NumericosReconocimiento unidad 3 Metodos Numericos
Reconocimiento unidad 3 Metodos Numericos
 
Examen final Autómatas y Lenguajes Formales
Examen final Autómatas y Lenguajes FormalesExamen final Autómatas y Lenguajes Formales
Examen final Autómatas y Lenguajes Formales
 
Leccion evaluativa 2
Leccion evaluativa 2Leccion evaluativa 2
Leccion evaluativa 2
 
Leccion evaluativa 2
Leccion evaluativa 2Leccion evaluativa 2
Leccion evaluativa 2
 
CODETEC- Proyecto Final Taller de Investigacion 2
CODETEC- Proyecto Final Taller de Investigacion 2CODETEC- Proyecto Final Taller de Investigacion 2
CODETEC- Proyecto Final Taller de Investigacion 2
 
Seguridad en Dispositivos de Almacenamiento
Seguridad en Dispositivos de AlmacenamientoSeguridad en Dispositivos de Almacenamiento
Seguridad en Dispositivos de Almacenamiento
 

Similar a Lenguajes autómatas.

Trabajo practico libro2
Trabajo practico libro2Trabajo practico libro2
Trabajo practico libro2
exequiel9035a
 
Tipos y lasificacion de lenguajes de programacion
Tipos y lasificacion de lenguajes de programacionTipos y lasificacion de lenguajes de programacion
Tipos y lasificacion de lenguajes de programacion
Mary Guaman
 
Tipos y lasificacion de lenguajes de programacion
Tipos y lasificacion de lenguajes de programacionTipos y lasificacion de lenguajes de programacion
Tipos y lasificacion de lenguajes de programacion
Gladysmg Lema
 
Libro2 - PROGRAMACION2
Libro2 - PROGRAMACION2Libro2 - PROGRAMACION2
Libro2 - PROGRAMACION2
gabrielalija10
 
Libro 2 - ORIGENES DE LA PROGRAMACION
Libro 2 - ORIGENES DE LA PROGRAMACIONLibro 2 - ORIGENES DE LA PROGRAMACION
Libro 2 - ORIGENES DE LA PROGRAMACION
Gabriel Alija
 
Tipos y lasificacion de lenguajes de programacion
Tipos y lasificacion de lenguajes de programacionTipos y lasificacion de lenguajes de programacion
Tipos y lasificacion de lenguajes de programacion
Mary Guaman
 
Tipos y lasificacion de lenguajes de programacion
Tipos y lasificacion de lenguajes de programacionTipos y lasificacion de lenguajes de programacion
Tipos y lasificacion de lenguajes de programacion
Mary Guaman
 
Lenguajes de programacion alejandra salvador bartolon
Lenguajes de programacion alejandra salvador bartolonLenguajes de programacion alejandra salvador bartolon
Lenguajes de programacion alejandra salvador bartolon
alejandritasalva
 

Similar a Lenguajes autómatas. (20)

Introducción a la Gerencia Informática
Introducción a la Gerencia InformáticaIntroducción a la Gerencia Informática
Introducción a la Gerencia Informática
 
lenguajes de programacion
lenguajes de programacionlenguajes de programacion
lenguajes de programacion
 
01. lenguajes de programación autor virtuniversidad
01. lenguajes de programación autor virtuniversidad01. lenguajes de programación autor virtuniversidad
01. lenguajes de programación autor virtuniversidad
 
01. Lenguajes de programación autor Virtuniversidad.pdf
01. Lenguajes de programación autor Virtuniversidad.pdf01. Lenguajes de programación autor Virtuniversidad.pdf
01. Lenguajes de programación autor Virtuniversidad.pdf
 
Lenguajes de programación
Lenguajes de programaciónLenguajes de programación
Lenguajes de programación
 
Trabajo practico libro2
Trabajo practico libro2Trabajo practico libro2
Trabajo practico libro2
 
Tipos y lasificacion de lenguajes de programacion
Tipos y lasificacion de lenguajes de programacionTipos y lasificacion de lenguajes de programacion
Tipos y lasificacion de lenguajes de programacion
 
Tipos y lasificacion de lenguajes de programacion
Tipos y lasificacion de lenguajes de programacionTipos y lasificacion de lenguajes de programacion
Tipos y lasificacion de lenguajes de programacion
 
Clasificación de los lenguajes de programación
Clasificación de los lenguajes de programaciónClasificación de los lenguajes de programación
Clasificación de los lenguajes de programación
 
Lenguajes de programación
Lenguajes de programaciónLenguajes de programación
Lenguajes de programación
 
Libro2 - PROGRAMACION2
Libro2 - PROGRAMACION2Libro2 - PROGRAMACION2
Libro2 - PROGRAMACION2
 
Libro 2 - ORIGENES DE LA PROGRAMACION
Libro 2 - ORIGENES DE LA PROGRAMACIONLibro 2 - ORIGENES DE LA PROGRAMACION
Libro 2 - ORIGENES DE LA PROGRAMACION
 
T1. Introducción a la Teoría de Lenguajes Formales.pptx
T1. Introducción a la Teoría de Lenguajes Formales.pptxT1. Introducción a la Teoría de Lenguajes Formales.pptx
T1. Introducción a la Teoría de Lenguajes Formales.pptx
 
Tipos y lasificacion de lenguajes de programacion
Tipos y lasificacion de lenguajes de programacionTipos y lasificacion de lenguajes de programacion
Tipos y lasificacion de lenguajes de programacion
 
Tipos y lasificacion de lenguajes de programacion
Tipos y lasificacion de lenguajes de programacionTipos y lasificacion de lenguajes de programacion
Tipos y lasificacion de lenguajes de programacion
 
Kmi
KmiKmi
Kmi
 
CLASIFICACION DE LENGUAJES DE PROGRAMACION
CLASIFICACION DE LENGUAJES DE PROGRAMACION CLASIFICACION DE LENGUAJES DE PROGRAMACION
CLASIFICACION DE LENGUAJES DE PROGRAMACION
 
Lenguajes
LenguajesLenguajes
Lenguajes
 
Lenguajes
LenguajesLenguajes
Lenguajes
 
Lenguajes de programacion alejandra salvador bartolon
Lenguajes de programacion alejandra salvador bartolonLenguajes de programacion alejandra salvador bartolon
Lenguajes de programacion alejandra salvador bartolon
 

Más de LuiS YmAY

Unidad5. algebra relacional. yama.may.joseluis.j4
Unidad5. algebra relacional. yama.may.joseluis.j4Unidad5. algebra relacional. yama.may.joseluis.j4
Unidad5. algebra relacional. yama.may.joseluis.j4
LuiS YmAY
 
UNIDAD 4 DISEÑO DE BASE DE DATOS RELACIONAL
UNIDAD 4 DISEÑO DE BASE DE DATOS RELACIONALUNIDAD 4 DISEÑO DE BASE DE DATOS RELACIONAL
UNIDAD 4 DISEÑO DE BASE DE DATOS RELACIONAL
LuiS YmAY
 
Unidad 2. modelo entidad relacion
Unidad 2. modelo entidad relacionUnidad 2. modelo entidad relacion
Unidad 2. modelo entidad relacion
LuiS YmAY
 
Tipos de servidores
Tipos de servidoresTipos de servidores
Tipos de servidores
LuiS YmAY
 
U7.resumen.ANALISIS DE LOS ALGORITMOS
U7.resumen.ANALISIS DE LOS ALGORITMOSU7.resumen.ANALISIS DE LOS ALGORITMOS
U7.resumen.ANALISIS DE LOS ALGORITMOS
LuiS YmAY
 
UNIDAD 7 ANALISIS DE LOS ALGORITMOS
UNIDAD 7 ANALISIS DE LOS ALGORITMOSUNIDAD 7 ANALISIS DE LOS ALGORITMOS
UNIDAD 7 ANALISIS DE LOS ALGORITMOS
LuiS YmAY
 
Fisica general.cinetica
Fisica general.cineticaFisica general.cinetica
Fisica general.cinetica
LuiS YmAY
 
Programacion no lineaL
Programacion no lineaLProgramacion no lineaL
Programacion no lineaL
LuiS YmAY
 
METODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTOMETODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTO
LuiS YmAY
 
Fisica.optica
Fisica.opticaFisica.optica
Fisica.optica
LuiS YmAY
 

Más de LuiS YmAY (16)

Unidadi. lenguajes de interfaz
Unidadi.   lenguajes de interfazUnidadi.   lenguajes de interfaz
Unidadi. lenguajes de interfaz
 
Transacciones y sql procedural EN MySQL
Transacciones y sql procedural EN MySQLTransacciones y sql procedural EN MySQL
Transacciones y sql procedural EN MySQL
 
Externalizacion e internacionalizacion de costos
Externalizacion e internacionalizacion de costosExternalizacion e internacionalizacion de costos
Externalizacion e internacionalizacion de costos
 
programacion.en android.joseluis.yama.may.isc.j4
programacion.en android.joseluis.yama.may.isc.j4programacion.en android.joseluis.yama.may.isc.j4
programacion.en android.joseluis.yama.may.isc.j4
 
Dispositivos logicos programables
Dispositivos logicos programablesDispositivos logicos programables
Dispositivos logicos programables
 
conversores analogicos digitales y digitales analogico
conversores analogicos digitales y digitales analogicoconversores analogicos digitales y digitales analogico
conversores analogicos digitales y digitales analogico
 
Unidad5. algebra relacional. yama.may.joseluis.j4
Unidad5. algebra relacional. yama.may.joseluis.j4Unidad5. algebra relacional. yama.may.joseluis.j4
Unidad5. algebra relacional. yama.may.joseluis.j4
 
UNIDAD 4 DISEÑO DE BASE DE DATOS RELACIONAL
UNIDAD 4 DISEÑO DE BASE DE DATOS RELACIONALUNIDAD 4 DISEÑO DE BASE DE DATOS RELACIONAL
UNIDAD 4 DISEÑO DE BASE DE DATOS RELACIONAL
 
Unidad 2. modelo entidad relacion
Unidad 2. modelo entidad relacionUnidad 2. modelo entidad relacion
Unidad 2. modelo entidad relacion
 
Tipos de servidores
Tipos de servidoresTipos de servidores
Tipos de servidores
 
U7.resumen.ANALISIS DE LOS ALGORITMOS
U7.resumen.ANALISIS DE LOS ALGORITMOSU7.resumen.ANALISIS DE LOS ALGORITMOS
U7.resumen.ANALISIS DE LOS ALGORITMOS
 
UNIDAD 7 ANALISIS DE LOS ALGORITMOS
UNIDAD 7 ANALISIS DE LOS ALGORITMOSUNIDAD 7 ANALISIS DE LOS ALGORITMOS
UNIDAD 7 ANALISIS DE LOS ALGORITMOS
 
Fisica general.cinetica
Fisica general.cineticaFisica general.cinetica
Fisica general.cinetica
 
Programacion no lineaL
Programacion no lineaLProgramacion no lineaL
Programacion no lineaL
 
METODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTOMETODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTO
 
Fisica.optica
Fisica.opticaFisica.optica
Fisica.optica
 

Último

Profecia 2300 dias explicada, Daniel 8:14
Profecia 2300 dias explicada, Daniel 8:14Profecia 2300 dias explicada, Daniel 8:14
Profecia 2300 dias explicada, Daniel 8:14
KevinBuenrostro4
 
ANTOLOGIA COMPLETA ANITA LA ABEJITA PARA LA LECTOESCRITURA EN PRIMER GRADO.pdf
ANTOLOGIA COMPLETA ANITA LA ABEJITA PARA LA LECTOESCRITURA EN PRIMER GRADO.pdfANTOLOGIA COMPLETA ANITA LA ABEJITA PARA LA LECTOESCRITURA EN PRIMER GRADO.pdf
ANTOLOGIA COMPLETA ANITA LA ABEJITA PARA LA LECTOESCRITURA EN PRIMER GRADO.pdf
lvela1316
 

Último (20)

a propósito del estado su relevancia y definiciones
a propósito del estado su relevancia y definicionesa propósito del estado su relevancia y definiciones
a propósito del estado su relevancia y definiciones
 
Resumen Acuerdo 05 04 24.pdf por el que se rigen los Consejos Técnicos Escolares
Resumen Acuerdo 05 04 24.pdf por el que se rigen los Consejos Técnicos EscolaresResumen Acuerdo 05 04 24.pdf por el que se rigen los Consejos Técnicos Escolares
Resumen Acuerdo 05 04 24.pdf por el que se rigen los Consejos Técnicos Escolares
 
Tipologías de vínculos afectivos (grupo)
Tipologías de vínculos afectivos (grupo)Tipologías de vínculos afectivos (grupo)
Tipologías de vínculos afectivos (grupo)
 
PATRONES DE REFERENCIA, CRITERIOS Y DIAGNOSTICO Angeles.pptx
PATRONES DE REFERENCIA, CRITERIOS Y DIAGNOSTICO Angeles.pptxPATRONES DE REFERENCIA, CRITERIOS Y DIAGNOSTICO Angeles.pptx
PATRONES DE REFERENCIA, CRITERIOS Y DIAGNOSTICO Angeles.pptx
 
Sesión de clase: Luz desde el santuario.pdf
Sesión de clase: Luz desde el santuario.pdfSesión de clase: Luz desde el santuario.pdf
Sesión de clase: Luz desde el santuario.pdf
 
TRABAJO CON TRES O MAS FRACCIONES PARA NIÑOS
TRABAJO CON TRES O MAS FRACCIONES PARA NIÑOSTRABAJO CON TRES O MAS FRACCIONES PARA NIÑOS
TRABAJO CON TRES O MAS FRACCIONES PARA NIÑOS
 
Sesión de clase Motivados por la esperanza.pdf
Sesión de clase Motivados por la esperanza.pdfSesión de clase Motivados por la esperanza.pdf
Sesión de clase Motivados por la esperanza.pdf
 
LA GEOMETRÍA Y LOS SISTEMAS ANGULARES, APRENDER LEYENDO LA BIBLIA
LA GEOMETRÍA Y LOS SISTEMAS ANGULARES, APRENDER LEYENDO LA BIBLIALA GEOMETRÍA Y LOS SISTEMAS ANGULARES, APRENDER LEYENDO LA BIBLIA
LA GEOMETRÍA Y LOS SISTEMAS ANGULARES, APRENDER LEYENDO LA BIBLIA
 
Lecciones 07 Esc. Sabática. Motivados por la esperanza
Lecciones 07 Esc. Sabática. Motivados por la esperanzaLecciones 07 Esc. Sabática. Motivados por la esperanza
Lecciones 07 Esc. Sabática. Motivados por la esperanza
 
11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx
11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx
11.NEOLIBERALISMO: que es, ventajas, desventajas, consecuenciaspptx
 
Cerebelo Anatomía y fisiología Clase presencial
Cerebelo Anatomía y fisiología Clase presencialCerebelo Anatomía y fisiología Clase presencial
Cerebelo Anatomía y fisiología Clase presencial
 
Revista Faro Normalista 6, 18 de mayo 2024
Revista Faro Normalista 6, 18 de mayo 2024Revista Faro Normalista 6, 18 de mayo 2024
Revista Faro Normalista 6, 18 de mayo 2024
 
proyecto semana de los Jardines, actividades a realizar para resaltar esta fecha
proyecto semana de los Jardines, actividades a realizar para resaltar esta fechaproyecto semana de los Jardines, actividades a realizar para resaltar esta fecha
proyecto semana de los Jardines, actividades a realizar para resaltar esta fecha
 
Análisis de los factores internos en una Organización
Análisis de los factores internos en una OrganizaciónAnálisis de los factores internos en una Organización
Análisis de los factores internos en una Organización
 
IMPLICACIONES BIOÉTICAS ANTE EL TRANSHUMANISMO A PARTIR DEL PENSAMIENTO FILOS...
IMPLICACIONES BIOÉTICAS ANTE EL TRANSHUMANISMO A PARTIR DEL PENSAMIENTO FILOS...IMPLICACIONES BIOÉTICAS ANTE EL TRANSHUMANISMO A PARTIR DEL PENSAMIENTO FILOS...
IMPLICACIONES BIOÉTICAS ANTE EL TRANSHUMANISMO A PARTIR DEL PENSAMIENTO FILOS...
 
2.15. Calendario Civico Escolar 2024.docx
2.15. Calendario Civico Escolar 2024.docx2.15. Calendario Civico Escolar 2024.docx
2.15. Calendario Civico Escolar 2024.docx
 
CONCLUSIONES DESCRIPTIVAS TIC que ayudaran a tus registrosdocx
CONCLUSIONES DESCRIPTIVAS TIC que ayudaran a tus registrosdocxCONCLUSIONES DESCRIPTIVAS TIC que ayudaran a tus registrosdocx
CONCLUSIONES DESCRIPTIVAS TIC que ayudaran a tus registrosdocx
 
Profecia 2300 dias explicada, Daniel 8:14
Profecia 2300 dias explicada, Daniel 8:14Profecia 2300 dias explicada, Daniel 8:14
Profecia 2300 dias explicada, Daniel 8:14
 
ANTOLOGIA COMPLETA ANITA LA ABEJITA PARA LA LECTOESCRITURA EN PRIMER GRADO.pdf
ANTOLOGIA COMPLETA ANITA LA ABEJITA PARA LA LECTOESCRITURA EN PRIMER GRADO.pdfANTOLOGIA COMPLETA ANITA LA ABEJITA PARA LA LECTOESCRITURA EN PRIMER GRADO.pdf
ANTOLOGIA COMPLETA ANITA LA ABEJITA PARA LA LECTOESCRITURA EN PRIMER GRADO.pdf
 
TEMA EGIPTO.pdf. Presentación civilización
TEMA EGIPTO.pdf. Presentación civilizaciónTEMA EGIPTO.pdf. Presentación civilización
TEMA EGIPTO.pdf. Presentación civilización
 

Lenguajes autómatas.

  • 1. INSTITUTO TECNOLOGICO SUPERIOR DE FELIPE CARRILLO PUERTO INVESTIGACIÓN: U1 INTRODUCCIÓN A LA TEORÍA DE LENGUAJES FORMALES. D O C E N T E: Ing. Marcos Gaspar Pech Cruz. PRESENTA Angulo Estrella Jesús Alberto Lara Domínguez Efraín Yama May José Luis Tun Chulin Johnni Giovanni Canul Chan Rolando Estrada Canul Roger Alfredo Aula: J2 No. De Control 111K0030 No. De Control 111K0043 No. De Control 111K0056 No. De Control 111K0235 No. De Control 111K0231 No. De Control 111K0038 Grupo: B C A R R E R A: Ingeniería en sistemas computacionales M A T E R I A: Lenguajes Y Automatas Felipe Carrillo Puerto, Quintana Roo a 28 de Enero de 2014
  • 2. Introducción a la Teoría de Lenguajes Formales Contenido 1.1 ALFABETO ............................................................................................................................ 3 1.1. CADENA ......................................................................................................................... 3 1.3 LENGUAJES .......................................................................................................................... 4 1.4 TIPOS DE LENGUAJES.......................................................................................................... 4 1.5 HERRAMIENTAS COMPUTACIONALES LIGADAS CON LENGUAJES. ..................................... 6 1.6 ESTRUCTURA DE UN TRADUCTOR. ...................................................................................... 8 1.7 FASES DE UN COMPILADOR. ............................................................................................. 11 ITS Carrillo Puerto Lenguajes Y Autómatas 2 ISC-6B
  • 3. Introducción a la Teoría de Lenguajes Formales INTRODUCCIÓN TEORÍA 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.1. CADENA Una cadena (o palabra) es una secuencia finita de símbolos yuxtapuestos. Por ejemplo a, b y c son símbolos y casa es una cadena. La longitud de una cadena w que se denota como |w|, es el número de símbolos que componen la cadena. Por ejemplo casa tiene una longitud 4. Habitualmente, se emplean las letras minúsculas del principio del alfabeto (o dígitos) para designar a los símbolos y las letras minúsculas del final del alfabeto, normalmente w, x, y y z, para designar cadenas. La cadena vacía, denotada por E es aquella que presenta cero apariciones de símbolos, es una cadena que puede construirse en cualquier alfabeto. ITS Carrillo Puerto Lenguajes Y Autómatas 3 ISC-6B
  • 4. Introducción a la Teoría de Lenguajes Formales La concatenación de dos cadenas es la cadena que se forma al escribir la primera seguida de la segunda, sin que haya espacio entre ellas, Por ejemplo la concatenación de padre y madre es padremadre. La yuxtaposición se utiliza como el operador de concatenación. Esto es si w y x son cadenas, entonces wx es la concatenación de estas dos cadenas. La cadena vacía es la identidad para el operador de concatenación, es decir Ew=wE para cada cadena de w. 1.3 LENGUAJES 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. El conjunto vacío Ø y el conjunto formado por la cadena vacía { E } son lenguajes. El conjunto de palíndromos (cadenas que se leen igual de izquierda a derecha y viceversa) sobre el alfabeto {0,1} es un lenguaje infinito. Algunos elementos de este lenguaje son E, 0, 1, 00, 01,010, y 1101011. Por consiguiente vemos que el conjunto de todos los palíndromos sobre una colección finita de símbolos no es, técnicamente hablando, un lenguaje, porque sus cadenas no se construyen colectivamente a partir de un alfabeto. 1.4 TIPOS DE LENGUAJES 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. ITS Carrillo Puerto Lenguajes Y Autómatas 4 ISC-6B
  • 5. Introducción a la Teoría de Lenguajes Formales 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. Nota: EDD's son las abreviaturas de Estructuras Dinámicas de Datos, algo muy utilizado en todos los lenguajes de programación. Son estructuras que pueden cambiar de tamaño durante la ejecución del programa. Nos permiten crear estructuras de datos que se adapten a las necesidades reales de un programa. 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). Lenguajes de Medio nivel Estos lenguajes se encuentran en un punto medio entre los dos anteriores. Dentro de estos lenguajes podría situarse C ya que puede acceder a los registros del sistema, trabajar con direcciones de memoria, todas ellas características de lenguajes de bajo nivel y a la vez realizar operaciones de alto nivel. Generaciones La evolución de los lenguajes de programación se puede dividir en 5 etapas o ITS Carrillo Puerto Lenguajes Y Autómatas 5 ISC-6B
  • 6. Introducción a la Teoría de Lenguajes Formales generaciones.  Primera generación: lenguaje máquina.  Segunda generación: se crearon los primeros lenguajes ensambladores.  Tercera generación: se crean los primeros lenguajes de alto nivel. Ej. C, Pascal, Cobol…  Cuarta generación. Son los lenguajes capaces de generar código por si solos, son los llamados RAD, con lo cuales se pueden realizar aplicaciones sin ser un experto en el lenguaje. Aquí también se encuentran los lenguajes orientados a objetos, haciendo posible la reutilización d partes del código para otros programas. Ej. Visual, Natural Adobe.  Quinta generación: aquí se encuentran los lenguajes orientados a la inteligencia artificial. Estos lenguajes todavía están poco desarrollados. Ej. LISP 1.5 HERRAMIENTAS COMPUTACIONALES LIGADAS CON LENGUAJES. Herramientas Desarrolladas En Programación De Sistemas  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. Ejemplos: Editores de C, Pascal, Visual Studio (Fox Pro, Basic, etc.). Para desarrollar un programa en Fortran, el primer paso es obviamente, escribir el código fuente, utilizando un editor de texto disponible en la computadora y guardándolo en archivos texto de extensión .f, .f90, .f95, .for o de extensión que soporte el compilador y el sistema operativo de la computadora. En computadoras que funcionan bajo una versión de LINUX, lo usual que se utiliza, como editor de texto, es emacs. El Cornell Program Synthesizer (CPS). Es quizá el ejemplo más conocido y el más referenciado en la literatura. Ha servido de ejemplo para ITS Carrillo Puerto Lenguajes Y Autómatas 6 ISC-6B
  • 7. Introducción a la Teoría de Lenguajes Formales desarrollar otros. Permite programar en un subconjunto del lenguaje PL/I denominado PL/CS. Gandalf es un conjunto de varios subproyectos. Su objetivo principal fue crear un entorno completo de desarrollo de software, y no sólo un entorno de programación. Doxygen: Genera documentación de código C/C++ en forma de páginas web, incluyendo diversos índices, el código fuente coloreado e indexado, e incluso diagramas de dependencia entre módulos. Javadoc: Para lenguaje Java. Usa un formato prefijado de comentario para las descripciones, incluyendo marcas HTML embebidas y palabras clave introducidas con el símbolo @. Se generan documentos en forma de páginas web. AdaBrowse/AdaDoc/Ada2html: Son herramientas similares a las anteriores para código en lenguaje Ada. Igualmente generan páginas web. GVim es la versión para Windows del editor de Unix Vim, un editor para programadores altamente configurable. JEdit es un editor orientado a la programación. Komodo Edit es un editor para lenguajes dinámicos (Perl, PHP, Python, Ruby y TCL) y de páginas web (JavaScript, CSS, HTML y XML). Este programa es la versión libre de un programa comercial. Minimum Profit es un editor de texto para programadores. Notepad++ es un editor de código fuente para programadores basado en Scintilla para java y c.  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 ITS Carrillo Puerto Lenguajes Y Autómatas 7 ISC-6B
  • 8. Introducción a la Teoría de Lenguajes Formales 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. Ejemplos: Editores de C y Pascal. Verificadores estáticos de sintaxis (como lint) permiten detectar muchos errores antes de la compilación. (Algo parecido a lo que se obtiene con la opción -fsyntax- only del compilador de GNU gcc).  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 Ejemplos: Los intérpretes (para lenguajes como Lisp o Basic, o para programas con sus propios lenguajes interpretados como Derive o Mathematica) Shells de sistemas operativos o de alguna aplicación como un SMBD. http://es.scribd.com/doc/159086023/Lenguajes-y-Automatas-i#download 1.6 ESTRUCTURA DE UN TRADUCTOR. Un traductor es un mediador entre dos entidades: emisoras y receptoras, los mediadores enmascaran la complejidad y heterogeneidad de los lenguajes. Un traductor convierte un lenguaje de entrada (código fuente) a una de salida (código objeto). Un traductor se define 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. Los traductores engloban tanto a los compiladores (en los que el lenguaje destino suele ser código máquina) como a los intérpretes (en los que el lenguaje destino está constituido por las acciones atómicas que puede ejecutar ITS Carrillo Puerto Lenguajes Y Autómatas 8 ISC-6B
  • 9. Introducción a la Teoría de Lenguajes Formales el intérprete). La figura 1.1 muestra el esquema básico que compone a un compilador/intérprete. Tipos de traductores. Compiladores Es aquel traductor que tiene como entrada una sentencia en lenguaje formal y como salida tiene un fichero ejecutable, es decir, realiza una traducción de un código de alto nivel a código máquina (también se entiende por compilador aquel programa que proporciona un fichero objeto en lugar del ejecutable final). Intérpretes Es como un compilador, solo que la salida es una ejecución. El programa de entrada se reconoce y ejecuta a la vez. No se produce un resultado físico (código máquina) sino lógico (una ejecución). Su principal ventaja es que permiten una fácil depuración. Entre los inconvenientes podemos citar, en primer lugar, la lentitud de ejecución, ya que al ejecutar a la vez que se traduce no puede aplicarse un alto grado de optimización. Otro inconveniente es que durante la ejecución, el intérprete debe residir en memoria, por lo que consumen más recursos. La figura 1.2 muestra los pasos a seguir en estos lenguajes para obtener una ejecución. ITS Carrillo Puerto Lenguajes Y Autómatas 9 ISC-6B
  • 10. Introducción a la Teoría de Lenguajes Formales En el proceso de traducción se identifican dos fases principales: Fase de Análisis Fase de Síntesis ITS Carrillo Puerto Lenguajes Y Autómatas 10 ISC-6B
  • 11. Introducción a la Teoría de Lenguajes Formales 1.7 FASES DE UN COMPILADOR. Definición de Compilador. Un compilador es un programa informático que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación, es decir programa que permite traducir el código fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (lenguaje máquina). Generando un programa equivalente a capaz de interpretar. FASES DE UN COMPILADOR. Análisis Léxico. En esta fase se lee los caracteres del programa fuente y se agrupan en cadenas que representan los componentes léxicos. A la secuencia ITS Carrillo Puerto Lenguajes Y Autómatas 11 ISC-6B
  • 12. Introducción a la Teoría de Lenguajes Formales de caracteres que representa un componente léxico se le llama lexema (o con su nombre en inglés token). Análisis Sintáctico. Los componentes léxicos se agrupan gramaticales que el compilador utiliza para sintetizar la salida. en frases Análisis Semántico. Intenta detectar instrucciones que tengan la estructura sintáctica correcta, pero que no tengan significado para la operación implicada. Generación de código Intermedio. Se puede considerar esta operación intermedia como un subprograma para una máquina abstracta, a esta representación debe tener dos propiedades importantes: debe ser fácil de producir y fácil de traducir al programa objeto. Optimización de Código. Se trata de mejorar el código intermedio, de modo que resulte un código de máquina más rápido de ejecutar. Generación de Código. Esta constituye la fase final de un compilador. Administrador de la tabla de símbolos. Se encarga de manejar los accesos a la tabla de símbolos, en cada una de las etapas de compilación de un programa. Manejador de errores. Es posible encontrar errores. De esta forma podrán controlarse más eficientemente los errores encontrados en cada una de las fases de la compilación de un programa.  Cada fase puede encontrar errores y debe tratarlo para continuar con la Compilación, permitiendo detectar más errores  Las fases de Análisis Sintáctico y Semántico manejan la mayoría de los errores  En el Análisis Semántico se detectan errores donde la estructura sintáctica es correcta pero no tiene significado la operación (Por. ej. sumar dos ID, donde uno es el nombre de una matriz y el otro un nombre de procedimiento). Programas Relacionados con un Compilador. Preprocesadores (producen la entrada para una computadora). Procesamiento de Macros Inclusión de archivos Preprocesadores “racionales” (estructura de control) Extensiones a lenguajes (bases de datos). Ensambladores Producen código ensamblador que se pasa a un ensamblador para su procesamiento (versión mnemotécnica del código de máquina: nombres de operaciones y nombres de direcciones de memoria). ITS Carrillo Puerto Lenguajes Y Autómatas 12 ISC-6B
  • 13. Introducción a la Teoría de Lenguajes Formales ITS Carrillo Puerto Lenguajes Y Autómatas 13 ISC-6B