1/6
•
•
•
•
•
Duração:
minutos.
consulta.
Não esqueça de assinalar o seu nome, a sua turma e o nome do seu professor ao abaixo.
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)
Podem ser respondidas à
ou à
.
Utilizar última página para rascunho.
: __________________________________________
: _____________________________________
: _________________________
25/10/2005
(marque com um "X"):
Custódio
Dirceu
Marcus Vinícius
!
%
&
'
"
#
&
&
&
&
(
&
&
&
&
!
$
$
) *
&
"#
%
%
+
$
&'(
&'(
,
-)./#0 1
+
&
(
,
*
(
&
%
#
*
*
(
(
/
# 2
&
&
*
(
- 2
&
. %&
32
%
&
# %&
&
%
32
&
4
&
#/
%
-%
.%
2/6
/ 5
!
#
!
!
"
! %
+
!
6
%
&
7
!
6
%&
&
&
8
5
"
!
! %
0
!
9
:
* &'(
;
;
3
!
!
%
!
2
< => ,1
!
4 ?
# 7
1
1
1
1
6
6
6
6
7
7
7
7
6
6
6
6
A ?
*
*
# 7
&
B 5
@2
"
2
3
!
!
# 7
8
1
3
!
+
C +
<
!
#
!
!
#
8
%
!
D 5
C +
:
:
F
3!
%
(
@
"
#
%
8
3!
!
G *8
"
*
9
7
E
:
+ &
!
:%
2
3!
!
2
E
8
%
5
3
:%
2
2
H5
9
E
!
!
I
E
!
8
E
!
E
E
(
8
!
8
8
8
2
!
3/6
Parte Prática
O problema abaixo se refere às questões 1a) e 1b)
Problema
Um móvel desloca-se ao longo de uma reta determinada pelos pontos A e B, a partir do ponto A em direção
ao ponto B.
O movimento é realizado em várias etapas:
•
na primeira etapa a distância percorrida é d;
•
na segunda etapa é d/2;
•
na terceira etapa é d/3; e assim sucessivamente até que o móvel ultrapasse o ponto médio do segmento AB.
K
A
d
1a etapa
B
d/3
3a etapa
d/2
2a etapa
Conhecendo-se a distância entre os pontos A e B e a distância percorrida na primeira etapa do
deslocamento, determinar a quantidade de etapas necessárias para que o ponto médio seja ultrapassado.
Questão 1a (1,0 ponto) Se a distância entre A e B é 54cm e a distância percorrida na primeira etapa
é 15cm, qual a quantidade de etapas necessárias para que o ponto médio seja ultrapassado?
percurso
percurso
parcial
total
1
15
15 < 27
2
7,5
22,5 < 27
3
5,0
27,55 > 27
etapa
são necessárias 3 etapas
Questão 1b (2,0 pontos)
Complete o texto do programa Java abaixo que deve representar um método de resolução do problema.
class Quest1 {
public static void main (String args []) {
Keyboard kbd = Console.getInput( );
Screen scr = Console.getOutput( );
float dist, d, percurso;
int quant; // a variavel quant deve representar a quantidade de etapas
dist=kbd.readFloat(“digite a distância entre os pontos A e B: “);
d=kbd.readFloat(“digite a distância percorrida na primeira etapa: “);
percurso=d;
quant=1;
while(percurso<=dist/2) {
quant=quant+1;
percurso=percurso+d/quant;
}
scr.println(“\n\nsão necessárias “+quant+” etapas\n\n”)
}
}
4/6
Questão 2 ( 1 ponto )
Escreva um código em Java para um método que retorna o maior entre três números inteiros.
static int maior( int a, int b, int c ) {
int m = a;
if( m < b ) m = b;
if( m < c ) m = c;
return m;
}
Questão 3 (3 pontos )
Descreva o método main( ) de um programa Java que deve representar um método de resolução do
seguinte problema:
Conhecendo-se os componentes de um vetor que possui no máximo 20 elementos, calcular a soma dos
componentes da primeira metade e a soma dos componentes da segunda metade do vetor. Exibir o menor
valor precedido da mensagem “Menor soma: “ ou, se as somas forem iguais, o valor comum e a mensagem
“Somas iguais: “
Observação: se a quantidade de componentes do vetor for um número ímpar, o componente central não
deverá ser incluído nem na primeira e nem na segunda metade. Veja os exemplos.
quantidade de componentes do vetor igual a 8:
0
1
2
3
4
primeira metade
5
6
segunda metade
quantidade de componentes do vetor igual a 11:
0
1
2
primeira metade
7
3
4
5
6
7
8
9
10
segunda metade
Os métodos auxiliares lerVetor( ) e somaFaixa( ) , descritos abaixo deverão ser utilizados (acionados) a
partir do método principal que deve ser construído.
static void lerVetor( float v[ ], int tv[] ) {
Keyboard kbd=Console.getInput();
Screen scr=Console.getOutput();
float temp; tv[0] = -1;
int conta = 1;
scr.print("\nDigite cada componente do vetor ou –999 para encerrar ");
scr.println ("vetor ou -999 para encerrar\n");
temp=kbd.readFloat("Valor : " + conta + " " );
while( temp != -999 && conta < 20 ) {
tv[0]++;
conta++;
v[ tv[0] ] = temp;
temp=kbd.readFloat("Valor : " + conta + " " );
}
if( temp != -999) { tv[0]++; v [ tv[0] ] = temp; }
tv[0]++; // Define a quantidade de elementos do vetor
}
static float somaFaixa( float v[ ], int i, int f ) {
float soma=0;
int c;
for(c=i; c<=f; c++)
soma=soma+v[c];
return(soma);
}
5/6
public static void main(String args[ ]){
Screen scr=Console.getOutput();
float soma1, soma2;
float vet[ ]=new float[20];
int tam[ ]=new int[1];
int central;
lerVetor(vet,tam);
central=tam[0]/2;
soma1=somaFaixa(vet,0,central-1);
if(tam[0] %2 == 1)
central=central+1;
soma2=somaFaixa(vet,central,tam[0]-1);
if(soma1==soma2) scr.println(“\nsomas iguais: “+soma1);
else if(soma1<soma2) scr.println(“\nmenor soma: “+soma1);
else scr.println(“\nmenor soma: “+soma2);
}
6/6
$5*;?I>
Download

Gabarito P2 2005 - PUC-SP