Exercícios sobre Java e OO

Propaganda
Exercícios de Java e OO
Lógica estruturada
Decisões
1) Fazer um programa em Java para:
 receber 3 valores n1, n2 e n3 do usuário
 verificar se estes valores podem ser os lados de um triângulo. Em caso
afirmativo, informar se o triângulo é equilátero, isósceles ou escaleno.
2) Fazer um programa que recebe 3 valores não inteiros do usuário e mostra o
maior deles, o menor deles e a média.
3) Fazer um programa que recebe duas notas parciais de um aluno (0 a 100) e
informa se ele está aprovado, em exame final ou reprovado. Caso esteja em
exame o programa deve pedir a nota do exame (0 a 100) e informar se o aluno
está aprovado ou reprovado.
4) Solicite ao usuário para digitar um número, e mostre-o por extenso. Este
número deverá variar entre 1 e 10. Se o usuário introduzir um número que não
está neste intervalo, mostre: "número inválido". Faça duas versões deste
programa:
 Use uma estrutura if-else para resolver este problema
 Use uma estrutura switch-case para resolver este problema
Fonte:http://www.bernhard.pro.br/disciplinas/java/ensino/java-L01.pdf
Repetições
5) Fazer uma classe Ex1Primos para:
 Receber um inteiro N do usuário
 Testar se este inteiro é primo ou não e informar
6) Fazer um programa para mostrar os 100 primeiros termos da série de Fibonacci.
7) Fazer um programa para mostrar todos os números perfeitos entre 1 e 100.
8) Fazer uma classe Ex2Sorteio para:
 Sortear um número de 0 a 1000 (dica: usar Math.random())
 Pedir um palpite ao usuário. Se ele errar, informar se o palpite é maior ou
menor do que o número sorteado.

Pedir novos palpites até que o usuário acerte e, depois disso, mostrar em
quantas tentativas ele acertou.
9) Fazer um programa para receber dois números do tipo int do usuário e
determinar se um número é permutação do outro ou não. Ex: 431 é permutação
de 143, 42 é permutação de 204, 1211 é permutação de 1112, etc. O programa
só deve aceitar números positivos.
10) Fazer um programa para medir os reflexos do usuário. O programa deve:
 Mostrar a palavra “Agora!” após um tempo aleatório e um número,
também aleatório
 Contar o tempo até que o usuário digite o número pedido e mostrar esse
tempo.
 Dicas: usar o método getTimeInMillis da classe Calendar ou o método
nanoTime da classe System.
11) Dada a afirmação: “A tem o dobro da idade que B tinha quando A tinha a idade
que B tem. Quando B tiver a idade de A, somarão 81 anos.”. Fazer um
programa para calcular as idades de A e B no método “força bruta”.
12) Chico tem 1,50 metro e cresce 2 centímetros por ano, enquanto Zé tem 1,10
metro e cresce 3 centímetros por ano. Construa um algoritmo que calcule e
imprima quantos anos serão necessários para que Zé seja maior que Chico.
13) Faça uma classe que recebe do usuário a hora de inicio e a hora de término de
um jogo, ambas subdivididas em 2 valores distintos: horas e minutos. A classe
deve exibir a duração do jogo em minutos, considerando que o tempo máximo
de duração de um jogo é de 24 horas e que o jogo pode começar em um dia e
terminar no outro.
14) Torre de Hanói: considerando 3 torres, o objetivo é transferir 3 discos que estão
na torre A para a torre C, usando uma torre B como auxiliar. Somente o último
disco de cima de uma pilha pode ser deslocado para outra, e um disco maior
nunca pode ser colocado sobre um menor. Implementar uma classe com um
método recursivo que mostra a seqüência de movimentos para resolver o
problema da Torre de Hanói.
String
15) Fazer uma classe ExecString que:
 Recebe duas strings do usuário (dica: usar nextLine da classe Scanner)
 Conta e informa quantas vezes a segunda string ocorre dentro da primeira
 Informa uma estatística dos caracteres contidos nas 2 strings.
16) Faça um programa que receba um nome completo na forma de uma String e
mostre a abreviatura deste nome. Não se devem abreviar as palavras com 2 ou
menos letras. A abreviatura deve vir separada por pontos. Ex: Paulo Jose de
Almeida Prado. Abreviatura: P. J. de A. P.
17) Fazer um programa que receba uma string do usuário e mostre o conteúdo desta
string de forma invertida.
18) Fazer um programa para:
 receber uma string do usuário
 contar e mostrar quantas palavras existem na string
 contar e mostrar quantas vogais existem na string
