Você está na página 1de 8

FACULDADE DE CIÊNCIAS E TECNOLOGIA

CURSO DE ENGENHARIA INFORMÁTICA- 2ºANO


EXAME NORMAL DE PROGRAMAÇÃO ORIENTADA A OBJETOS I
Duração 150min. Data 28-Junho-2018.
Durante a realização do exame é vedada aos estudantes toda comunicação entre si. Não sendo nomeadamente
permitido o uso ou exibição de:
telemóveis, relógios interativos, máquinas calculadoras ou outros meios de cálculo automático ou comunicação
remota.
Respostas rasuradas serão desclassificadas.

Parte I
Escolha a opção correcta (0.2 cada):
1. Uma classe:
a. É uma modelo a partir do qual objetos individuais sao criados. Uma classe pode conter campos e metodos
que descreve o comportamento de um objeto.
b. É um tipo de dados especial.
c. É utilizada para alocar memória para um tipo de dados.
d. Nenhuma das opções acima.
2. No que diz respeito à linguagem de programação Java, analise as afirmações abaixo.
i.Um método declarado como ‘static’ não pode acessar variáveis de instância da classe, pois o método pode ser chamado
mesmo quando não há nenhum objeto da classe instanciado.
ii.Java permite herança múltipla de classes, portanto uma nova classe pode ser herdeira de duas ou mais classes já
definidas.
iii.O operador ‘+’ só pode ser utilizado para dados de tipo numérico.
Está(ão) correta(s), apenas:
a. i. c. i e ii.
b. ii. d. i e iii.
3. Qual das alternativas abaixo apresenta um método que concatena dois objetos do tipo String em Java?
a. Método ‘endsWith’ em ‘String’ c. Sobrecarga do operador ‘+’
b. Método ‘charAt’ d. Método ‘substring’
4. Considere a compilação de um ou mais programas por meio da linha de comando, num ambiente Java. Nesse caso, o
comando que está corretamente formado para esse fim é:
a. compile teste.java –type java c. javac *.java
b. java teste.java d. jvm Teste1.java teste2.java
5. A linguagem de programação Java suporta:
a. passagem de parâmetros de tipos primitivos por c. herança múltipla
referência d. polimorfismo
b. sobrecarga de operadores
6. O tamanho do array é determinado ___________ e, uma vez definido, _______ ser alterado durante a execução do
programa.
a. exclusivamente durante a execução do programa – pode
b. exclusivamente durante a compilação do programa – não pode
c. exclusivamente durante a execução do programa – não pode
d. exclusivamente durante a compilação do programa – pode
7. Acerca do tratamento de exceções em Java, analise as afirmativas a seguir.
I. Toda vez que a estrutura try é utilizada, obrigatoriamente, em seu encerramento (na chave final), deve existir pelo
menos um catch, a não ser que ela utilize a instrução finally.
II. A estrutura try pode não conter nenhum bloco catch, porém o bloco finally torna-se obrigatório.
III. O objetivo do try é manter códigos para liberação de recursos adquiridos em seu bloco finally correspondente.

