Prova P1 2004 - PUC-SP

Propaganda
A
•
•
•
•
•
: __________________________________________
Duração:
minutos.
consulta.
Não esqueça de assinalar o seu nome, a sua turma e o nome do seu professor
ao lado.
Parte teórica (total: pontos)
Cada questão tem apenas
resposta certa.
Cada resposta certa vale 0,3 ponto.
Três respostas erradas
uma certa.
Respostas em branco
serão consideradas.
Serão consideradas
as respostas assinaladas à
e sem
rasuras no quadro de respostas abaixo.
Parte prática (total: pontos)
Utilizar o verso das folhas da prova como rascunho.
Podem ser respondidas à
ou à
.
!
: _____________________________________
: _________________________
29/06/2004
(marque com um "X"):
Custódio
Dirceu
Marcus Vinícius
"
#
$
%
&
'
PARTE TEÓRICA
Questão 1
A estratégia adotada para a execução de programas escritos na linguagem Java
consiste em:
A. Primeiramente compilar o programa-objeto e depois interpretar o programafonte;
B. Primeiramente compilar o programa-fonte e depois intepretar o programaobjeto;
C. Primeiramente interpretar o programa-fonte e depois compilar o programaobjeto;
D. Primeiramente interpretar o programa-objeto e depois compilar o programafonte.
Questão 2
Declarações e comandos são elementos fundamentais de programas Java e servem,
respectivamente, para:
1/5
A. Descrever as operações que um programa deverá executar e as variáveis que ele
irá manipular;
B. Descrever as variáveis que o programa irá manipular e as operações que ele
deverá executar;
C. Relacionar as variáveis que o programa poderá manipular e as suas
correspondentes propriedades;
D. Especificar o fluxo das operações que o programa deve executar e as saídas que
o mesmo deverá gerar.
Questão 3
As estruturas de controle básicas de qualquer linguagem imperativa, e do Java em
particular, servem ao propósito de:
A. Permitir a verificação de tipos em tempo de compilação;
B. Possibilitar a delimitação de escôpos, contribuindo para uma maior eficiência e
uma maior legibilidade do programa-fonte;
C. Permitir a seqüencialização e a repetição de comandos, bem como a
ramificação do fluxo de controle;
D. Reduzir o tempo de vidas das variáveis, contribuindo para um uso mais
racional da memória do computador.
Questão 4
Numa linguagem com escopos estáticos:
A. Os escopos de algumas variáveis podem ser definidos em tempo de
compilação e os de outras apenas em tempo de execução;
B. Os escopos de todas as variáveis só podem ser definidos em tempo de
execução;
C. Os escopos de todas as variáveis podem ser definidos em tempo de
compilação;
D. O escopo de uma variável só pode ser definido a partir do momento em que
o sistema realizar a alocação dessa variável
Questão 5
O tempo de vida de uma variável é definido como sendo:
A. A região de programa situada entre a declaração da variável e o término do
bloco no qual ela foi declarada;
B. A região de programa situada entre o início e o término do bloco no qual ela foi
declarada;
C. O tempo total de execução do bloco no qual ela foi declarada;
D. O tempo total transcorrido entre a alocação e a desalocação da variável.
A
Questão 6
Variáveis estáticas, stack-dinâmicas e heap dinâmicas são desalocadas da memória,
respectivamente:
A. Ao término do bloco em que foram declaradas, ao fim do programa e na
execução do comando new;
B. Ao término da execução do programa, ao fim da execução do bloco em que
foram declaradas e no instante em que não houverem mais referências para a
variável;
C. No instante em que não houverem mais referências para a variável, ao fim da
execução do programa e no término da execução do bloco em que foram
declaradas;
D. Ao término da execução do programa, na execução do comando new e no
instante em que não houverem mais referências para a variável.
Questão 7
Ao se trabalhar com números inteiros na linguagem Java, uma alternativa seria
utilizar sempre apenas o tipo de dados long, ignorando os tipos byte, short e
integer. Tal escolha:
A.
B.
C.
D.
Permitiria a construção de programas mais legíveis;
Possibilitaria o uso mais racional da memória do computador;
Tornaria a execução dos programas mais rápida;
Minimizaria a possibilidade de overflow ou underflow.
Questão 8
Linguagens com tipos fortes são sempre mais indicadas do que linguagens com
tipos fracos. Esta afirmação:
A. É verdadeira, pois linguagens com tipos fortes produzem programas mais
seguros;
B. É falsa, pois linguagens com tipos fracos são importantes na programação de
sistemas, protocolos e controle de dispositivos;
C. É falsa, pois linguagens com tipos fracos proporcionam maior liberdade ao
programador;
2/5
D. É verdadeira, pois linguagens com tipos fortes sempre geram programas
executáveis mais eficientes.
Questão 9
Se uma linguagem possui tipos dinâmicos e tipos fortes, então:
A.
B.
C.
D.
A segurança proporcionada pela tipagem forte fica comprometida;
Todas as verificações poderão ser feitas em tempo de compilação;
Todas as verificações deverão ser feitas em tempo de execução;
Algumas verificações poderão ser feitas em tempo de compilação, outras em
tempo de execução, porém todas as verificações serão sempre realizadas.
Questão 1 (2,0 pontos)
A
O programa a seguir deve simular um jogo de adivinhação entre o sistema (computador)
e um jogador, permitindo ao jogador no máximo 7 tentativas de acerto, com o seguinte
mecanismo:
o sistema escolhe aleatoriamente um valor inteiro na faixa de 1 a 100, sem que o
jogador veja esse valor; em seguida o jogador deverá tentar adivinhar o valor escolhido
pelo sistema.
As tentativas devem cessar se o jogador adivinhar o valor escolhido pelo sistema antes
da sétima jogada.
Até a sexta tentativa, a cada tentativa incorreta, o sistema deve exibir uma mensagem
de orientação: “tente um valor menor” ou “tente um valor maior”
class ApAdivinha{
public static void main(String[] args){
Questão 10
Em contraposição aos tipos simples, os tipos agregados oferecidos pelas linguagens
de programação mais comuns servem ao propósito mais elementar de:
Keyboard kbd=Console.getInput();
Screen scr=Console.getOutput();
int alvo, palp, quant;
A. Possibilitar ao programador explicitar as relações entre informações correlatas,
aumentando a legibilidade do seu programa;
B. Permitir a construção de programas mais eficientes;
C. Favorecer a economia no uso da memória do computador;
D. Introduzir mecanismos que permitam uma verificação forte de tipos.
scr.println("\n\n você tem 7 chances para adivinhar o valor escolhido ");
alvo=(int) (Math.random( )*100 + 1);
quant=0;
palp=0;
while( LACUNA 1 ){
quant=quant+1;
palp=kbd.readInt("\n faça sua tentativa numero : "+quant+"\n");
PARTE PRÁTICA
if( LACUNA 2 )
scr.println("tente um valor maior");
else if( LACUNA 3 )
Respostas da questão 1
scr.println("tente um valor menor");
Complete com expressões adequadas as lacunas indicadas no texto do programa ao
lado.
}
if( LACUNA 4 )
scr.println("você acertou o valor escolhido "+alvo);
LACUNA 1
else
scr.println você não conseguiu acertar, o valor escolhido foi "+alvo
LACUNA 2
}
}
LACUNA 3
LACUNA 4
3/5
A
}
Questão 2 (20 pontos)
Complete o texto do programa Java que deve receber a entrada de 100
valores reais armazenando-os num vetor x e, depois da entrada dos 100
valores, deve definir e exibir os componentes de outro vetor y, com 50
componentes, onde:
y0=x0+x99 ; y1=x1+x98 ; y2=x2+x97 e assim sucessivamente até y49=x49+x50
.
class ApVetores{
public static void main(String[] args){
Keyboard kbd=Console.getInput();
Screen scr=Console.getOutput();
Respostas da Questão 2
Observação: nas LACUNAS 1 e 2 devem ser dispostas as declarações dos vetores x e y,
respectivamente.
respostas:
int a,b;
LACUNA 1 ;
LACUNA 1
LACUNA 2 ;
a=0;
while(a<100){
x[a]=kbd.readFloat("digite o "+(a+1)+"o. do vetor x: ");
LACUNA 3 ;
LACUNA 2
LACUNA 3
LACUNA 4
}
b=0;
LACUNA 5
while( LACUNA 4 ){
y[b]= LACUNA 5 ;
LACUNA 6
LACUNA 6 ;
}
b=0;
while(b<50){
scr.print("\n "+y[b]);
b=b+1;
}
}
4/5
A
Questão 3 (3,0 pontos)
Considere o seguinte problema:
“Uma empresa de transportes rodoviários registra, para cada um de seus motoristas, o total
mensal de quilômetros percorridos e realiza pagamentos de prêmios da seguinte maneira: para
quilometragens percorridas até 4000 km o prêmio é de 3,5% do salário bruto do motorista e
para quilometragens superiores a 4000 km, além dos 3,5%, o motorista recebe mais 1,5% do
salário bruto a cada 300km que excederem os 4000km; nessa última situação as parcelas
menores do que 300km não recebem o adicional de prêmio”.
Conhecendo-se o valor do salário bruto de um motorista e o seu total mensal de quilômetros
percorridos, como obter o valor do prêmio correspondente?“
observação: a quilometragem percorrida deve ser representada por uma variável de tipo inteiro.
Veja os exemplos:
exemplo 1: salário bruto R$1270,00 e quilometragem percorrida de 3863km
prêmio de 3,5% de R$1270,00
prêmio=R$44,45.
exemplo 2: salário bruto R$1270,00 e quilometragem percorrida de 4812km
prêmio de 3,5%+1,5%+1,5% de R$1270,00
prêmio=R$82,55
Construa o texto de um programa Java que represente um método de resolução do problema.
5/5
Download