Considere a hierarquia de classes, na linguagem de programação Java, apresentada a seguir.
public class Alpha {
private int over = 1;
public int getOver() { return over; }
}
public class Beta extends Alpha {
private int over = 2;
public int getOver() { return over; }
}
public class Gamma extends Beta {
private int over = 3;
public int getOver() { return over; }
public void exec() {
Alpha a = new Gamma();
Beta b = new Gamma();
Gamma c = new Gamma();
System.out.print(super.getOver());
System.out.print(" ");
System.out.print(a.getOver());
System.out.print(" ");
System.out.print(b.getOver());
System.out.print(" ");
System.out.println(c.getOver());
}
}
public class Application {
public static void main(String[] args) {
new Gamma().exec();
}
}
O que será exibido no console após a execução do método main
?
a. 1 1 2 3
b. 2 1 2 3
c. 2 3 3 3
d. 3 1 2 3
e. 3 3 3 3
Considere a hierarquia de classes, na linguagem de programação Java, apresentada a seguir.
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 afirmativas 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.Assinale a alternativa correta:
a. somente as afirmativas I e II são corretas.
b. somente as afirmativas I e III são corretas.
c. somente as afirmativas I e IV são corretas.
d. somente as afirmativas II e III são corretas.
e. somente as afirmativas II e IV são corretas.
Considere a classe, na linguagem de programação Java, apresentada a seguir.
public class X extends Y implements Z
{
private W w;
}
Assinale a alternativa correta.
a. A classe X
é um tipo de Y
e de Z
e tem um W
.
b. A classe X
tem um Y
e um Z
e é um tipo de W
.
c. A classe Y
é um tipo de Z
e tem um W
.
d. A classe Z
tem um W
e é um tipo de X
e de Y
.
e. A classe W
é um tipo de X
, de Y
e de Z
.
Desenvolva uma solução que realiza a somatória dos elementos de um vetor, onde cada thread é responsável pela somatória de uma fração deste vetor. A função de soma dos elementos deve ser genérica o suficiente para ser associada a cada thread. Tal função de soma deve receber por parâmetro uma identificação, bem como o intervalo de operação sobre o vetor. Ao final da somatória de todas as frações, o processo pai deverá consolidar a somatória e apresentar o resultado final.
public class ThreadSum extends Thread {
private int end;
private int init;
private int result;
private int[] vector;
public ThreadSum(int init, int end, int[] vector) {
this.init = init;
this.vector = vector;
this.end = end;
result = 0;
}
public int getResult() { return result; }
public void run() {
for(int i = init; i < end; i++) {
result += vector[i];
}
}
public static void main(String[] args) {
int[] vector = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
ThreadSum t1 = new ThreadSum(0, 5, vector);
ThreadSum t2 = new ThreadSum(5, 10, vector);
t1.start();
t2.start();
try {
t1.join();
t2.join();
}
catch(InterruptedException exception) {
exception.printStackTrace();
}
int sum = t1.getResult() + t2.getResult();
System.out.println("SOMA: " + sum);
}
}
Apresente a expressão escrita na linguagem de programação LISP, utilizando apenas os operadores car
e cdr
, para apresentar somente o elemento e da lista a seguir.
(a (b (c (d (e (f (g (h (i (j))))))))))
(car (car (cdr (car (cdr (car (cdr (car (cdr '(a (b (c (d (e (f (g (h (i (j)))))))))))))))))))
Considere a função escrita na linguagem de programação LISP apresentada a seguir.
(defun xpto(e s)
(if (null s)
0
(if (eql e (car s))
(+ 1 (xpto e (cdr s)))
(+ 2 (xpto e (cdr s)))
)
)
)
A execução da expressão (xpto '1 '(1 1 1 2 2 3))
retornaria
a. 1
b. 2
c. 3
d. 9
e. 10
Considere as funções escritas na linguagem de programação PROLOG apresentadas a seguir.
abc([], L, L).
abc([H|T], L2, [H|L3]) :- abc(T, L2, L3).
xyz([], 0).
xyz([_|T], N) :- xyz(T, N1), N is 1 + N1.
xpto(L, N, Y) :- abc(_, Y, L), xyz(Y, N).
Qual a saída apresentada para a pergunta
?- xpto([1, 2, 3, 4, 5], 3, T), write(T), nl.
a. [3]
b. [1, 2, 3]
c. [2, 3, 4]
d. [3, 3, 3]
e. [3, 4, 5]
Desenvolver um programa na linguagem de programação Prolog, que calcule o valor da exponenciação de uma base qualquer por um expoente positivo qualquer, ou seja, BE, conforme apresentado no exemplo a seguir.
?- power(2, 3, R), write(R), nl.
8
power(N, 0, 1) :- !.
power(N, K, R) :- K1 is K - 1, power(N, K1, R1), R is R1 * N.
?- power(2, 3, R), write(R), nl.