19) Um dos sistemas de encriptação mais antigos é atribuído a Júlio César: se uma
letra a ser encriptada é a letra de número N do alfabeto, substitua-a com a letra
(N+K), onde K é um número inteiro constante (César utilizava K = 3).
Usualmente consideramos o espaço como zero e todos os cálculos são
realizados com módulo-27. Dessa forma, para K = 1 a mensagem “Ataque ao
amanhecer” se torna “bubrfabpabnboifdfs”. Faça um programa que receba como
entrada uma mensagem e um valor de J e retorne a mensagem criptografada
pelo código de César. Fraquezas: apenas 26 chaves possíveis. É possível utilizar
conhecimento da linguagem para facilitar a busca.
Array
20) Pode-se calcular a área de um polígono a partir das coordenadas de seus vértices
utilizando a seguinte fórmula:
Area = soma (X(n)*Y(n+1) – X(n)*Y(n-1)) / 2
sendo que:
p/ n = 1, n-1 = N (número de vértices)
p/ n = N, n+1 = 1
Escrever um programa em Java que:



receba o número de vértices N do usuário
receba N pares de coordenadas (X,Y) dos vertíces do polígono em arrays
adequados
calcule e mostre a área segundo a fórmula acima
21) Foi feita uma estatística nas 200 principais cidades brasileiras para coletar dados
sobre acidentes de trânsito. Foram obtidos os seguintes dados:




código da cidade
estado (RS, SC, PR, SP, RJ, ...)
número de veículos de passeio (em 2007)
número de acidentes de trânsito com vítimas (em 2007)
Escrever um programa em Java para obter os dados e mostrar:



qual o maior e o menor índice percentual de acidentes de trânsito e a que
cidades pertencem
qual a média de veículos nas cidades brasileiras
qual a média de acidentes com vítimas entre as cidades do Rio Grande do
Sul.
22) Fazer uma classe Ex3Array com as seguintes características:


Atributos: array de inteiros e duas variáveis para controlar o número
atual e máximo de elementos inseridos no array
Métodos:
o Construtor que recebe o tamanho do array como parâmetro e
inicializa o objeto (cria array, etc.)
o public boolean adicionar(int n) – adiciona elemento ao final do
array, retornando true se bem sucedido e false caso contrário
o public int calculaMedia() – retorna a média aritmética dos
números armazenados no array
Fazer a classe Ex3ArrayControle que:
 Pergunta, via console, qual o tamanho N do array que o usuário quer
instanciar
 Instancia um objeto da classe Ex1Array, passando N como argumento
 Pergunta N números ao usuário e armazena no objeto instanciado
 Chama o método para calcular a média aritmética e mostra o resultado
23) Adaptar o exercício anterior para utilizar um objeto da classe ArrayList ao invés
de um array comum.
24) Fazer um programa para receber um número do usuário e decompô-lo em
fatores primos. Os fatores primos devem ser armazenados em um array com o
tamanho exato (dica: primeiro determinar quantos são os fatores primos, depois
criar o array para armazená-los).
25) A distância entre várias cidades é dada pela tabela abaixo (em km):
1
2
3
4
5
1
00
15
30
05
12
2
15
00
10
17
28
3
30
10
00
03
11
4
05
17
03
00
80
5
12
28
11
80
00
Implemente um programa que:
 leia a tabela acima em um array bidimensional. O programa não deve
perguntar distâncias já informadas (por exemplo, se o usuário já forneceu
a distância entre 1 e 3 não é necessário informar a distância entre 3 e 1,
que é a mesma) e também não deve perguntar a distância de uma cidade
para ela mesma, que é 0.
 leia um percurso fornecido pelo usuário em um array unidimensional.
Calcule e mostre a distância percorrida. Por exemplo: dado o percurso 1, 2,
3, 2, 5, 1, 4, para a tabela mostrada como exemplo teremos: 15 + 10 + 10
+ 28 + 12 + 5 = 80 km.
26) Fazer uma classe Java para:




receber um número N do usuário
receber N números inteiros em um array unidimensional
classificar em ordem crescente utilizando o método da bolha (bubble-sort)
mostrar o array classificado
27) Fazer uma classe Java para:


receber 3 notas parciais do aluno em um array e a nota do exame em uma
variável separada (-1 se o aluno não fez exame).
chamar o método calculaSituacao(), com as seguintes características:
i. Parâmetros: array de notas parciais e nota do exame
ii. Retorno: 0 se o aluno está reprovado direto, 1 se o aluno está
reprovado em exame, 2 se o aluno está aprovado em exame e 3 se
ele está aprovado direto.
28) Fazer um programa para calcular a matriz transposta de uma matriz quadrada,
fornecida pelo usuário. O programa deve pedir o valor N da dimensão
horizontal e vertical e em seguida os NxN valores da matriz.
Fonte:http://eden.dei.uc.pt/~inf/Fichas/Exercicios_Java_2.pdf
29) Escreva um programa para:
 pedir 10 números ao usuário e armazenar esses valores em um array
 pedir um outro número ao usuário e calcular e mostrar quantos números do
