Difference between revisions of "Compiladores/Aula Prática 12"

From Wiki**3

< Compiladores
(Exercício 1)
Line 39: Line 39:
 
     a[j + 1] = v;
 
     a[j + 1] = v;
 
   }
 
   }
 +
}
 +
</c>
 +
 +
== Exercício 4 ==
 +
Traduza para código Postfix a seguinte função escrita em C:
 +
 +
<c>
 +
int main() {
 +
  int n = 45, i = 0, j = 1, *seg = &i;
 +
  while (n-- > 0) {
 +
    print(*seg = i + j);
 +
    seg = (seg == &i) ? &j : &i;
 +
  }
 +
  return 0;
 
}
 
}
 
</c>
 
</c>

Revision as of 13:00, 5 May 2017

Tópicos

Processamento semântico e geração de código Postfix (não optimizado).

Exercício 1

Traduza para Postfix (não optimizado) a seguinte função escrita em C: <c> int *click(int *x, int dim) {

 int *res, i;
 for (i = dim-2, res = x+dim-1; i >= 0; i--)
   if (x[i] > *res) res = &x[i];
 return res;

} </c>

Exercício 2

Traduza para Postfix (não optimizado) a seguinte função escrita em C: <c> int main() {

 extern void printd(double);
 double d, e;
 d = e = 3.3e-2;
 printd(d + e);
 return 0;

} </c>

Exercício 3

Traduza para Postfix (não optimizado) a seguinte função escrita em C: <c> void isort(int a[], int length) {

 for (int i = 0; i < length; i++) {
   int v = a[i];
   for (int j = i - 1; j >= 0; j--) {
     if (a[j] <= v) break;
     a[j + 1] = a[j];
   }
   a[j + 1] = v;
 }

} </c>

Exercício 4

Traduza para código Postfix a seguinte função escrita em C:

<c> int main() {

 int n = 45, i = 0, j = 1, *seg = &i; 
 while (n-- > 0) {
   print(*seg = i + j); 
   seg = (seg == &i) ? &j : &i; 
 } 
 return 0; 

} </c>

Resoluções