1
IV. O finally é obrigatório e fornece um conjunto de códigos que é sempre executado, independentemente de uma
exceção ocorrer ou não.
Está(ão) correta(s) apenas a(s) afirmativa(s)
a. III. c. I e II.
b. IV. d. III e IV.
8. Acerca da linguagem de programação Java, “um método declarado _______________ não pode acessar as variáveis de
instância e os métodos de instância da classe, porque um método _______________ pode ser chamado mesmo quando
nenhum objeto da classe foi instanciado.” Assinale a alternativa que completa correta e sequencialmente a afirmativa
anterior.
a. static / static c. static / public
b. public / static d. public / public
9. Como qualquer linguagem de programação, a linguagem Java tem sua própria estrutura, regras de sintaxe e paradigma
de programação. Portanto, a estrutura try...catch...finally da linguagem Java tem o objetivo de controlar o fluxo de
execução do tipo:
a. Estrutura de desvio de fluxo. c. Estrutura de controle de erros.
b. Mecanismo de finalização. d. Estrutura de repetição condicional.
10. Qual função do ambiente de programação Java deve ser utilizada para se retornar o caractere de uma determinada
posição da string?
a. valueOf c. charAt
b. compateTo d. split
11. Acerca da programação orientada a objetos, usando Java, analise a seguinte assertiva: “O Java contém três tipos de
instruções de seleção”. Assinale-as.
a. if; for; while. c. while; switch; else.
b. if; while; do while. d. if; if ... else; switch.
12. Na serialização de objetos em Java, a classe
a. ObjectOutputStream é usada na recuperação de um objeto serializado.
b. a ser serializada deve herdar java.io.FileInputStream.
c. a ser serializada deve implementar java.io.Serializable.
d. ObjectInputStream é usada na serialização de um objeto.
13. Em Java, certo método da classe A deve poder ser invocado independentemente da criação prévia de uma instância de
A. O modificador obrigatório na declaração desse método é:
a. static; c. protected;
b. public; d. final.
14. Os programadores da linguagem Java concentram-se em criar seus próprios tipos definidos pelo usuário. Esses tipos
são conhecidos como:
a. métodos. c. bytecodes.
b. objetos. d. classes.
15. Java Virtual Machine (Máquina Virtual Java) é um programa que carrega e executa os aplicativos Java, convertendo:
a. os bytecodes em código executável de máquina
b. os microcódigos em código executável de máquina
c. os códigos encriptados em bytecodes
d. os microcódigos em códigos encriptados
Parte II
1. (0.15 val cada)Sobre identificadores de variáveis verifique se são aceites pelo Java. Responda Sim ou Não para cada uma das alienas.
a. j#2 d. m_2 g. J2P j. a x
b. abc e. endereco h. 3var
c. int f. $mon i. val*or

2
Parte II
1. Analise os códigos escrito na linguagem Java e diga que será exibido na saída do programa:
a) (0.5 val) b) (0.5 val)
public class enigma {
public static void main(String args[]) {
int m=0, n=2;
do {
m=++m;
n--;
} while(n>0);
System.out.println(m);}}
Res:____________________________ (5):5 (7):13 Res:____________________________ 2
c) (1.5 val) d) (0.5 val)
public class X {
public static void main(String [] args){
try{
falha();
System.out.print("A1"); }
catch (RuntimeException ex){
System.out.print("A2"); }
catch (Exception ex1) {
System.out.print("A3"); }
finally {
System.out.print("A4"); }
System.out.print("A5"); }
public static void falha() {
throw new RuntimeException(); }}
Res:____________________________A2A4A5 Res:_______________________não compila
ParteIII:
1. (02.5 val)Dado um triângulo retângulo de catetos A e B e hipotenusa C, escreva um programa que leia o valor dos
catetos e determine o valor da hipotenusa, bem como o valor do ângulo (em graus) entre o lado A e a hipotenusa.
(utilize classes do Java para o quadrado e raiz quadrada)

class TrianguloRetangulo {
public static void main(String[] args) {
System.out.println(Operacoes.calculaHipotenusa(100, 130));;
System.out.println(Operacoes.calculaAngulo(100, 164)); }}
class Operacoes{
public static int calculaHipotenusa(float catetoA,float catetoB) {
float hipotenusa;
hipotenusa = (float) Math.sqrt(Math.pow(catetoA, 2)+Math.pow(catetoB, 2));
return (int) hipotenusa; }
public static int calculaAngulo(float catetoA,float hipotenusa) {
return (int) Math.toDegrees((Math.asin((catetoA/hipotenusa)))); }}

2. (03.5 val)Escreva um programa que leia do teclado um número inteiro positivo e determine se o número introduzido
é um número primo. Um número natural é um número primo quando tem exatamente dois divisores naturais distintos:

3
o número 1 e ele mesmo. Repare que deve validar o valor de entrada repetindo a leitura se o valor não for válido
(positivo).

