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>