array são inferiores a esse número.
Fonte:http://eden.dei.uc.pt/~inf/Fichas/Exercicios_Java_2.pdf
Exceções
30) Dado o trecho de código abaixo:
int[] array = new int[] { 2, 4, 6, 8, 10, 12 };
for (int i = 0; i <= 12; i++) {
System.out.println(array[i]);
}
Implemente um programa em Java que execute este trecho. Execute o programa e
veja a exceção produzida por acesso a posição fora dos limites do array. Trate esta
exceção, imprimindo na tela uma mensagem dizendo que o array acabou.
Fonte:http://74.125.47.132/search?q=cache:uMJJLyJh1CwJ:www.disi.unitn.it/~vit
orsouza/sites/default/files/JavaSwingBDExerciciosRevisao.pdf+exerc%C3%ADcios
+java&cd=20&hl=pt-BR&ct=clnk&client=opera
31) Adaptar o exercício 8 para:
 lançar a exceção MenorQueException caso o número arriscado seja menor
do que o sorteado
 lançar a exceção MaiorQueException caso o número arriscado seja maior
do que o sorteado
 capturar essas exceções e tratá-las, mantendo a lógica original.
Fluxos e arquivos
32) Fazer um programa em Java que:
 Receba o nome, o código e as duas notas bimestrais de 3 alunos para uma
determinada matéria.
 Salve estes dados em um arquivo. Os dados devem ser salvos registro a
registro, obedecendo o seguinte formato:
i. número inteiro contendo o tamanho em char do nome do aluno.
ii. sequência de chars correspondente à string que contém o nome do
aluno.
iii. código na forma de número inteiro
iv. duas notas na forma de números inteiros.
Fazer um programa em Java para:
 ler os dados contidos no arquivo gerado pelo programa anterior
 calcular e mostrar: quais alunos foram aprovados, quais foram para exame,
quais foram reprovados e a média da turma.
Dica: utilizar FileOutputStream encapsulado por um DataOutputStream.
Utilizar métodos de String para convertê-la para um array de bytes.
33) Implementar um programa de gerenciamento de high scores. O programa deve:
a. carregar os high scores de um arquivo usando um fluxo de entrada e
mostrar. Cada high score é composto de um nome (max. 10 caracteres) e
um inteiro (pontuação)
b. pedir ao usuário o seu nome e a sua pontuação no jogo.
c. posicionar os dados do usuário na tabela de highest scores (max. 5) e
regravar no arquivo usando um fluxo de saída.
34) Crie um programa que liste o conteúdo da raiz do seu disco e informe, para cada
item, se é um arquivo ou se é um diretório (Dica: utilizar os métodos da classe
File).
Fonte:http://74.125.47.132/search?q=cache:uMJJLyJh1CwJ:www.disi.unitn.it/~v
itorsouza/sites/default/files/JavaSwingBDExerciciosRevisao.pdf+exerc%C3%AD
cios+java&cd=20&hl=pt-BR&ct=clnk&client=opera
35) Uma loja possui 4 filiais, cada uma com um código de 1 a 4. Um arquivo
contendo todas as vendas feitas durante o dia nas quatro filiais é gerado a partir
de uma planilha, sendo que cada linha do arquivo contém o número da filial e o
valor de uma venda efetuada, separados por vírgula. Ex.:
1,189.90
1,45.70
3,29.90
4,55.00
No exemplo acima, a filial 1 fez duas vendas, a primeira totalizando R$ 189,90 e
a segunda R$ 45,70. A filial 3 fez uma venda de R$ 29,90 e a 4 também uma de
R$ 55,00. Faça um programa que leia este arquivo e informe, ao final, o total e o
valor médio das vendas de cada filial.
Fonte:http://74.125.47.132/search?q=cache:uMJJLyJh1CwJ:www.disi.unitn.it/~v
itorsouza/sites/default/files/JavaSwingBDExerciciosRevisao.pdf+exerc%C3%AD
cios+java&cd=20&hl=pt-BR&ct=clnk&client=opera
Api Gráfica Java
36) Fazer um programa para:
 Criar um frame com um botão, cujo texto deve ser “Clique-me”
 quando o usuário tentar clicar sobre o botão este deve “fugir” do mouse
37) Fazer um programa para medir os reflexos do usuário:


Programa deve instanciar um JFrame com uma área de desenho
programa deve, depois de um tempo aleatório, exibir um alvo (por
exemplo, um círculo) em uma posição aleatória da área de desenho



usuário deve clicar com o ponteiro do mouse sobre o alvo.
Caso o usuário acerte, o programa deve mostrar o tempo decorrido entre a
exibição do alvo e o clique do usuário
Caso o usuário erre, o programa mostra uma mensagem de erro
38) Implementar um conversor binário- decimal com as seguintes características:
 Interface: duas caixas de texto para receber valores numéricos na base binária
e na base decimal e botões para a conversão em ambos os sentidos
 Funcionalidade: clicando-se um botão deve-se fazer o cálculo no sentido
