Sei sulla pagina 1di 26

UNIVERSIDAD NACIONAL DEL OESTE

LENGUAJES FORMALES

Profesor:
Prof. Mag. Ing. Pablo Pandolfo
Programa de la materia:
 Unidad 1: Lenguajes Formales.
 Unidad 2: Gramáticas Formales.
 Unidad 3: Lenguajes Regulares.
 Unidad 4: Lenguajes Incontextuales.
 Unidad 5: Maquina de Turing.
 Unidad 6: Proceso de Compilación.
Bibliografía de la materia:
AUTOR TÍTULO EDITORIAL EDICIÓN
Isasi Pedro, Lenguajes, Addison 1ra. Edición
Martínez Gramáticas y Wesley (Español) 1997
Paloma y Autómatas
Borrajo Daniel
Kelley Dean Teoría de Prentice Hall 1ra. Edición
Autómatas y (Español) 1995
Lenguajes
Formales
Brena Ramón Autómatas y 1ra. Edición
Lenguajes: Un (Español) 2003
enfoque de
diseño
Pablo Apuntes de la 2017
Pandolfo materia
Criterios de evaluación de la materia:

Resultado de los Exámenes Parciales.


Rendimiento en el Aula.
REGULARIDAD
Cumplimiento y Calidad de los Trabajos
Prácticos.

FINAL Resultado del Examen Final (oral y/o escrito).


Lenguajes Formales

 Definición:

 Los LENGUAJES FORMALES están formados por PALABRAS, las


palabras son CADENAS y las cadenas están constituidas por
SÍMBOLOS de un ALFABETO.
Lenguajes Formales

 Símbolo:
 Es el elemento constructivo básico; es la entidad fundamental,
indivisible, a partir de la cual se forman los alfabetos.
 Ejemplos:
La letra a es un símbolo que forma parte del alfabeto
español, inglés, etc.
Los símbolos >, = y + son elementos del alfabeto de los
operadores de los lenguajes Pascal y ANSI C .
Lenguajes Formales

 Alfabeto:
 Es un conjunto (colección de objetos) no vacío y finito de
símbolos.
 Se lo identifica con la letra griega Σ (sigma) y con sus símbolos se
construyen las palabras de un lenguaje.
 Ejemplo:
El alfabeto Σ = {0, 1} proporciona los símbolos utilizados en la
construcción de los números binarios.
Los números enteros con signo en base 10 se construyen con
símbolos del siguiente alfabeto:
Σ = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -, +}
Lenguajes Formales

 Cadena:
 Es una secuencia finita de símbolos tomados de cierto alfabeto
y colocados uno a continuación de otro.
 Se construye CONCATENANDO (yuxtaponiendo) símbolos de un
alfabeto dado.
 Ejemplo:
abac (se lee “a-b-a-c”) es una cadena formada con
símbolos del alfabeto {a, b, c}.
101110 (“uno-cero-uno-uno-uno-cero”) es una cadena
construida con símbolos del alfabeto {0, 1}.
Lenguajes Formales

 Longitud de una cadena:


 La LONGITUD de una cadena S (se representa |S|) es la
cantidad de símbolos que la componen.
 Ejemplos:
La longitud de la cadena abac es: |abac| = 4.
La longitud de la cadena b es: |b| = 1.
Lenguajes Formales

 Cadena vacía:
 Se representa λ (lambda)
 Es la cadena que no tiene símbolos.
 Es la cadena de longitud 0 (|λ| = 0).
 El símbolo λ (lambda) no forma parte de ningún alfabeto.
Lenguajes Formales

 Potenciación de un símbolo:
 cn representa la repetición del símbolo c, n veces.
 Simplifica la escritura de cadenas.
 Ejemplo: aaaaabbbbbbb = a5b7.
Lenguajes Formales

 Concatenación de dos cadenas:


 La operación de CONCATENACIÓN aplicada a cadenas (S1S2)
produce una nueva cadena formada por los símbolos de la
primera cadena seguidos inmediatamente por los símbolos de
la segunda cadena.
 Ejemplo: Sean las cadenas S1 = aab y S2 = ba; entonces,
S1S2 = aabba.
 NO ES CONMUTATIVA.
 La cadena vacía (λ) es la IDENTIDAD para la concatenación.
Esto es: para cualquier cadena S, S λ = λ S = S.
Lenguajes Formales

 Potenciación de una cadena:


 Si S es una cadena, entonces Sn (con n ≥ 1 y entero) representa
