Sei sulla pagina 1di 28

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 Computabilidad 2011



1. Determine si las formalizaciones
1
son adecuadas para los enunciados de problemas:

Enunciado del problema Formalizacin
1.1. Determinar si un nmero es
perfecto. (Un nmero es perfecto
si es igual a la suma de todos sus
divisores excluido el mismo
nmero: 6 = 1 + 2 + 3).

D = Z
I = N
R = y / y = s v y = no `
q = ( x , y ) c I x R / [y = si x: x =

=
k
i
i
x
1
; donde x
i
= j


. x mod j

= 0 con j = 1.. x-1, con i = 1 i+1 k] v [y = no
todo lo contrario].
1.2. Determinar si un nmero es
capica.

D = N
I = x / x c N . x = x
1
x
2
...x
n
. n > 2 `
R = y / y = s v y = no `
q = ( x , y ) c I x R / y = si x : x
i
= x
j
con i = 1, 2, ... ,
Int (n/2) . j = n, n-1 , ... , Int (n/2) v y = no - x : x
i
=
x
j
con i = 1, 2, ... , Int (n/2) . j = n, n-1 , ... , Int (n/2) `
1.3. Determinar si un nmero entero
positivo de m dgitos (con 2 <= m
<= 9) es narcisista. Un nmero es
narcisista cuando es igual a la
suma de alguna potencia de sus
dgitos.
Por ejemplo: 371 es narcisista de
orden tres.
371 = 3
3
+ 7
3
+ 1
3


D = N
I = x / x c N . x = x
1
x
2
...x
n
. 2 s n > 9 `
R = y / y = s v y = no `
q = ( x , y ) c I x R / y = si x : - k /

=
=
n
i
k
i
x x
1
con k =
2 v 3 v ... v 9 v y = no k : x x
i
k
i
n
=
=

