universidad salesiana de boliviavirtual.usalesiana.edu.bo/web/contenido/dossier/22011/803.pdf ·...

27
Universidad Salesiana de Bolivia Lenguajes Formales y Compiladores Ingeniería de Sistemas 3 UNIVERSIDAD SALESIANA DE BOLIVIA INGENIERIA DE SISTEMAS DOSSIER LENGUAJES FORMALES Y COMPILADORES Octavo Semestre · Ing. Erlinda Elvira Gutierrez Poma I I - 2011

Upload: others

Post on 26-Apr-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Universidad Salesiana de Bolivia Lenguajes Formales y CompiladoresIngeniería de Sistemas

3

UNIVERSIDAD SALESIANADE BOLIVIA

INGENIERIA DE SISTEMAS

DOSSIER

LENGUAJES FORMALES Y COMPILADORES

Octavo Semestre

· Ing. Erlinda Elvira Gutierrez Poma

I I - 2011

Universidad Salesiana de Bolivia Lenguajes Formales y CompiladoresIngeniería de Sistemas

4

UNIDAD I

PRELIMINARES MATEMÁTICOS

1. INTRODUCCIÓN

La teoría de conjuntos es una de las partes de la matemática que se desarrolló desde fines del

siglo XIX. Ha introducido términos como pertenencia, inclusión, unión y otros con significados

rigurosos y su uso sin dudas ha permitido mejorar la presición del lenguaje en áreas de

conocimiento como la teoría de relaciones y funciones, la teoría de las probabilidades y otras.

2. DEFINICIONES Y CONCEPTOS

CONJUNTO

Un conjunto es cualquier agrupación o colección de objetos o entidades o clase de objetos bien

definidos. Los conjuntos se anotan generalmente con una letra mayúscula.

ELEMENTO

Un elemento es cada uno de los objetos que forman un conjunto, se encierran entre llaves,

generalmente se usan minúsculas.

Por ejemplo, el conjunto A formado por los elementos 1, 2 y 3, se anota así:

{ }3,2,1=A

NOTACIÓN DE UN CONJUNTO

Se usan dos maneras para definir un conjunto:

a) extensión o enumeración

b) comprensión.

DEFINICION POR EXTENSION O ENUMERACIÓN

Un conjunto está definido por extensión cuando se nombran o enumeran los elementos uno a uno

Ejemplo: El conjunto M está formado por los elementos –5 y 7, y anotamos { }7;5-=M , lo

hemos definido por extensión.

DEFINICION POR COMPRENSION

Un conjunto está definido por comprensión cuando sus elementos se conocen a través de una

propiedad que les es común a ellos y sólo a ellos.

Esa propiedad suele adquirir la forma de una función proposicional que se transforma en una

proposición verdadera (V) sólo cuando a sus variables se les asignan como valores los elementos

de ese conjunto.

Universidad Salesiana de Bolivia Lenguajes Formales y CompiladoresIngeniería de Sistemas

5

Ejemplo: el mismo conjunto M del caso anterior puede ser definido por comprensión así:

{ }0352/ 2 =--= xxxM

CONJUNTO VACIO

El conjunto vacío es el que no tiene elementos, simbolizado con f

CONJUNTO UNIVERSAL

El conjunto universal es el que reúne a todos los elementos de que se trata, simbolizado con U.

DIAGRAMAS DE VENN-EULER

Estos diagramas están formados por curvas que encierran a los elementos de un conjunto del cual

se necesita proponer un gráfico representativo. La letra mayúscula que lo nombra se coloca fuera

de la curva.

Ejemplo:

A

3. TEORIA Y OPERACIONES CON CONJUNTOS

3.1 LA INCLUSION

Definición: un conjunto A está incluido en otro conjunto B si, y sólo si, todos los elementos de A lo

son también de B.

Los símbolos usuales son:

· Ì (…está incluido en…)

· Ë (…no está incluido en…)

· É (…incluye a…)

Con estos símbolos, podemos enunciar la definición de inclusión así:

BxAxBA ÎÞÎÛÌo, usando el condicional contrarrecíproco (equivalente):

AXBxBA ÏÞÏÛÌ3.1.1 PROPIEDADES DE LA INCLUSIÓN:

a) Reflexiva: todo conjunto está incluido en sí mismo. AAA Ì" :b) Transitiva: CACBBA ÌÞÌÙÌ

Universidad Salesiana de Bolivia Lenguajes Formales y CompiladoresIngeniería de Sistemas

6

c) El conjunto vacío está incluido en cualquier conjunto. AA Ì" f:

d) Todo conjunto está incluido en el Universal: UAA Ì" :

UA

3.2 CONJUNTOS IGUALES

Definición: ABBABA ÌÙÌÛ=3.2.1 PROPIEDADES DE LA IGUALDAD DE CONJUNTOS:

a) Reflexiva: AAA =" :b) Simétrica: ABBA =Þ=

c) Transitiva: CACBBA =Þ=Ù=

3.3 UNION DE DOS CONJUNTOS

Definición: { }BxAxxBABAC ÎÚÎ=ÈÛÈ= /

Gráficamente: UA B

BA È3.3.1 PROPIEDADES

a. Idempotencia: AAA =È

b. Conmutativa: ABBA È=È

c. Asociativa: ( ) ( )CBACBA ÈÈ=ÈÈ

3.4 INTERSECCION DE DOS CONJUNTOS

Definición: { }BxAxxBABAC ÎÙÎ=ÇÛÇ= /

Gráficamente:

UA B

Universidad Salesiana de Bolivia Lenguajes Formales y CompiladoresIngeniería de Sistemas

7

AÇ B

3.4.1 PROPIEDADES:

a. Idempotencia: AAA =Ç

b. Conmutativa: ABBA Ç=Ç

c. Asociativa: ( ) ( )CBACBA ÇÇ=ÇÇ

a) AUA =Ç .

3.5 COMPLEMENTACION DE CONJUNTOS

Definición: se llama complemento de A al conjunto formado por todos los elementos de U, que no

pertenecen a A.

El complemento de A se denota con A´, o con A . Usaremos preferentemente la segunda notación.

Entonces:

{ }AxUxxA ÏÙÎ= / , o bien, { }AxxA Ï= /

En forma gráfica:

UA

A3.5.1 PROPIEDADES DE LA COMPLEMENTACIÓN:

