1. Quando você poderia querer que o compilador ignorasse diferenças de tipos em uma expressão?
2. Argumente a favor e contra permitir expressões aritméticas de modo misto.
3. Você acha que a eliminação de operadores sobrecarregados em sua linguagem favorita seria benéfica? Por quê?
4. Seria uma boa ideia eliminar todas as regras de precedência de operadores e requerer parênteses para mostrar a precedência desejada em expressões? Por quê?
5. As operações de atribuição de C (por exemplo, +=) deveriam ser incluídas em outras linguagens (que ainda não as têm)? Por quê?
6. As formas de atribuição de um único operando de C (por exemplo, ++count) deveriam ser incluídas em outras linguagens (que ainda não as têm)? Por quê?
7. Descreva uma situação na qual o operador de adição em uma linguagem de programação não seria comutativo. 368 Conceitos de Linguagens de Programação
8. Descreva uma situação na qual o operador de adição em uma linguagem de programação não seria associativo.
9. Assuma as seguintes regras de associatividade e de precedência para expressões: Precedência Mais alta *, /, not +, -, &, mod - (unário) =, /=, <=, >=, > and Mais baixa or, xor Associatividade Esquerda para a direita Mostre a ordem de avaliação das seguintes expressões por meio do uso de parênteses em todas as subexpressões e colocando um expoente no parêntese direito para indicar a ordem.
Por exemplo, para a expressão
a + b * c + d a ordem de avaliação seria representada como ((a + (b * c)1 )2 + d)3 a. a * b - 1 + c b. a * (b - 1) / c mod d c. (a - b) / c & (d * e / a - 3) d. -a or c = d and e e. a > b xor c or d <= 17 f. -a + b
10. Mostre a ordem de avaliação das expressões do Problema 9, assumindo que não existem regras de precedência e todos os operadores são associativos da direita para a esquerda.
11. Escreva uma descrição em BNF para as regras de precedência e de associatividade definidas para as expressões no Problema 9. Assume que os únicos operandos são os nomes a, b, c, d, e.
12. Usando a gramática do Problema 11, desenhe árvores de análise sintática para as expressões do Problema 9.
13. Considere que a função fun é definida como int fun(int *k) { *k += 4; return 3 * (*k) - 1; } Suponha que fun seja usada em um programa, como: void main() { int i = 10, j = 10, sum1, sum2; sum1 = (i / 2) + fun(&i); sum2 = fun(&j) + (j / 2); } Capítulo 7 Expressões e Sentenças de Atribuição 369 Quais são os valores de sum1 e sum2 a. se os operandos na expressão forem avaliados da esquerda para a direita? b. se os operandos na expressão forem avaliados da direita para a esquerda?
14. Qual seu principal argumento contra as (ou a favor das) regras de precedência de operadores de APL?
15. Explique por que é difícil eliminar efeitos colaterais funcionais em C.
16. Para alguma linguagem de sua escolha, crie uma lista de símbolos de operadores que poderiam ser usados para eliminar todas as sobrecargas de operadores.
17. Determine se as conversões de tipo explícitas de estreitamento em duas linguagens que você conhece fornecem mensagens de erro quando um valor convertido perde sua utilidade.
18. Deveria ser permitido a um compilador com otimização para C e C++ modificar a ordem das subexpressões em uma expressão booleana? Por quê?
19. Responda a questão do Problema 17 para Ada.
20. Considere o seguinte programa em C: int fun(int *i) { *i += 5; return 4; } void main() { int x = 3; x = x + fun(&x); } Qual é o valor de x após a sentença de atribuição em main, assumindo que a. os operandos são avaliados da esquerda para a direita. b. os operandos são avaliados da direita para a esquerda.
21. Por que Java especifica que operandos em expressões são todos avaliados na ordem esquerda para a direita?
22. Explique como as regras de coerção de uma linguagem afetam sua detecção de erros.
Respostas
respondido por:
1
Resposta:
claro querida vou te ajudar hoje eu queria saber se esse é o texto ou só as questões se tiver um texto por favor me manda aí para mim poder te ajudar
franciscaainha6:
desculpa pelo atraso na resposta que eu tava sem internet
Perguntas similares
3 anos atrás
6 anos atrás
6 anos atrás
6 anos atrás
7 anos atrás
7 anos atrás