1
con k = 2 v 3 v
... v 9`
1.4. Determinar si un vector de N
elementos (N s 100) con K
elementos pares y M elementos
impares, con K y M > 0, esta
ordenado de la siguiente manera:
- Primero los elementos pares en
orden creciente y
- luego los elementos impares en
forma decreciente.

D = ( A,n) : A c R
n
. n c N `
I = A(n) / A(i) c R con i c N , n s 100, 0 < K s n , 0 < M s n
. K + M = n `
R = y / y = s v y = no `
q = ( A , y ) c I x R / y = si - K = 0 : Mod ( A(i/2) = 0 .
Mod ( A(i + 1)/2) = 0 . A(i ) s A(i + 1) con i = 1,2,...., k-1 .
- M = 0 / Mod ( A(i/2) = 0 . Mod ( A(i + 1)/2) = 0 . A(i ) >
A(i + 1) con i = K +1, ...., ( K +M ) - 1 v y = no caso contrario
`










1
Formalmente un problema se define mediante una cudrupla: <D,R,Q,I>, donde D representa el dominio de datos, R al
dominio de resultados, Q es la especificacin o condicin del problema, I es el conjunto de instancias de inters, y es un
subconjunto de D.
Teora de la Computabilidad 2011



2. Determine si las condiciones de viabilidad son adecuadas para los enunciados de problemas

Enunciado del problema Condicin de viabilidad
2.1. Determinar si un nmero es
capica
x: | x c I - y / y c R .x : x
i
= x
j
con i = 1, 2, ... , Int (n/2)
. j = n, n-1 , ... , Int (n/2) |
2.2. Determinar si un vector de N
elementos, no tiene elementos
repetidos.
A(i) : | A(i) c I - y / y c R . A(i) : | | | | j A i A = con i =
1 n-1 . j = i+1 n para cada i ]
2.3. Determinar si una matriz de NxN
elementos (N < 30) esta ordenada
en forma ascendente.
A(i,j) : | A(i,j) c I - y / y c R . A(i) : (A(i,j) < A(i, j+1),
i = 1..n . j = 1..n-1) . (A(i,n) < A(i+1,1 ), i = 1..n-1]

3. Dadas las siguientes formalizaciones de problemas, enunciar el problema al cual corresponden:





















4. Formalice los problemas correspondientes a los siguientes enunciados
- Dado un nmero, obtener la suma de sus dgitos.
- Dado un nmero, determinar si es un nmero de Amstrong. Un nmero de Amstrong se obtiene si al elevar
cada uno de los nmeros que lo componen al nmero total de dgitos que contiene, la suma de dichos
resultados es igual al propio nmero. Por ejemplo: 153=1
3
+5
3
+3
3
, 370=3
3
+7
3
+0
3
, 371=3
3
+7
3
+1
3
, 407=4
3
+0
3
+7
3

- Calcular el rea y el permetro de un rectngulo.
- Encontrar un nmero de cuatro cifras distintas que al multiplicarse por cuatro da por resultado otro nmero
de cuatro cifras y que es el inverso del primero
D= 9- {0} x 9
n

I= 9- {0} x 9
R= 9
Q= {((a,b),x) e IxR: ax+b=0}

Enunciado:
D= 9- {0} x 9
n

I= 9- {0} x 9
2

R=
2

Q= {((a,b,c), (x
1
,x
2
)) e Ix
2
: ax
i
2
+bx
i
=0, con i= 1,2}

Enunciado:
D= F
nxm
I= {A,B,Ce 9
nxm
}
R= {x var lgica, (x=s x=no)}
Q= {(A,B,C,x) e IxR/ x=s [(C
ij
=A
ik
+B
kj
) k=1n, para cada j= 1,n, para cada i= 1n; x=no en
caso contrario]}

Enunciado:
Teora de la Computabilidad 2011



- Dado un vector con 10 elementos numricos enteros, indique cuntos de ellos son mltiplos de 3.
- Dado un nmero X determinar si ese nmero corresponde a un trmino de la frecuencia de Fibonacci.
- Verifique si una matriz de nxn, en la columna final contiene la suma de los elementos de las filas.
- Dado un sistema de 2 ecuaciones lineales con dos incgnitas (ax+by = c ; dx+ey =f), obtener los valores de x
y y.
- Dada una matriz A de m x n, imprimir la fila que contiene el menor elemento y la columna que tenga el
mayor elemento de la matriz.
- Se tienen 3 arreglos A,B,C de m elementos. Generar otro arreglo de tres elementos, donde cada elemento sea
la suma de los elementos de cada arreglo.
- Dado un nmero natural menor o igual a 20, obtener el nmero romano correspondiente.
- Obtener el mximo comn divisor de un par de valores ingresados.

5. Tipos de problemas

a) Especifique el tipo de problema.
b) Justifique su respuesta.



























6. Para los algoritmos dados realice las siguientes actividades:
a) Enuncie el problema correspondiente.
b) Formalice el problema.
c) Analice la eficiencia y obtenga el tiempo de ejecucin del peor caso.
d) Exprese el orden correspondiente





Sudoku es un pasatiempo que se populariz en Japn en 1986, y se dio a conocer en el mbito
internacional en 2005. El objetivo del sudoku es rellenar una cuadrcula de 9 9 celdas (81
casillas) dividida en subcuadrculas de 3 3 (tambin llamadas "cajas" o "regiones") con las
cifras del 1 al 9 partiendo de algunos nmeros ya dispuestos en algunas de las celdas. Aunque
se podran usar colores, letras, figuras, se conviene en usar nmeros para mayor claridad. Lo
que importa, en todo caso, es que sean nueve elementos diferenciados. No se debe repetir
ninguna cifra en una misma fila, columna o subcuadrcula. Un sudoku est bien planteado si la
solucin es nica. La resolucin del problema requiere paciencia y ciertas dotes lgicas.


Teora de la Computabilidad 2011





























































d)
for i = 1 to n do
s = 0
t = 0
for j = 1 to n do
if a(i,j) > 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<= 100 hacer
Leer n
s = s + n
x = x + 1
Finmientras
media = s /100
Escribir media
Fin
c)
begin
s := 0
k := 1
for i = 1 to n-1 do
for j = i + 1 to n do
begin
b[ k ] : = a[ i , j ]
k := k + 1
end
for i = 1 to k-1 do
s : = s + b[ i ]
end
b)
Inicio
i=1
may=0
rest=0
suma=0
Mientras i<=10 hacer
suma=suma+v[i]
i=i+1
Fin Mientras
promedio=suma/10
i=1
Mientras (i<10) hacer
Si (v[i] > promedio)
may=may+1
Sino
rest=rest+1
Fin Si
i=i+1
Fin Mientras
Fin

Teora de la Computabilidad 2011


















7. Dado el siguiente algoritmo









8. Para los problemas impares del ejercicio 3, realice las siguientes actividades:
a) Disee los algoritmos correspondientes.
b) Analice la eficiencia y obtenga el tiempo de ejecucin.
m = 0
begin
for i:= 1 to n do
for j:= 1 to i do
for k := j to n do
m = m + 1
end

a) Analice la eficiencia y obtenga el tiempo de
ejecucin del peor caso
b) Exprese el orden correspondiente
c) Determine el valor de la variable m
d) Compare los resultados obtenidos en a) y c)

f)
procedure muy_impar (n: integer);
var
i, j, k : integer;
begin
for i:= 1 to n do
if odd( i ) then begin
for j:= i to n do
x := x + 1;
for j := 1 to i do
y := y + 1;
end
end

g)
procedure misterio (n:integer);
var
i, j, k : integer;
begin
for i:= 1 to n - 1 do
for j:= i+1 to n do
for k := 1 to j do
{proposicin O(1) }
end
Teora de Lenguajes Formales y Gramticas 2011



1. Dadas las siguientes hileras, determinar qu lenguaje
2
las genera:

Hileras Lenguaje
a)aaa, bbb, cccccc, abababab,
acacababa, bacbacbbbcc,
a)L1= {x/ x e {a,b,c}* y la cantidad de b es el triple de la
cantidad de c, y la cantidad de a es el doble de la cantidad
de c}
b)1011111011, 101110, 11111 b)L2={a
n
b
2n
c
3n
/n 0}
c)acabbb, bbacbbaacabb,
ccaabbcaabbbbbbba,
c)L3: Lenguaje formado por hileras de 0 y 1 tales que antes
de cada 0 existe un 1, y despus de cada 0 hay dos 1
consecutivos
d), abbccc, aabbbbcccccc,
aaabbbbbbccccccccc
d) L4= {x/ x e {a,b,c}*}
e)011, 011011, 0101, 11111,
000000
e) L5: Lenguaje formado por hileras de 0 y 1 tales que la
cantidad de 0 es la mitad de la cantidad de 1.

2. Dado los siguientes lenguajes:
L
1
= {xy / x e {a,b}* . y = aa }
L
2
= {a
2n-1
b
2m
/ n, m > 1}
L
3
= {(ab)
n
a / n > 0}
1.1 Dar ejemplos de hileras x e L
i
(con i = 1,2,3)
1.2 Para las hileras x y y e L
2
(del ejercicio anterior), calcular:
- x
0
y
0
- (xy)
-1
- xy - x
2
y
2

1.3 Calcular por extensin para los lenguajes L
1
y L
2
:
- L
1
3
- L
1
* L
2
* - L
2
+

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 Regular Lenguaje Regular
G1 = ({S,A}, {a,b}, P,S) donde P es:
S yS / xA /
A xS / yA
L
1
= { xy
n
z (xy
m
z)
p
/ n,m, p > 0 }
G2 = ({S,M,N}, {x,y,z}, P,S) donde P es:
S xM /
M yN
N zS
L
2
= { wz / w = x v w= yx
n
y . z=x
m
/ n,m > 0}

G3 = ({S,A,B}, {x,y}, P,S) donde P es:
S xA
A yA / zB
B xA /
L
3
={(xyz)
n
| n > 0}


G4 = ({S,A,B}, {x,y}, P,S) donde P es:
S xA / yB
A xA /
B xB / yA
L
4
= {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 Gramticas 2011



5. Para cada uno de los siguientes lenguajes, definir la gramtica
3
regular y la expresin regular
4

correspondiente:
a) L = {w = a
n
ba
k
/ 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 = {a
n
b
m
/ n+m es par}
e) L = {ab
n
w/ 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 = a
i
b
j
v x = (cd)
2n+1
, i > 0, n, j > 1}
n) L = {x/x = awc
n
, 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 = {a
n
b
m
c
k
/ k = n+m}
b) L = {a
n
b
m
a
k
/ n=m v m =k}
c) L = {x / x e {a,b}*, x
a
= x
b
+1}
d) L = { 0
n
1
m
2
n-m
/ n > m > 0}
e) L = { a
i
b
j
/ i = j}
f) L = { a
i
b
j
c
k
/ 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) Identificadores de cualquier longitud que comiencen con una letra y contengan letras, dgitos o
guiones. No puede terminar con guin.
d) Comentarios acotados por /* y */ sin que intervenga */ a menos que aparezca entre comillas.
e) Nmeros de telfono. Considere solamente nmeros locales con todas las caractersticas de
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 Gramticas 2011



8. Dadas las siguientes ER, definir las gramticas correspondientes, y expresar el lenguaje:

E1: (a,z)*@ gmail.com E3: 0*42 E5: este|oeste|norte|sur
E2: (0,1)*101 E4: (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 Contexto
5
Lenguaje Libre de Contexto
G1 = ({S,M}, {x,y}, P,S) donde P es:
S xSz / M
M yMz /
L
1
= {x
n
y
n
}{x
2n
y
n
}
G2 = ({S,X,Y}, {x,y}, P,S) donde P es:
S X
X Y / xXy /
Y xxYy /
L
2
= {x
m
y
n
| 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 /
L
3
= {x
m
y
n
z
p
/ m, n, p >0 . m+n=p}

G4 = ({S, {x,y}, P,S) donde P es:
S xSy / xxSy / xxxSy /
L
4
= {x
n
y
m
| msns2m}


11. Para cada uno de los siguientes lenguajes, definir la gramtica libre de contexto:
a) L = {a
n
b
m
/ n,m > 0 . n s m+3}
b) Un lenguaje de parntesis, llaves y corchetes bien balanceados. Por ejemplo, las palabras ()[], ([]) y
()[[]] son correctas, mientras que [[] y ([)] no lo son. Ntese que en esta ltima palabra los
parntesis solos estn balanceados, as como los corchetes solos, pero su combinacin no lo est.
c) L = {a
n
b
m
c
k
/ n,m,k > 0 . ( n = m v m s k}
d) L = {a
n
b
m
c
k
/ n,m,k > 0 . k = n + m}
e) L = {a
n
b
m
c
k
/ n,m,k > 0 . k = n + 2m }
f) L = {wcw
-1
/ w e {a,b}
*
}
g) L = {a
n
b
m
c
k
/ n > 0, k > 1 . m = n + k}
h) L = {a
3
b
n
c
n
/ n > 0}
i) L = {a
n
b
m
/ n, m > 0 . n = m -1}
j) L = {a
n
b
m
/ n, m > 0 . 2n s m s 3n}
k) L = {a
n
b
m
c
k
/ n,m,k > 0 . (n =m v m = k)}
l) L = {a
n
b
m
c
k
/ n,m,k > 0 . k = |n-m|}
m) L = {a
n
b
m
c
k
/ n,m,k > 0 . k = n+m}
n) L = {ab(ab)
n
b(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 // patrn
am // coincide
cama // no coincide
ambidiestro // coincide
Pam // no coincide
caramba // no coincide
am$
am // coincide
salam // coincide
ambar // no coincide
Pam // coincide
^am$
am // coincide
salam // no coincide
ambar // no coincide
Teora de Lenguajes Formales y Gramticas 2011



o) L = {w / w e {a,b,c}* . #
a
(w) + #
b
(w) =#
c
(w)}
p) L = {a
n
b
m
/ 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 = {w
1
cw
2
/ w
1
, w
2
e {a,b}* . w
1
= w
2
R
}
x) Procedimientos de la forma:
i. PROC ident (lista de parmetros), donde lista de parmetros es de la forma (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.
Antes de proceder a incorporar dichas personas a su institucin, debe validar que el documento
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. La sintaxis del lenguaje mono es bastante simple, aunque slo los monos lo pueden hablar sin cometer
errores. El alfabeto del lenguaje es {a,b,d,#} donde # representa un espacio. El smbolo inicial es
<oracin>. La gramtica es:
<oracin> ::= <palabra>|<oracin>#<palabra>
<palabra> ::= <slaba>|<slaba><palabra><slaba>
<slaba> ::= <oclusiva>|<oclusiva> <alto>|a<oclusiva>|a<alto>
<oclusiva> ::= <alto>a
<alto> ::= 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 = {a
n
ww
R
a
n
/ n > 0, w e {a,b}*}
b) L = {xyz / x=y=z v x
a
= y
a
= z
a
}
c) L = { a
n
b
n
c
i
/ n s i s 2n }
d) L = { a
n
b
m
/ m,n > 0, (m=n) v (m=2n) }
e) L {w
1
w
2
w
3
w
4
/ w
1
w
3
= a
i
b
j
, w
2
w
4
= c
j
d
j ;
i,j > 0}

15. Dada la siguiente gramtica:
G = ({S,A,B}, {a,b,c}, P,S) donde P es:
S aBA / c
A bS
B Sb
Para la cadena aacbbcbbc encontrar:
i. Una derivacin ms a la izquierda
ii. Una derivacin ms a la derecha
iii. El rbol de derivacin



Teora de Lenguajes Formales y Gramticas 2011



16. Describir los lenguajes generados por las siguientes expresiones regulares y definir las correspondientes
gramticas regulares:
a) 01 (((10)*/111)*/0)*1 b) ((ba)* / (ab)*)*
c) (11/0)*(00/1)* d) b/(a
+
b/a
+
)
e) (aaa / aaaaa)* f) (aa)* (bb)*
g) 10/(0/11)*0*1 h) (0/1)(0/1)*00
i) (0/1)(0/1)* ((0/1)(0/1)(0/1))* j) (10)[((10)*/111)*0]*1
17. Dadas las expresiones regulares
E
1
= a* / b* y E
2
= ab* / ba* / b*a / (a*b)*, encuentre:
Una hilera que pertenezca a E
2
pero no a E
1

Una hilera que pertenezca a E
1
pero no a E
2

Una hilera que pertenezca a E
1
y a E
2

Una hilera que no pertenezca ni a E
1
ni a E
2


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 ambiguas
6
:
a) S SS+ / SS* / a b) S S (S) S / S a / S+S / SS / S* / (S)

20. Dadas las siguientes gramticas factorice:
a) S abA / abB
A 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 / b
A 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,
modificar la gramtica para que deje de ser ambigua.
Teora de Lenguajes Formales y Gramticas 2011



24. Determinar si los lenguajes definidos por las siguientes gramticas son vacos
7
:
a) S a A C B / A D / C B
a
A 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 unitarias
8
:

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. Dadas las siguientes expresiones regulares obtener las gramticas regulares aplicando el mtodo de
derivadas:
a) R
0
= ab(a/b)* b) R
0
= a(a/b)* c) R
0
= (a/b)* d) R
0
= (a (a/b)* )*
27. Encontrar una gramtica independiente de contexto simplificada equivalente a las siguientes
gramticas:
a) S AB / CA
A a
B 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 / A
A bAA / aC / a
B aSS /BC / B
C CC /C
f)
<ENTERO> <SIGNO><SECUENCIA>
<SIGNO> + | - |
<SECUENCIA> <DIGITO> | <DIGITO><SECUENCIA>
<DIGITO> | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Teora de Autmatas 2011



A. AUTOMTAS FINITOS
9

1. Para los siguientes diagramas de transicin















2. Para el siguiente, indique si su definicin formal es correcta. En caso que no lo sea, 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) El autmata que se muestra en el diagrama de transicin, es determinstico? Fundamente su
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 el autmata.
q
0
1
q
1

q
2

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 Autmatas 2011




M1

M2


M3







M4

M5







M6



4. Realice los diagramas de transicin correspondientes al ejercicio 5 del 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. Encuentre la expresin correspondiente a los siguientes autmatas finitos. Utilice el mtodo de
ecuaciones
10
.

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
q
1

0
q
2

1
q
0

q
3

1
0
1
q
0
a
a
q
1

q
2

0
b
a
b
b
q
0
q
1
q
2

a
b
a ,b
a
a ,b
0
q
0

0

0

q
1
q
3

1

1

q
2

0

0

0
Teora de Autmatas 2011




iii)







iv)








v)










vi)

vii)









8. Definir y graficar los autmatas finitos de estados mnimos equivalentes a los dados.














a,b
q0
a
a
b
b
q3
b
a q1
q2

0
q
0

0

0

q
1
q
3

1

1

q
2

0

0

0
b

a

a
q
0

q
1

q
3

b

a
b

q0
a
a
q
1

q
3

b
q
0

a,b
q
2

b
b
b

b

b

q
2

a
b
q
0

q
3

a

a

q
4

q
5

a

a

b

q
6

b

a

Teora de Autmatas 2011



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 Thompson
11
:

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 real
i
:




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.
q
0

q
1

1




ER= __________






ER= __________ Denominacin:_______________
q
1

f
1

M1
q2
f
2

M2
q
1

f
1

a M1
qf
q
0












ER=_________Denominacin:______________
Situacin 1: En biologa son muy usados para modelar ciertas cosas. Se pueden crear AF como modelos de
cmo responde una clula ante un estmulo. Se tiene un input que puede ser un qumico o algo similar, 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 Autmatas 2011










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,
se pueden usar autmatas finitos deterministas (como una simplificacin) para modelar los cambios de
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 Autmatas 2011




































B. AUTOMTAS DE PILA
12
PUSH-DOWN AUTMATAS
1. Dados los siguientes lenguajes, realice los autmatas de pilas correspondientes.


a) L(G) = {a
n
b
n
c / n > 1} b) L(G) = { a
n
b
2n
c/ n > 0} c) L(G) = {a
m
b
m
c
n
/ n,m > 1}
d) L(G) = {a
m
b
n
c
n
/ n,m > 1} e) L(G) = {a
n
b
m
c
m
d
n
/ n,m > 0} f) L(G) = {a
n
b
m
/ n = m}
g) L(G) = {a
i
b
j
c
k
/ i = j o j = k} h) L(G) = {a
n
b
n
c
n+m
d / n,m > 1} i) L(G)={ xwx
-1
/ x e {a,b}*, w e {c,d}
+
}
j) L(G) = {(ab)
n
c
n
(dd)
j
/n > 1, j > 0} k) L(G) = {0
m
1
n
0
m+n
/ m,n > 0} l) L(G) = {a
n
b
n
c
n+m
d / n,m > 1}
m) L(G) = { a
n
b
m
c
3m+1
d
2n
/ n,m > 1} n) L(G) = { a
i
b
j
c
k
/ i=2j o j=3k-1} o) L(G) = {a
n
b
i
cd
2(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 Autmatas 2011




2. Realice los autmatas que reconozcan hileras pertenecientes a los lenguajes descriptos en el ejercicio 11
del apartado Teora de Lenguajes y Gramticas.

3. Dados los siguientes autmatas de pila, identifique el lenguaje que reconocen los mismos. Formalice la
definicin de los mismos.

























C. MQUINAS DE TURING
13


1. Defina una mquina de Turing que reconozca los siguientes lenguajes:

a) L(G) = {0
n
1
n
2
n
/ n > 1} b) L(G) = {x#x / x e {a,b,c}*}
c) L(G) = {a
n
b
m
c
nm
/m, n > 1} d) L(G) = {a
2n
/ n > 1}
e) L(G) = {a
n
b
m
a
n+m
/ n, m > 0} f) L(G) = {a
n
b
n-1
c
n+3
/ n > 1}
g) L(G) = {1
2k+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
q2 q3
1,z0/z0
(,z0/( z0
a,( /a(
a,a/aa
b,a/
b,a/
),( /
, z0/z0
q4









Lenguaje reconocido por el autmata:
q0
q1 q2 q3
q4 q5
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 Autmatas 2011



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. Indique con un S o con un NO si un nmero dado en notacin unaria es mltiplo de alguno de los
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
correos electrnicos enviados, el spam es, por lo general, enviado automticamente por una
mquina. As la prueba de Turing puede usarse para distinguir si el correo electrnico era
enviado por un remitente humano o por una mquina (por ejemplo por la prueba Captcha).
Captcha es el acrnimo de Completely Automated Public Turing test to tell Computers and
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-
respuesta utilizada en computacin para determinar cundo el usuario es o no humano. El
trmino se empez a utilizar en el ao 2000 por Luis von Ahn, Manuel Blum y Nicholas J.
Hopper de la Carnegie Mellon University, y John Langford de IBM.
La tpica prueba consiste en que el usuario introduzca un conjunto de caracteres que se
muestran en una imagen distorsionada que aparece en pantalla. Se supone que una mquina
no es capaz de comprender e introducir la secuencia de forma correcta por lo que solamente el
humano podra hacerlo.
Construccin de Compiladores 2011



A. ANALIZADOR LEXICO
14

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 palabra toda secuencia de caracteres que no posea ni espacios ni tabuladores ni
retornos de carro. Se supone que toda lnea est acabada por un retorno de carro (\n).
b. Hacer un programa en LEX, de manera que se cifre el texto de entrada, convirtiendo cada palabra en su
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 Compiladores 2011



- 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. Hacer un programa LEX que tras leer su entrada, indique el nmero de palabras ledas que poseen un
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. Supuesto que se tiene un diccionario de palabras en formato texto, (almacenado en un fichero con una
palabra por lnea), procesar mediante un programa LEX, cualquier texto de entrada, visualizando por
pantalla todas las palabras que no estn en dicho diccionario. El diccionario puede ser volcado a memoria
justo antes de comenzar el procesamiento.
f. Modificar el programa anterior, de manera que cada vez que se encuentre una palabra que no est en el
diccionario, se consulte al usuario, que tendr las siguientes opciones:
- Ignorar la palabra.
- Agregarla en el diccionario.
- Modificar la palabra. En tal caso, cada vez que se vuelva a encontrar la palabra original, se
sustituir por la nueva.
Se obtendr como salida el mismo texto de entrada (con las palabras modificadas), y el mismo fichero
diccionario de entrada, pero enriquecido con las nuevas palabras.

B. ANALIZADORES SINTCTICOS DESCENDENTES
15

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 Compiladores 2011



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 a izquierda.
ii) Construir la tabla de anlisis LL(1) para la gramtica obtenida en el apartado anterior. 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) Hacer la traza del anlisis de la siguiente cadena, comprobando que las derivaciones son correctas
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) Comprobar si las siguientes gramticas son LL(1). En caso afirmativo, realizar el analizador y
reconocer las hileras que se adjuntan.

Construccin de Compiladores 2011




i) A B b / C d
B a B /
C c C /
ii) S 0 S 0 / 1 S 1 /


Hileras:
aab
d
Hilera:
0110
C. ANALIZADORES SINTCTICOS ASCENDENTES
16

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 Compiladores 2011



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) La siguiente gramtica representa la sintaxis de la instruccin de asignacin de un lenguaje
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 Compiladores 2011



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) Construir la Coleccin Cannica de Conjuntos de tems LR(1) para la gramtica original y el
analizador .
iv) Construir la tabla de Anlisis LALR(1). Es LALR(1)?
v) Teniendo en cuenta la tabla de anlisis LALR(1), analizar la sentencia ( ( ) d d ), mostrando en cada
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) A partir de la coleccin cannica de elementos LR(1), obtener la tabla de anlisis LALR. Es una
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 Compiladores 2011



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;
junto con cada identificador se deber guardar el tipo de ste. Al final del anlisis se visualizar la lista con
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.
- Que el nmero de parmetros reales al usar una funcin coincide con el nmero de Parmetros
formales indicados en su declaracin.

No se tendr en cuenta tipo 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
suma y la resta. La suma de dos cadenas, producir otra cadena cuyo resultado ser la concatenacin de las
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
es negativo, en lugar de quitarse de c los n ltimo caracteres, se quitarn los *n* primeros caracteres. Las
cadenas se encierran entre comillas dobles y los nmeros sern enteros incluido el cero, y sin
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 Compiladores 2011



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 <= N / 2
BEGIN
X := A(I)
A(I) := A(M)
A(M) := X
I := I + 1
M := M - 1
END
ENDDO
c)
I :=1
DO WHILE I <= N / 2
BEGIN
READ A,B
IF A > B
A=A+B
ELSE
B=A+B
ENDIF
I := I + 1
END
ENDDO




i
Fuente: http://espanol.answers.yahoo.com/question. Accedida en septiembre de 2010.
ii
dem anterior.

Potrebbero piacerti anche