a. Involutiva: AA =)(

b. ABBA ÌÞÌ

3.5.2 PROPIEDADES DISTRIBUTIVAS

La unión y la intersección de conjuntos se relacionan a través de dos propiedades que se enuncian

simbólicamente a continuación:

Propiedad distributiva de la unión, con respecto a la intersección

( ) ( ) ( )CBCACBA ÈÇÈ=ÈÇ

Propiedad distributiva de la intersección, con respecto a la unión

( ) ( ) ( )CBCACBA ÇÈÇ=ÇÈ

4. LEYES DE DE MORGAN

La unión y la intersección de conjuntos se relacionan con la complementación de conjuntos a

través de otras dos propiedades que se enuncian simbólicamente a continuación:

I) Primera ley de De Morgan

Universidad Salesiana de Bolivia Lenguajes Formales y CompiladoresIngeniería de Sistemas

8

( ) BABA Ç=È

II) Segunda ley de De Morgan

( ) BABA È=Ç

5. DIFERENCIA DE DOS CONJUNTOS

Definición: { }BxAxxBABAC ÏÙÎ=-Û-= /

Gráficamente: U

A B

A - B

La diferencia de conjuntos no es conmutativa.

A-B ¹ B-A5.1 PROPIEDADES

a. A-B = A Ç Bb. Propiedad distributiva de la intersección con respecto a la diferencia:

( ) ( ) ( )CBCACBA Ç-Ç=Ç-

6. CONJUNTO UNIVERSAL

En toda aplicación de la teoría de conjuntos todos los conjuntos que se consideran serán muy

probablemente subconjuntos de un mismo conjunto dado. Este conjunto se llamará conjunto

universal y se denotará por U.

Ejemplo:

En geometría plana el conjunto universal es el de todos los puntos del plano.

En los estudios sobre población humana el conjunto universal es el de todas las gentes del mundo.

7. CONJUNTO POTENCIA

La f'amilia de todos los subconjuntos de un conjunto S se llama conjunto potencia de S. Denotado

por 2 S

Ejemplo:

Si M = {a, b}, entonces 2M = {{a, b}, {a}, {b}, _ }

Universidad Salesiana de Bolivia Lenguajes Formales y CompiladoresIngeniería de Sistemas

9

Si un conjunto S es finito, digamos que S tenga n elementos, entonces el conjunto potencia de S

tendrá 2 n elementos, como se puede demostrar. Esta es una razón para llamar conjunto de

potencia de S la clase de los subconjuntos de S y para denotarla por 2S.

8. NOCIONES SOBRE FUNCIONES

8.1 DEFINICIÓN DE FUNCIÓN

Una relación del conjunto A con conjunto B es un subconjunto de producto cartesiano AxB

entonces F es una funcion ó aplicación de A en B si solo si F es una relacion entre A y B tal que

todo elemento de A tiene único correspondiente en B.

F = es una función

A = es el dominio de f

B = es el codominio

8.2 DOMINIO

Es el conjunto de los elementos de A que admite imagen en B.

Df = {X . A / (X, Y) . F}

8.3 CODOMINIO

Es el conjunto de elementos de B que admite una antecedente en A como:

Cof = {y . B / (x,y) . f}

f = {(1,1,), (2,4), (3,9), (4,16),.........}

9. CARDINALIDAD

La cardinalidad de un conjunto se refiere a el numero de elementos de conjunto.

a) A = { } . | A | = 0

b) B = {a, b, c, d } . | B | = 4

c) C = {a1, a2. a3.....ak} . | C | = k

Ejemplo

Cuando es cierta la siguiente igualdad?| A U B | = | A | + | B |Resp = cuando A y B son conjuntos disjuntos, es decir | A Ï B | = 0

Universidad Salesiana de Bolivia Lenguajes Formales y CompiladoresIngeniería de Sistemas

10

UNIDAD II

LENGUAJES FORMALES

1. INTRODUCCION

En matemáticas, lógica e ingeniería de Sistemas, un lenguaje formal es un lenguaje cuyos

símbolos primitivos y reglas están formalmente especificados en su unión. Al conjunto de 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.

2. DEFINICION

Un lenguaje es un conjunto de cadenas sobre un alfabeto específico, un lenguaje formal es idéntico

al conjunto de todas sus fórmulas bien formadas, mientras que el alfabeto debe ser un conjunto

finito y con cada fórmula bien formada debe tener una longitud también finita, un lenguaje formal

puede estar compuesto por un número infinito de fórmulas bien formadas.

Un lenguaje formal es un conjunto de cadenas de símbolos tomados de algún alfabeto. El conjunto

vació esta formado por la cadena vacía { }

{0,1} es un lenguaje infinito. Algunos elementos de este lenguaje son ε 0, 1, 00, 11, 010 y 1101011.

Una palabra v es subcadena de otra w cuando existen cadenas x ,y - posiblemente vacías tales

que xvy w

Por ejemplo, “bora ” es subcadena de “vibora ”, vacio es subcadena de toda palabra.

3. CARACTERÍSTICAS

Los lenguajes formales se pueden especificar de una amplia variedad de formas, como por

ejemplo:

· Cadenas producidas por una gramática formal

· Cadenas producidas por una expresión regular

· Cadenas aceptadas por un autómata como una máquina de Turing.

4. ALFABETO

Es el conjunto de símbolos primitivos o vocabulario del lenguaje

5. CADENA

Una cadena o palabra está formada por un conjunto de simbolos que pertenecen a un mismo

lenguaje, la cadena mínima o nula se llama λ.

El orden de las palabras es importante de esta manera ab es diferente de ba , por lo general las

palabras se representan con las últimas letras del alfabeto, como t, u, v, w, x, y, z

Ejemplos

Universidad Salesiana de Bolivia Lenguajes Formales y CompiladoresIngeniería de Sistemas

11

1) Dado el siguiente alfabeto: Σ = {a,b}

λ, a, b, ab, aaa, bbb, abba . .

2) x=abc z = dac , la concatenación será xz = abcdac

3) λ x = xλ = x = abc

6 LONGITUD DE UNA CADENA

La longitud de una cadena x, se indica con |x| y es el número de caracteres que la complementan

Ejemplo:

|λ| = 0 , |a| = 1, |abcde| = 5

7. LENGUAJE

Un lenguaje es un conjunto de cadenas de caracteres, además:

“símbolo” es un ítem elemental del vocabulario del lenguaje que se emplea para formar las

cadenas del lenguaje, que se llaman sus sentencias

• Un “alfabeto” o vocabulario, es el conjunto de todos los símbolos que forman las sentencias del

lenguaje

- Un lenguaje está formado por los siguientes elementos:

• Un diccionario: que indica los significados de la palabra del lenguaje

