Compiladores/Aula Prática 11: Difference between revisions

From Wiki**3

< Compiladores
(Redirected page to ist:Compiladores/Aula Prática 11)
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{TOCright}}
#REDIRECT [[ist:Compiladores/Aula Prática 11]]
== Tópicos ==
Processamento semântico e geração de código Postfix (não optimizado).
 
== Exercício 1 ==
Considere em C uma variável declarada '''static''' no corpo de uma função:
 
# Indique justificadamente qual a área de memória de dados a que pertence.
# Comente justificadamente se o valor desta variável pode ser modificado a partir de outra função.
# Caso a função que contém a variável '''static''' seja invocada recursivamente, quantas instâncias da variável existem e, caso existam múltiplas, os valores são iguais ou distintos? Justifique.
# Indique justificamente se uma função pode devolver o endereço de uma variável declarada static sem criar ''dangling references''.
 
== Exercício 2 ==
Discuta as diferenças, se existirem, entre as variáveis '''x''' e '''y''', declaradas como se segue, na linguagem C:
 
<c>
char *x = "cadeia de caracteres";
char y[] = "cadeia de caracteres";
</c>
 
== Exercício 3 ==
Indique justificadamente se a linguagem C possui algum tipo de polimorfismo. Em caso afirmativo, apresente exemplos.
 
== Exercício 4 ==
Considere a tabela de símbolos fornecida com a CDK. Que modificações seriam necessárias se fosse necessário permitir a definição de espaços de nomes distintos para variáveis, funções e constantes?
 
== Exercício 5 ==
Considere uma função, denominada '''raizes''', que recebe três argumentos correspondentes aos factores de uma equação de 2º grau ''(ax²+bx+c)'' e que calcula o número de raizes.
 
Escreva a sequência de instruções Postfix correspondentes à implementação da função '''raizes'''.
 
== Exercício 6 ==
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ção ==
As ligações acima contêm as soluções para os exercícios propostos.
 
Procurar resolver sem consultar.
[[category:Compiladores]]
[[category:Ensino]]

Latest revision as of 19:18, 6 December 2018