Ybadoo - Soluções em Software Livre
Turmas
1º Semestre de 2022

Questão 01

(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.

  1. Caso os valores fornecidos pelo usuário sejam 5 e 6 e os parâmetros sejam passados por valor, os valores impressos serão 13 e 91.
  2. Caso os valores fornecidos pelo usuário sejam 1 e 2 e os parâmetros sejam passados por referência, os valores impressos serão 5 e 15.
  3. Caso os valores fornecidos pelo usuário sejam 2 e 3 e os parâmetros sejam passados por nome, os valores impressos serão 7 e 63.
  4. Caso os valores fornecidos pelo usuário sejam 3 e 4 e os parâmetros sejam passados por valor-resultado, os valores impressos serão 3 e 4.

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.

Questão 02

(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.

  1. Cada subprograma tem um único ponto de entrada.
  2. Existe somente um tipo de subprograma, que são as funções.
  3. A unidade chamadora é suspensa durante a execução do subprograma chamado.
  4. Subprogramas providenciam execução quase concorrente de unidades de programas.

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.

Questão 03

(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.

  1. Caso seja utilizado a vinculação rasa, os valores impressos serão 1 e 3.
  2. Caso seja utilizado a vinculação profunda, os valores impressos serão 3 e 6.
  3. Caso seja utilizado a vinculação ad hoc, os valores impressos serão 3 e 6.
  4. Caso seja utilizado a vinculação rasa, os valores impressos serão 4 e 6.

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.

Questão 04

(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.

  1. A classe AppleRed é um Apple e por isso poderia ser armazenada em uma variável do tipo Apple, como por exemplo: Apple apple = new AppleRed();
  2. A classe AppleGreen é um Apple e por isso poderia armazenar uma instância do tipo Apple, como por exemplo: AppleGreen apple = new Apple();
  3. Como ambas as classes estendem 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.

Questão 05

(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.

  1. Para utilizar o método testException de MyClass, o usuário deverá adicionar a classe MyException a declaração do método que utilizar o método testException.
  2. Para utilizar o método testRuntime de MyClass, o usuário deverá adicionar a classe MyRuntime a declaração do método que utilizar o método testRuntime.
  3. Para utilizar o método 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.
  4. Para utilizar o método 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.

Questão 06

(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.

  1. java.lang.RuntimeException: exception
  2. end
    run
    java.lang.RuntimeException: exception
  3. end
    java.lang.RuntimeException: exception
  4. run
    java.lang.RuntimeException: exception
    end

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.

Questão 07

(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)))
)
)
)

Questão Extra

(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.