• Un conjunto de reglas para describir las sentencias válidas del lenguaje, este

conjunto de reglas forma la gramática del lenguaje (sintaxis y semántica)

8. MANEJO DE CADENAS Y CARACTERES

Una cadena (o palabra) es una secuencia finita de símbolos.Por ejemplo a,b,c son símbolos y abcd

es una cadena

9. CONCATENACION

Es la cadena que se for

ma al escribir la primera seguida de la segunda, sin que haya espacio entre ellas. Por ejemplo

Si w=”banana” y z= “rama, la concatenacion de w con z es la cadena “bananarama” y se denota

como wz ó w.z

10. POTENCIA DE CADENAS

La potencia de una cadena sobre un alfabeto es dada por la notación wk que denota

concatenacion de k copias de la cadena w

Ejemplo

Si w=122sobre el alfabeto s={ 1, 2 }

w0 = λ

w1 = 122

w2 = 122122

Universidad Salesiana de Bolivia Lenguajes Formales y CompiladoresIngeniería de Sistemas

12

w3 = 122122122

11. IGUALDAD DE CADENAS

Si w y z son cadenas, se dice que w es igual a z, si tienen la misma longitud y los mismos símbolos

en la misma posición , se denota w= z

12. PREFIJO

Los prefijos de una cadena estan formados por los primeros símbolos de esta. Por ejemplo la

cadena 121 sus prefijos son: λ, 1,12,121 con lo que toda la palabra puede considerarse prefijo de

si misma.

13. SUFIJOS

Estan formados por los ultimos símbolos de esta. Por ejemplo la cadena abc sus sufijos son λ, c,

bc y abc

14. SUBCADENA

Una cadena w es una subcadena de otra cadena z, si existen las cadenas x,y para las cuales z=

xwy

15. TRANSPUESTA

La inversa o transpuesta de una cadena w, es la imagen refleja de w.

Ejemplo, si w = “able” entonces su inversa es “elba”, su notación es wl

15. OPERACIONES SOBRE CADENAS

Ejemplo

1) Si A={ rojo,verde, azul } , B= { verde,violeta} y C={ rojo, amarillo ,azul, verde} determinar los

elementos de (A ½ C) x (B-C)

(A ½ C) = ={ rojo,verde, azul }

(B-C) = { violeta}

(A ½ C) x (B-C) = { (rojo, violeta), (verde, violeta),(azul,violeta)}

2) Demuestre la igualdad de A – B = A – ( B½A),utilizando los siguientes conjuntos A= { a, d,e,f,g } y

B= { d,g,h,i}

( B½A) = { d, g } A – ( B½A)= { a,e,f } A – B = { a,e,f }

Por lo tanto se demuestra A – B = A – ( B½A)

16. LENGUAJES REGULARES

Lenguaje regular es un lenguaje formal que tiene estas características:

Puede ser descrito mediante una expresión regular

Universidad Salesiana de Bolivia Lenguajes Formales y CompiladoresIngeniería de Sistemas

13

Puede ser generado mediante una gramática regular Puede ser reconocido mediante un autómata

finito

Un lenguaje regular es un tipo de lenguaje formal que satisface las siguientes propiedades:

Puede ser reconocido por:

· Autómata finito determinista finito (saber si una cadena de símbolos pertenece a él o no)

· Autómata finito no determinista

· Autómata de pila

· Maquina de turing

· Gramática regular (obtener todas las cadenas de símbolos que le pertenecen)

· Expresión regular (expresar de forma compacta cómo son todas las cadenas de símbolos

que le pertenecen)

Lenguajes regulares sobre un alfabeto

Un lenguaje regular sobre un alfabeto Σ dado se define recursivamente como:

· El lenguaje vacío es un lenguaje regular

· El lenguaje cadena vacía {ε} es un lenguaje regular

· Para todo símbolo a Σ {a} es un lenguaje regular

· Si A y B son lenguajes regulares entonces A U B (unión), A•B (concatenación) y A*

(clausura o estrella de Kleene) son lenguajes regulares

· Si A es un lenguaje regular entonces (A) es el mismo lenguaje regular

· No existen más lenguajes regulares sobre Σ

Un lenguaje formal infinito puede ser regular o no regular. El lenguaje L = {an, n > 0} es regular

porque puede ser representado, por ejemplo, mediante la El lenguaje L= {an bn, n > 0} es un

lenguaje no regular dado que no es reconocido por ninguna de las formas de representación

anteriormente enumeradas.

Los lenguajes regulares son cerrados con las siguientes operaciones, de modo que si L y P son

lenguajes regulares los siguientes lenguajes también serán regulares:

· El complemento de L

· La clausura o estrella de Kleene L* de L

· El homomorfismo φ(L) de L

· La concatenación L'P de L y P

· La unión L U P de L y P

· La intersección L ∩ P de L y P

· La diferencia L \ P de L y P

· El reverso LR de L

Universidad Salesiana de Bolivia Lenguajes Formales y CompiladoresIngeniería de Sistemas

14

17. LENGUAJES FINITOS

Un subconjunto especial de los lenguajes regulares es el de los lenguajes finitos, aquellos que solo

contienen un número finito de palabras. Estos son lenguajes obviamente regulares y uno podría

crear expresiones regulares que serían la unión de todas las palabras del lenguaje que definirían

dicho lenguaje.

18. EXPRESIONES REGULARES Y SUS PROPIEDADES

Las expresiones regulares es representar todos los posibles lenguajes definidos sobre un

alfabeto S, en base a una serie de lenguajes primitivos, y unos operadores de composición.

18.1 LENGUAJES PRIMITIVOS

Es el lenguaje vacío, el lenguaje formado por la palabra vacía, y los lenguajes correspondientes a

los distintos símbolos del alfabeto.

18.2 OPERADORES DE COMPOSICIÓN

La unión, la concatenación y el cierre.

Ejemplo:

1. Lenguaje formado por las cadenas que terminan en 01

{0,1}*.{01}= ({0}È{1})*.{01} ⇒ Expresión regular es (0+1)*01

2. Lenguaje formado por palabras de longitud par sobre a’s y b’s:

{aa,ab,ba,bb}*= ({aa}È{ab}È{ba}È{bb})* ⇒Expresión: (aa+ab+ba+bb)*

19. DEFINICION DE EXPRESIÓN REGULAR

Dado un alfabeto S, las expresiones regulares sobre S se definen de forma recursiva por las

siguientes reglas:

1. Las siguientes expresiones son expresiones regulares

primitivas:

· Æ

· l

· a, siendo aÎS

