Você está na página 1de 3

Teste II - Compiladores

Variante 2
Correção

UNIVERSIDADE ZAMBEZE
FACULDADE DE CIÊNCIAS E TECNOLOGIA
CURSO: ENGENHARIA INFORMATICA
3oANO – 1o SEMESTRE DATA: 29-05-2017 DURAÇÃO: 100 MINUTOS
TESTE 2 DE COMPILADORES

1. Assinale verdadeiro ou falso para as seguintes afirmações, segundo corresponda. (4v)


a) _F_ Nas árvores sintácticas os operadores só aparecem nos nós que estejam no final
(nós folhas)
b) _F_ Os quadruplos não permitem expressar mais nada para alem de expressões
matematicas.
c) _F_ Para a execução do conteudo das cadeias polonesas (cadeias polacas) não é precisso
utilizar uma pilha.
d) _F_ As árvores sintacticas são muito uteis para escrever uma expressão na notação das
formas internas orientadas a variaveis temporarias.

2. Para a seguinte expressão: a=b+c*d/e-f+g (4v)


a) Dizer qual ou quais os conjuntos de quadruplos correspondentes.
I) (*, c, d, t1) II) (*, c, d, t1) III) (+, b, c, t1)
(/, t1, e, t2) (+, f, g, t2) (*, t1, d, t2)
(+, b, t2, t3) (/, t1, e, t3) (/, t2, e, t3)
(-, t3, f, t4) (-, t3, t2, t4) (-, t3, f, t4)
(+, t4, g, t5) (+, b, t4, t5) (+, t4, g, t5)
(:=, a, t5, ) (:=, a, t5, ) (:=, a, t5, )

b) Dizer qual ou quais as cadeias polonesas (cadeia polaca) pre-fixa correspondentes.


I) =a++bg-f/*cde II) =a+b-/*cde+fg III) =a++fg-b*c/de

c) Dizer qual ou quais as cadeias polonesas (cadeia polaca) pos-fixa correspondentes.


I) afg+bcde/*-+= II) abg+fcd*e/-+= III) abcd*e/fg+-+=

d) Dizer qual ou quais as árvores sintácticas correspondentes.


I) II) III)

R:/
a) Os conjuntos I e II.
b) A cadeia II.
c) A cadeia III.
d) A árvore III.
Teste II - Compiladores
Variante 2
Correção

3. Para a seguinte árvore sintáctica dizer: (4v)

a) Qual ou quais as cadeias polonesas pre-fixa correspondente.


I) =a+b-c-c-*fg+h*ij II) =a--+bcd-*fg+h*ij III) =a-+bc-d-*fg+h*ij
b) Qual ou quais as cadeias polonesas in-fixa correspondente.
I) a=b+c-d+f*g+h-i*j II) a=b+c-d-f*g-h+i*j III) a=b+c+d-f*g-h+i*j
c) Qual ou quais as cadeias polonesas pos-fixa correspondente.
I) abc+dfg*hij*+---= II) abc+d-fg*hij*+--= III) abcdfg*hij*+---+=
d) Escrever o conjunto de quadruplos correspondentes para a expressão.

R:/
a) Cadeia III.
b) Cadeia II.
c) Cadeia I.
d) Os conjuntos de quadruplos possiveis são:
Variante 1: Variante 2: Variante 3:
(*, f, g, t1) (*, f, g, t1) (+, b, c, t1)
(*, i, j, t2) (*, i, j, t2) (-, t1, d, t2)
(+, b, c, t3) (-, t1, h, t3) (*, f, g, t3)
(-, t3, d, t4) (+, t3, t2, t4) (-, t2, t3, t4)
(-, t4, t1, t5) (+, b, c, t5) (*, I, j, t5)
(-, t5, h, t6) (-, t5, d, t6) (+, h, t5, t6)
(+, t6, t2, t7) (-, t6, t4, t7) (-, t4, t6, t7)
(=, a, t7, ) (=, a, t7, ) (=, a, t7, )

4. Escrever o código seguinte fazendo uso da F.I.O.V.T. ou forma interna orientada a variaveis
temporarias. (3v)
do{
a = d+e;
}while(b-a != c*(d+e))
R:/
Variante 1: Variante 2:
1-(+, d, e, t1) 1-(+, d, e, t1)
2-(:=, a, t1, ) 2-(:=, a, t1, )
3-(-, b, a, t2) 3-(-, b, a, t2)
4-(+, d, e, t3) 4-(*, c, t1, t3)
5-(*, c, t3, t4) 6-(!=, t2, t3, t4)
6-(!=, t2, t4, t5) 7-(SC, 1, t4, )
7-(SC, 1, t5, ) 8-.....
8-.....

5. Optimizar o seguinte código mediante o uso das técnicas estudadas na sala de aulas.
Especificar qual a técnica utilisada para cada possível optimização (5v)
a=0;
Teste II - Compiladores
Variante 2
Correção

k=49;
g=9.8;
d=k/g;
e=k/g;
a=b*c-k/g;
for(int i=10; i<e; i++){
}
if(e<10){
while(i<a){
b=9.979999999;
f=H(b)*i;
if(b>g)
b=k;
else
b=e;
}
}
R:/

Você também pode gostar