Buscar

MP01-2014.1-Turma02

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

Prévia do material em texto

UFCG / CCC / Paradigmas de Linguagens de Programação / 2014.1 / Turma 02 
Nome: _______________________________________________ Matrícula: _______________ 
Mini-Prova 01 – 26/06/2014 
1. Considere o trecho de programa abaixo em Java. 
(a) Classifique a chamada foo(aDog): comando, expressão ou expressão com efeitos colaterais? Justifique. (1.0 
pontos) 
Comando. Não há retorno de valor. 
(b) Que mecanismo de passagem de parâmetros é aplicado na chamada de foo(aDog)? Como é feita a 
associação entre parâmetro real e parâmetro formal? Qual o string impresso no último comando do main? 
Justifique. (1,5 pontos) 
Call-by sharing. Os parâmetros d e aDog apontam para o mesmo objeto. Mas, quando d é realocado, passam a 
apontar para objetos diferentes. Com isto, o valor impresso será Max. 
(c) Classifique a variável aDog: stack ou heap? Justifique (0.5 pontos). 
aDog é uma referência e, portanto, uma variável stack. Em tempo de execução, poderá receber, como valor, o 
endereço de uma variável heap. 
public class ParameterPassing2 { 
 
 
 static public void foo(Dog d) { 
 d.getName().equals("Max"); // true 
 d = new Dog("Fifi"); 
 d.setName("Fifi"); // true 
 } 
 
 static public void main (String [] args) { 
 Dog aDog = new Dog("Max"); 
 foo(aDog); 
 System.out.println(aDog.getName()); 
 } 
 
} 
2. Compare as definições em ML abaixo, apontando semelhanças e diferenças com relação aos conceitos de 
linguagens de programação (2.0 pontos). 
Semelhanças: uso de recursividade 
Diferenças: 
fac1 é definida através de uma expressão condicional 
fac2 é definida usando casamento de padrões. 
 
fun fac1 n = if (n=0) then 1 else n*(fac1(n-1)) 
 
fun fac2 0 = 1 
 | fac2 n = n*(fac(n-1))

Continue navegando