2. Sean a y b expresiones regulares, entonces son expresiones regulares derivadas

· a+b (unión)

· a.b (o simplemente ab) (concatenación)

Universidad Salesiana de Bolivia Lenguajes Formales y CompiladoresIngeniería de Sistemas

15

· a* (cierre)

3. No hay más expresiones regulares sobre S que las construidas mediante estas reglas.

Precedencia de los operadores

1. ( )

2. * cierre

3. . concatenación

4. + unión

Ejemplo:

Algunos ejemplos de expresión regular son:

(0 + 1)*01

(aa + ab + ba + bb)*

a*(a + b)

(aa)*(bb)*b

20. LENGUAJE DESCRITO POR UNA ER

Sea r una expresión regular sobre S. El lenguaje descrito por r, L(r), se define recursivamente de

la siguiente forma:

1. Si r=Æ ⇒ L(Æ)= Æ

2. Si r=l ⇒ L(l)= {l}

3. Si R=a, aÎS ⇒ L(a)= {a}

4. Si R=a+b ⇒ L(a+b)= L(a)ÈL(b)

5. Si R=a.b ⇒ L(a.b)= L(a)L(b)

6. Si R=a* ⇒ L(a*)= L(a)*

7. Si R=(a) ⇒ L((a))= L(a)

donde a y b son expresiones regulares.

1. Si r=Æ ⇒ L(Æ)= Æ

2. Si r=l ⇒ L(l)= {l}

3. Si R=a, aÎS ⇒ L(a)= {a}

4. Si R=a+b ⇒ L(a+b)= L(a)ÈL(b)

5. Si R=a.b ⇒ L(a.b)= L(a)L(b)

6. Si R=a* ⇒ L(a*)= L(a)*

Universidad Salesiana de Bolivia Lenguajes Formales y CompiladoresIngeniería de Sistemas

16

7. Si R=(a) ⇒ L((a))= L(a)

Ejemplo: Mostrar el lenguaje descrito por una ER mediante notación conjuntista:

1. L(a*(a+b)) = L(a*)L((a+b)) = L(a)*L(a+b)

= L(a)*(L(a) ÈL(b)) = {a}*({a} È{b})

= {l,a,aa,aaa,...}{a,b}

= {a,aa,...,b,ab,aab,...}

= {an|n³1}È{anb|n³0}

2. L((aa)*(bb)*b) = {a2nb2m+1|n,m³0}

3. Si S={a,b,c}, entonces L((a+b+c)*)=S*.

4. L(a*.(b+c))

5. L(0*.1.0*)

6. L((a+b+c+...+z)*.(a+b)*)

PROPIEDADES DE LAS ER

Dos expresiones regulares r1 y r2 se dicen equivalentes, r1 = r2, si describen el mismo lenguaje,

esto es, si L(r1)=L(r2).

En base a esta definición se pueden establecer las siguientes equivalencias y propiedades:

Respecto a las operaciones + y . :

1. + y . son asociativas: a+(b+g)=(a+b)+g=a+b+g y a.(b.g)=(a.b).g=a.b.g

2. + es conmutativa e idempotente: a+b=b+a y a+a=a

3. Distributividad: a.(b+g)=a.b+a.g y (a+b).g=a.g+b.g

4. Elemento neutro: a.l=l.a=a y a+Æ=Æ+a=a

5. Æ.a=a.Æ=Æ

6. Si lÎL(a), entonces a+l=a

Respecto a la operación *:

7. a*=l+a.a*

8. l*=l

9. Æ*=l

10. a*.a*=a*

11. a.a*=a*.a

12. (a*)*=a*

13. (a*+b*)*=(a*.b*)*=(a+b)*=(a*.b)*.a*

14. (a.b)*.a=a.(b.a)*

Para comprobar si dos expresiones son equivalentes se puedeintentar transformarlos mediante

estas reglas en una misma expresión.

Ejemplos:

Universidad Salesiana de Bolivia Lenguajes Formales y CompiladoresIngeniería de Sistemas

17

S={a,b,c}

1. c*.c+c* = c*¿?

c*.c+c* = c*.c+c*+l (por 6)

= c.c*+c*+l (por 11)

= l+c.c*+c* (por 2)

= c*+c* (por 7)

= c* (por 2)

UNIDAD III

MAQUINAS DE ESTADOS FINITOS

1. INTRODUCCION

Un analizador léxico reconoce tokens, los autómatas finitos son las herramientas empleadas como

reconocedores de tokens,

Las maquinas de estados finitos también se denominan autómatas finitos . Un autómata finito o

máquina de estado finito es un modelo matemático de un sistema que recibe una cadena

constituida por símbolos de un alfabeto y determina si esa cadena pertenece al lenguaje que el

autómata reconoce.

Un autómata finito es un reconocedor para un lenguaje, su programación es: su entrada es una

cadena x y responde “si” si x es una sentencia del lenguaje, “no” de otra manera

2. CONCEPTOS

AUTÓMATA

Un autómata es una máquina teórica que lee instrucciones en forma de símbolos y cambia de

estado según éstas.

ÁREAS DE APLICACIÓN DE LA TEORÍA DE AUTÓMATAS:

Comunicaciones, teoría de Control, Circuitos secuenciales, recocimiento de Patrones.,

compiladores.

3. CARACTERÍSTICAS DE LAS MAQUINAS ESTADOS FINITOS

Un Automata finito es similar a una maquina de estado finito sin embargo lo que caracteriza a una

de la otra es que los automatas finitos solo tienen dos estados, un estado interno y uno de rechazo.

esta formado por una quintupla <A,S,T,q0, F>. A= Simbolos de entrada S= Estados internos T= un

Universidad Salesiana de Bolivia Lenguajes Formales y CompiladoresIngeniería de Sistemas

18

Subconjunto de S (Estado de Aceptacion) q0= Estado inicial F= Funcion de proximo estado F= S x

A -→ S.

4. AUTÓMATAS FINITOS

Además de notar un AF a través de su definición formal es posible representarlo a través de otras

notaciones que resultan más cómodas.

Las Expresiones regulares. Se demuestra que dado un autómata de estados finitos,

existe una expresión regular que lo representa.

Ø υ 1* υ (1* ο 0 ο 1* ο 0)*

4.1 AUTOMATAS FINITOS DETERMINISTAS

Es un modelo matemático que consiste en :

Un conjunto de estados, denominado S.

Un conjunto (alfabeto) de símbolos de entrada, denominado

Una función de transición move que mapea un par P ( s , a ) a un estado t.s y t son estados contenidos en S, a es un símbolo de entrada.