la cadena que resulta de concatenar la cadena S, consigo
misma, n-1 veces.
 S0 es λ (la cadena vacía), para cualquier cadena S
 Ejemplo: Sea S = ab; entonces: S3 = SSS = (ab)3 = ababab.
Lenguajes Formales

 Prefijo de una cadena:


 Es una secuencia de cero o más símbolos iniciales de esa
cadena.
 Ejemplo: Sea la cadena abcd. Entonces, sus prefijos son: λ, a,
ab, abc y abcd (la cadena completa).
 Sufijo de una cadena:
 Es una secuencia de cero o más símbolos finales de esa
cadena.
 Ejemplo: Sea la cadena abcd. Entonces, sus sufijos son: λ, d, cd,
bcd y abcd.
Lenguajes Formales

 Subcadena de una cadena:


 Es una secuencia de símbolos que se obtiene eliminando cero o más
símbolos iniciales y cero o más símbolos finales de esa cadena.
 Ejemplo: Sea la cadena abcd. Entonces, sus subcadenas son: abcd,
bcd, cd, d, abc, ab, a, bc, b, c y λ.
Lenguajes Formales
 Lenguaje Natural
 Es el lenguaje hablado y/o escrito que es utilizado por los seres
humanos para comunicarse.
 Características:
EVOLUCIONAN con el paso del tiempo, incorporando
nuevos términos y reglas gramaticales para mejorar y
actualizar la comunicación.
Sus REGLAS GRAMATICALES surgen después del lenguaje,
para poder explicar su estructura, es decir, su sintaxis.
El SIGNIFICADO (o sea, la semántica) de cada palabra y de
cada oración de un lenguaje natural es, en general, más
importante que su composición sintáctica.
 Admite frases ambiguas (puede tener más de una
interpretación). Ejemplo: En el cerro hay una llama.
Lenguajes Formales
 Lenguaje Formal
 Es un conjunto de cadenas formadas con los símbolos de un
alfabeto dado, y tiene una característica fundamental: es un
lenguaje abstracto, en el que el término FORMAL pone de
manifiesto que, en esta disciplina, solo estamos interesados en la
forma de una cadena (sintaxis) y no en su significado
(semántica).
 Están definidos por reglas gramaticales PREESTABLECIDAS y se
deben ajustar rigurosamente a ellas. En consecuencia, un
lenguaje formal nunca puede evolucionar.
 Pueden ser descripto por enumeración (extensión), por
comprensión, mediante una frase en un lenguaje natural
(castellano) o mediante otras formas especiales.
 Ejemplo: Sea Σ = {a}, un alfabeto con un solo símbolo. Los que
siguen son algunos lenguajes que se pueden construir sobre este
alfabeto: L1 = {a}; L2 = {aa, aaa}; L3 = {λ, a, a18}.
Lenguajes Formales
 Cardinalidad de un lenguaje formal:
 Es la cantidad de palabras que lo componen.
 Ejemplos:
L = {a, ab, aab} es un lenguaje de cardinalidad 3 sobre el
alfabeto {a, b}.
El lenguaje L = {λ} es un lenguaje de cardinalidad 1, ya que
contiene una sola palabra.
Lenguajes Formales
 Sublenguaje:
 Dado que un lenguaje formal es un conjunto, un SUBLENGUAJE
es un subconjunto de un lenguaje dado.
 Ejemplo:
 Sea L1 = {a, ab, aab}. Entonces, L2 = {ab, aab} es un sublenguaje de
L1, mientras que L3 = { } es el sublenguaje vacío de L1.
Lenguajes Formales
 Lenguajes formales finitos:
 Lenguajes con un número finito de palabras. L1 = {a, ab, aab}
 Lenguajes formales infinitos:
 Lenguajes con una cantidad infinita de palabras, pero cada
una de longitud finita (no existen las palabras de longitud
infinita).
 Ejemplo: L = {an / n ≥ 1} es un LF infinito ya que no existe un límite
superior para el supra índice n. Cada palabra de este lenguaje
está formada por una secuencia de una o más aes. Por ello, la
concatenación de dos palabras cualesquiera de este lenguaje
producirá siempre otra palabra del lenguaje L. Por esta
propiedad, se dice que este lenguaje L es cerrado bajo la
concatenación.
Lenguajes Formales
 Lenguaje Universal
 Dado un alfabeto Σ, el LENGUAJE UNIVERSAL sobre este alfabeto
