Grupo I (7.5 valores) Este grupo é formado por questões de resposta múltipla. Para cada uma delas, existe uma resposta correcta. Assinale com uma cruz no enunciado do exame a opção que considere correcta. Atenção: Uma resposta errada desconta ¼ da cotação da pergunta. Ausência de resposta vale 0 valores. 1) Considere o seguinte programa: (1,5 valores) public class Main { final int MAX = 10; public static void main(string[] args) { Main programa = new Main(); programa.imprime(0); void imprime(int n){ while (n < MAX){ System.out.println (3*n); n++; A O último número da sequência escrito no ecrâ é 0. B O programa escreve no ecrã uma sequência decrescente de números iniciada em MAX C Escreve no ecrã uma sequência crescente de números iniciada em 0 e terminada em 10. D O último número da sequência escrito no ecrã é 27. 2) Considere o seguinte programa: (1,5 valores) public class Main { public static void main(string[] args) { String str1 = "Manuel"; String str2 = "Manuel"; if (str1==str2) System.out.println("São Iguais"); else System.out.println("São Diferentes"); A O programa não funciona, pois a classe main não foi instanciada (através de new). B O programa imprime São Diferentes, pois não se podem comparar Strings com == C - O programa imprime São Iguais porque as Strings têm o mesmo apontador. D O programa imprime São Iguais porque o operador == compara o conteúdo de cada String Pág 1 de 7
3) Considere o seguinte programa: (1,5 valores) public class Array { public static void main (String args[]){ int[] d = {1,2,3,4; int s = 0; for (int i = 0; i < d.length; i++) System.out.println(s+=i*d[i]); A- O resultado é a sequência de inteiros 0, 2, 6, 12; B- O resultado é a sequência de inteiros: 0, 2, 8, 20; C- O resultado é a sequência de inteiros: 0, 1, 2, 3; D - O programa não funciona, pois a classe main não foi instanciada (através de new). 4) No Java, as interfaces:: (1,5 valores) A Permitem simular herança multipla, pois uma classe pode implementar várias interfaces em simultâneo. B Podem ser instanciadas como qualquer objecto. C Não permitem a definição de constantes. Apenas permitem definir variáveis D Não permitem herança de outras interfaces 5) Considere o seguinte programa: (1,5 valores) public class Teste { int Bananas = 0; public static void main (String[] args) { Teste Objecto1=new Teste(10); Objecto1.ImprimeBananas(); public Teste(int t){ alterarbananas(t); public void alterarbananas(int n){ Bananas = n; public void ImprimeBananas(){ System.out.println(Bananas); A O programa imprime no ecrã o valor 0. B O programa não imprime qualquer valor C O programa imprime no ecrã o valor 10. D O programa imprime no ecrã a palavra Bananas Pág 2 de 7
II (7.5 valores) Questões para resolução. Leia com atenção o enunciado e justifique todas as respostas: 6) Considere o programa seguinte: public class Velocipede { public int velocidade = 10; Velocipede b1 = new Velocipede(); Velocipede.acelerar(); public void acelerar() { velocidade ++; public void travar(){ velocidade --; public int obtervelocidade(){ return velocidade; a) O programa contêm um erro relativo a manipulação de métodos de objecto e de classe. Corrija-o. (2.5 valores) O método acelerar está a ser chamado por main como sendo estático. public class Velocipede { public int velocidade = 10; Velocipede b1 = new Velocipede(); b1.acelerar(); public void acelerar() { velocidade ++; public void travar(){ velocidade --; public int obtervelocidade(){ return velocidade; Pág 3 de 7
b) Escreva uma outra classe denominada Bicicleta que herde todas as características da classe anterior Velocipede. A nova classe bicicleta deverá ainda ter ainda as seguintes características: (2.5 valores) Variáveis de classe: numrodas = 2; Variáveis de objecto: cadenciapedais=0; mudancaactual=0; Métodos de objecto: ReduzVelocidade(int x). O método ReduzVelocidade deverá decrementar a velocidade actual em x unidades, caso este seja menor ou igual à variável velocidade. Caso contrário não decrementa e imprime mensagem informativa : x > velocidade Deverá também criar uma nova instancia de Bicicleta no método main() e decrementar a velocidade de 5. public class Bicicleta extends Velocipede{ static int NumRodas = 2; int cadenciapedais=0; int mudancaactual=0; Bicicleta b3= new Bicicleta(); b3.reduzvelocidade(10); System.out.println(b3.obterVelocidade()); public void ReduzVelocidade(int x){ if (x<=velocidade) velocidade=velocidade-x; else System.out.println(x + " > " + velocidade); c) Adicione à classe Bicicleta dois métodos: Um para alterar o valor da variável de classe NumRodas para 4 e outro para obter o valor da variável de classe NumRodas. Se criasse agora uma nova instancia (b4) do objecto Bicicleta qual o valor da variável de classe NumRodas? Justifique. (2.5 valores) public class Bicicleta extends Velocipede{ Pág 4 de 7
static int NumRodas = 2; int cadenciapedais=0; int mudancaactual=0; Bicicleta b3= new Bicicleta(); b3.reduzvelocidade(4); System.out.println(b3.obterVelocidade()); b3.alteranumrodas(); System.out.println(b3.ObtemNumRodas()); Bicicleta b4= new Bicicleta(); System.out.println(b4.ObtemNumRodas()); public void ReduzVelocidade(int x){ if (x<=velocidade) velocidade=velocidade-x; else System.out.println("x Maior que velocidade actual"); public void AlteraNumRodas(){ NumRodas=4; public int ObtemNumRodas(){ return(numrodas); A variável de classe NumRodas agora fica com o valor 4 para todas as instancias criadas. Pág 5 de 7
Elaboração de programa simples. III (5 valores) (5 valores) 7) Elabore um programa que peça a introdução de um número inteiro através teclado, guarde esse inteiro introduzido num array de 10 elementos e continue novamente a pedir e guardar inteiros até atingir o limite de 10 elementos. As seguintes validações deverão ocorrer: Caso: 1 - O valor introduzido seja igual a qualquer um dos 10 valores anteriores, deverá imprimir no ecrã a mensagem Erro: Valor introduzido anteriormente. Continua a pedir introdução de valores no ecrã até atingir os 10. 2 Para todos os outros casos deverá imprimir no ecrã a mensagem Valor não introduzido anteriormente e continuar a pedir a introdução de valores no ecrã até atingir os 10 elementos. 3 Quando forem introduzidos 10 elementos o programa pára. Métodos obrigatórios: O programa deverá ter além do método main() pelo menos o seguinte método: boolean validaentrada(int entrada) Método que faz a validação do valor introduzido variável entrada verifica se o valor introduzido já o tinha sido anteriormente. Se verdade, devolve o valor true. Caso contrário devolve o valor false. import java.util.scanner; public class Main { static int entrada; static int[] array; static boolean a; static int i=0; static final int MAX = 10; public static void main(string[] args) { array = new int[max]; Scanner in = new Scanner(System.in); while (i<max) { System.out.println("Introduza o Número do mês: "); entrada = in.nextint(); if (valida (entrada)) System.out.println("Introduziu: " + entrada); else System.out.println("Erro: Valor introduzido anteriormente: " + entrada); static boolean valida(int valor) { for (int x=0;x<array.length;x++) { if (array[x] == valor) { System.out.println("Valor nao introduzido anteriormente " + array[x] + valor ); Pág 6 de 7
array a=false; break; else { a=true; array[i]=valor; // Adiciona o valor introduzido e validado ao i++; // Incrementa indice do array; System.out.println(a); return a; Boa Sorte Pág 7 de 7