Вы находитесь на странице: 1из 4

Instituto Tecnolgico de Saltillo

Departamento de Sistemas y Computacin


Ingeniera en Sistemas Computacionales
Lenguajes y Autmatas I:
Trabajo de la Materia
Alumno: Carlos Alberto Vanegas Hernndez
Profesor: Luis Enrique Castauela
Tema 1. Introduccin a la Teora de Lenguajes Formales
1.1 Alfabeto.
Un alfabeto es un conjunto finito no vaco cuyos elementos se llaman smbolos.
Denotamos un alfabeto arbitrario con la letra sigma ().
1.1.1 Smbolos
Es una entidad abstracta que no se puede definir, ya que se dejara como un
axioma. Igual que se define un punto en la geometra. Normalmente los smbolos
son letras, dgitos, caracteres; los smbolos pueden estar formados por varias
letras o caracteres.
1.2 Cadenas de caracteres
Una cadena de caracteres (que tambin se denomina en ocasiones palabra) es
una secuencia finita de smbolos seleccionados de algn alfabeto. Por ejemplo,
01101 es una cadena del alfabeto binario = (0,1). La cadena 111 es otra cadena
de dicho alfabeto.
Cadena Vacia:
La cadena vaca es aquella cadena que presenta cero apariciones de smbolos.
Esta cadena, designada por E, es una cadena que puede construirse en cualquier
alfabeto.
Longitud de una cadena
Suele ser til clasificar las cadenas por su longitud, es decir, el nmero de
posiciones ocupadas por smbolos dentro de la cadena. Es habitual decir que la
longitud de una cadena es igual al nmero de smbolos que contiene; esta
proposicin est aceptada coloquialmente, sin embargo, no es estrictamente
correcta. As, en la cadena 01101 slo hay 2 smbolos, 0 y 1, aunque tiene cinco
posiciones para los mismos, y su longitud es igual a 5. Sin embargo, generalmente

podremos utilizar la expresin nmero de smbolos cuando realmente a lo que se


est haciendo referencia es el nmero de posiciones.
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 notacin exponencial.
Definimos ^2 para que sea el conjunto de las cadenas de longitud k, tales que
cada uno de los smbolos de las mismas pertenece a .
Concatenacin de cadenas
Sean x e y dos cadenas. Entonces, xy denota la concatenacin de x e y, es decir,
la cadena formada por una copia de x seguida de una copia de y. Dicho de
manera ms precisa, si x es la cadena compuesta por i smbolos x=a1 a2a3.ai e y
es la cadena compuesta por j smbolos y=b1b2,,,,,bj, entonces xy es la cadena de
longitud i+j:xy=a1a2a1b1b2.bj.

1.3 Lenguajes
Los lenguajes son conjuntos de cadenas, todas ellas seleccionadas de un ,
donde es un determinado alfabeto se denomina lenguaje. Si es un alfabeto y L
pertenece a , entonces L es un lenguaje de . Observe que un lenguaje de no
necesita incluir cadenas con todos los smbolos de , ya que una ve que hemos
establecido que L es un lenguaje de , tambin sabemos que es un lenguaje de
cualquier alfabeto que sea un superconjunto de .
La eleccin del trmino lenguaje puede parecer extraa. Sin embargo, los
lenguajes habituales pueden interpretarse como conjuntos de cadenas del alfabeto
que consta de todas las letras. Otro ejemplo es el lenguaje C, o cualquier otro
lenguaje de programacin, donde los programas correctos son un subconjunto de
los caracteres ASCII. El alfabeto en concreto puede diferir ligeramente entre
diferentes lenguajes de programacin, aunque generalmente incluye las letras
maysculas y minsculas, los dgitos, los caracteres de puntuacin y los smbolos
matemticos.
Sin embargo, existen tambin otros muchos lenguajes utilizados en el
estudio de los autmatas. Algunos ejemplos son los siguientes:
1. El lenguaje de todas las cadenas que constan de n ceros seguidos de n
unos para cualquier n >=0 {e, 01,0011,000111,.}.
2. El conjunto de cadenas formadas por el mismo nmero de ceros que de
unos:
{e, 01,10,0011,0101,1001}

3. El conjunto de nmeros binarios cuyo valor es un nmero primo:


{10,11,101,111,1011..}
4. ^* es un lenguaje para cualquier alfabeto .
5. 0, el lenguaje vaco, es un lenguaje de cualquier alfabeto.
6. {E}, el lenguaje que consta slo de la cadena vaca, tambin es un lenguaje
de cualquier alfabeto. Observe que 0 diferente de {E}; el primero no
contiene ninguna cadena y el segundo slo tiene una cadena.
La nica restriccin importante sobre lo que puede ser un lenguaje es que todos
los alfabetos son finitos. De este modo, los lenguajes, aunque pueden tener un
nmero infinito de cadenas, estn restringidos a que dichas cadenas estn
formadas por los smbolos que definen un alfabeto finito y prefijado.
1.4 Tipos de lenguajes
Lenguaje declarativo
Los lenguajes declarativos son los ms parecidos al castellano o ingls en su
potencia expresiva y funcionalidad, y estn en el nivel ms alto respecto a los
otros. Son fundamentalmente lenguajes de rdenes, dominados por sentencias
que expresan lo que hay que hace en vez de cmo hacerlo.
La programacin declarativa, que utiliza los principios del lenguaje declarativo esta
basado en el desarrollo de programas especificando o declarando un conjunto de
condiciones, proposiciones, afirmaciones, restricciones ecuaciones o
transformaciones que describen el problema y detallan su solucin. Dicha solucin
es obtenida mediante mecanismos internos de control, sin especificar
exactamente cmo encontrarla (tan slo se indica a la computadora qu es lo que
se desea obtener o qu es lo que se est buscando). No existen asignaciones
destructivas, y las variables son utilizadas con transparencia referencial.
Lenguajes de alto nivel
Los lenguajes de alto nivel son los ms utilizados como lenguajes de
programacin. Aunque no son fundamentalmente declarativos, estos lenguajes
permiten que los algoritmos se expresen en un nivel y estilo de escritura
fcilmente legible y comprensible por otros programadores. Adems, los lenguajes
de alto nivel suelen tener la caracterstica de transportabilidad.
Lenguajes ensambladores
Es un lenguaje de programacin de bajo nivel para los computadores. Implementa
una representacin simblica de los cdigos de mquina binarios y otras
constantes necesarias para programar una arquitectura dada de CPU, y constituye
la representacin ms directa del cdigo mquina especfico para cada

arquitectura legible por un programador. Esta representacin suele ser definida por
el fabricante de hardware, y est basada en los mnemnicos que simbolizan los
pasos de procesamiento, los registros del procesador, las posiciones de memoria
y otras caractersticas del lenguaje. Un lenguaje ensamblador por tanto es
especfico de cierta arquitectura de computador fsica (o virtual). Esto est en
contraste con la mayora de los lenguajes de programacin de alto nivel, que
idealmente son porttiles.
Un programa utilitario llamado ensamblador es usado para traducir sentencias del
lenguaje ensamblador al cdigo de mquina del computador objetivo. El
ensamblador realiza una traduccin ms o menos isomorfa (un mapeo de uno a
uno) desde las sentencias mnemnicas a las instrucciones y datos de mquina.
Esto est en contraste con los lenguajes de alto nivel, en los cuales una sola
declaracin generalmente da lugar a muchas instrucciones de mquina.

Вам также может понравиться