correspondente. Considerar que o usuário SEMPRE insere números válidos e
que caixa vazia significa 0.
39) Implementar o jogo da memória
 Jogo apresenta um frame com 5 botões, contendo números ou figuras
 Ao ser iniciado, o jogo sorteia um dos botões e o indica (por exemplo,
exibindo em outro lugar do frame o número ou figura sorteada). O jogador
deve então clicar no botão correspondente.
 O jogo prossegue, exibindo uma sequência de sorteios que vai aumentando
progressivamente. O jogador, por sua vez, ao final da exibição deve repetir
aquela sequência clicando nos botões.
 O jogo termina quando o usuário erra a sequência.
40)




Implementar o layout de uma calculadora
Caixa de texto com o número no alto do frame
Números de 0 a 9 e sinais de . e = em grid de 4x3 no centro do frame
Botões de + e – à direita do frame
Botões de * e / na parte de baixo do frame
41) Fazer uma aplicação de relógio com as seguintes características:
 Interface: um frame com quatro textos estáticos (JLabel) dispostos em duas
linhas e duas colunas. Na primeira linha, um label com o texto “Data:” e um
label vazio e, na segunda linha, um label com o texto “Hora: “ e um label
vazio.
 Funcionalidade: ao ser executado o programa deve obter data e hora atuais e
exibir a data no segundo label da primeira linha e a hora no segundo label da
segunda linha.
Dica: utilizar objetos das classes Calendar e DateFormat para obter e
formatar as informações de data e hora.
42) Fazer uma aplicação Java com as seguintes características:
 barra de menu com o menu “Desenhar” e os itens de menu “Círculo” e
“Quadrado”.
 Ao clicar-se em um item de menu, o aplicativo deve desenhar a figura
correspondente no painel de conteúdo do frame.
43) Implementar um cronômetro com botões de iniciar e parar e um texto estático
mostrando o tempo percorrido. O cronômetro tem resolução de 10 ms.
44) Implementar programa em Java que corrija os erros de uso de letras maiúsculas
e minúsculas. O programa deve conter um frame com dois campos de texto e
um botão entre eles. O usuário deve inserir um texto no primeiro campo de
texto. Quando clicar no botão, o outro campo deve ser preenchido com o mesmo
texto digitado pelo usuário, porém corrigido (exemplo: se o usuário colocar no
primeiro campo de texto "brasil é o País do futebol. todos os adversários o
Temem", o outro campo de texto deve ser preenchido com "Brasil é o país do
futebol. Todos os adversários o temem").
Orientação a Objetos
Básico
45) Criar a classe Pessoa com as seguintes características:
 atributos: idade e dia, mês e ano de nascimento, nome da pessoa
 métodos:
o calculaIdade(), que recebe a data atual em dias, mês e anos e calcula e
armazena no atributo idade a idade atual da pessoa, sem retornar valor
o getIdade(), que retorna o valor da idade
o getNome(), que retorna o nome da pessoa
o setNome(), que recebe o nome da pessoa como parâmetro e inicializa o
atributo da classe
o setDataDeNascimento(), que recebe dia, mês e ano de nascimento
como parâmetros e preenche nos atributos correspondentes do objeto.
 Fazer uma classe principal que crie dois objetos da classe Pessoa, um
representando Albert Einstein (nascido em 14/3/1879) e o outro representando
Isaac Newton (nascido em 4/1/1643). Em seguida, mostre quais seriam as
idades de Einstein e Newton caso estivessem vivos.
46) Alterar o programa do exercício anterior para substituir o método
setDataDeNascimento e o método setNome por uma construtora
47) Implementar a classe PolReg, que define um polígono regular
 Atributos: número de lados, tamanho do lado
 Métodos: cálculo do perímetro, cálculo do ângulo interno e cálculo de área.
Este último deve retornar o valor zero, dado que não é possível calcular a área
de um polígono regular genérico
 Construtora que recebe o número de lados e o tamanho do lados como
parâmetros e inicializa os valores dos atributos
Implementar uma classe principal para testar a classe PolReg.
 pedir ao usuário os dados de um polígono regular


criar o objeto, lembrando de passar os valores para a construtora
chamar os métodos e mostrar o que eles retornam
48) Implemente uma classe chamada Carro com as seguintes propriedades:









Um veículo tem um certo consumo de combustível (medidos em km/litro) e
uma certa quantidade de combustível no tanque.
O consumo é especificado no construtor e o nível de combustível inicial é 0.
Forneça um método andar( ) que simule o ato de dirigir o veículo por uma certa
distância, reduzindo o nível de combustível no tanque de gasolina.
Forneça um método getCombustivel( ), que retorna o nível atual de
combustível.
Forneça um método setCombustivel( ), para abastecer o tanque.
Escreva um pequeno programa que teste sua classe. Exemplo de uso:
Carro uno(16); // 16 quilômetros por litro de combustível.
uno.setCombustivel(20); // abastece com 20 litros de combustível.
uno.andar(150); // anda 150 quilômetros.
uno.getCombustivel() // Exibe o combustível que resta no tanque.
Fonte:http://www.bernhard.pro.br/disciplinas/java/ensino/java-L01.pdf
Relacionamentos entre classes
49) Fazer um programa com as seguintes características:





