992180537.CUADERNILLO 2011

download 992180537.CUADERNILLO 2011

of 28

Transcript of 992180537.CUADERNILLO 2011

UNIVERSIDAD NACIONAL DE SANTIAGO DEL ESTERO Facultad de Ciencias Exactas y Tecnologas PROGRAMACIN II CUADERNILLO DE ACTIVIDADES PRCTICAS PROF. ING. MARGARITA LVAREZ DE BENTEZ LIC. PAOLA BUDN DE ROSENZVAIG 2011 Teora de la Computabilidad2011 1.Determine si las formalizaciones1 son adecuadas para los enunciados de problemas: Enunciado del problema Formalizacin1.1.Determinarsiunnmeroes perfecto.(Unnmeroesperfecto siesigualalasumadetodossus divisoresexcluidoelmismo nmero: 6 = 1 + 2 + 3). D = Z I =N R =y / y = s vy = no ` q = ( x , y ) c I x R / [y = si x: x = =kiix1; dondexi = j .x mod j = 0 con j = 1.. x-1, con i = 1 i+1 k] v [y = no todo lo contrario]. 1.2.Determinarsiunnmeroes capica. D = N I = x / x c N . x = x1 x2...xn.n >2 ` R =y / y = s vy = no ` q = ( x , y ) c I x R / y = si x : xi = xj con i = 1, 2, ... , Int (n/2) .j = n, n-1 , ... , Int (n/2)v y = no - x : xi= xjcon i = 1, 2, ... , Int (n/2). j = n, n-1 , ... , Int (n/2) `1.3.Determinarsiunnmeroentero positivo de m dgitos (con2 0,estaordenado de la siguiente manera: -Primeroloselementosparesen orden creciente y -luegoloselementosimparesen forma decreciente. D = ( A,n) : Ac Rn. nc N ` I =A(n) / A(i) c R con i c N , n s 100, 0 s then s = a(i,j) endif enddo for j = 1 to n do if a(i,j) = s then t= t+1 endif enddo b(i,1) = s b(i,2) = t enddo e) begin for i = 1 to n-1 do for j = n to 1 do if a(j - 1) > a (j) then begin t = a (j 1) a (j - 1) = a (j) a (j) = t end endif enddo enddo end a) variables: suma(s), media Inicio s= 0 x= 1 Mientras x 0} 1.1Dar ejemplos de hileras x e Li (con i = 1,2,3) 1.2Para las hileras x y y e L2 (del ejercicio anterior), calcular: -x0y0-(xy)-1-xy-x2y2 1.3Calcular por extensin para los lenguajes L1 y L2: -L13-L1* L2*-L2+ 3.Definir lenguajes para: a) Nmeros naturales b) Lenguaje de mquina c) Lenguaje formado por hileras con un nmero par de letras a.d) Los nmeros binarios en los que el primer dgito es igual al ltimo dgito. e) Los nmeros binarios que terminan en 01. 4.Relacione las gramticas y lenguajes de la siguiente tabla: Gramtica RegularLenguaje Regular G1 = ({S,A}, {a,b}, P,S) donde P es: S yS / xA / A xS / yA L1 = { xynz (xymz)p / n,m, p > 0 } G2 = ({S,M,N}, {x,y,z}, P,S) donde P es: S xM/ M yN N zS L2 = { wz/ w = x v w= yxny . z=xm/ n,m > 0} G3 = ({S,A,B}, {x,y}, P,S) donde P es: S xAA yA / zBB xA / L3 ={(xyz)n| n > 0} G4 =({S,A,B}, {x,y}, P,S)donde P es: S xA / yB A xA / B xB / yA L4 = {w / w e {x,y}* y x contiene un nmero par de x}

2 Un lenguaje formal es un conjunto de hileras formadas por la agrupacin de un nmero finito de smbolos del vocabulario de acuerdo a las reglas especificadas para dicho lenguaje. Los smbolos son los elementos atmicos e indivisibles. Se concatenan para formar las hileras.La hilera nula se representa con . Teora de Lenguajes Formales y Gramticas2011 5.Paracadaunodelossiguienteslenguajes,definirlagramtica3regularylaexpresinregular4 correspondiente: a)L = {w = anbak / n, k > 0} b)L = {w e {0,1}* / antes y despus de cada 0 existe una subcadena 11} c)L = { w e {a,b}* / w = (aaa)n(bbb)m , m.n >0 } d)L = {anbm / n+m es par} e)L = {abnw/ n > 3, w e {a,b}*} f)L = {vwv/ v, w e {a,b}*, ,v,=2} g)L = {x / x e {0, 1}* . x termina en 00} h)L = {x /x e {a,b}* . x no contienen dos b consecutivas}. Ejemplos: ababab, aaaa i)L = {x /x e {a,b}* . x contienen un nmero impar de b} j)L = { w e {0,1}* / |w | = 5 y el nmero de ceros en w es mayor o igual a 2 } k)Los nmeros binarios en los que el primer dgito es diferente del ltimo dgito. l)L = { w e {a,b,c}* / w no contiene la subcadena bab } m)L = {x = aibj v x = (cd)2n+1, i > 0, n, j > 1} n)L = {x/x = awcn, n >1,w e {a, b}*} o)L = {x /xe {a,b,c}* y contiene exactamente una a} p)L = {x /xe {a,b,c}* y contiene al menos una a} 6.Determinar si cada uno de los siguientes lenguajes es regular o no. Justifique su respuesta: a)L = {anbmck / k = n+m} b)L = {anbmak / n=m v m =k} c)L = {x / x e {a,b}*, xa = xb +1} d)L = { 0n1m2n-m / n > m > 0} e)L = { aibj / i = j} f)L = { aibj ck/ i=k>j} 7.Definir las gramticas y expresiones regulares que generen: a)Constantes enteras con signo, sin ceros no significativos b)Constantes reales con notacin exponencial c)Identificadoresdecualquierlongitudquecomiencenconunaletraycontenganletras,dgitoso guiones. No puede terminar con guin. d)Comentarios acotados por /* y */ sin que intervenga */a menos que aparezca entre comillas. e)Nmerosdetelfono.Consideresolamentenmeroslocalescontodaslascaractersticasde Santiago del Estero. f)Direccin de correo electrnico.g)Direcciones domiciliarias. Tenga en cuenta las siguientes situaciones: i. Avenidas ii.Calles que contenga nmeros, como por ejemplo, Calle 12 de Octubre.

3 Una gramtica es un sistema de reglas o producciones que controla el orden en el que los elementos pueden aparecer en el lenguaje. Si un lenguaje genera un nmero finito de hileras, puede ser definido por comprensin o por extensin. Si el lenguaje es infinito se define mediante un mecanismo matemtico finito denominado gramtica de estructura de frase. La gramtica provee un mecanismo de aceptacin el cual permite determinar si la hilera pertenece o no al lenguaje. 4 Un lenguaje se dice regular si puede ser expresado por una expresin regular. Una expresin regular, a menudo llamada tambin patrn, es una expresin que describe un conjunto de cadenas sin enumerar sus elementos. Una expresin regular es una forma de representar a los lenguajes regulares (finitos o infinitos) y se construye utilizando caracteres del alfabeto sobre el cual se define el lenguaje. Especficamente, las expresiones regulares se construyen utilizando los operadores unin, concatenacin y clausura de Kleene Teora de Lenguajes Formales y Gramticas2011 8.Dadas las siguientes ER, definir las gramticas correspondientes, y expresar el lenguaje: E1: (a,z)*@ gmail.comE3: 0*42E5: este|oeste|norte|sur E2: (0,1)*101E4: (0*(100*)*) [ (0*(100*)*1)E6: (a,b,c) (1,0)+ 9.Dados los siguientes patrones, determinar la gramtica regular, y el lenguaje correspondiente. 10.Relacione las gramticas y lenguajes de la siguiente tabla: Gramtica Libre de Contexto5Lenguaje Libre de Contexto G1 = ({S,M}, {x,y}, P,S) donde P es: S xSz / M M yMz / L1 ={xnyn}{x2nyn} G2 = ({S,X,Y}, {x,y}, P,S) donde P es: S XX Y / xXy /Y xxYy / L2 = {xmyn | 0 s n s m s 3n} G3 = ({S,X,Y}, {x,y}, P,S) donde P es: S X / Y X xXy /Y xxYy / L3 = {xmynzp/ m, n,p>0. m+n=p} G4 = ({S, {x,y}, P,S) donde P es: S xSy / xxSy / xxxSy / L4 = {xnym | msns2m} 11.Para cada uno de los siguientes lenguajes, definir la gramtica libre de contexto: a)L = {anbm / n,m> 0 . n s m+3} b)Unlenguajedeparntesis,llavesycorchetesbienbalanceados.Porejemplo,laspalabras()[],([])y ()[[]]soncorrectas,mientrasque[[]y([)]noloson.Ntesequeenestaltimapalabralos parntesis solos estn balanceados, as como los corchetes solos, pero su combinacin no lo est. c)L = {anbmck/ n,m,k> 0 . ( n = m v m s k} d)L = {anbmck/ n,m,k> 0 . k = n + m} e)L = {anbmck/ n,m,k> 0 . k = n + 2m } f)L = {wcw-1/ w e {a,b}*} g)L = {anbmck/ n > 0, k > 1 . m = n + k} h)L = {a3bncn/ n > 0} i)L = {anbm/ n, m > 0 . n = m -1} j)L = {anbm/ n, m > 0 . 2n s m s 3n} k)L = {anbmck/ n,m,k > 0 . (n =m v m = k)} l)L = {anbmck/ n,m,k > 0 . k = |n-m|} m)L = {anbmck/ n,m,k > 0 . k = n+m} n)L = {ab(ab)nb(ba)n/ n > 0 }

5 Estas gramticas, conocidas tambin como gramticas de tipo 2 o gramticas independientes del contexto, son las que generan los lenguajes libres o independientes del contexto. Los lenguajes libres del contexto son aquellos que pueden ser reconocidos por un autmata de pila determinstico o no determinstico. En el lado izquierdo de las reglas de producciones aparece o el smbolo distinguido o un no terminal, mientras que en el lado derecho de una produccin cualquier cadena de smbolos terminales y/o no terminales de longitud mayor o igual que 1. ^am // patrnam // coincidecama // no coincideambidiestro // coincidePam // no coincidecaramba // no coincide am$am // coincidesalam // coincideambar // no coincidePam // coincide ^am$am // coincidesalam // no coincideambar // no coincide Teora de Lenguajes Formales y Gramticas2011 o)L = {w / w e {a,b,c}* . #a(w) + #b(w) =#c(w)} p)L = {anbm/ n, m > 0 . n = 2m } q)L = {w / w e {a,b}* . #a(w) =#b(w)} r)L = {w / we {a,b}* . #a(v) > #b(v), siendo v cualquier prefijo de w} s)L = {w / we {a,b,c}* . #a(w) +#b(w)= #c(w)} t)L = {w / we {a,b,c}* . #a(w) =#b(w) +1} u)L = {w / we {a,b,c}* . #a(w) =2#b(w)} v)L = {w / we {a,b,c}* . 2#a(w) s #b(w) s 3#a(w)} w)L = {w1cw2 / w1 , w2e {a,b}* . w1 = w2R} x)Procedimientos de la forma: i.PROC ident (listade parmetros), dondelista deparmetroses delaforma(var,...,var)o(const,...,const) o una combinacin de ambas. y)Sentencias de PASCAL: if...then...else,begin...end,repeat ...until z)Expresiones regulares sobre el vocabulario {a,b}. aa)Expresiones booleanas formadas con las constantes true y false, y los conectivos: , , ., v, y . bb) Nmeros romanos. 12.Suponga que le llega un archivo plano con todas las personas que se deberan vincular a una institucin. Antesdeprocederaincorporardichaspersonasasuinstitucin,debevalidarqueeldocumento nacional de identidad est bien escrito, que la direccin de correo electrnico sea vlida (desde el punto de vista de la sintaxis), que el formato de la fecha sea el que usted espera ver. Ejercicio: Cmo usara una gramtica para realizar dicha labor? 13.Lasintaxisdel lenguajemonoes bastantesimple, aunqueslo losmonoslo pueden hablarsin cometer errores.Elalfabetodellenguajees{a,b,d,#}donde#representaunespacio.Elsmboloiniciales . La gramtica es: ::= |# ::= | ::= | |a|a ::= a ::= b|d De los oradores siguientes, cul es el agente secreto que se hace pasar por un mono? Simio: ba # ababadada # bad # dabbada Chimpanc: abdabaadab # ada Babuino: dad # ad # abaadad # badadbaad 14.Determinar si cada uno de los siguientes lenguajes es libre de contexto o no. Justifique su respuesta: a)L = {anwwRan / n > 0, w e {a,b}*} b)L = {xyz / x=y=z v xa = ya = za } c)L = { anbnci/ n s i s 2n } d)L = { anbm/ m,n > 0, (m=n) v (m=2n) } e)L {w1 w2 w3 w4 / w1 w3 = aibj, w2w4 = cjdj ; i,j > 0} 15.Dada la siguiente gramtica: G = ({S,A,B}, {a,b,c}, P,S) donde P es: SaBA / c A bSB Sb Para la cadena aacbbcbbcencontrar: i. Una derivacin ms a la izquierda ii. Una derivacin ms a la derecha iii.El rbol de derivacin Teora de Lenguajes Formales y Gramticas2011 16.Describir los lenguajes generados por las siguientes expresiones regulares y definir las correspondientes gramticas regulares: a)01 (((10)*/111)*/0)*1b)((ba)* / (ab)*)* c)(11/0)*(00/1)*d)b/(a+b/a+) e)(aaa / aaaaa)*f)(aa)* (bb)* g)10/(0/11)*0*1h)(0/1)(0/1)*00 i) (0/1)(0/1)* ((0/1)(0/1)(0/1))*j)(10)[((10)*/111)*0]*117.Dadas las expresiones regularesE1 = a* / b* yE2 = ab* / ba* / b*a / (a*b)*, encuentre: Una hilera que pertenezca a E2 pero no a E1 Una hilera que pertenezca a E1 pero no a E2 Una hilera que pertenezca a E1 y a E2 Una hilera que no pertenezca ni a E1 ni a E2 18.Escriba expresiones regulares equivalentes a las siguientes lo ms simplificadas que sea posible: a)((a*b*)*(b*a*)*)*b)(a / b)*a(a / b)* c)(a*b)* / (b*a)*d)a* / b* / (a + b)* 19.Dadas las siguientes gramticas, muestre que son ambiguas6:a)S SS+ / SS* / ab)S S (S) S / S a / S+S / SS / S* / (S) 20.Dadas las siguientes gramticas factorice: a)S abA / abBA aAb / ab B bBa / ba S aBcC / aBb / aB / a B d 21.Dadas las siguientes gramticas, eliminar la recursividad a izquierda directa e indirecta:a)S (L) / a L L,S / S b)S SS / (S) / c)S Sa / Bb / Cc / B Bb / Cc / C Cc / d)S Aa / bA Ac / Sb / c 22.Eliminar smbolos intiles en las siguientes gramticas:a)S a / aA / B / C A aB / B Aa C cCD D ddd b)S A / B AaB / bS / b BAB / Ba CAS / b c)SAB / a Aa d) SAB BBC / AB Aa CAb / b 23.Dadas las siguientes gramticas, eliminar reglas borradoras:a)S aSbS / bSaS / b)S AaB / aaB A B bbA/ c) S A / B A C / D B D / E C S / a / D S / b E S / c / c)S AB /SA A aA / aBB /D / B bA / DD/ a C bA / bBA D aD / aE B bD

6 Una gramtica es ambigua si el lenguaje tiene alguna hilera que tenga ms de un rbol sintctico. Es posible frecuentemente, modificarla gramtica para que deje de ser ambigua. Teora de Lenguajes Formales y Gramticas2011 24.Determinar si los lenguajes definidos por las siguientes gramticas son vacos7:a)S a A C B / A D / C B aA a D / B C e / B b B B a / A B D a / b C D c a D A C b / c A S b)S a A B / A D / C c B a A a D / B C e / B b B b B / B D a / b C C c a / a D A b b / c B a c)S Sa d)S Sa / b 25.Dados las siguientes gramticas, eliminar las reglas unitarias8: a)prop declare id lista opciones lista opciones lista opciones opcin / opcin modo / escala / precisin / base modo real / complex escala fixed / floating precisin single / double base binary / decimal b)S a / aA / B A aB / B Aa 26.Dadaslassiguientesexpresionesregularesobtenerlasgramticasregularesaplicandoelmtodode derivadas: a) R0 = ab(a/b)*b) R0 = a(a/b)*c) R0 = (a/b)*d) R0 = (a (a/b)* )* 27.Encontrarunagramticaindependientedecontextosimplificadaequivalentealassiguientes gramticas: a)S AB / CA A aB BC / AB C aB / b b)S aSb / aXb / Y X ab / / aXb / YY Y YX / XY / aZb Z Y /

7 El problema de la vacuidad de los lenguajes generados por gramticas libres de contexto es decidible. Es decir, existe un algoritmo que toma como entrada una gramtica libre de contexto G y devuelve una respuesta afirmativa si L(G) ; y negativa en caso contrario. http://ocw.unican.es/ensenanzas-tecnicas/teoria-de-automatas-y-lenguajes-formales/material-de-clase-1/3-1_Introduccion.pdf, accedido en septiembre de 2010. 8 Se llama regla unitaria a la que tiene la forma AB. e) S SS /CA / AA bAA / aC / a B aSS /BC / B C CC /Cf) + | - | | | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Teora de Autmatas2011 A.AUTOMTAS FINITOS9 1.Para los siguientes diagramas de transicin 2.Paraelsiguiente,indiquesisudefinicinformalescorrecta.Encasoquenolosea,exprese correctamente la definicin formal. Para reflexionar:a)Por qu q2 y q3 derivan en ? b)Un autmata finito puede tener ms de un estado inicial? Puede tener ms de un estado final? c)Elautmataquesemuestraeneldiagramadetransicin,esdeterminstico?Fundamentesu respuesta. 3.Para los siguientes diagramas de transicin

9 Recordar que un Autmata Finito (AF) se define formalmente como una quntupla: A= (conjunto finito no vaco de estados, alfabeto finito de entrada, funcin de transicin directa, estado inicial, conjunto de estados finales). Puede representarse mediante una tabla de flujos o una diagrama de transicin. Adems, se dice que el Autmata Finito es No Determinstico cuando existe ms de una funcin de transicin para un mismo smbolo de entrada. Los conceptos generales estn extrados de Barchini, Graciela y Alvarez Margarita - Fundamentos Tericos de la Ciencia de la Computacin, Departamento de Informtica. FCEyT 1994 y 1998. a) Defina el autmata finito. b) Obtenga la gramtica, la expresin regular y el lenguaje a)Defina el autmata finito. b)Obtenga la gramtica. c)Dar ejemplos de hileras reconocidas por elautmata. q0 1 q1 q2 0 0 1 0 0, 1 q0 q1 q2 q3 0 1 2 1 1 A=({qo,q1,q2,q3},{0,1,2},q0,, {q2,q3}) (qo, 0)= q1 (qo, 1)= (qo, 2)= (q1, 0)= (q1, 1)= q1,q2,q3 (q1, 2)= (q2, 0)= q3 (q2, 1)= (q2, 2)= q2 (q3, 0)= (q3, 1)= (q3, 2)= q3 Gramtica que reconoce: q0 0q1 q1 1q1/1q2/1q3 q2 q3 /2q3 Teora de Autmatas2011 M1 M2 M3 M4 M5 M6 4.Realicelosdiagramasde transicin correspondientes al ejercicio5del apartado Lenguajes formales y gramticas. No utilice un mtodo preestablecido. 5.Para los AFND del ejercicio 4 obtenga el equivalente determinstico. 6.Realice el autmata finito a partir de las expresiones regulares del ejercicio 16 del apartado Lenguajes formales y gramticas. 7.Encuentrelaexpresincorrespondientealossiguientesautmatasfinitos.Utiliceelmtodode ecuaciones10. i) ii)

10 Recordar que el Lema de Arden sostiene que dada la ecuacin X = AX/B, donde eA, tiene una solucin nica X=A*B. q0 1 0 0 q1 0 q2 1 q0 q3 1 0 1 q0 a a q1 q2 0 b a b b q0q1q2 a b a ,b a a ,b 0 q0 0 0 q1q3 1 1 q2 0 0 0 Teora de Autmatas2011 iii) iv) v) vi) vii) 8.Definir y graficar los autmatas finitos de estados mnimos equivalentes a los dados. a,bq0aabbq3ba q1q2 0 q0 0 0 q1q3 1 1 q2 0 0 0 b a a q0 q1 q3 b a b q0 a a q1 q3 b q0 a,b q2 b b b b b q2 a b q0 q3 a a q4 q5 a a b q6 b a Teora de Autmatas2011 9.Calcular el autmata mnimo para el lenguaje complementario reconocido por el siguiente autmata.

10. Construir un AFN para las siguientes expresiones regulares usando el algoritmo de Thompson11: a)(a/b)*b)ab(a/b)*c)(( /a)b*)*d)(a/b)*abb(a/b)* e)b/(a+b/a+)f)a(a/b)*g)(a (a/b)* )*h)b* (a/b)* 11. Dados los siguientes diagramas de Thompson, identificar con cul ER se asocian: 12. Los AF en la vida real Los siguientes escritos breves dan cuenta de la funcionalidad de los AF en la vida reali:

11 El Mtodo de Thompson permite pasar de una ER a un AF no determinstico. Para poder emplearlo, hay que reconocer las ER de sus componentes primitivas,finalidad que persigue el ejercicio. q0 q1 1 ER= __________ ER= __________ Denominacin:_______________ q1 f1 M1 q2 f2 M2 q1 f1 a M1 qf q0 ER=_________Denominacin:______________ Situacin1:Enbiologasonmuyusadosparamodelarciertascosas.SepuedencrearAFcomomodelosde cmorespondeunaclulaanteunestmulo.Setieneuninputquepuedeserunqumicooalgosimilar,una serie de estados que pueden ser los estados de expresin de ciertos genes, o la produccin de alguna protena y adems ciertas probabilidades de transicin. En s, se piensa que una clula en su totalidad se puede modelar como un autmata finito no determinista. Teora de Autmatas2011 Seleccione una situacin y formalice la solucin. 13. Explicite el lenguaje reconocido por los siguientes AF. Situacin 2: Para ciertos procesos celulares que requieren mucho control, como el crecimiento embrionario, sepuedenusarautmatasfinitosdeterministas(comounasimplificacin)paramodelarloscambiosde expresin de los genes que hacen que el proceso de gestacin se lleve a cabo. Situacin 3: Se pueden usar expresiones regulares cuando de un texto extenso interesa saber cundo se mencionan ciertas palabras. Por ejemplo, en la Biblia, para extraer slo la informacin de dnde estuvo Jess, se puede generar una expresin regular en la que se busquen ciertas estructuras gramaticales de oraciones que relacionen a Jess con algn lugar. Teora de Autmatas2011 B.AUTOMTAS DE PILA 12 PUSH-DOWN AUTMATAS 1.Dados los siguientes lenguajes, realice los autmatas de pilas correspondientes. a) L(G) = {anbnc / n > 1}b) L(G) = { anb2nc/ n > 0}c) L(G) = {ambmcn / n,m > 1} d) L(G) = {ambncn / n,m > 1}e)L(G) = {anbmcmdn / n,m > 0}f) L(G) = {anbm / n = m} g) L(G) = {aibjck / i = j o j = k}h) L(G) = {anbncn+md / n,m > 1}i)L(G)={ xwx-1 / x e {a,b}*, w e {c,d}+} j) L(G) = {(ab)n cn (dd)j /n > 1, j > 0}k) L(G) = {0m1n0m+n / m,n > 0}l)L(G) = {anbncn+md / n,m > 1} m)L(G) = { anbmc3m+1d2n / n,m > 1}n) L(G) = { aibjck / i=2j o j=3k-1}o) L(G) = {anbicd2(n+m) / n,m > 1; i > 0} p)Lenguaje que genere hileras de ceros y unos con igual cantidad de ceros y unos. q)Lenguaje que genere hileras de a y b con distinta cantidad de a que de b. r)Lenguaje formado por parntesis balanceados.

12 Un autmata de pila es un dispositivo abstracto que formalmente se define mediante una 7-upla:A =(conjunto finito no vaco de la unidad de control, alfabeto de entrada, alfabeto de la pila, funcin de transicin directa, estado inicial, smbolo inicial de la pila, conjunto de estados finales). La notacin cambia notablemente sobre las transiciones, pues involucran: smbolo que se lee, smbolo del tope de pila, accin a seguir. Si la accin a seguir es borrar un elemento de la pila, se escribe. Si la accin es apilar, se escribe el smbolo que se guardar en la pila y el smbolo actual del tope de pila. Si no se har nada, slo se consigna el tope de pila. Teora de Autmatas2011 2.Realice los autmatas que reconozcan hileras pertenecientes a los lenguajes descriptos en el ejercicio11 del apartado Teora de Lenguajes y Gramticas. 3.Dadoslossiguientesautmatasdepila,identifiqueellenguajequereconocenlosmismos.Formalicela definicin de los mismos. C.MQUINAS DE TURING13 1. Defina una mquina de Turing que reconozca los siguientes lenguajes: a)L(G) = {0n1n2n / n > 1}b)L(G) = {x#x / x e {a,b,c}*} c)L(G) = {anbmcnm /m, n > 1}d)L(G) = {a2n/ n > 1} e)L(G) = {an bm an+m / n, m > 0} f)L(G) = {an bn-1 cn+3 / n > 1} g)L(G) = {12k+1 / k > 0} h)L(G) = {x/ x e {0,1}* y la cantidad de ceros es igual a la cantidad de unos}

13 Formalmente una Mquina de Turing (MT) se define como una 6-upla: A=(conjunto finito no vaco de la unidad de cinta, alfabeto de entrada no vaco, alfabeto de la cinta, funcin de transicin, estado inicial, conjunto de estados finales). La particularidad de la cabeza lecto-escritora de la MT es que se puede mover a derecha, a izquierda, o no moverse. q0 q1 q2q3 1,z0/z0 (,z0/( z0 a,( /a( a,a/aa b,a/ b,a/ ),( / , z0/z0 q4 Lenguaje reconocido por el autmata:q0 q1q2q3 q4q5 q6 *, z0/*z0 1, */1* 1/1/11 2,1/1 3,1/ 3,1/ 4,1/1 4,z0/z0 , z0/ z0 *, z0/*z0 +, z0/+z0 1, +/+ 2,1/21 2,2/22 3,2/2 3,2/2 4,2/ 3,z0/z0 , z0/ z0 +, z0/+z0 Lenguaje reconocido por el autmata: Teora de Autmatas2011 i)L(G) = {ww-1 / w e {0,1}*}j)L(G)={ xwx-1 / x e {a,b}*, w e {c,d}+} 2.Disee una mquina de Turing unicinta y/o multicinta que: a.Determine si un nmero es par o impar. b.Multiplique dos nmeros en notacin unaria. c.Duplique un nmero en notacin binaria d.Transforme n en n+1, donde n es un nmero decimal. e.Dados dos nmeros binarios, imprima el mayor. f.Calcule la resta de dos nmeros binarios. g.IndiqueconunSoconunNOsiunnmerodadoennotacinunariaesmltiplodealgunodelos divisores (distinto de 1) de un conjunto dado. h.Calcule n2, donde n est expresado en notacin unaria. i.Calcule el factorial de un nmero n en notacin unaria. j.Calcule el cociente y el resto de dos nmeros naturales. k.Genere la serie Fibonacci en notacin unaria, teniendo en la cinta inicialmente 1#1. Puesto que la serie es infinita la mquina nunca se detiene. l.Encuentre el resto de un nmero mayor o igual que 3 dividido 3 escrito en notacin unaria. 3.Definir una MT transductora que: a.Reciba un nmero en cdigo unario y lo devuelva traducido al cdigo binario. b.Reciba un nmero en cdigo binario y lo devuelva traducido al cdigo unario. c.Reciba dos nmeros en cdigo unario, separados por un espacio en blanco, y devuelva su suma. d.Reciba dos nmeros en cdigo binario, separados por un espacio en blanco, y devuelva su suma. e.Calcule el cuadrado de un nmero unario. f.Reciba dos nmeros en cdigo unario, separados por un espacio en blanco, y devuelva su producto. 4.Sabas que..?ii Una de las aplicaciones de la prueba de Turing es el control de spam. Dado el gran volumen de correoselectrnicosenviados,elspames,porlogeneral,enviadoautomticamenteporuna mquina.AslapruebadeTuringpuedeusarseparadistinguirsielcorreoelectrnicoera enviadoporunremitentehumanooporunamquina(porejemploporlapruebaCaptcha). CaptchaeselacrnimodeCompletelyAutomatedPublicTuringtesttotellComputersand Humans Apart (Prueba de Turing pblica y automtica para diferenciar mquinas y humanos). Este es un tpico test para la secuencia "smwm" que dificulta el reconocimiento de la mquina distorsionando las letras y aadiendo un degradado de fondo. Se trata de una prueba desafo-respuestautilizadaencomputacinparadeterminarcundoelusuarioesonohumano.El trminoseempezautilizarenelao2000porLuisvonAhn,ManuelBlumyNicholasJ. Hopper de la Carnegie Mellon University, y John Langford de IBM. Latpicapruebaconsisteenqueelusuariointroduzcaunconjuntodecaracteresquese muestranen unaimagen distorsionadaque apareceen pantalla. Se supone que unamquina no es capaz de comprender e introducir la secuencia de forma correcta por lo que solamente el humano podra hacerlo. Construccin de Compiladores2011 A. ANALIZADOR LEXICO14 1. Dada la siguiente gramtica realice el anlisis lxico: prop --> if expr then prop else prop / while expr do prop / begin prop end expr --> expr oprel termino / termino termino --> (expr) / id / num donde: a) if , then, else, while, do, begin, end son palabras claves b) oprel son cualquiera de los siguientes operadores: < , , >=, =, < > c) id es un identificador formado por letras y/o dgitos, que debe comenzar con una letra. d) num es una constante real. 2. Realice el anlisis lxico del siguiente programa en lenguaje C. int max (i, j);int i, j; /* devuelve el mximo de dos enteros i y j */{ return i > j ? i : j ; } 3. Determinar qu tokens entrega el siguiente analizador lxico: 4. LEX . Utilizando el generador de analizador lxico LEX: a.Hacer un programa LEX que tras leer un texto indique el nmero de caracteres, palabras y lneas de dicho texto,entendindose por palabratodasecuenciadecaracteres queno poseani espaciosni tabuladores ni retornos de carro. Se supone que toda lnea est acabada por un retorno de carro (\n).b.Hacer un programaenLEX, demaneraquesecifre el texto deentrada, convirtiendocada palabraensu inversa. El concepto de palabra es el mismo que en el ejercicio anterior. c.Hacer un cifrado ligeramente ms complicado que el anterior:

14 La fase de rastreo, o analizador lxico, de un compilador, tiene la latera de leer el programa fuente como un archivo de caracteres y dividirlo en tokens. Los tokens son como las palabras de un lenguaje natural. Cada token es una secuencia de caracteres que representa una unidad de informacin en el programa fuente. Por ejemplo, las palabras reservadas, los identificadores, entre otros.dgito INICIO ENTRADANUM ENTRADAID ENTRADA ASIGNA ENTRADA COMENTARIO {} espacio en blanco dgito letra : otro HECHO letra [otro] [otro] =/[otro] [otro] Construccin de Compiladores2011 -Si una palabra tiene 4 o menos letras, cambiarla por su inversa. Ej.: nio --> oin. -Si tiene 5 6 letras, cambiarla por su inversa en bloques de dos caracteres. Ej.: comida --> damico. -Si tiene 7, 8 9 letras, cambiarla por su inversa en bloques de tres caracteres. Ej.: botelln --> lntelbo. -Si tiene ms de 9 letras, cambiarla por su inversa en bloques de 4 caracteres. Ej.: ferretera erarretfe. d.HacerunprogramaLEXquetrasleersuentrada,indiqueelnmerodepalabrasledasqueposeenun diptongo cuya primera letra es u, y la segunda no es una a. No se considerar diptongo aquella subcadena que forme parte de un triptongo. De hecho, en espaol slo existen tres triptongos: -uai-, uei-, -iai-, -iei-. Del total de palabras ledas con el diptongo indicado decir cuantas son de cada forma: -ue-, -ui-, -uo-, -uu-. Si una cadena posee ms de uno de estos diptongos se contabilizar una vez para cada diptongo diferente que posea. e.Supuestoquesetieneundiccionariodepalabrasenformatotexto,(almacenadoenunficheroconuna palabraporlnea),procesarmedianteunprogramaLEX,cualquiertextodeentrada,visualizandopor pantalla todas las palabras que no estn en dicho diccionario. El diccionario puede ser volcado a memoria justo antes de comenzar el procesamiento. f.Modificarelprogramaanterior,demaneraquecadavezqueseencuentreunapalabraquenoestenel diccionario, se consulte al usuario, que tendr las siguientes opciones: -Ignorar la palabra. -Agregarla en el diccionario. -Modificarlapalabra.Entalcaso,cadavezquesevuelvaaencontrarlapalabraoriginal,se sustituir por la nueva. Seobtendrcomosalidaelmismotextodeentrada(conlaspalabrasmodificadas),yelmismofichero diccionario de entrada, pero enriquecido con las nuevas palabras. B. ANALIZADORES SINTCTICOS DESCENDENTES15 1. Analizador Sintctico Predictivo No Recursivo a) Calcular los conjuntos de los PRIMEROS y los SIGUIENTES de todos los smbolos no terminales de la siguiente gramtica G = ({S,A,B,C,D}, {a,b,c},S, P) donde P es: S a A B C A a / b b D B a / C b / D c / b) Comprobar que la siguiente gramtica es LL(1) sin modificarla. A B C D B a C b / C c A d /e B f /g D h / D i c) Comprobar si la siguiente gramtica es LL(1).A B C D B b / C c / D d / d) Dada la gramtica G = ({S, D, E}, { inst, var, ident, sep, in, flota, fproc},S, P) donde P es: S S inst /S var D / D D ident E /D ident sep /int / float

15 El anlisis gramatical es la tarea de determinar la sintaxis o estructura de un programa. Por ello tambin se lo conoce como anlisis sintctico(AS). La sintaxis de un lenguaje de programacin por lo general se determina mediante las reglas gramaticales de una gramtica libre de contexto. Las estructuras de datos empleadas para representar la estructura sintctica de lenguaje es alguna clase de rbol, que se conoce como rbol sintctico o gramatical. Un algoritmo de AS descendente analiza una cadena de tokens de entrada mediante la bsqueda de los pasos en una derivacin por la izquierda. Las dos clases de AS descendente que se estudia son el recursivo y el LL(1). Construccin de Compiladores2011 E S fproc i)Elimnese la recursividad a la izquierda. ii)Factorizar a izquierda iii)Comprubese que la gramtica resultante cumple la condicin LL(1). e) Dada la gramtica G = ({E,L}, { (,),op,id},E, P) donde P es: E id / ( E ) / op L L E / L E i)Obtener una gramtica equivalente sin recursividad aizquierda. ii) Construir latabladeanlisisLL(1) para lagramtica obtenidaenel apartadoanterior. La gramtica pertenece a la clase de gramticas LL(1)? Por qu? f) Dada la gramtica G = ({S, A, B, L}, { begin, end, teid, var, tipo, fvar, id},S, P): S A B A begin S end B theend / B var L : tipo /B fvar / L L , id / id i)Realice las transformaciones necesarias para eliminar la recursividad por la izquierda. ii)Calcular los conjuntos de PRIMEROS y SIGUIENTES de cada no terminal. iii) Comprobar que la gramtica modificada cumple la condicin LL(1). iv) Construir la tabla de anlisis sintctico LL(1) para esta nueva gramtica.v) Hacerlatrazadelanlisisdelasiguientecadena,comprobandoquelasderivacionessoncorrectas mediante la construccin del rbol de anlisis sintctico. begin var id,id: tipo var id:tipo fvar end var id: tipo theend g) Dada la gramtica G = ({P, D, S, V, I}, { begin, end, decl, id [,]},P, P): P D S D D V / S S I / V decl id ; / decl id ( P ) ; /decl [ D ] id ; I id ; / begin P end i)Realice las transformaciones necesarias para que cumpla la condicin LL(1). ii)Construir la tabla de anlisis sintctico LL(1) para esa nueva gramtica. iii)Hacer la traza de las cadenas: decl id ( begin id ; ) decl id ( decl [ decl id ; ] id ; ) ; id ; h) La siguiente gramtica permite describir un circuito formado por resistencias unidas en serie o en paralelo. Calcule los conjuntos PRIMEROS, SIGUIENTES y la tabla de anlisis sintctico LL(1). Circuito CircuitoSerie RamaParalela RamaParalela | CircuitoSerie RamaParalela / CircuitoSerie CircuitoBase ConexionSerie ConexionSerie - CircuitoBase ConexionSerie / CircuitoBase resistencia / ( Circuito ) i) Demostrar formalmente que una gramtica LL(1) no es ambigua. Ejemplificar. j) Demostrar formalmente que una gramtica recursiva a izquierdas no es LL(1). Ejemplificar. k) Demostrar que una gramtica es LL(1) si y solo si no tiene entradas mltiples en su Tabla de Anlisis. l)ComprobarsilassiguientesgramticassonLL(1).Encasoafirmativo,realizarelanalizadory reconocer las hileras que se adjuntan. Construccin de Compiladores2011 i) A B b / C dB a B / C c C / ii) S 0 S 0 / 1 S 1 / Hileras: aabdHilera: 0110 C. ANALIZADORES SINTCTICOS ASCENDENTES16 1. Analizador Sintctico LR(0) a) Considere la siguiente gramtica: D T L pyc T float / int L V / L coma V V id / id asig num La siguiente figura muestra la tabla de anlisis SLR o LR (0) de la gramtica anterior: i)Reconocer hilera: float a = 3, b;. b) Considere la siguiente gramtica, que describe las proposiciones lgicas basadas en los valores true y false y los operadores de conjuncin (^), disyuncin (v) y negacin (): G = ({E,C,L}, { v, ^ , , true, false, (,)},E, P) donde P es: E E v C / C C C ^ L / L L L / true / false/ ( E ) i)Obtener la tabla de anlisis LR(0) c) La siguiente gramtica permite describir un texto formado por un nico prrafo.

16 Los algoritmos de AS ascendentes son ms poderosos que los mtodos descendentes, por ejemplo, la recursin izquierda no es un problema en el anlisis sintctico ascendente. Las construcciones involucradas en estos algoritmos tambin son complejas. Un AS ascendente tiene dos posibles acciones (adems de aceptar): desplazar y reducir. Por esta razn, es que tambin se los conoce como AS de reduccin por desplazamiento. Construccin de Compiladores2011 Prrafo ListaDeFrases FinDeLnea ListaDeFrases Frase / ListaDeFrases Frase Frase ListaDeClasulas punto ListaDeClasulas Clasula / ListaDeClasulas coma Clasula Clasula Palabra / Clasula espacio Palabra Palabra letra / Palabra letra i)Construya la tabla de anlisis SLR de la gramtica planteada. d)Lasiguientegramticarepresentalasintaxisdelainstruccindeasignacindeunlenguaje basado en conjuntos: Asig id = Expr ; Expr Base / Exp.Base / Expr Base Base {Elem} / {Exp.} Elem num / Elem , num i)Construya la tabla de anlisis SLR de la gramtica planteada. ii)Reconozca la siguiente hilera: e) La siguiente gramtica representa la sintaxis de las expresiones de un lenguaje basado en notacin prefija: Expr (Operador Lista)Operador id / + / - / * / / Lista Lista , Param / Param num / id / Expr i)Construya la tabla de anlisis SLR de la gramtica planteada. ii)Reconozca la siguiente hilera: f) Dada la siguiente gramtica G = ({S,A,D}, { (,),a,b,},S, P) donde P es: S ( A ) A A , D /D D a / b / ( A ) i)Construir la coleccin cannica de conjuntos de elementos LR(0). ii)Es una gramtica LR(0)?g) Dada la siguiente gramtica G = ({S }, { id,/,*,(,)},S, P) donde P es: S id / S / S / S S / S * / ( S ) i)Obtener la tabla de anlisis LR(0). Es una gramtica LR(0)? Por qu? ii) Resolver los posibles conflictos teniendo en cuenta la precedencia usual entre los operadores (de mayor a menor: cierre (*), concatenacin y alternativa (/)), y su asociatividad (a izquierdas). h) Considerar la gramtica declaracion tipo var-list tipo int/float var-list identificador, var-list/ identificador. i)DFA de elementos LR(0) para la gramtica. ii)Es esta una gramtica LR(0)? Si no es as, describir el conflicto LR(0). Si lo es, construir la tabla de anlisis sintctico LR(0). Construccin de Compiladores2011 2. Analizador Sintctico LR(1) y LALR a) Dada la siguiente gramtica G = ({S,A,B}, { a,b,c},S, P) donde P es: S A b /B c A A a / B B a / i)Construir la Coleccin de Conjuntos de elementos LR(1) de la gramtica inicial y construir la Tabla de anlisis LR(1). Es LR(1)?. b) Para la siguiente gramtica G = ({S }, { 0,1,c},S, P) donde P es: S 0 S 0 / 0 S 1 / c i)A partir de la Coleccin de Conjuntos de elementos LR(1), obtener (por fusin de estados) la tabla de anlisis LALR. Es una gramtica LALR? c) Dada la siguiente gramtica G = ({S,A,B}, {a,b,c},S, P) donde P es: S a S A / A B b B A c / i)Construir la Tabla de Anlisis LALR(1), a partir de la coleccin cannica de elementos LR(1). ii)Reconocer la cadena: ab d) Dada la siguiente gramtica G = ({S,H}, { (,),d},S, P) donde P es: S ) H ( H d H H S i)Obtener los conjuntos de Primeros y Siguientes de los smbolos no terminales. ii) Cumple la condicin LL(1)? Justifica la respuesta y en el caso de no cumplirse la condicin obtener una gramtica equivalente que sea LL(1). iii) ConstruirlaColeccinCannicadeConjuntosdetemsLR(1)paralagramticaoriginalyel analizador . iv) Construir la tabla de Anlisis LALR(1). Es LALR(1)? v) Teniendo encuentalatabladeanlisisLALR(1), analizarlasentencia( ( )dd ),mostrandoencada paso el contenido de la pila, de la cadena de entrada y a la accin a ejecutar. e) Dada la siguiente gramtica G = ({B,D,S}, { begin, end, ; d, s },B, P) donde P es: B begin D ; S end D d | D ; d S s | S ; s i)Construir el analizador sintctico LR(1). ii)A partir de la anlisis de elementos anterior, construir la tabla de anlisis LALR(1). iii) Reconocer la cadena: begin d; d; s; s end con ambos analizadores. f) Dada la siguiente gramtica G = ({S,B}, { (,),d},S, P) donde P es: S B ) B ( / B d / B S i)Construir la tabla de anlisis LR(1). Es LR(1)? Por qu?. ii)Obtener la gramtica LL(1) equivalente y su tabla de anlisis. g) Dada la siguiente gramtica G = ({S }, { 0,1,c},S, P) donde P es: S 0 S 0 / 0 S 1/c i)Construir la tabla de anlisis LR(1). Es una gramtica LR(1)?. ii)ApartirdelacoleccincannicadeelementosLR(1),obtenerlatabladeanlisisLALR.Esuna gramtica LALR? 3. LEX y YACC Utilizando los generadores de analizador lxico (LEX) y sintctico (YACC) realizar: a) En la siguiente gramtica, una asignacin tambin se considera una expresin, con el mismo significado que en C. S E Construccin de Compiladores2011 E E := E | E + E | ( E ) | id Por ejemplo, la expresin b := c, asigna a b el valor de c, y lo que es ms, la expresin a:=(b:=c) asigna a b el valor de c, y a a, el valor de c tambin. Construir un programa LEX/YACC para chequear que la parte izquierda de una asignacin es un l-valor, o lo que en este caso es lo mismo, un identificador. b) Hacer un programa LEX/YACC que permita simular la declaracin de variables y su posterior uso, de forma que se detecten las variables redeclaradas y las que se usan sin haberse declarado. As, las siguientes entradas daran los mensajes indicados: DECLARAR uno, dos; USAR dos, tres; > tres no declarado. DECLARAR uno, tres, cuatro; > uno ya declarado. c) Sea la siguiente gramtica para declarar variables D id L L , id L | : T T integer | real Construir un programa LEX/YACC que lea una declaracin, cree una lista con los identificadores declarados; juntoconcadaidentificadorsedeberguardareltipodeste.Alfinaldelanlisissevisualizarlalistacon todos los identificadores y el tipo de cada uno.d) Construir un programa LEX/YACC que acepte declaraciones de funciones de la forma: DECLARAR Nombre_funcin(lista_parmteros_formales); y que permita usar dichas funciones de la forma: USAR Nombre_funcin(lista_parmetros_reales); El analizador debe controlar que: - No hay redeclaraciones de funciones. - Los parmetros formales de la funcin son slo variables. - Una variable no posee el mismo nombre que una funcin. - Al usar una funcin, sta ha sido previamente declarada. -Queel nmero deparmetrosreales al usar unafuncin coincidecon el nmero de Parmetros formales indicados en su declaracin. Nosetendrencuentatipo alguno para las variables ni para las funciones.Adems, como parmetro real de una funcin se permiten llamadas a funcin tambin. e) Hacer un intrprete utilizando LEX y YACC que permita manipular cadenas de caracteres, y que permita la sumaylaresta.Lasumadedoscadenas,producirotracadenacuyoresultadoserlaconcatenacindelas primeras. La resta se producir entre una cadena y un entero, de la forma c - n, y dar como resultado la cadena c pero sin los n ltimos caracteres; si la cadena c tiene ms de n caracteres, se producir un error; si el nmero n esnegativo,enlugardequitarsedeclosnltimocaracteres,sequitarnlos*n*primeroscaracteres.Las cadenasseencierranentrecomillasdoblesylosnmerossernenterosincluidoelcero,ysin decimales.D. GENERACIN Y OPTIMIZACIN DE CDIGO INTERMEDIO 1. Traduzca las siguientes expresiones aritmticas a: i)a * - (b+c) ii)-(a+b) * (c+d) + (a+b+c) iii)a + b - c * (m+n+p-r) iv)a ^ (c-d) - (p+z-r)* s - t * h a)rbol sintctico y GDA b)Notacin postfija c)Cdigo de tres direcciones Construccin de Compiladores2011 2. Traduzca los siguientes programas a: triplas, cudruplas y triplas indirectas. Optimice dicho cdigo. a) main() { int i; int a[10]; i = 0; while (i< 10) { a[i] =0; i = i +1; } } b) I := 1 M := N DO WHILE I