import java.util.Scanner;
public class TesteOperacao {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner entrada = new Scanner(System.in);
int num;
do{
System.out.println("Digite o valor a ser verificado: ");
num=entrada.nextInt();
}
while(!Operacao.validaLeitura(num));
if(Operacao.verificaPrimo(num))
System.out.println("O valor introduzido é primo");
else
System.out.println("O valor introduzido não é primo");
}}
public class Operacao {
public static boolean verificaPrimo(int numeroIntroduzido) {
for (int j = 2; j < numeroIntroduzido; j++) {
if (numeroIntroduzido % j == 0)
return false;
}
return true;
}
public static boolean validaLeitura(int numero) {
return numero>0?true:false;
}
}
3. (03.5 val) Implemente um programa que leia um parágrafo de texto da consola e:
- indica quantas frases tem o parágrafo (uma frase pode acabar com ‘.’, ‘?, ‘...’ ou ‘!’);
- imprime cada frase na linha nova (utilize a sintaxe foreach);
- deve usar métodos para cada operação pedida.

import java.util.Scanner;
public class LerParagrafo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);

System.out.print("Escreva um paragrafo: ");


String texto = sc.nextLine();

String[] novaFrase = texto.trim().split("[.?!]+");


int frases = novaFrase.length;

System.out.println("\nO paragrafo tem " +frases+ " frases.\n");

for(String novaFrase1 : novaFrase)


