(Created page with "== The Original Code == Consider the following C function: <c> extern int printf(const char *format, ...); int printlist(int lo, int hi) { int ix = lo; while (ix < hi) { ...") |
|||
(6 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | + | {{TOCright}} | |
+ | Small exercises and questions. | ||
− | + | == static == | |
− | + | 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. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | == Memory Organization == | |
− | + | 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"; | ||
+ | char y[] = "cadeia"; | ||
+ | char z[] = { 'c', 'a', 'd', 'e', 'i', 'a' }; | ||
+ | </source> | ||
− | + | == Polymorphism == | |
− | + | Indique justificadamente se a linguagem C possui algum tipo de polimorfismo. Em caso afirmativo, apresente exemplos. | |
− | == | + | == Symbols == |
− | + | 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? | |
− | + | == Code Generation == | |
− | + | 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:Compiladores]] | |
− | + | [[category:Ensino]] | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | [[category: | ||
− | [[category: |
Small exercises and questions.
Considere em C uma variável declarada static no corpo de uma função:
Discuta as diferenças, se existirem, entre as variáveis x e y, declaradas como se segue, na linguagem C:
char *x = "cadeia";
char y[] = "cadeia";
char z[] = { 'c', 'a', 'd', 'e', 'i', 'a' };
Indique justificadamente se a linguagem C possui algum tipo de polimorfismo. Em caso afirmativo, apresente exemplos.
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?
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.