(Created page with "== Tópicos == == Problema == == Resolução == category:Compiladores category:Ensino") |
|||
(9 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
+ | {{TOCright}} | ||
== Tópicos == | == 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: |
+ | <source lang="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; | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | == Exercício 2 == | ||
+ | Traduza para Postfix (não optimizado) a seguinte função escrita em C: | ||
+ | <source lang="c"> | ||
+ | int main() { | ||
+ | extern void printd(double); | ||
+ | double d, e; | ||
+ | d = e = 3.3e-2; | ||
+ | printd(d + e); | ||
+ | return 0; | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | == Exercício 3 == | ||
+ | Traduza para Postfix (não optimizado) a seguinte função escrita em C: | ||
+ | <source lang="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[i + 1] = v; | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | == Exercício 4 == | ||
+ | Traduza para código Postfix a seguinte função escrita em C: | ||
+ | |||
+ | <source lang="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; | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | == Resoluções == | ||
+ | * Ver: [[Code Generation]]. Procurar resolver sem consultar. | ||
[[category:Compiladores]] | [[category:Compiladores]] | ||
[[category:Ensino]] | [[category:Ensino]] |
Processamento semântico e geração de código Postfix (não optimizado).
Traduza para Postfix (não optimizado) a seguinte função escrita em 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;
}
Traduza para Postfix (não optimizado) a seguinte função escrita em C:
int main() {
extern void printd(double);
double d, e;
d = e = 3.3e-2;
printd(d + e);
return 0;
}
Traduza para Postfix (não optimizado) a seguinte função escrita em 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[i + 1] = v;
}
}
Traduza para código Postfix a seguinte função escrita em 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;
}