Uma classe chamada Universidade que terá como atributo um nome e terá um
método para informar o seu nome.
Relacionar a classe Pessoa para com a classe Universidade. Cada pessoa poderá
ser associada a uma Universidade.
A classe Pessoa, por sua vez, terá um método que dirá seu nome e em que
universidade trabalha.
Criar dois objetos da classe Pessoa, um representando Albert Einstein (nascido
em 14/3/1879) e o outro representando Isaac Newton (nascido em 4/1/1643)
Criar dois objetos de Universidade, associando um para Einstein e outro para
Newton.
–
–
Einstein trabalhou como professor de física em Princeton (Nova Jersey Estados Unidos da América).
Newton trabalhou como professor de matemática em Cambridge
(Inglaterra).
50) Fazer um programa para:
 Criar uma classe Departamento que permita relacionar um objeto
(Departamento) à classe Universidade por composição (Universidade “contém”
Departamento)

Adaptar a classe Pessoa para que ela possua uma referência ao departamento
que trabalha, ou seja, ela deve possuir uma associação com a classe
Departamento, permitindo que cada objeto Pessoa tenha a referência de um
objeto Departamento.
51) Fazer a classe Assunto:
 atributos: texto do assunto
 métodos: setAssunto() para definir o texto do assunto e getAssunto() para
retornar o assunto
Fazer a classe Texto:
 atributos: corpo do texto
 métodos: addTexto() para adicionar ao texto que já existe e getTexto() para
retornar o texto
Fazer uma classe EMail com as seguintes características:
 atributos: objetos das classes Assunto e Texto (por composição)
 métodos:
o setAssunto() para definir o assunto
o addTexto() para adicionar ao corpo do texto
o mostraDados() que mostra no console os dados do e-mail no
seguinte formato:
Assunto: xxxxx
Mensagem:
xxxxxxxxxxxxxxxxxxxx
Fazer uma classe principal que cria um EMail, preenche assunto e texto e depois
chama mostraDados() para mostrar os dados do e-mail
52) Adaptar a classe Pessoa, implementada em exercício anterior, para substituir os
atributos de dia, mês e ano de nascimento por um objeto da classe Calendar (ver
http://java.sun.com/javase/6/docs/api para referência). Ou seja, existe uma
relação de composição entre Pessoa e Calendar.
 Dicas:
o Calendar.getInstance() deve ser chamado para obter um objeto novo
da classe Calendar (este método é estático)
o set() permite ajustar os valores de dia, mês e ano para este objeto
o get() permite obter os valores para efetuar os cálculos de idade
53) Adaptar o enunciado 50 para:

alterar a relação entre Universidade e Departamento para uma agregação, ou
seja, uma Universidade pode inicialmente não ter Departamento porém eles
podem ser criados posteriormente.
Fazer com que uma Universidade possa ter 50 Departamentos.
Fazer com que um Departamento referencie a Universidade a qual está filiada.
Criar mais Departamentos filiando-os às Universidades.



54) Fazer um programa para:



Criar a classe Item, que pretende representar um item sendo comprado em um
supermercado.
o Atributos: nome do item, valor unitário e quantidade
o Métodos:
 construtora que recebe como parâmetro e ajusta os valores dos
atributos
 getNome()
 getValorTotal()
Criar a classe ListaDeCompras, que permite criar uma lista de compras em
um supermercado.
o Atributos: array de Item. Ou seja, existe uma relação de agregação
entre ListaDeCompras e Item.
o Métodos:
 adicionarItem(Item i)
 removerItem(Item i)
 getValorTotal()
Criar a classe Principal, com o objetivo de criar itens, uma lista de compras e
exercitar os métodos.
55) Fazer uma classe Aluno que possua as seguintes características:



dois atributos do tipo inteiro: primeira nota parcial (de 0 a 100) e Segunda
nota parcial (de 0 a 100)
um atributo String representando o nome do aluno
possua métodos para ler e escrever os atributos (ou uma construtora)
Fazer uma classe Controle que:

pergunte ao usuário o nome e as duas notas parciais de um aluno. Caso o
nome entrado seja “fim” isso significa que o usuário não quer inserir mais
nenhum aluno, do contrário deve ser instanciado um objeto da classe Aluno e
armazenados os dados digitados.
Dicas: usar um objeto da classe ArrayList de Java para armazenar as
referências para os objetos instanciados). Usar o método equals da classe
String para verificar se o valor do nome entrado é igual a “fim”.
Para
encontrar
a
documentação
http://java.sun.com/javase/6/docs/api/