Un estado de inicio, denotado por s0.

Un conjunto de estados de aceptación (finales), denotado por F.

Además, un autómata finito determinístico AFD debe cumplir con las siguientes características :

a) No hay transiciones etiquetadas por

b) Para cada estado s y un símbolo de entrada a, existe a lo más un arco etiquetado por a saliendo

de s.

Definición. Un autómata finito determinista (AFD) es un sistema de la forma:

(E, VT, f, e0, F)

donde:

E es un conjunto finito no-vacío de elementos llamados estados

VT es un alfabeto llamado alfabeto de entrada

f es una función de un subconjunto de E x VT en E llamada función de transición

e0 es un estado especial llamado estado inicial

F es un subconjunto de E cuyos elementos se nombran estados finales

Definición. Dado un AFD (E, VT, f, e0, F) llamaremos configuración a cualquier par

ordenado de la forma:

(e , x)

tal que e . E y x . V*

T

Universidad Salesiana de Bolivia Lenguajes Formales y CompiladoresIngeniería de Sistemas

19

Si e = e0 diremos que la configuración es inicial

Si e . F y x = ε diremos que la configuración es final

Definición. Dado un AFD (E, VT, f, e0, F) y dos configuraciones de la forma:

(e , x) y (e’ , y)

diremos que existe un movimiento de (e , x) a (e’ , y) y lo denotaremos por:

(e , x) |--- (e’ , y)

si x = ay, a . VT y f(e,a) = e’

Notaciones. Dadas dos configuraciones c y c’ denotaremos por:

a) c |---+ c’ si c = c1 |--- c2 |--- ...... |--- cn = c’ con n . 1

b) c |---* c’ si c |---+ c’ ó c = c’

Definición. Dado un AFD A = (E, VT, f, e0, F) definimos como el lenguaje aceptado

por A al conjunto siguiente:

L(A) = {x | x .V*

T y (e0 , x) |---* (e , ε) para algún e . F }

5. TABLAS DE TRANSICIÓN

La función de transición move es realmente una tabla de transición, donde los renglones son los

estados y

las columnas son símbolos de entrada. La construcción de la tabla de transición -función move- se

inicia identificando los

estados que tienen al menos un arco que “salga” de ellos. Para nuestro ejemplo el estado 0 (cero)

tiene un arco etiquetado por Letra que “sale” de él, y el estado 1 tiene 3 arcos: Letra, Dig y Sub.

Los estados que tengan esta característica son añadidos como los renglones en la tabla.

7. AUTÓMATAS FINITOS NO DETERMINISTAS

Un autómata finito no determinístico es un modelo matemático que consiste de :

1. Un conjunto de estados, S.

2. Un conjunto de símbolos de entrada, _ (alfabeto).

3. Una función de transición denominada move, que mapea pares, p ( s , a ) hacia un conjunto de

estados. s es un estado y a es un símbolo en la entrada.

4. Un estado de inicio denotado por s0.

5. Un conjunto de estados de aceptación, denotado por F.

7. REPRESENTACIÓN MEDIANTE GRAFOS

Además, un AFND tiene como característica que lo diferencia de un AFD, permitir el

uso de arcos etiquetados por el símbolo

Universidad Salesiana de Bolivia Lenguajes Formales y CompiladoresIngeniería de Sistemas

20

8. EQUIVALENCIA ENTRE AFD Y AFND

La naturaleza de un autómata finito no determinístico, hace que la tarea de simularlo en un

programa de computadora sea muy difícil. Para un símbolo de entrada pueden existir diferentes

transiciones estado a estado, es decir, la aceptación de una cadena puede o debe, involucrar

diferentes trayectorias y todas ellas deben de probarse para saber si la cadena de entrada es o no ,

reconocida por el AFND.

Una buena estrategia es obtener el AFND que reconozca el lenguaje denotado por una expresión

regular, para luego construir un AFD a partir de un AFND. El algoritmo que construye un AFD dado

un AFND, se denomina Construcción de subgrupos. Una vez encontrado el autómata finito

determinístico, puede ser optimizado o sea, reducir el número de estados S que lo forman.

UNIDAD IV

GRAMATICAS FORMALES

1. INTRODUCCION A LAS GRAMATICAS FORMALES Y LENGUAJES REGULARES

Una gramática esta formada por la cuádrupla:

(N, T, P, S)

donde:

N: vocabulario no terminal de símbolos que nosotros introducimos como elementos auxiliares para

la definición de la gramática y que no figura en las sentencias del lenguaje

T: vocabulario terminal, todas las sentencias del lenguaje definidas por esta gramática están

formadas por los símbolos o caracteres terminales

P: es un conjunto de reglas de derivación de las cadenas de la forma: Cadena 1 > Cadena 2

S: símbolo inicial, denominado también símbolo distinguido o axioma

Una gramática describe de forma natural la estructura jerárquica de muchas construcciones de los

lenguajes de programación.

De una gramática se derivan cadenas comenzando con el símbolo inicial y reemplazando

repetidamente un no terminal por el lado derecho de una

producción para ese no terminal. Las cadenas de componentes léxicos derivadas

del símbolo inicial forman el lenguaje que define la gramática

Universidad Salesiana de Bolivia Lenguajes Formales y CompiladoresIngeniería de Sistemas

21

Nota. • En una producción los elementos léxicos, como palabras clave se denominan

componentes léxicos

• Se dice que una producción es para un no terminal si el no terminal aparece en el

lado izquierdo de la producción

LENGUAJE DEFINIDO POR UNA GRAMÁTICA

L(G) representa un lenguaje L definido por una gramática G, que es un conjunto de cadenas

(palabras) de símbolos terminales (sentencias) y que se pueden derivar partiendo de S, empleando

las reglas de P.

L(G) = { x/ (S.*x) and (x . T*}

Formas sentenciales

D(G) = { α |(S.*α) and α.(NUT)*}

Derivación izquierda

Derivación realizada sustituyendo en la forma sentencial dada, la metanoción,

de “más a la izquierda” por alguna de sus partes derechas que la definen

Derivación izquierdaCuando las derivaciones que se realizan en la forma sentencial son siempre

en la metanoción de “más a la derecha”

2. GRAMATICAS REGULARES Y AUTOMATAS

- Los elementos T o “vocabulario terminal” pueden ser:

- letras minúsculas del comienzo del abecedario

a) operadores

b) caracteres especiales

c) dígitos numéricos

d) palabras reservadas de un lenguaje de programación

- Los elementos de N o “vocabulario no terminal” pueden ser: 32

