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 à
.
•
: __________________________________________
: _____________________________________
: _________________________
29/11/2005
(marque com um "X"):
Custódio
Dirceu
Marcus Vinícius
!
"
#
$
%
&
%
'
%
%
%
%
(
%
%
%
%
!"
!
"
#
!
!
!
!
(
)
, -#
"
$
$
"
"
,
0
"
"
"
"
$ " %&'
" "
'
" "
'
$ " %&
%&
%&
*
+
/-
"
+
+
*
*
/-
- .
/- '
2
1
'
- .
!
"
5
0
+
/-
3
+
*
"
4
/- '
"
"
'
+
"
" "
6
7
0
#
$
8
4
8
"
//-
'
9
/- '
:
+
/- *
4
/-
"
1
2/6
;
)
.
"
) < ='
><)
' ?
#
@) ' ? '
0
*
0
!
0
0
B
/
8
)
$"
!
#
F
5G
F
;G
'
&F G &F G
F GD
D
2
2
D
2
D
H ( 8 '
H (
D
H 5'
H 5
D
2
84
- 8
.
7 8 1 K *M9
$8
#
*
K 4
$
*
/-
/L
4
N
0
0
0
0
0
P
0 8
H0
2
- 3
- 3
- 3
- 3
4
4
4
4
/
!
! "
!
!
-
1
2
2
H ;
L #
K
4
'
9
'
4
4
4
-'
L
-
3* #
4
4
4
4
'
'
'
'
3* #
A
A
"
//-
A
H 5'
-
@.
3
8
8
"
6
6
8
6
2
L
4
O
'
. '
/@8
A
'
'
#
-#
"8
&F
G
F
G
?
0
0
I
0
J
" "
'
3
'
8
"
!
/- . 1
- 9
+
8
+
+
!
8
"
+
C
7
D
.
0 D
E
=
" "
#
8 /N
8 /N
8 //'
8 /N
8 /-
-'
-'
"
//-
"
+
"
+
N
+
'
8 /-
'
"
+
"
'
"
8
3/6
6
6+
#
$ %& '
(
No algoritmo ao lado, as
variáveis x, y e p são
de tipo inteiro.
Descreva o código do
programa (Java) que
represente uma
implementação desse
algoritmo
Q1( )
leia(x,y);
se y > x
temp ← x; x ← y;
então
p 1;
enquanto y>0 faça
p
p * x;
y
y - 1;
imprima(p);
class ApQ1 {
public static void main( String args[ ] ) {
Keyboard kbd = Console.getInput( );
int x = kbd.readInt(“x = “ );
int y = kbd.readInt(“y = “ );
if( y > x ) {
int temp = x; x = y; y = tem;
}
int p = 1;
while( y > 0 ) {
p = p * x;
y = y – 1;
}
System.out.println(“\np = “ + p);
}
}
y ← temp
;
4/6
#
& %$ '
(
Descreva um programa (Java) para: dados o preço anterior e o novo preço de um produto,
determinar a porcentagem de variação correspondente.
Por exemplo: se preço anterior = 10,00 e novo preço = 12,40 a porcentagem de variação é
24,0%
0%
<
"
D
" C
?Q
I
R
6
8
?Q
I
R
D
=
?)
8
8
=
Q
" FG <
?
S
R
U 6
'
# R'
# R'
1 8 T HH'
"
/- # RV
'
5/6
#
) %& '
(
O método descrito abaixo, de forma incompleta, possui como parâmetro de entrada e saída
(passagem por referência) um vetor w com componentes de tipo valor inteiro. No primeiro
componente desse vetor ( w[0] ) o valor armazenado é o índice do último elemento do vetor.
Veja o exemplo:
0
7
1
51
2
17
3
51
4
32
5
22
6
51
7
18
7 componentes
O método deve remover do vetor todos os componentes, a partir de w[2], cujos valores sejam
iguais ao valor armazenado em w[1] . Por exemplo: considerando o conteúdo inicial registrado
acima, o novo conteúdo do vetor (após a remoção) deve ser:
0
5
1
51
2
17
3
32
4
22
5
18
5 componentes
O método utiliza a seguinte estratégia: copia em um vetor auxiliar o primeiro elemento e todos
os outros que não são iguais ao primeiro. Utiliza também a posição zero para armazenar a
quantidade de componentes do vetor.
Indique no quadro abaixo o preenchimento adequado das 4 lacunas:
static void removeVetor(int w[]){
LACUNA 1 ;
int v[]=new int[20];
v[1]=w[1];
b=1;
for(a=2; LACUNA 2 ; a=a+1){
if(w[a]!=w[1]){
b=b+1;
v[b]= LACUNA 3 ;
}
}
w[0]=b;
for(a=1; a<=b; a=a+1)
w[a]= LACUNA 4 ;
}
LACUNA 1
int a, b
LACUNA 2
a <= w[ 0 ]
LACUNA 3
w[ a ]
LACUNA 4
v[ a ]
6/6
#
!
* %& '
3
(
4#
static void LerVetor(int x[ ] ) {
Keyboard kbd = Console.getInput( );
x[0] = kbd.readInt("Digite a quantidade de componentes inferior a 20: ");
for( int i = 1; i <= x[0]; i++)
x[i] = kbd.readInt("x["+i+"]=");
}
8
+4
/-
,
+4
P
*
$ "
P
3
"
"
I
! $ "
/
3
3
07
+ ,
<
" " FG <
FG?
W %
'
? ' X? F
HG
' VV
D
=
F
(HG
'
'
%
8
@
FGV R R'
!,
Download

Gabarito PS 2005 - PUC-SP