destas
classes:
Calcular, ao final da inserção de todos os alunos, a média da turma, quantos
alunos foram aprovados, quantos foram para a final e quantos foram
reprovados e mostrar os códigos de todos os alunos cujas notas ficaram abaixo
da média da turma.
56) Fazer um sistema de calculadora simples, composto das seguintes classes:
CalcControle: controle da calculadora (“processador”), com os seguintes
métodos:
 public void executar() – faz a calculadora funcionar através dos seguintes
passos:
o Recebe primeiro operando do usuário através de CalcInterface e
armazena no objeto de CalcDados
o Recebe segundo operando do usuário através de CalcInterface e
armazena no objeto de CalcDados
o Recebe operação do usuário através de CalcInterface e armazena no
objeto de CalcDados. Se a operação for igual a ‘s’, finaliza o programa
(System.exit(0) ).
o Executa a operação (método opera) e mostra o resultado através de
CalcInterface.
o Armazena resultado como primeiro operando para a próxima operação
e volta para o segundo passo
 private double opera(double opn1, double opn2, char op) - executa a
operação desejada e retorna o resultado.
CalcDados: implementa a parte da calculadora que armazena os dados (operandos
e operação) para o seu funcionamento (“memória”). Possui as seguintes características:
Atributos: dois números do tipo double para armazenar os operandos e um dado
do tipo char para armazenar a operação.
Métodos:
 public void setOperando(int i, double valor) – armazena o i-ésimo operando
com o valor expresso em valor
 public double getOperando(int i) – retorna o valor do i-ésimo operando
 public void setOperacao(char op) – armazena o caracter op como sendo a
operação atual
 public char getOperacao() – retorna o valor da operação atual
CalcInterface: implementa a parte da calculadora que coleta e exibe informações
ao usuário (display e teclado da calculadora). Possui os métodos:
 public double recebeOperando(int i) – recebe o operando i da operação (i vale
1 ou 2) e retorna.
 public char recebeOperacao() – recebe um char representando uma operação
válida (+, -, * ou /) e retorna.

public void mostraResultado(double res) – mostra o resultado recebido como
parâmetro.
Criar a classe Principal, cujo único objetivo é instanciar os objetos de controle,
dados e interface e criar os vínculos (associações) entre eles. Todas as classes
citadas devem possuir, além dos atributos citados, outros atributos que representem
as referências para os outros objetos (criando as associações entre eles).
57) Crie uma classe que representa um ponto no plano cartesiano. Em seguida, crie
uma classe que representa um triângulo, reusando a classe anterior por
composição. Finalmente, escreva um programa que receba do usuário as
coordenadas dos vértices do triângulo e imprima seu perímetro.
Fonte:http://74.125.47.132/search?q=cache:uMJJLyJh1CwJ:www.disi.unitn.it/
~vitorsouza/sites/default/files/JavaSwingBDExerciciosRevisao.pdf+exerc%C3%A
Dcios+java&cd=20&hl=pt-BR&ct=clnk&client=opera
Herança e polimorfismo
58) Implementar a classe PolReg, que define um polígono regular
 Atributos: número de lados, tamanho do lado
 Métodos: cálculo do perímetro, cálculo do ângulo interno e cálculo de área.
Este último deve retornar o valor zero, dado que não é possível calcular a área
de um polígono regular genérico
 Construtora que inicializa os valores dos atributos
Fazer a classe TrianguloEqderivada de PolReg, que:
 redefine o método de cálculo de área para calcular e retornar a área do
triângulo equilátero
Fazer a classe Quadrado, também derivada de PolReg, que:
 redefine o método de cálculo de área para calcular e retornar a área do
quadrado
Fazer um programa que:





declare uma referência p para PolReg
pergunte ao usuário que tipo de objeto ele quer criar (polígono regular,
triângulo equilátero ou quadrado)
pergunte número de lados (se for polígono regular) e tamanho dos lados
instancie o objeto e armazene no atributo p.
no final do programa, use a referência p para mostrar o valor do perímetro,
ângulo interno e área calculados
59) Escrever a classe Complexo, que pretende representar um modelo para a
criação de números complexos. A classe Complexo deve possuir:
 2 atributos float: real e imag



1 construtora que recebe a parte real e a parte imaginária do número e
inicializa os atributos
1 método Modulo() que retorna o módulo do número complexo.
1 método Angulo() que retorna o ângulo do número complexo em graus.
Escrever a classe Real, derivada da classe Complexo, que pretende representar um
modelo para a criação de números reais. A classe Real deve:
 possuir uma construtora que recebe o valor do número como parâmetro e
chama a construtora da base.
 adicionar o método Sinal(), que retorna 1 se o número for positivo e -1 se for
negativo.
Escrever um programa em Java para testar estas classes (instanciar objetos, chamar
métodos, etc.)
60) Escrever a classe Pessoa com as seguintes características:
 atributos: nome e idade
 métodos: construtora para inicializar os parâmetros e mostraDados() que
