Processamento da Informação – Simulado 01
Nome de aluno
NOTA:
Nome de avaliador
Instruções para a prova (leia antes de começar):
1) A prova tem a duração de 45 min.
2) A compreensão e interpretação do enunciado é parte integrante da avaliação. A prova é individual e
sem consultas.
Questão 1 (4 pontos)
Dada a seguinte função
static int enigma (int p, int q) {
int i, j, soma=0;
for (i=p; i<=q; i=i+1) {
for (j=1; j<=i; j=j+1) {
soma = soma+i;
}
if (soma==0) {
break;
}
}
return soma;
}
(a) Indique algebricamente (de forma concisa) a somatória que a função realiza (2 pontos).
(b) Qual é o resultado para o chamado a função com os parâmetros p=3, e q=4 (2 pontos).
Questão 2
Considere a seguinte função e dois números inteiros positivos, a e b, ambos maiores a zero. Selecione
todas as opções válidas (Resposta correta +2, resposta incorreta -1). A função:
(a) Sempre devolve 'false' se a<=b.
(b) Sempre devolve 'false' se a>b.
(c) Sempre devolve 'true' de a é igual a 0.
(d) Devolve 'true' se a encaixa nos últimos dígitos b.
(e) Devolve 'true' se b encaixa nos últimos dígitos a.
static boolean enigma2 (int a, int b) {
while(a<=b) {
if(a%10==b%10) {
a = a/10;
b = b/10;
if (a==0) {
return true;
}
}
else {
return false;
}
}
return false;
}
Questão 3 (2 pontos)
Considere a função novoPI que permite calcular uma boa aproximação para o valor de PI (3.1415...). Para
o laço for, selecione a opção mais apropriada para calcular a aproximação de PI considerando somente
os primeiros 1000 termos da equação: (Resposta correta +2, resposta incorreta -1)
(a) for (i=1; i<1000; i=i+1)
(b) for (i=0; i<1000; i=i+1)
(c) for (i=1; i<2000; i=i+2)
(d) for (i=0; i<2000; i=i+2)
(e) nenhuma opção é válida
static double novoPI () {
int i;
double soma=0; for (_________________________) { soma = soma + 1.0/(i*i);
}
return Math.sqrt(soma*8);
}
Questão 4 (4 pontos)
Indique o valor que devolverá a função funcao1. Considere como parâmetro de entrada, para a função, o
vetor {6, 5, 4, 3, 2, 1}
static int funcao1 (int w[]) {
int soma=0;
int k=w.length­1;
while (k>=0) {
soma = soma+w[k];
w[k] = soma;
k = k­1;
}
return w[0];
}
Resposta: ….............................................
Questão 5 (6 pontos)
Dizemos que um inteiro positivo n é perfeito se for igual à soma de seus divisores positivos diferentes de n.
Por exemplo, 6 é perfeito, pois 1+2+3=6. Complete o seguinte programa para que a função devolva 'true'
caso o inteiro dado como entrada seja perfeito. Caso contrário, a função deve devolver 'false'. Cada
resposta correta +1, cada resposta incorreta -0.5.
static boolean perfeito (int n) {
int i, soma=0; for (____________________;___________________________;____________________) {
if (________________________________) {
soma = __________________________________________________; }
} if (_______________________________) return true;
else
return false;
}
Download

Processamento da Informação – Simulado 01 Nome de aluno NOTA