(vale 1,0 ponto) Considere o seguinte programa escrito na sintaxe C:
void xpto(int a, int b, int c)
{
a = b + c;
b = a * c;
}
void main()
{
int x;
int y;
scanf("%d", &x);
scanf("%d", &y);
xpto(x, y, x + 2);
printf("%d", x);
printf("%d", y);
}
Com base no programa apresentado, avalie as asserções a seguir.
A respeito dessas asserções, assinale a alternativa correta.
a. apenas as assertivas I e II.
b. apenas as assertivas I e III.
c. apenas as assertivas II e III.
d. apenas as assertivas II e IV.
e. apenas as assertivas III e IV.
(vale 1,0 ponto) Subprogramas são blocos de construção fundamentais de programas e, portanto, estão entre os conceitos mais importantes no projeto de linguagens de programação. Analise as assertivas a seguir, sobre as características de subprogramas.
A respeito dessas asserções, assinale a alternativa correta.
a. apenas as assertivas I e II.
b. apenas as assertivas I e III.
c. apenas as assertivas II e III.
d. apenas as assertivas II e IV.
e. apenas as assertivas III e IV.
(vale 1,0 ponto) Considere o seguinte programa escrito na sintaxe Pascal:
program SUB1;
var x, y: integer;
procedure SUB2;
begin
writeln('x = ', x);
writeln('y = ', y);
end;
procedure SUB3;
var x, y: integer;
begin
x := 3;
y := 6;
SUB4(SUB2);
end;
procedure SUB4(procedure SUBX)
var x: integer;
begin
x := 4;
SUBX;
end;
begin
x := 1;
y := 3;
SUB3;
end.
Um aspecto interessante dos nomes de subprogramas passados como parâmetros é a questão referente ao ambiente de referenciamento correto para executar o subprograma passado. Com base no programa apresentado, avalie as asserções a seguir.
A respeito dessas asserções, assinale a alternativa correta.
a. apenas as assertivas I e II.
b. apenas as assertivas I e III.
c. apenas as assertivas II e III.
d. apenas as assertivas II e IV.
e. apenas as assertivas III e IV.
(vale 1,0 ponto) Considere o seguinte programa escrito na sintaxe Java:
public class AppleRed extends Apple
{
public AppleRed()
{
super(Color.red);
}
}
public class AppleGreen extends Apple
{
public AppleGreen()
{
super(Color.green);
}
}
Com base no programa apresentado, avalie as asserções a seguir.
AppleRed
é um Apple
e por isso poderia ser armazenada em uma variável do tipo Apple
, como por exemplo: Apple apple = new AppleRed();
AppleGreen
é um Apple
e por isso poderia armazenar uma instância do tipo Apple
, como por exemplo: AppleGreen apple = new Apple();
Apple
, uma instância de AppleGreen
pode ser armazenada em variáveis do tipo AppleRed
, como por exemplo: AppleRed apple = new AppleGreen();
A respeito dessas asserções, assinale a alternativa correta.
a. apenas a assertiva I.
b. apenas a assertiva II.
c. apenas a assertiva III.
d. apenas as assertivas I e II.
e. apenas as assertivas I e III.
(vale 1,0 ponto) Considere o seguinte programa escrito na sintaxe Java:
public class MyException extends Exception {
public MyException() { super(); }
}
public class MyRuntime extends RuntimeException {
public MyRuntime() { super(); }
}
public class MyClass {
public int testException(int test) throws MyException {
if (test == 0) { throw new MyException(); }
return test;
}
public int testRuntime(int test) {
if (test == 0) { throw new MyRuntime(); }
return test;
}
}
Supondo que o usuário deseje utilizar os métodos definidos por MyClass
, julgue as assertivas a seguir.
testException
de MyClass
, o usuário deverá adicionar a classe MyException
a declaração do método que utilizar o método testException
.testRuntime
de MyClass
, o usuário deverá adicionar a classe MyRuntime
a declaração do método que utilizar o método testRuntime
.testException
de MyClass
, o usuário deverá inserir o método testException
dentro de um bloco try-catch
, em que a exceção MyException
é tratada.testRuntime
de MyClass
, o usuário deverá inserir o método testRuntime
dentro de um bloco try-catch
, em que a exceção MyRuntime
é tratada.A respeito dessas asserções, assinale a alternativa correta.
a. apenas as assertivas I e II.
b. apenas as assertivas I e III.
c. apenas as assertivas II e III.
d. apenas as assertivas II e IV.
e. apenas as assertivas III e IV.
(vale 1,0 ponto) Considere o seguinte programa escrito na sintaxe Java:
public class MyRunnable implements Runnable {
public void run() {
System.out.println("run");
throw new RuntimeException("exception");
}
public static void main(String[] args) {
Thread thread = new Thread(new MyRunnable());
thread.start();
System.out.println("end");
}
}
Agora, considere as seguintes saídas a serem apresentadas ao usuário, na execução de um programa.
Quais das saídas apresentadas são plausíveis de serem visualizadas pelo usuário, na execução da classe MyRunnable
.
a. apenas as assertivas I e II.
b. apenas as assertivas I e III.
c. apenas as assertivas II e III.
d. apenas as assertivas II e IV.
e. apenas as assertivas III e IV.
(vale 1,0 ponto) Desenvolva uma função ou um conjunto de funções em LISP, que apresente a somatória dos elementos contidos em uma lista, como no exemplo a seguir.
(soma '(1 2 (3 4 (5 6) 7 8) 9))
45
(defun soma(lista)
(cond
((null lista) 0)
((atom (car lista))
(+ (car lista) (soma (cdr lista)))
)
(t
(+ (soma (car lista)) (soma (cdr lista)))
)
)
)
(vale 1,0 ponto) Desenvolva um programa em PROLOG, que apresente a somatória dos elementos contidos em uma lista, como no exemplo a seguir.
?- soma([1, 2, [3, 4, [5, 6], 7, 8], 9], N), write(N), nl.
45
soma([], 0).
soma([CAR|CDR], N) :- atomic(CAR), !, soma(CDR, N1), N is N1 + CAR.
soma([CAR|CDR], N) :- soma(CAR, N1), soma(CDR, N2), N is N1 + N2.