exibe os dados da pessoa no console na forma:
Nome da pessoa: xxx
Idade da pessoa: yyy
Escrever a classe Aluno, derivada de Pessoa, com as seguintes características:
 atributos: nome do curso que está cursando
 métodos: construtora para inicializar os atributos e redefinição do método
mostraDados() para exibir as seguintes mensagens:
Nome do aluno: xxx
Idade do aluno: yyy
Curso do aluno: zzz
Elaborar um programa em Java que:
 declare uma referência para objeto da classe Pessoa
 pergunte ao usuário, via console, se ele deseja instanciar um aluno ou uma
pessoa
 crie o objeto correspondente, referencie com a referência já criada e chame
o método mostraDados() para exibir os dados da pessoa ou do aluno
61) Alterar o exercício sobre polígonos regulares, triângulos e quadrados para que a
classe PolReg não apresente uma definição para o método de cálculo de área; ou
seja, a classe PolReg deve ser transformada em uma classe abstrata
62) Crie uma classe para representar uma conta-corrente, com métodos para
depositar uma quantia, sacar uma quantia e obter o saldo. Para cada saque será
debitada também uma taxa de operação equivalente à 0,5% do valor sacado.
Crie, em seguida, uma classe derivadas desta classe anterior para representar
uma conta-corrente de um cliente especial. Clientes especiais pagam taxas de
operação de apenas 0,1% do valor sacado. Faça testes com as duas classes e
verifique seus resultados.
Fonte:http://74.125.47.132/search?q=cache:uMJJLyJh1CwJ:www.disi.unitn.it/
~vitorsouza/sites/default/files/JavaSwingBDExerciciosRevisao.pdf+exerc%C3
%ADcios+java&cd=20&hl=pt-BR&ct=clnk&client=opera
Estruturas de dados
63) Fazer uma classe Empregado , com atributos nome, cpf, e salario. Escrever uma
classe principal que:
 instancia um array de 5 empregados
 pede os dados, instancia os objetos e armazena no array
 classifica pelo salário utilizando bubble-sort.
 pede ao usuário um cpf a ser removido, efetua a operação e mostra o array
resultante.
64) Fazer uma classe ListNode que represente os nós de uma lista encadeada. Esta
classe deve conter o campo nome e uma referência para o próximo nó da lista
chamada prox.
Fazer então a classe ListOperation que implementa os seguintes métodos:
 add(ListNode n, ListNode ant) – adiciona o nó n após o nó ant (no início
se ant for 0).
 remove(ListNode n) – remove o nó n da lista.
 print() – percorre a lista e mostra o valor do campo nome de cada nó.
Fazer uma classe principal que exercita as operações acima implementadas.
Tentar efetuar as mesmas operações utilizando LinkedList e comparar o
desempenho.
65) Escrever um programa em Java que:
 receba uma string representando uma expressão aritmética na forma infixa. Os
operadores, operandos e símbolos de precedência devem ser separados por
espaços
 transforme a expressão infixa em uma expressão posfixa, utilizando uma pilha
de operadores.
 avalie a expressão posfixa utilizando uma pilha de operandos
Exercícios de integração
Matemática
66) Fazer um programa para:


Instanciar um Jframe com uma área de desenho, uma combo box, cinco caixas de
texto e um botão “desenhar”.
Implementar a classe Funcoes, a qual contém diversos métodos que implementam
funções polinomiais (f1, f2 e f3). Exemplos para estas funções:
double f1(double x) - retorna o valor de x^2
double f2(double x) - retorna o valor de x^3+ 3x^2
A classe Funcoes deve também implementar a função polinomio, que recebe os
coeficientes dos diversos graus do polinômio (c1, c2, etc.) e retorna o resultado da
função:
double polinomio(float c0, float c1, float c2, float c3, float c4, float x) – retorna o
valor de c0 + c1*x + c2*x^2 + c3*x^3 + c4*x^4



O combo box do frame deve conter as opções para se selecionar f1, f2, f3 e
polinomio. Caso se selecione polinomio, as caixas de texto devem ser
habilitadas para receber os valores de c0 a c4.
Ao clicar-se no botão “desenhar”, o programa simula valores de x de -100 a
100 e plota o gráfico correspondente a partir do retorno da função selecionada.
(Opcional) incluir caixas de texto extra para inserir o valor inicial, o valor
final de x e o incremento entre valores. Calcular a escala do gráfico
automaticamente.
67) Fazer um programa para efetuar operações comuns de vetor. O programa possui
as seguintes características:
 item de menu “adicionar vetor”, no qual o usuário insere um nome para o
vetor e dimensões x e y (vetores bidimensionais). Os vetores adicionados
devem ser exibidos numa área de desenho.
 item de menu “operações”, no qual devem constar “produto vetorial”,