a) letras mayúsculas del comienzo del alfabeto

b) nombres en minúscula

c) También se acepta la notación BNF para escribir el nombre de la metanoción

entre paréntesis angulares.

d) El axioma o símbolo inicial

- El alfabeto Σ = NUT comprende terminales y no terminales

- Las “cadenas” de caracteres que tienen símbolos terminales y no terminales

(.(NUT)*) se escriben con letras minúsculas del alfabeto griego. Por ejemplo:

A > α

- Se indica la cadena nula con λ

3. JERARQUIA DE GRAMATICAS

Según Chomsky tenemos las siguientes jerarquia

Universidad Salesiana de Bolivia Lenguajes Formales y CompiladoresIngeniería de Sistemas

22

Tipo 0: o gramática con estructura de frase, esta gramática se caracteriza por que las

producciones presentan la forma:

α>β donde α . (NUT)+ β . (NUT)*

es decir que la parte izquierda de una producción (regla) puede ser una tira de símbolos

cualesquiera de N y T pero la parte derecha puede ser además nula.

Tipo 1: o gramática sensible al contexto. Donde P presenta la forma:

αAβ>αγβ donde A . N, α y β. (NUT)* γ . (NUT)+

esta gramática se denomina sensible al contexto por que A cambia por gamma, pero solo en el

contexto formado por alfa . . . beta

Tipo2: o gramática libre de contexto. Donde la forma de P es: A>α donde A . N y α . (NUT)*

Tipo 3: o gramáticas regulares. Donde P presenta una de las dos formas siguientes:

A > aB

A > a

En estos tipos de gramáticas, cada una de ellas es más restringida que la anterior, es decir

comprende un número menor de lenguajes. La inclusión de una gramática en otra es propia, o sea

hay como mínimo un lenguaje que pertenece a una de ellas y no a su restringida.

4. GRAMATICAS INDEPENDIENTES DEL CONTEXTO

DERIVACION

En G, se dice que la tira alfa “produce directamente” la tira beta, lo que se representa α.β si se

puede escribir:

α = δ A µ β = δ γ µ

para alguna cadena delta, mu (que pueden ser nulas) y además existe una regla de

P que sea A > γ

Aplicando repetidamente la regla de derivación directa:

α = γ0 . γ1 . γ2 . γ3 . . . . . γn = β para n>0

lo cual se representa abreviadamente:

a) α.+β

b) α.*β

5. AUTÓMATAS DE PILA

Un autómata de pila o autómata apilador es un modelo matemático de un sistema que recibe una

cadena constituida por símbolos de un alfabeto y determina si esa cadena pertenece al lenguaje

que el autómata reconoce. El lenguaje que reconoce un autómata a pila pertenece al grupo de los

lenguajes de contexto libre en la clasificación de la Jerarquía de Chomsky.

EJEMPLOS

Formalmente, un autómata con pila puede ser descrito como una séptupla M = (S,Σ,Γ,δ,s,Z,F)

donde:

Universidad Salesiana de Bolivia Lenguajes Formales y CompiladoresIngeniería de Sistemas

23

* Σ y Γ son alfabetos de entrada, de la cadena y de la pila respectivamente;

* S un conjunto de estados;

* \delta: S \times (\Sigma \cup \{\epsilon \} ) \times \Gamma \rightarrow \mathcal{P} ( S \times

\Gamma^*) * s \in S es el estado inicial; * Z\ \in \Gamma es el símbolo inicial de la pila; * F

\subseteq S es un conjunto de estados de aceptación o finales.

La interpretación de \delta (s, a, Z) = \{ (s_1, \gamma_1), (s_2, \gamma_2), \ldots, (s_n, \gamma_n)

\}, con s, p_i \in Q, a \in (\Sigma \cup \{ \epsilon \} ), \gamma_i \in \Gamma es la siguiente:

Cuando el estado del autómata es s, el símbolo que la cabeza lectora está inspeccionando enese momento es a, y en la cima de la pila nos encontramos el símbolo Z, se realizan lassiguientes acciones: * Si a \in \Sigma, es decir no es la palabra vacía, se avanza una posición la cabeza lectora para

inspeccionar el siguiente símbolo.

* Se elimina el símbolo Z de la pila del autómata.

* Se selecciona un par (pi,γi) de entre los existentes en la definición de δ(s,A,Z), la función de

transición del autómata.

* Se apila la cadena \gamma_i = A_1 A_2 \ldots A_k en la pila del autómata, quedando el

símbolo A1 en la cima de la pila.

UNIDAD V

COMPILADORES

1. INTRODUCCION

Un compilador es un programa informático que traduce un programa escrito en un lenguaje de

programación a otro lenguaje de programación, generando un programa equivalente que la

máquina será capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de máquina, pero

también puede ser simplemente texto. Este proceso de traducción se conoce como compilación.

2. CONCEPTOS Y CARACTERÍSTICAS DE LOS COMPILADORES

COMPILADOR

Un compilador es un programa que permite traducir el código fuente de un programa en lenguaje

de alto nivel, a otro lenguaje de nivel inferior (lenguaje de máquina). De esta manera un

programador puede diseñar un programa en un lenguaje mucho más cercano a como piensa un

ser humano, para luego compilarlo a un programa más manejable por una computadora.

La construcción de un compilador involucra la división del proceso en una serie de fases que

variará con su complejidad.

Universidad Salesiana de Bolivia Lenguajes Formales y CompiladoresIngeniería de Sistemas

24

3. HISTORIA DE LOS COMPILADORES

El primer compilador fue escrito por Grace Hopper, en 1952 para un lenguaje de programación , En

1950 John Backus dirigió una investigación en IBM sobre un lenguaje algebraico. En 1954 se

empezó a desarrollar un lenguaje que permitía escribir fórmulas matemáticas de manera traducible

por un ordenador; le llamaron FORTRAN (FORmulae TRANslator). Fue el primer lenguaje de alto

nivel y se introdujo en 1957 para el uso de la computadora IBM modelo 704.

Surgió así por primera vez el concepto de un traductor como un programa que traducía un lenguaje

a otro lenguaje. En el caso particular de que el lenguaje a traducir es un lenguaje de alto nivel y el

lenguaje traducido de bajo nivel, se emplea el término compilador.

El primer compilador de FORTRAN tardó 18 años-persona en realizarse y era muy sencillo. Este

desarrollo de FORTRAN estaba muy influenciado por la máquina objeto en la que iba a ser

implementado. Como un ejemplo de ello tenemos el hecho de que los espacios en blanco fuesen

