Baixe o app para aproveitar ainda mais
Prévia do material em texto
LISTA DE EXERCÍCIOS 1. Por que é útil para um programador ter alguma experiência no projeto de linguagens, mesmo que ele nunca projete uma linguagem de programação? 2. Qual é a desvantagem de ter muitas características em uma linguagem? 3. Cite um exemplo da falta de ortogonalidade no projeto da linguagem C (ou Java, escolha uma das duas). 4. Por que verificar os tipos dos parâmetros de um subprograma é importante? 5. Dê um exemplo de dois critérios de projeto de linguagens que estão em conflito direto um com o outro. 6. Quais são os três métodos gerais de implementar uma linguagem de programação? 7. Defina tipos ordinais e de enumeração. 8. Defina ordem principal de linha e ordem principal de coluna. 9. Defina união, união livre e união discriminada. 10. Quais são os dois problemas comuns com ponteiros? 11. Defina linguagem fortemente tipada. 12. O que é uma conversão implícita? 13. O que é a equivalência de tipos por nome? 14. O que é a equivalência de tipos por estrutura? 15. Escreva uma pequena discussão sobre o que foi perdido e o que foi ganho na decisão de projetistas de Java de não incluírem os ponteiros de C++. 16. Explique como as regras de coerção podem enfraquecer o efeito benéfico da tipagem forte. 17. Qual é o perigo em potencial dos nomes sensíveis a capitalização? 18. De que forma as palavras reservadas são melhores do que as palavras-chave? 19. Defina vinculação estática e vinculação dinâmica. 20. Defina tempo de vida e escopo de uma variável. 21. Qual o problema geral do escopo estático? 22. O que é o ambiente de referenciamento de uma sentença? 23. O que é um ancestral estático de um subprograma? O que é um ancestral dinâmico de um subprograma? 24. Quais são as vantagens de constantes nomeadas. 25. Algumas linguagens de programação não têm tipos. Quais são as vantagens e desvantagens de não ter tipos em uma linguagem? 26. Assuma que o seguinte programa Ada foi compilado e executado usando regras de escopo estático. Que valor de X é impresso no procedimento Sub1? Sob regras de escopo dinâmico, qual o valor de X é impresso no procedimento Sub1? procedure Main is X : Integer; procedure Sub1 is begin -- de Sub1 Put(X); end; -- de Sub1 procedure Sub2 is X : Integer; begin -- de Sub2 X := 10; Sub1 end; -- de Sub2 begin -- de Main X := 5; Sub2 end -- de Main 27. Defina precedência de operador e associatividade de operador. 28. Defina efeito colateral funcional e transparência referencial. 29. O que é um operador sobrecarregado? 30. O que é a avaliação em curto-circuito? 31. 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.
Compartilhar