“produto escalar” e “projeção” como sub-itens. Ao ativar uma operação o
usuário deve fornecer os nomes dos vetores envolvidos. Para as operações de
produto vetorial e projeção o programa deve desenhar o vetor resultado, para
o produto escalar ele deve mostrar o resultado como uma string na área de
desenho.
68) Fazer um programa para resolver sistemas lineares de equações. O programa
possui as seguintes características:
 o usuário deve editar um arquivo contendo os coeficientes das equações,
separados por espaço, e contendo uma equação por linha. Por exemplo, para o
sistema:
2x + 3y + z = 5
x – 2y + 8z = 9
4x + y + 3z = -2
O arquivo deveria possuir o seguinte conteúdo:

2315
1 -2 8 9
4 1 3 -2
o programa deve abrir o arquivo, obter os coeficientes e utilizar as técnicas de
álgebra (cálculo de determinante, etc.) para solucionar os valores das
incógnitas. Deve ser possível solucionar sistemas de até 10 incógnitas.
Cálculo
69) Fazer um programa em Java para calcular, simulando valores de x, o limite de
uma determinada função f(x). Os valores de x devem se aproximar
progressivamente do valor de tendência, à direita e à esquerda, de tal forma que
se possa determinar o valor do limite através da análise da variação dos valores.
Física
70) Fazer um programa para mostrar a variação da posição de um corpo qualquer
em queda livre na atmosfera, considerando a resistência do ar. Esta variação
deve ser calculada de 2 formas:

a partir do resultado da integração da fórmula que determina a velocidade em
função do tempo
g
t
vt
vt
y  vt  (t   (1  e ))
g
m g n
vt  (
)
b
b
a  g  ( )  vn
m
1

a partir do método de Euler, ou seja, do cálculo da aceleração, depois
velocidade e deslocamento em vários instantes de tempo consecutivos,
utilizando um valor delta de incremento de tempo que pode ser variado para
se aproximar de zero.
b
n
a0  g  ( )  v0
m
v1  v0  a 0  t
a0  t 2
y1  y 0  v0  t 
2
Sugestões: m = 70 kg, b = 0,251 kg/m, n = 1 e tfinal = 10 s.
71) Fazer um programa para simular a atração gravitacional entre dois corpos:
 programa instancia um frame, o qual possui uma área de desenho na qual é
desenhada uma porção bidimensional do espaço com dimensões em escala
planetária (por exemplo, 100e6 km de largura por 100e6 km de altura)
 dois corpos são posicionados aleatoriamente (ou por entrada do usuário) no
espaço bidimensional. Os corpos possuem massas em escala planetária (por
exemplo, 6e27 kg), também definida pelo usuário
 os corpos possuem velocidades nos eixos x e y, também em escala planetária
(por exemplo, 30 km/s) e também definida pelo usuário
 ao iniciar-se o funcionamento do programa, os corpos devem ter sua interação
gravitacional calculada (terceira lei de Newton), o que permite calcular a
aceleração, variação da velocidade e variação da posição para um intervalo de
tempo (também definível pelo usuário). Os corpos devem então ser
redesenhados e o processo deve ser repetido, simulando a trajetória dos corpos
sujeita à atração gravitacional.
72) Um passageiro corre à sua velocidade máxima de 8 m/s para pegar um trem.
Quando está à distância d da porta de entrada, o trem principia a rodar com
aceleração constante a = 1 m/(s*s), afastando-se.
 Se d = 30 m e se o passageiro continua a correr, conseguirá ou não pegar o
trem? Responda a essa pergunta elaborando um programa em Java que
simula os deslocamentos do passageiro e do trem, com intervalos de
tempo variando entre 1 s e 0,1 s. Avalie os resultados obtidos frente ao
resultado analítico (obtido através da resolução da equação).
 A distância crítica de separação inicial é chamada de dc. Adaptar o
programa anterior para variar a distância inicial d e obter a distância crítica
por comparação. Com a distância crítica de separação dc, qual a
velocidade do trem quando o passageiro consegue pegá-lo? Qual é a
velocidade média do trem no intervalo de tempo t = 0 até este instante?
Qual é o valor de dc?
 Fazer um programa em Java para desenhar a função posição x(t) do trem,
com x = 0 em t = 0. No mesmo gráfico, desenhar a função x(t) do
passageiro, com diversas distâncias de separação inicial d, incluindo a
distância d = 30 m e a distância crítica de separação dc que lhe permite
pegar o trem por um átimo.
73) Um corpo se move sobre uma reta e duplica sua velocidade, a cada segundo,
durante os primeiros 10s. Seja 2 m/s a velocidade inicial. Qual é a velocidade
média nos primeiros 10s? Responda a essa pergunta elaborando um programa
em Java que simula a variação da velocidade e o deslocamento do corpo, com
intervalos de tempo variando entre 1 s e 0,1 s. Avalie os resultados obtidos
frente ao resultado analítico (obtido através da integração).
area = tamlado*tamlado*numlados/(4*tan(pi/numlados))
Download