Compiladores/Aula Prática 11: Difference between revisions
From Wiki**3
No edit summary |
|||
| (6 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 == | ||
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: | |||
<source lang="c"> | |||
char *x = "cadeia de caracteres"; | |||
char y[] = "cadeia de caracteres"; | |||
</source> | |||
== 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 == | |||
Escreva a sequência de instruções Postfix que calcula o número de raízes de uma equação de 2º grau ''(ax²+bx+c)'' com base nos factores dessa equação. | |||
Utilize apenas variáveis globais. | |||
== Resoluções == | |||
* Ver: [[Code Generation]]. Procurar resolver sem consultar. | |||
[[category:Compiladores]] | [[category:Compiladores]] | ||
[[category:Ensino]] | [[category:Ensino]] | ||
Latest revision as of 10:20, 3 May 2019
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:
char *x = "cadeia de caracteres";
char y[] = "cadeia de caracteres";
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
Escreva a sequência de instruções Postfix que calcula o número de raízes de uma equação de 2º grau (ax²+bx+c) com base nos factores dessa equação.
Utilize apenas variáveis globais.
Resoluções
- Ver: Code Generation. Procurar resolver sem consultar.