Code Generation/Exercise 8: Difference between revisions
From Wiki**3
< Code Generation
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
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> | <c> | ||
char *x = "cadeia"; | |||
char y[] = "cadeia"; | |||
char z[] = { 'c', 'a', 'd', 'e', 'i', 'a' }; | |||
</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 na 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 raízes. Escreva a sequência de instruções Postfix correspondentes à implementação da função raizes. | |||
[[Category:Compilers]] [[Category:Teaching]] | [[Category:Compilers]] [[Category:Teaching]] |
Revision as of 16:20, 2 June 2012
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"; char y[] = "cadeia"; char z[] = { 'c', 'a', 'd', 'e', 'i', 'a' }; </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 na 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 raízes. Escreva a sequência de instruções Postfix correspondentes à implementação da função raizes.