es un lenguaje infinito que contiene todas las palabras que se
pueden formar con los símbolos del alfabeto Σ, más la palabra
vacía.
 Se lo representa con la notación Σ*, que se lee “sigma clausura”
o “sigma estrella”.
 Es cerrado bajo concatenación.
 Cualquier lenguaje L sobre el alfabeto Σ es un sublenguaje de
Σ*. Por lo tanto, existen infinitos lenguajes sobre un alfabeto
dado.
 Ejemplo: Si Σ = {a, b}, entonces el Lenguaje Universal para este
alfabeto es: Σ* = {λ, a, b, aa, ab, ba, bb, aaa, aab, aba, abb, ...,
aabaabbbab, …}
Lenguajes Formales

Operaciones con lenguajes


Unión L1 U L2 = {x Є Σ* : x Є L1 v x Є L2}
Intersección L1 ∩ L2 = {x Є Σ* : x Є L1 ^ x Є L2}
Complemento L = {x Є Σ* : x Є L}
Diferencia L1 - L2 = L1 ∩ L2
Diferencia simétrica L1 ∆ L2 = (L1 ∩ L2) U (L1 ∩ L2)
Producto L1 L2 = {xy Є Σ* : x Є L1 ^ y Є L2}
Potencia Ln = {{λ} si n=0 v LLn-1 si n>0}
Cierre estrella (de Kleene) L* = U Li i ≥ 0
Cierre positivo L+ = U Li i > 0
Lenguajes Formales

Operaciones con lenguajes


L* = {λ} U L+
L+ = L*  λ Є L  λ Є L+
L*L = LL* = L+ L* = L* L+ = L+
L*L* = L* pero L+ L+ = L2L*
(L*)* = (L+)* = (L*)+ = L*
(L+)+ = L+
Ø* = {λ}
Ø+ = Ø
Lenguajes Formales
 Ejercicios:
 (1) Dado el alfabeto Σ = {a, b, c}, escriba las palabras del
lenguaje L = {x / x Є Σ}.
 (2) ¿Cuál es la cardinalidad del lenguaje L = {λ, a, aa, aaa}?
 (3) Describa, mediante una frase en castellano, el lenguaje del
Ejercicio 2.
 (4) Escriba todas las palabras del lenguaje L = {a2n+1 / 1 ≤ n ≤ 4}.
 (5) Sea el lenguaje L = {λ, a, ba, abc}. ¿Cuál es el mínimo
alfabeto Σ sobre el que se puede construir este lenguaje?
 (6) Sea el lenguaje L = {0, 00, 01, 010}. Escriba una
concatenación de dos palabras que produce otra palabra de
este lenguaje.
 (7) Sea el lenguaje anterior. Escriba una concatenación de dos
palabras que produce una cadena que no es palabra del
lenguaje.
Lenguajes Formales
 Ejercicios:
 (8) Sea el lenguaje del Ejercicio (6). Escriba tres sublenguajes de
L, de distinta cardinalidad.
 (9) Describa, mediante una frase en castellano, el lenguaje L =
{anbn / 1 ≤ n ≤ 3000}.
 (10) Sea Σ = {a, b} y sea el lenguaje Σ*. ¿Cuántas palabras de
longitud 3 tiene este lenguaje? ¿Y cuántas de longitud 4?
 (11) Sea el lenguaje infinito L = {abn / n ≥ 1}. Escriba las tres
palabras de menor longitud.
 (12) Sea el lenguaje infinito L = {(ab)n / n ≥ 1}. Escriba las tres
palabras de menor longitud.
 (13) Sea el alfabeto Σ = {0, 1}. Describa, por comprensión, un
lenguaje infinito L sobre Σ (que no sea Σ*).
 (14) Describa, mediante una frase en castellano, el lenguaje
definido en el ejercicio anterior.
Lenguajes Formales
 Ejercicios IMPLEMENTACIÓN EN ANSI C o JAVA. Para cada una de
los ejercicios que siguen, construir en ANSI C O JAVA la función
solicitada y un programa que la pruebe con todos los datos
constantes que sean necesarios.
 (15) Calcular la longitud de una cadena
 (16) Determinar si una cadena dada es vacía.
 (17) Calcular la concatenación de dos cadenas.
 (18) Determinar si una subcadena es prefijo de una cadena
dada.

Potrebbero piacerti anche