Prévia do material em texto
1
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS
Instituto de Informática e Ciências Exatas - Curso de Sistemas de Informação
Programação Orientada por Objeto - Professor: Paulo Amaral
LISTA DE EXERCÍCIOS 1 - TEORIA 2/2014
OBS: ENTREGAR SOMENTE O QUE FOR SOLICITADO DURANTE A AULA
Parte I: Revisão de ATP
Ex1: (Prof. Joao Caram)
a) Escreva uma função que receba 5 números inteiros do usuario e, ao final, retorne o maior deles.
b) Escreva uma função que receba 5 números inteiros do usuario e, ao final, retorne a média de seus
valores.
c) Escreva uma função que receba 5 números inteiros do usuario e, ao final, avise se há números
repetidos.
Ex2: (Prof. Joao Caram)
Escreva um método “quantosDias” que receba como parâmetro uma data composta por dia, mês e
ano e retorne o número de dias decorridos no ano até a data fornecida.
Ex3: (Prof. Joao Caram)
Escreva um algoritmo que leia os votos de 15 eleitores para presidente. Os candidatos são:
19 – Machado de Assis
21 – Guimarães Rosa
33 – Cecília Meireles
Ao final da votação, o algoritmo deve mostrar o resultado final em número de votos e em
porcentagem.
Ex4: (Prof. Joao Caram)
Escreva um método que esteja preparado para receber 10 números inteiros do usuário. Esses
números devem ser inseridos em um vetor por meio de um método parametrizado. Ao final das
leituras e inserções, o vetor deve ser exibido na ordem crescente de valores.
Ex5: (Prof. Joao Caram)
Escreva um método que esteja preparado para receber 10 números inteiros do usuário. Esses
números devem ser inseridos em um vetor por meio de um método parametrizado. Ao final das
leituras e inserções, outro método deve retornar o menor e o maior valor presentes no vetor.
2
Parte II: Conceitos básicos de POO
Ex5: (PROVA 1 POO 2014)
Relacione a “coluna 1” com a única e melhor alternativa correspondente da “coluna 2”.
Coluna 1:
1) Máquina virtual
2) Compilador
3) Overflow
4) Célula ou posição de memória
5) Interpretador
6) Execução
7) Underflow
8) Endereço
9) Tipo Abstrato de Dado (TAD)
10) Linguagem assembly
11) Programação Orientada para Objetos (POO)
12) Carga
Coluna 2:
( ) a) Limitação do hardware de não representar números muito grandes (valor absoluto).
( ) b) Grupo de bits em que memória é dividida e se constitui na menor unidade acessível.
( ) c) Utiliza símbolos alfanuméricos para representar as instruções da linguagem de máquina.
( ) d) Lê e executa um linha ou comando de cada vez, não gerando código-objeto.
( ) e) Programas são organizados como coleções de objetos cooperativos, onde cada objeto
representa uma instância de uma classe.
( ) f) Programa é colocado na memória principal.
( ) g) Possibilita a execução de um código binário Java independentemente da plataforma. 1
( ) h) Limitação do hardware que não representar números muito pequenos (valor absoluto). 6
( ) i) Transforma o código fonte em um programa equivalente codificado em linguagem
de máquina.
( ) j) Número associado a cada posição (célula) de memória que lhe permite identificar.7
( ) k) Alocar e transferir o controle do processador para o programa.
( ) l) modelo matemático, acompanhado de operações definidas sobre o modelo.
Ex6: (ANALISTA DE SISTEMAS PETROBRAS 2007 – CESPE -)
Marque, para cada item: da questão, no campo designado com o código C, caso julgue o item
CERTO; ou o com o código E, caso julgue o item ERRADO. Deixe em branco quando não
souber, pois respostas erradas receberão pontuação negativa.
( ) a) Um programa em linguagem de alto nível deve ser compilado para se transformar em
linguagem de montagem e, posteriormente, montado para se transformar em linguagem de maquina.
(Questão 52 - ANALISTA BC 2013)
( ) b) Linguagens orientadas a objeto permitem reduzir custos de desenvolvimento e manutenção
(Questão 41 - ENADE 2005 – EC e SI).
( ) c) A passagem de parâmetros por referência é, de fato, uma passagem de parâmetro por valor
de um endereço de memória (Questão 76 Oficial Técnico de Inteligência – Área de Suporte a
Rede de Dados CESPE 2012).
( ) d) Na passagem de parâmetros por valor, os parâmetros têm escopo local, sendo acessíveis
somente pela função, já que, assim como as variáveis locais, os parâmetros são alocados no espaço
de memória da pilha do sistema (Questão 78 Oficial Técnico de Inteligência – Área de Suporte a
Rede de Dados CESPE 2012).
3
( ) e) Um array é um conjunto de elementos de tipos homogêneos, ou seja, todos os seus
elementos são do mesmo tipo de dados. Uma estrutura, ou registro, é um conjunto de elementos
heterogêneos, porque seus elementos não são obrigatoriamente do mesmo tipo de dados (Questão
80 Oficial Técnico de Inteligência – Área de Suporte a Rede de Dados CESPE 2012).
( ) f) Instruções e dados estão em uma memória física única; um programa é constituído de uma
sequência de instruções de máquina; uma instrução é lida da memória de acordo com a ordem dessa
sequência e, quando é executada, passa-se, então, para a próxima instrução na sequência. (Questão
11 - ENADE 2005 - SI)
( ) g) o linker é o utilitário responsável por carregar na memória principal um programa para ser
executado (questão 16 -Analista de Sistemas - Informática e Redes- MI-CENAD -ESAF 2012).
( ) h) O interpretador possibilita a alteração e a visualização do conteúdo de variáveis.
( ) i) O linker gera um único programa executável a partir de um ou mais módulos-objetos.
( ) j) O módulo gerado pelo tradutor é o módulo-fonte (questão 16 -Analista de Sistemas -
Informática e Redes- MI-CENAD -ESAF 2012
Ex7: (Questão 20 - ENADE 2005 – COMPUTAÇÃO) ESTÃO 20
A orientação a objetos é uma forma abstrata de pensar um problema utilizando-se conceitos do
mundo real e não, apenas, conceitos computacionais. Nessa perspectiva, a adoção do paradigma
orientado a objetos implica necessariamente que
A) Os usuários utilizem as aplicações de forma mais simples.
B) os sistemas sejam encapsulados por outros sistemas.
C) os programadores de aplicações sejam mais especializados.
D) os objetos sejam implementados de maneira eficiente e simples.
E) a computação seja acionada por troca de mensagens entre objetos
Ex8: (Questão 22 - ENADE 2008 – Ciência da Computação)
Qual tipo de software tradutor deve ser utilizado para programas em geral, quando a velocidade de
execução é uma exigência de alta prioridade?
(A) compiladores (B) interpretadores (C) tradutores híbridos (D) macroprocessadores
(E) interpretadores de macroinstruções.
Ex9: (Questão 39 - ENADE 2011 – COMPUTAÇÃO)
O conceito de Tipo de Dados Abstrato (TDA) é popular em linguagens de programação. Nesse
contexto, analise as afirmativas a seguir.
I. A especificação de um TDA é composta das operações aplicáveis a ele, da sua representação
interna, e das implementações das operações.
II. Dois mecanismos utilizáveis na implementação de um TDA em programas orientados a objetos
são a composição e a herança.
III. Se S é um subtipo de outro T, então entidades do tipo S em um programa podem ser substituídas
por entidades do tipo T, sem alterar a corretude desse programa.
IV. O encapsulamento em linguagens de programação orientadas a objetos é um efeito positivo do
uso de TDA.
É correto apenas o que se afirma em
A I. B II. C I e III. D II e IV. E III e IV.
Ex10: (Questão 32 - ENADE 2008 – TECNOLOGIA ANÁLISE DE SISTEMAS)
Com relação a conceitos de orientação a objetos, julgue os seguintes itens.
I As variáveis ou métodos declaradoscom modificador de acesso private só são acessíveis a
métodos da classe em que são declarados.
II Uma classe deve possuir uma única declaração de método construtor.
III Uma instância de uma classe abstrata herda atributos e métodos de sua superclasse direta.
IV O polimorfismo permite substituir a lógica condicional múltipla (lógica switch ou faça caso).
4
Estão certos apenas os itens
A I e II.
B I e III.
C I e IV.
D II e III.
E II e IV.
Ex11: (Questão 28 – ANALISTA PETROBRAS 2010 CESGRANRIO)
Analise o código Java a seguir.
public class Main {
public static int x(int n) {
if (n>2)
return 3+x(n-1);
else
return 0;
}
public static void main(String[ ] args) {
int x,y,z;
x=0;
y=0;
z=10;
for (int i=0;i<120;i++)
x+=1;
for (int j=1;j<=5;j+=2)
y+=2;
z=x+y+x(6);
System.out.println(z);
}
}
Qual a saída da execução desse código?
(A) 10 (B) 125 (C) 138 (D) 139 (E) 141
Ex12:
Qual é a diferença entre tradução, compilação, montagem e interpretação? Cite exemplos de
compiladores, montadores e interpretadores.
Ex 13: (PROVA 1 POO 2014)
Considere o programa prova1.cs (mostrado a seguir) e a sequência de comandos executados no
Prompt do Windows:
csc.exe prova1.cs
./prova1.exe NMAT NOME1 NOME2 ... NOMEN
Onde: NMAT (número de matrícula do aluno) e NOME1 NOME2 ... NOMEN (nome completo do
aluno) são parâmetros da linha de comando. No exemplo :
./prova1.exe 231650 JOAO MANUEL FRAGOSO, observa-se que:
NMAT = 231650, NOME1 = JOAO, NOME2 = MANUEL, NOME3 = FRAGOSO
Escreva o que será impresso pelo programa na tela, os valores assumidos por todas as variáveis
(nos comandos nos quais elas são referenciadas) e todos os cálculos necessários (somente a
resposta não será considerada).
//programa prova1poo.cs:
namespace Prova1
5
{
class Prova1 //programa prova1.cs
{
static void Main(string[] args)
{
int i,j, x, A=0, B=0, C=0, NMAT;
int[] vetor = new int[10];
string NOME1, NOME2;
double r = 0;
j = args.Length;
Console.WriteLine();
NMAT = int.Parse(args[0]);
x = NMAT;
NOME1 = args[1];
NOME2 = args[2];
for (i = 0; x > 0; i++)
{
vetor[i] = x % 10 + j;
x = x / 10;
}
A = vetor[1];
B = vetor[2];
C = vetor[3];
Console.WriteLine(" NOME1 = " + NOME1 + " NOME2 = " + NOME2);
Console.WriteLine(" A = " + A + " B = " + B + " C = " + C );
Faz1(A, B, C); // primeira chamada
Console.Write("A = " + A + " B = " + B + " C = " + C );
Console.WriteLine(" r = " + r);
r = Faz2(ref A, ref B, ref C); //segunda chamada
Console.Write("A = " + A + " B = " + B + " C = " + C );
Console.WriteLine(" r = " + r);
}
public static void Faz1(int x, int y, int z) {
Console.WriteLine(" x = " + x + " y = " + y + " z = " + z);
x = x + 10; y = y + 20; z = z + 30;
z = x + y + z;
Console.WriteLine(" x = " + x + " y = " + y + " z = " + z);
}
public static Double Faz2(ref int x, ref int y, ref int z){
double w = 0;
Console.WriteLine(" x = " + x + " y = " + y + " z = " + z);
x = x + 10; y = y + 20; z = z + 30;
z = x + y + z;
Console.WriteLine(" x = " + x + " y = " + y + " z = " + z);
w = x + y + z;
Console.Write(" x = " + x + " y = " + y + " z = " + z);
Console.WriteLine(" w = " + w);
return (w);
}
}
}…