ignorados, debido a que el periférico que se utilizaba como entrada de programas (una lectora de

tarjetas perforadas) no contaba correctamente los espacios en blanco.

El primer compilador autocontenido, es decir, capaz de compilar su propio código fuente fue el

creado para Lisp por Hart y Levin en el MIT en 1962. Desde 1970 se ha convertido en una práctica

común escribir el compilador en el mismo lenguaje que este compila, aunque Pascal y C han sido

alternativas muy usadas.

Crear un compilador autocontenido genera un problema llamado bootstrapping, es decir el primer

compilador creado para un lenguaje tiene que o bien ser compilado por un compilador escrito en

otro lenguaje o bien compilado al ejecutar el compilador en un intérprete.

4. TIPOS DE COMPILADORES

§ Compiladores cruzados: generan código para un sistema distinto del que están

funcionando.

§ Compiladores optimizadores: realizan cambios en el código para mejorar su eficiencia,

pero manteniendo la funcionalidad del programa original.

§ Compiladores de una sola pasada: generan el código máquina a partir de una única

lectura del código fuente.

§ Compiladores de varias pasadas: necesitan leer el código fuente varias veces antes de

poder producir el código máquina.

§ Compiladores JIT (Just In Time): forman parte de un intérprete y compilan partes del

código según se necesitan.

4. FASES DEL COMPILADOR

El proceso de traducción se compone internamente de varias fases, que realizan distintas

operaciones lógicas. Es útil pensar en estas fases como en piezas separadas dentro del traductor,

Universidad Salesiana de Bolivia Lenguajes Formales y CompiladoresIngeniería de Sistemas

25

y pueden en realidad escribirse como operaciones codificadas separadamente aunque en la

práctica a menudo se integren juntas.

- Fase de análisis- Análisis léxico

ANÁLISIS

Se trata de la comprobación de la corrección del programa fuente, e incluye las fases

correspondientes al Análisis Léxico (que consiste en la descomposición del programa fuente en

componentes léxicos), Análisis Sintáctico (agrupación de los componentes léxicos en frases

gramaticales ) y Análisis Semántico (comprobación de la validez semántica de las sentencias

aceptadas en la fase de Análisis Sintáctico).

Síntesis: Su objetivo es la generación de la salida expresada en el lenguaje objeto y suele estar

formado por una o varias combinaciones de fases de Generación de Código (normalmente se trata

de código intermedio o de código objeto) y de Optimización de Código (en las que se busca

obtener un código lo más eficiente posible).

Alternativamente, las fases descritas para las tareas de análisis y síntesis se pueden agrupar en

Front-end y Back-end:

§ Front-end: es la parte que analiza el código fuente, comprueba su validez, genera el árbol

de derivación y rellena los valores de la tabla de símbolos. Esta parte suele ser independiente

de la plataforma o sistema para el cual se vaya a compilar, y está compuesta por las fases

comprendidas entre el Análisis Léxico y la Generación de Código Intermedio.

§ Back-end: es la parte que genera el código máquina, específico de una plataforma, a partir

de los resultados de la fase de análisis, realizada por el Front End.

Esta división permite que el mismo Back End se utilice para generar el código máquina de

varios lenguajes de programación distintos y que el mismo Front End que sirve para analizar el

código fuente de un lenguaje de programación concreto sirva para generar código máquina en

varias plataformas distintas. Suele incluir la generación y optimización del código dependiente de la

máquina.

El código que genera el Back End normalmente no se puede ejecutar directamente, sino que

necesita ser enlazado por un programa enlazador(linker)

5. ANÁLISIS LÉXICO

El análisis léxico constituye la primera fase, aquí se lee el programa fuente de izquierda a derecha

y se agrupa en componentes léxicos(tokens), que son secuencias de caracteres que tienen un

significado. Además, todos los espacios en blanco, líneas en blanco, comentarios y demás

información innecesaria se elimina del programa fuente. También se comprueba que los símbolos

del lenguaje (palabras clave,operadores,...) se han escrito correctamente.

Como la tarea que realiza el analizador léxico es un caso especial de coincidencia de patrones, se

necesitan los métodos de especificación y reconocimiento de patrones, se usan principalmente

Universidad Salesiana de Bolivia Lenguajes Formales y CompiladoresIngeniería de Sistemas

26

los autómatas finitos que acepten expresiones regulares. Sin embargo, un analizador léxico

también es la parte del traductor que maneja la entrada del código fuente, y puesto que esta

entrada a menudo involucra un importante gasto de tiempo, el analizador léxico debe funcionar de

manera tan eficiente como sea posible.

6. ANÁLISIS SINTACTICO

En esta fase los caracteres o componentes léxicos se agrupan jerárquicamente en frases

gramaticales que el compilador utiliza para sintetizar la salida. Se comprueba si lo obtenido de la

fase anterior es sintácticamente correcto (obedece a la gramática del lenguaje). Por lo general, las

frases gramaticales del programa fuente se representan mediante un árbol de análisis sintáctico.

La estructura jerárquica de un programa normalmente se expresa utilizando reglas recursivas. Por

ejemplo, se pueden dar las siguientes reglas como parte de la definición de expresiones:

1. Cualquier identificador es una expresión.

2. Cualquier número es una expresión.

3. Si expresión1 y expresión2 son expresiones, entonces también lo son:

§ expresión1 + expresión2

§ expresión1 * expresión2

§ ( expresión1 )

Las reglas 1 y 2 son reglas básicas (no recursivas), en tanto que la regla 3 define expresiones en

función de operadores aplicados a otras expresiones.

La división entre análisis léxico y análisis sintáctico es algo arbitraria. Un factor para determinar la

división es si una construcción del lenguaje fuente es inherentemente recursiva o no. Las

construcciones léxicas no requieren recursión, mientras que las construcciones sintácticas suelen

requerirla. No se requiere recursión para reconocer los identificadores, que suelen ser cadenas de

letras y dígitos que comienzan con una letra. Normalmente, se reconocen los identificadores por el

simple examen del flujo de entrada, esperando hasta encontrar un carácter que no sea ni letra ni

dígito, y agrupando después todas las letras y dígitos encontrados hasta ese punto en un

componente léxico llamadoidentificador. Por otra parte, esta clase de análisis no es

suficientemente poderoso para analizar expresiones o proposiciones. Por ejemplo, no podemos

emparejar de manera apropiada los paréntesis de las expresiones, o las palabras begin y end en

proposiciones sin imponer alguna clase de estructura jerárquica o de anidamiento a la entrada.

