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]] |
Exercício 1.
Considere em C uma variável declarada static no corpo de uma função:
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.