Buscar

Capítulo 7

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 3 páginas

Prévia do material em texto

Alunos: Amanda Kelly Rodrigues Cândido
	 Giovanna de Sousa Sampaio
	 Giulianni dos Santos Oliveira
CAPÍTULO 7
1. Defina precedência de operador e associatividade de operador.
2. O que é um operador ternário?
O operador ternário funciona com o mesmo conceito do if e else, porém, a única diferença é que precisamos devolver um valor após o teste estritamente em uma única linha. A estrutura de um operador ternário é compreendida da seguinte forma: condição? valor se for verdareiro : valor se for falso
Ex: salario > 1000 ? 0.10 : 0.15
3. O que é um operador pré-fixado?
4. Que operador normalmente tem associatividade à direita?
Na maioria das linguagens que o provêm, o operador de exponenciação é associativo à direita.
5. O que é um operador não associativo?
6. Que regras de associatividade são usadas por APL?
Todos os operadores têm o mesmo nível de precedência. Logo, a ordem de avaliação dos operadores em expressões APL é determinada inteiramente pela regra de associatividade, da direita para a esquerda para todos os operadores.
7. Qual é a diferença entre a maneira pela qual os operadores são implementados em C++ e Ruby?
8. Defina efeito colateral funcional.
Um efeito colateral de uma função, chamado de um efeito colateral funcional, ocorre quando a função modifica um de seus parâmetros ou uma variável global.
9. O que é uma coerção?
10. O que é uma expressão condicional?
	A expressão condicional possui a seguinte forma 
expressão_1 ? expressão_2 : expressão_3
onde a expressão_1 é interpretada como uma expressão booleana (chamada predicado). Se a expressão_1 for avaliada como verdadeira, o valor da expressão inteira é o valor da expressão_2; caso contrário, será o valor da expressão_3. Tendo o mesmo efeito do exemplo if-then-else. 
If expressão_1 then expressão_2 else expressão_3
11. O que é um operador sobrecarregado?
12. Defina conversões de alargamento e de estreitamento.
As conversões de tipos são de estreitamento ou alargamento. 
Uma conversão de estreitamento converte um valor para um tipo que não pode armazenar aproximações equivalentes a todos os valores do tipo original. Por exemplo, converter um double para um float em Java é uma conversão de estreitamento, porque a faixa do tipo double é muito maior do que a de float. 
Uma conversão de alargamento converte um valor para um tipo que pode incluir ao menos aproximações de todos os valores do tipo original. Por exemplo, converter um int para um float em Java é uma conversão de alargamento.
13. Qual é a diferença entre == e === em JavaScript?
14. O que é uma expressão de modo misto?
Uma expressão de modo misto tem operandos de tipos diferentes. Como uma simples ilustração do problema, considere o código Java:
int a;
float b, c, d;
... 
d = b * a;	
Assuma que o segundo operando de um operador de multiplicação deveria ser c, mas por um erro, foi digitado como a. Como expressões de modo misto são legais em Java, o compilador não pode detectar isso como um erro. Ele simplesmente inseriria código para realizar uma coerção do valor do operando int, a, para um float. Se as expressões de modo misto não fossem legais em Java, esse erro de digitação seria detectado pelo compilador como um erro de tipo.
15. O que é transparência referencial?
16. Quais são as vantagens da transparência referencial?
Suas vantagens são, entre outras, a maior previsibilidade e testabilidade do código, facilitando a manutenção de projetos de qualquer tamanho e nível de complexidade.
17. Como a ordem de avaliação dos operandos interage com os efeitos colaterais funcionais?
18. O que é a avaliação em curto-circuito?
Uma avaliação em curto-circuito de uma expressão é uma avaliação na qual o resultado é determinado sem avaliar todos os operandos e/ou operadores. Por exemplo, o valor da expressão aritmética 
(13 * a) * (b / 13 - 1)
é independente do valor de (b / 13 – 1) se a for igual a 0, como 0 * x = 0 para qualquer x. Então, quando a é 0, não há a necessidade de avaliar (b / 13 – 1) ou de realizar a segunda multiplicação. Entretanto, em expressões aritméticas, esse atalho não é facilmente detectado durante a execução, então ele nunca é tomado.
19. Diga uma linguagem que sempre faz avaliação em curto-circuito de expressões booleanas. Diga uma que nunca faz isso. Diga uma na qual o programador pode escolher.
20. Como C oferece suporte para expressões relacionais e booleanas?
C oferece operadores E e OU usuais (&& , || ) que são avaliados em curto-circuito e os operadores E e OU bit a bit (&, |) que são avaliados por completo. 
21. Qual é o propósito de um operador de atribuição composto?
22. Qual é a associatividade dos operadores aritméticos unários de C?
	A associatividade é da direita pra esquerda.
23. Qual é uma possível desvantagem de tratar o operador de atribuição como se ele fosse um operador aritmético?
24. Que duas linguagens incluem atribuições de listas?
	Lisp e Ruby.
25. Que atribuições de modo misto são permitidas em Ada?
26. Que atribuições de modo misto são permitidas em Java?
	Alargamento é uma atribuição de modo misto permitido em Java.
27. O que é um cast?

Continue navegando