7. OPTIMIZACION Y GENERACIÓN DE CODIGO

La fase de optimización de código consiste en mejorar el código intermedio, de modo que resulte

un código máquina más rápido de ejecutar. Esta fase de la etapa de síntesis es posible sobre todo

si el traductor es un compilador (difícilmente un interprete puede optimizar el código objeto). Hay

mucha variación en la cantidad de optimización de código que ejecutan los distintos compiladores.

En los que hacen mucha optimización, llamados "compiladores optimizadores", una parte

Universidad Salesiana de Bolivia Lenguajes Formales y CompiladoresIngeniería de Sistemas

27

significativa del tiempo del compilador se ocupa en esta fase. Sin embargo, hay optimizaciones

sencillas que mejoran sensiblemente el tiempo de ejecución del programa objeto sin retardar

demasiado la compilación.

UNIDAD VI

APLICACIÓN DE LENGUAJES FORMALES

1. INTRODUCCION

Lenguaje es un conjunto de oraciones basadas en una gramática, que a su vez se basa en un

alfabeto; un lenguaje es generalmente infinito y se forma con distintas combinaciones de palabras.

Es necesario que estas combinaciones sean bien formadas, es decir, correctas basadas en una

sintaxis y una semántica propia del lenguaje. Un lenguaje generalmente nos sirve para poder

expresar pensamientos ideas y de esta forma poder comunicarnos con las demás personas.

2. CARACTERÍSTICAS Y CONCEPTOS DE LA APLICACIÓN DE LENGUAJES FORMALES

Los lenguajes se clasifican en: naturales o formales.

2.1 LENGUAJES NATURALES

Son aquellos lenguajes que se han desarrollado y organizado gracias a la experiencia humana;

generalmente usamos los lenguajes naturales para comunicarnos con los demás, para analizar

distintas situaciones y razonar sobre las mismas, tienen un gran poder expresivo y por consiguiente

son polisemánticos, es decir, una misma expresión puede tener distintos significados dependiendo

del contexto.

2.2 CARACTERÍSTICAS DE LOS LENGUAJES NATURALES

- Son espontáneos, se han desarrollado progresivamente, enriqueciendose gracias a la

experiencia humana

- Son polisemánticos gracias a la riqueza de componentes y a la variedad de sus

expresiones

- No pueden ser formalizados completamente, precisamente por ser polisemánticos.

3. LENGUAJES FORMALES

Son lenguajes que el hombre ha desarrollado de manera objetiva para expresar y almacenarconocimiento científico. Cada palabra y oración está perfectamente definido porque tieneun solo significado que no depende del contexto.

Universidad Salesiana de Bolivia Lenguajes Formales y CompiladoresIngeniería de Sistemas

28

Los lenguajes formales pueden ser usados en cualquier área de investigación para describir de

manera precisa y concisa hechos y acontecimientos libres de toda ambigüedad.

3.1 CARACTERÍSTICAS DE LOS LENGUAJES FORMALES

- Se desarrollan basados en una teoría previamente establecida

- Tienen pocos componentes semánticos que pueden ser incrementados de acuerdo con la teoría

que se desea formalizar.

- No producen oraciones ambiguas gracias a que no son poli semánticos

- Los números son muy importantes en todo lenguaje formal

- Se pueden formalizar completamente

4. LENGUAJE DE PROGRAMACIÓN

Es una combinación de un lenguaje natural y de un lenguaje formal, para poder escribirprogramas que pueden ser entendidos y ejecutados por un computador. Está compuesto pordos elementos importantes.Sintaxis. Cada sentencia de un programa debe ser escrito correctamente

Semántica. Cada sentencia de un programa debe tener un significado correcto y único.

4.1 GENERACIONES DE LOS LENGUAJES DE PROGRAMACIÓN.

Desde la aparición de las computadoras, los lenguajes de programación han idoevolucionando, distinguiéndose cinco generaciones de lenguajes de programación.

PRIMERA GENERACIÓN

Son conocidos como los lenguajes máquina basados en el sistema de numeración binario,en el que se utiliza solamente unos y ceros para comunicarse con la computadora,programar en esta generación era muy complicado, porque no se podían expresarprogramas complejos. Actualmente son muy poco utilizados, muy necesarios para laprogramación de chips.

SEGUNDA GENERACIÓN

En esta generación surgen los lenguajes ensambladores, se basan en el uso de acrónimos, que se

resumen de varias palabras en una sola. Por ejemplo la sentencia ADC que significa "ADd with

Carry", en español "sumar con acarreo".

TERCERA GENERACIÓN

En esta generación surgen los llamados lenguajes de alto nivel, los más representativos son: el C,

Pascal, Basic, Cobol, Fortran. Se asemejan más a lenguaje humano, usando palabras completas

del inglés para escribir programas. Por ejemplo writeln("Hola Mundo"), que significa imprimir en

una línea nueva "Hola Mundo".

Universidad Salesiana de Bolivia Lenguajes Formales y CompiladoresIngeniería de Sistemas

29

CUARTA GENERACIÓN

En esta generación surgen los lenguajes visuales, que cuentan con asistentes llamados Wizards

para facilitar el diseño y la implementación de los programas. Se asemejan mucho más lenguaje

humano, utilizando incluso frases de lenguaje natural, los más representativos son:Visual Basic,

Visual C, Visual Java.

QUINTA GENERACIÓN

En esta generación los programadores ya no programan, ya no se preocupan sobre cómo están

implementados los programas; simplemente se dedican a ingresar datos y hacer consultas y el

computador responde a los mismos

5. LA MAQUINA DE TURING

Las máquinas de Turing son una buena formalización del concepto de algoritmo, porque cada

programa de una maquina de Turing puede ser implementado eficientemente

Tesis de Church: Algoritmo = Maquina de Turing.

Al comenzar a funcionar, la maquina se encuentra en el estado q0 y su cabeza lectora esta en la

posición 1 de la cinta, en cada instante la máquina se encuentra en un estado q y su cabeza

lectora está en una posición p.

Si el simbolo en la posición p es a y _(q, a) = (q0, b,X), entonces:

La máquina escribe el simbolo b en la posición p de la cinta.

Cambia de estado desde q a q0.

Mueve la cabeza lectora a la posición p - 1 si X = I , y a la posición p + 1 si X = D. Si X = N,

entonces la cabeza lectora permanece en la posición p.

Los estados de F son utilizados como estados de aceptación.

Una palabra w es aceptada por una máquina M si y solo si la ejecución de M con entrada w se

detiene en un estado de F.