System.out.println(novaFrase1);}}
4
4. (03 val) Escreva um programa em Java que solicita valores (pelo teclado) ao usuário para preencher uma matriz quadrada (o tamanho
desta matriz é também fornecido pelo utilizador). Os valores da matriz são armazenado em um array de inteiros.
a. O programa deve imprimir a matriz (crie método especifico).
b. Crie um método que faça a transposta da matriz introduzida.
import java.util.Scanner;
public class Matriz3x3 {
public static void main(String[] args) {
int [][] matTrans = Matriz3x3.preencheMatriz();
System.out.println(Matriz3x3.imprimeMatriz(matTrans));
System.out.println("Matriz transposta");
System.out.println(Matriz3x3.imprimeMatriz(Matriz3x3.transposta(matTrans))
);
}
public static int [][] preencheMatriz() {
Scanner sc = new Scanner(System.in);
System.out.println("Introduza o tamanho da matriz");
int tamanhoMatriz = sc.nextInt();
int [][] mat1= {{}};

if(tamanhoMatriz>=2) {
mat1 = new int[tamanhoMatriz][tamanhoMatriz];
System.out.println("Introduza o valor dos elementos da
matriz");
for (int i = 0; i < mat1.length; i++) {
for (int j = 0; j <mat1[i].length; j++) {
System.out.println("Introduza o elemento j:"+(j+1)+"
i:"+(i+1));;
mat1[i][j]=sc.nextInt();
}}}
return mat1;}

public static String imprimeMatriz(int [][] array) {


System.out.println("Matriz");;
String content="";
for (int i = 0; i < array.length; i++) {
for (int j = 0; j <array[i].length; j++) {
content+=array[i][j]+" ";
}
content+="\n";
}
return content;
}
public static int[][] transposta(int [][] mat){
int [][] transpMat = new int[mat.length][mat.length];
for (int i = 0; i < transpMat.length; i++) {
for (int j = 0; j < transpMat.length; j++) {
transpMat[j][i]=mat[i][j];
} }
return transpMat;}}

5
package mes.pkgdo.ano;
import java.util.Scanner;
public class MesDoAno {
public static void main(String[] args) {
int mes;

Scanner input = new Scanner(System.in);


System.out.println("Introduza o mes pretendido de 1 a 12 ");
mes = input.nextInt();

switch (mes){
case 1: System.out.println("O mes de Janeiro tem 31 Dias"); break;
case 2: System.out.println("O mes de Fevereiro tem 28/29 Dias"); break;
case 3: System.out.println("O mes de Janeiro tem 31 Dias"); break;
case 4: System.out.println("O mes de Abril tem 30 Dias"); break;
case 5: System.out.println("O mes de Maio tem 31 Dias"); break;
case 6: System.out.println("O mes de Junho tem 30 Dias"); break;
case 7: System.out.println("O mes de Julho tem 31 Dias"); break;
case 8: System.out.println("O mes de Agosto tem 31 Dias"); break;
case 9: System.out.println("O mes de Setembro tem 30 Dias"); break;
case 10: System.out.println("O mes de Outubro tem 31 Dias"); break;
case 11: System.out.println("O mes de Novembro tem 30 Dias"); break;
case 12: System.out.println("O mes de Dezembro tem 31 Dias"); break;
default: System.out.println("O mes nao existe");break;
}
}
}

package troca.valor;
import java.util.Scanner;
public class TrocaValor {

public static void main(String[] args) {


int a;
int b;

Scanner input = new Scanner(System.in);


System.out.println("Introduz o valor de A");
a = input.nextInt();
System.out.println("Introduz o valor de B");
b = input.nextInt();

a = a + b;
b = a - b;
a = a - b;

System.out.println("Valor de A: " + a + " e Valor de B: " + b);


}

6
package exibe.valores;
import java.util.Arrays;

public class ExibeValores {

public static void main(String[] args) {


float[] vetor = {1,2,3,4};

/* for (int i=0; i<vetor.length; i++){


System.out.println(vetor[i]);}*/

for(float i : vetor){
System.out.print(i);}
}

package metodo.classe.stri;

public class MetodoClasseStri {

public static void main( String args[] )


{
String strings[] = { "started", "starting", "ended", "ending" };

// test method startsWith


for ( String string : strings )
{
if ( string.startsWith( "st" ) )
System.out.printf( "\"%s\" comeca com \"st\"\n", string );
} // end for

System.out.println();

// test method startsWith starting from position 2 of string


for ( String string : strings )
{
if ( string.startsWith( "art", 2 ) )
System.out.printf(
"\"%s\" comeca com \"art\" at position 2\n", string );
} // end for

System.out.println();

// test method endsWith


for ( String string : strings )
{
if ( string.endsWith( "ed" ) )
System.out.printf( "\"%s\" termina com \"ed\"\n", string );
} // end for
} // end main
} // end class StringStartEnd

Saida:
"started" comeca com "st"
"starting" comeca com "st"

"started" comeca com "art" at position 2


"starting" comeca com "art" at position 2

"started" termina com "ed"


"ended" termina com "ed"

7
package metodo.stri2;

public class MetodoStri2 {

public static void main(String[] args){


String s1 = "hello";
String s2 = "GOODBYE";
String s3 = " spaces ";

System.out.printf("s1 = %s%ns2 = %s%ns3 = %s%n%n", s1, s2, s3);


// test method replace
System.out.printf("Replace 'l' with 'L' in s1: %s%n%n", s1.replace('l', 'L'));
// test toLowerCase and toUpperCase
System.out.printf("s1.toUpperCase() = %s%n", s1.toUpperCase());
System.out.printf("s2.toLowerCase() = %s%n%n", s2.toLowerCase());
// test trim method
System.out.printf("s3 after trim = \"%s\"%n%n", s3.trim());
}

Saida:
Replace 'l' with 'L' in s1: heLLo

s1.toUpperCase() = HELLO
s2.toLowerCase() = goodbye
s3 after trim = "spaces"

public static void main(String[] args) {

double [] valores = {1,2,3,4,5,6};

double[] primeiraCopia = valores;

double[] segundaCopia = valores;

primeiraCopia[1] = 1;

segundaCopia[2] = valores[0] + primeiraCopia[1];

primeiraCopia[2] = valores[1] + segundaCopia[2];

valores[4] = primeiraCopia[2] + segundaCopia[3];

valores[5] = segundaCopia[3] + primeiraCopia[4];

R% Nao tera nenhuma saida

Você também pode gostar