You are on page 1of 20

Exerccios de Java e OO

Lgica estruturada
Decises
1) Fazer um programa em Java para:
receber 3 valores n1, n2 e n3 do usurio
verificar se estes valores podem ser os lados de um tringulo. Em caso
afirmativo, informar se o tringulo equiltero, issceles ou escaleno.
2) Fazer um programa que recebe 3 valores no inteiros do usurio e mostra o
maior deles, o menor deles e a mdia.
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 usurio para digitar um nmero, e mostre-o por extenso. Este
nmero dever variar entre 1 e 10. Se o usurio introduzir um nmero que no
est neste intervalo, mostre: "nmero invlido". Faa duas verses 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

Repeties
5) Fazer uma classe Ex1Primos para:
Receber um inteiro N do usurio
Testar se este inteiro primo ou no e informar
6) Fazer um programa para mostrar os 100 primeiros termos da srie de Fibonacci.
7) Fazer um programa para mostrar todos os nmeros perfeitos entre 1 e 100.
8) Fazer uma classe Ex2Sorteio para:
Sortear um nmero de 0 a 1000 (dica: usar Math.random())

Pedir um palpite ao usurio. Se ele errar, informar se o palpite maior ou


menor do que o nmero sorteado.
Pedir novos palpites at que o usurio acerte e, depois disso, mostrar em
quantas tentativas ele acertou.

9) Fazer um programa para receber dois nmeros do tipo int do usurio e


determinar se um nmero permutao do outro ou no. Ex: 431 permutao
de 143, 42 permutao de 204, 1211 permutao de 1112, etc. O programa
s deve aceitar nmeros positivos.
10) Fazer um programa para medir os reflexos do usurio. O programa deve:
Mostrar a palavra Agora! aps um tempo aleatrio e um nmero,
tambm aleatrio
Contar o tempo at que o usurio digite o nmero pedido e mostrar esse
tempo.
Dicas: usar o mtodo getTimeInMillis da classe Calendar ou o mtodo
nanoTime da classe System.
11) Dada a afirmao: A tem o dobro da idade que B tinha quando A tinha a idade
que B tem. Quando B tiver a idade de A, somaro 81 anos.. Fazer um programa
para calcular as idades de A e B no mtodo fora bruta.
12) Chico tem 1,50 metro e cresce 2 centmetros por ano, enquanto Z tem 1,10
metro e cresce 3 centmetros por ano. Construa um algoritmo que calcule e
imprima quantos anos sero necessrios para que Z seja maior que Chico.
13) Faa uma classe que recebe do usurio a hora de inicio e a hora de trmino de
um jogo, ambas subdivididas em 2 valores distintos: horas e minutos. A classe
deve exibir a durao do jogo em minutos, considerando que o tempo mximo
de durao de um jogo de 24 horas e que o jogo pode comear em um dia e
terminar no outro.
14) Torre de Hani: considerando 3 torres, o objetivo transferir 3 discos que esto
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
mtodo recursivo que mostra a seqncia de movimentos para resolver o
problema da Torre de Hani.

String
15) Fazer uma classe ExecString que:
Recebe duas strings do usurio (dica: usar nextLine da classe Scanner)

Conta e informa quantas vezes a segunda string ocorre dentro da primeira


Informa uma estatstica dos caracteres contidos nas 2 strings.

16) Faa um programa que receba um nome completo na forma de uma String e
mostre a abreviatura deste nome. No 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 usurio e mostre o contedo desta
string de forma invertida.
18) Fazer um programa para:
receber uma string do usurio
contar e mostrar quantas palavras existem na string
contar e mostrar quantas vogais existem na string
19) Um dos sistemas de encriptao mais antigos atribudo a Jlio Csar: se uma
letra a ser encriptada a letra de nmero N do alfabeto, substitua-a com a letra
(N+K), onde K um nmero inteiro constante (Csar utilizava K = 3).
Usualmente consideramos o espao como zero e todos os clculos so
realizados com mdulo-27. Dessa forma, para K = 1 a mensagem Ataque ao
amanhecer se torna bubrfabpabnboifdfs. Faa um programa que receba como
entrada uma mensagem e um valor de J e retorne a mensagem criptografada
pelo cdigo de Csar. Fraquezas: apenas 26 chaves possveis. possvel utilizar
conhecimento da linguagem para facilitar a busca.

Array
20) Pode-se calcular a rea de um polgono a partir das coordenadas de seus vrtices
utilizando a seguinte frmula:
Area = soma (X(n)*Y(n+1) X(n)*Y(n-1)) / 2
sendo que:
p/ n = 1, n-1 = N (nmero de vrtices)
p/ n = N, n+1 = 1
Escrever um programa em Java que:

receba o nmero de vrtices N do usurio


receba N pares de coordenadas (X,Y) dos vertces do polgono em arrays
adequados
calcule e mostre a rea segundo a frmula acima

21) Foi feita uma estatstica nas 200 principais cidades brasileiras para coletar dados
sobre acidentes de trnsito. Foram obtidos os seguintes dados:
cdigo da cidade
estado (RS, SC, PR, SP, RJ, ...)
nmero de veculos de passeio (em 2007)
nmero de acidentes de trnsito com vtimas (em 2007)
Escrever um programa em Java para obter os dados e mostrar:

qual o maior e o menor ndice percentual de acidentes de trnsito e a que


cidades pertencem
qual a mdia de veculos nas cidades brasileiras
qual a mdia de acidentes com vtimas entre as cidades do Rio Grande do
Sul.
22) Fazer uma classe Ex3Array com as seguintes caractersticas:

Atributos: array de inteiros e duas variveis para controlar o nmero


atual e mximo de elementos inseridos no array
Mtodos:
o Construtor que recebe o tamanho do array como parmetro 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 contrrio
o public int calculaMedia() retorna a mdia aritmtica dos
nmeros armazenados no array

Fazer a classe Ex3ArrayControle que:


Pergunta, via console, qual o tamanho N do array que o usurio quer
instanciar
Instancia um objeto da classe Ex1Array, passando N como argumento
Pergunta N nmeros ao usurio e armazena no objeto instanciado
Chama o mtodo para calcular a mdia aritmtica e mostra o resultado
23) Adaptar o exerccio anterior para utilizar um objeto da classe ArrayList ao invs
de um array comum.
24) Fazer um programa para receber um nmero do usurio e decomp-lo em
fatores primos. Os fatores primos devem ser armazenados em um array com o
tamanho exato (dica: primeiro determinar quantos so os fatores primos, depois
criar o array para armazen-los).

25) A distncia entre vrias 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 no deve
perguntar distncias j informadas (por exemplo, se o usurio j forneceu
a distncia entre 1 e 3 no necessrio informar a distncia entre 3 e 1,
que a mesma) e tambm no deve perguntar a distncia de uma cidade
para ela mesma, que 0.
leia um percurso fornecido pelo usurio em um array unidimensional.
Calcule e mostre a distncia 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 nmero N do usurio


receber N nmeros inteiros em um array unidimensional
classificar em ordem crescente utilizando o mtodo 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


varivel separada (-1 se o aluno no fez exame).
chamar o mtodo calculaSituacao(), com as seguintes caractersticas:
i. Parmetros: 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 usurio. O programa deve pedir o valor N da dimenso
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 nmeros ao usurio e armazenar esses valores em um array

pedir um outro nmero ao usurio e calcular e mostrar quantos nmeros do


array so inferiores a esse nmero.
Fonte:http://eden.dei.uc.pt/~inf/Fichas/Exercicios_Java_2.pdf

Excees
30) Dado o trecho de cdigo 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 exceo produzida por acesso a posio fora dos limites do array. Trate esta
exceo, imprimindo na tela uma mensagem dizendo que o array acabou.
Fonte:http://74.125.47.132/search?
q=cache:uMJJLyJh1CwJ:www.disi.unitn.it/~vitorsouza/sites/default/files/JavaSwin
gBDExerciciosRevisao.pdf+exerc%C3%ADcios+java&cd=20&hl=ptBR&ct=clnk&client=opera
31) Adaptar o exerccio 8 para:
lanar a exceo MenorQueException caso o nmero arriscado seja menor
do que o sorteado
lanar a exceo MaiorQueException caso o nmero arriscado seja maior
do que o sorteado
capturar essas excees e trat-las, mantendo a lgica original.

Fluxos e arquivos
32) Fazer um programa em Java que:
Receba o nome, o cdigo e as duas notas bimestrais de 3 alunos para uma
determinada matria.
Salve estes dados em um arquivo. Os dados devem ser salvos registro a
registro, obedecendo o seguinte formato:
i. nmero inteiro contendo o tamanho em char do nome do aluno.
ii. sequncia de chars correspondente string que contm o nome do
aluno.
iii. cdigo na forma de nmero inteiro
iv. duas notas na forma de nmeros 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 mdia da turma.

Dica: utilizar FileOutputStream encapsulado por um DataOutputStream.


Utilizar mtodos 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 (pontuao)
b. pedir ao usurio o seu nome e a sua pontuao no jogo.
c. posicionar os dados do usurio na tabela de highest scores (max. 5) e
regravar no arquivo usando um fluxo de sada.
34) Crie um programa que liste o contedo da raiz do seu disco e informe, para cada
item, se um arquivo ou se um diretrio (Dica: utilizar os mtodos da classe
File).
Fonte:http://74.125.47.132/search?
q=cache:uMJJLyJh1CwJ:www.disi.unitn.it/~vitorsouza/sites/default/files/JavaSw
ingBDExerciciosRevisao.pdf+exerc%C3%ADcios+java&cd=20&hl=ptBR&ct=clnk&client=opera
35) Uma loja possui 4 filiais, cada uma com um cdigo 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 contm o nmero da filial e o
valor de uma venda efetuada, separados por vrgula. 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 tambm uma de
R$ 55,00. Faa um programa que leia este arquivo e informe, ao final, o total e o
valor mdio das vendas de cada filial.
Fonte:http://74.125.47.132/search?
q=cache:uMJJLyJh1CwJ:www.disi.unitn.it/~vitorsouza/sites/default/files/JavaSw
ingBDExerciciosRevisao.pdf+exerc%C3%ADcios+java&cd=20&hl=ptBR&ct=clnk&client=opera

Api Grfica Java


36) Fazer um programa para:
Criar um frame com um boto, cujo texto deve ser Clique-me
quando o usurio tentar clicar sobre o boto este deve fugir do mouse

37) Fazer um programa para medir os reflexos do usurio:

Programa deve instanciar um JFrame com uma rea de desenho


programa deve, depois de um tempo aleatrio, exibir um alvo (por
exemplo, um crculo) em uma posio aleatria da rea de desenho
usurio deve clicar com o ponteiro do mouse sobre o alvo.
Caso o usurio acerte, o programa deve mostrar o tempo decorrido entre a
exibio do alvo e o clique do usurio
Caso o usurio erre, o programa mostra uma mensagem de erro

38) Implementar um conversor binrio- decimal com as seguintes caractersticas:


Interface: duas caixas de texto para receber valores numricos na base binria
e na base decimal e botes para a converso em ambos os sentidos
Funcionalidade: clicando-se um boto deve-se fazer o clculo no sentido
correspondente. Considerar que o usurio SEMPRE insere nmeros vlidos e
que caixa vazia significa 0.
39) Implementar o jogo da memria
Jogo apresenta um frame com 5 botes, contendo nmeros ou figuras
Ao ser iniciado, o jogo sorteia um dos botes e o indica (por exemplo,
exibindo em outro lugar do frame o nmero ou figura sorteada). O jogador
deve ento clicar no boto correspondente.
O jogo prossegue, exibindo uma sequncia de sorteios que vai aumentando
progressivamente. O jogador, por sua vez, ao final da exibio deve repetir
aquela sequncia clicando nos botes.
O jogo termina quando o usurio erra a sequncia.
40)

Implementar o layout de uma calculadora


Caixa de texto com o nmero no alto do frame
Nmeros de 0 a 9 e sinais de . e = em grid de 4x3 no centro do frame
Botes de + e direita do frame
Botes de * e / na parte de baixo do frame

41) Fazer uma aplicao de relgio com as seguintes caractersticas:


Interface: um frame com quatro textos estticos (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 informaes de data e hora.

42) Fazer uma aplicao Java com as seguintes caractersticas:


barra de menu com o menu Desenhar e os itens de menu Crculo e
Quadrado.
Ao clicar-se em um item de menu, o aplicativo deve desenhar a figura
correspondente no painel de contedo do frame.
43) Implementar um cronmetro com botes de iniciar e parar e um texto esttico
mostrando o tempo percorrido. O cronmetro tem resoluo de 10 ms.
44) Implementar programa em Java que corrija os erros de uso de letras maisculas
e minsculas. O programa deve conter um frame com dois campos de texto e
um boto entre eles. O usurio deve inserir um texto no primeiro campo de
texto. Quando clicar no boto, o outro campo deve ser preenchido com o mesmo
texto digitado pelo usurio, porm corrigido (exemplo: se o usurio colocar no
primeiro campo de texto "brasil o Pas do futebol. todos os adversrios o
Temem", o outro campo de texto deve ser preenchido com "Brasil o pas do
futebol. Todos os adversrios o temem").

Orientao a Objetos
Bsico
45) Criar a classe Pessoa com as seguintes caractersticas:
atributos: idade e dia, ms e ano de nascimento, nome da pessoa
mtodos:
o calculaIdade(), que recebe a data atual em dias, ms 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 parmetro e inicializa o
atributo da classe
o setDataDeNascimento(), que recebe dia, ms e ano de nascimento
como parmetros 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 exerccio anterior para substituir o mtodo
setDataDeNascimento e o mtodo setNome por uma construtora
47) Implementar a classe PolReg, que define um polgono regular

Atributos: nmero de lados, tamanho do lado


Mtodos: clculo do permetro, clculo do ngulo interno e clculo de rea.
Este ltimo deve retornar o valor zero, dado que no possvel calcular a rea
de um polgono regular genrico
Construtora que recebe o nmero de lados e o tamanho do lados como
parmetros e inicializa os valores dos atributos
Implementar uma classe principal para testar a classe PolReg.
pedir ao usurio os dados de um polgono regular
criar o objeto, lembrando de passar os valores para a construtora
chamar os mtodos e mostrar o que eles retornam
48) Implemente uma classe chamada Carro com as seguintes propriedades:

Um veculo tem um certo consumo de combustvel (medidos em km/litro) e


uma certa quantidade de combustvel no tanque.
O consumo especificado no construtor e o nvel de combustvel inicial 0.
Fornea um mtodo andar( ) que simule o ato de dirigir o veculo por uma certa
distncia, reduzindo o nvel de combustvel no tanque de gasolina.
Fornea um mtodo getCombustivel( ), que retorna o nvel atual de
combustvel.
Fornea um mtodo setCombustivel( ), para abastecer o tanque.
Escreva um pequeno programa que teste sua classe. Exemplo de uso:

Carro uno(16); // 16 quilmetros por litro de combustvel.


uno.setCombustivel(20); // abastece com 20 litros de combustvel.
uno.andar(150); // anda 150 quilmetros.
uno.getCombustivel() // Exibe o combustvel 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 caractersticas:

Uma classe chamada Universidade que ter como atributo um nome e ter um
mtodo 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 mtodo 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 fsica em Princeton (Nova Jersey Estados Unidos da Amrica).
Newton trabalhou como professor de matemtica em Cambridge
(Inglaterra).

50) Fazer um programa para:


Criar uma classe Departamento que permita relacionar um objeto
(Departamento) classe Universidade por composio (Universidade contm
Departamento)
Adaptar a classe Pessoa para que ela possua uma referncia ao departamento
que trabalha, ou seja, ela deve possuir uma associao com a classe
Departamento, permitindo que cada objeto Pessoa tenha a referncia de um
objeto Departamento.
51) Fazer a classe Assunto:
atributos: texto do assunto
mtodos: setAssunto() para definir o texto do assunto e getAssunto() para
retornar o assunto
Fazer a classe Texto:
atributos: corpo do texto
mtodos: addTexto() para adicionar ao texto que j existe e getTexto() para
retornar o texto
Fazer uma classe EMail com as seguintes caractersticas:
atributos: objetos das classes Assunto e Texto (por composio)
mtodos:
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 exerccio anterior, para substituir os


atributos de dia, ms e ano de nascimento por um objeto da classe Calendar (ver

http://java.sun.com/javase/6/docs/api para referncia). Ou seja, existe uma


relao de composio entre Pessoa e Calendar.
Dicas:
o Calendar.getInstance() deve ser chamado para obter um objeto novo
da classe Calendar (este mtodo esttico)
o set() permite ajustar os valores de dia, ms e ano para este objeto
o get() permite obter os valores para efetuar os clculos de idade

53) Adaptar o enunciado 50 para:


alterar a relao entre Universidade e Departamento para uma agregao, ou
seja, uma Universidade pode inicialmente no ter Departamento porm 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 unitrio e quantidade
o Mtodos:
construtora que recebe como parmetro 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 relao de agregao
entre ListaDeCompras e Item.
o Mtodos:
adicionarItem(Item i)
removerItem(Item i)
getValorTotal()
Criar a classe Principal, com o objetivo de criar itens, uma lista de compras e
exercitar os mtodos.

55) Fazer uma classe Aluno que possua as seguintes caractersticas:

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 mtodos para ler e escrever os atributos (ou uma construtora)

Fazer uma classe Controle que:

pergunte ao usurio o nome e as duas notas parciais de um aluno. Caso o


nome entrado seja fim isso significa que o usurio no quer inserir mais
nenhum aluno, do contrrio 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
referncias para os objetos instanciados). Usar o mtodo equals da classe
String para verificar se o valor do nome entrado igual a fim.
Para
encontrar
a
documentao
destas
classes:
http://java.sun.com/javase/6/docs/api/

Calcular, ao final da insero de todos os alunos, a mdia da turma, quantos


alunos foram aprovados, quantos foram para a final e quantos foram
reprovados e mostrar os cdigos de todos os alunos cujas notas ficaram abaixo
da mdia da turma.

56) Fazer um sistema de calculadora simples, composto das seguintes classes:


CalcControle: controle da calculadora (processador), com os seguintes
mtodos:
public void executar() faz a calculadora funcionar atravs dos seguintes
passos:
o Recebe primeiro operando do usurio atravs de CalcInterface e
armazena no objeto de CalcDados
o Recebe segundo operando do usurio atravs de CalcInterface e
armazena no objeto de CalcDados
o Recebe operao do usurio atravs de CalcInterface e armazena no
objeto de CalcDados. Se a operao for igual a s, finaliza o programa
(System.exit(0) ).
o Executa a operao (mtodo opera) e mostra o resultado atravs de
CalcInterface.
o Armazena resultado como primeiro operando para a prxima operao
e volta para o segundo passo
private double opera(double opn1, double opn2, char op) - executa a
operao desejada e retorna o resultado.
CalcDados: implementa a parte da calculadora que armazena os dados (operandos
e operao) para o seu funcionamento (memria). Possui as seguintes caractersticas:
Atributos: dois nmeros do tipo double para armazenar os operandos e um dado
do tipo char para armazenar a operao.
Mtodos:

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
operao atual
public char getOperacao() retorna o valor da operao atual

CalcInterface: implementa a parte da calculadora que coleta e exibe informaes


ao usurio (display e teclado da calculadora). Possui os mtodos:
public double recebeOperando(int i) recebe o operando i da operao (i vale
1 ou 2) e retorna.
public char recebeOperacao() recebe um char representando uma operao
vlida (+, -, * ou /) e retorna.
public void mostraResultado(double res) mostra o resultado recebido como
parmetro.
Criar a classe Principal, cujo nico objetivo instanciar os objetos de controle,
dados e interface e criar os vnculos (associaes) entre eles. Todas as classes
citadas devem possuir, alm dos atributos citados, outros atributos que representem
as referncias para os outros objetos (criando as associaes entre eles).
57) Crie uma classe que representa um ponto no plano cartesiano. Em seguida, crie
uma classe que representa um tringulo, reusando a classe anterior por
composio. Finalmente, escreva um programa que receba do usurio as
coordenadas dos vrtices do tringulo e imprima seu permetro.
Fonte:http://74.125.47.132/search?
q=cache:uMJJLyJh1CwJ:www.disi.unitn.it/~vitorsouza/sites/default/files/JavaSw
ingBDExerciciosRevisao.pdf+exerc%C3%ADcios+java&cd=20&hl=ptBR&ct=clnk&client=opera

Herana e polimorfismo
58) Implementar a classe PolReg, que define um polgono regular
Atributos: nmero de lados, tamanho do lado
Mtodos: clculo do permetro, clculo do ngulo interno e clculo de rea.
Este ltimo deve retornar o valor zero, dado que no possvel calcular a rea
de um polgono regular genrico
Construtora que inicializa os valores dos atributos
Fazer a classe TrianguloEqderivada de PolReg, que:
redefine o mtodo de clculo de rea para calcular e retornar a rea do
tringulo equiltero
Fazer a classe Quadrado, tambm derivada de PolReg, que:
redefine o mtodo de clculo de rea para calcular e retornar a rea do
quadrado

Fazer um programa que:

declare uma referncia p para PolReg


pergunte ao usurio que tipo de objeto ele quer criar (polgono regular,
tringulo equiltero ou quadrado)
pergunte nmero de lados (se for polgono regular) e tamanho dos lados
instancie o objeto e armazene no atributo p.
no final do programa, use a referncia p para mostrar o valor do permetro,
ngulo interno e rea calculados

59) Escrever a classe Complexo, que pretende representar um modelo para a


criao de nmeros complexos. A classe Complexo deve possuir:
2 atributos float: real e imag
1 construtora que recebe a parte real e a parte imaginria do nmero e
inicializa os atributos
1 mtodo Modulo() que retorna o mdulo do nmero complexo.
1 mtodo Angulo() que retorna o ngulo do nmero complexo em graus.
Escrever a classe Real, derivada da classe Complexo, que pretende representar um
modelo para a criao de nmeros reais. A classe Real deve:
possuir uma construtora que recebe o valor do nmero como parmetro e
chama a construtora da base.
adicionar o mtodo Sinal(), que retorna 1 se o nmero for positivo e -1 se for
negativo.
Escrever um programa em Java para testar estas classes (instanciar objetos, chamar
mtodos, etc.)
60) Escrever a classe Pessoa com as seguintes caractersticas:
atributos: nome e idade
mtodos: construtora para inicializar os parmetros 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 caractersticas:
atributos: nome do curso que est cursando
mtodos: construtora para inicializar os atributos e redefinio do mtodo
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 referncia para objeto da classe Pessoa


pergunte ao usurio, via console, se ele deseja instanciar um aluno ou uma
pessoa
crie o objeto correspondente, referencie com a referncia j criada e chame
o mtodo mostraDados() para exibir os dados da pessoa ou do aluno

61) Alterar o exerccio sobre polgonos regulares, tringulos e quadrados para que a
classe PolReg no apresente uma definio para o mtodo de clculo de rea; ou
seja, a classe PolReg deve ser transformada em uma classe abstrata
62) Crie uma classe para representar uma conta-corrente, com mtodos para
depositar uma quantia, sacar uma quantia e obter o saldo. Para cada saque ser
debitada tambm uma taxa de operao 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
operao de apenas 0,1% do valor sacado. Faa 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/JavaS
wingBDExerciciosRevisao.pdf+exerc%C3%ADcios+java&cd=20&hl=ptBR&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 salrio utilizando bubble-sort.
pede ao usurio um cpf a ser removido, efetua a operao e mostra o array
resultante.
64) Fazer uma classe ListNode que represente os ns de uma lista encadeada. Esta
classe deve conter o campo nome e uma referncia para o prximo n da lista
chamada prox.
Fazer ento a classe ListOperation que implementa os seguintes mtodos:
add(ListNode n, ListNode ant) adiciona o n n aps o n ant (no incio
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 operaes acima implementadas.
Tentar efetuar as mesmas operaes utilizando LinkedList e comparar o
desempenho.

65) Escrever um programa em Java que:


receba uma string representando uma expresso aritmtica na forma infixa. Os
operadores, operandos e smbolos de precedncia devem ser separados por
espaos
transforme a expresso infixa em uma expresso posfixa, utilizando uma pilha
de operadores.
avalie a expresso posfixa utilizando uma pilha de operandos

Exerccios de integrao
Matemtica
66) Fazer um programa para:
Instanciar um Jframe com uma rea de desenho, uma combo box, cinco caixas de
texto e um boto desenhar.
Implementar a classe Funcoes, a qual contm diversos mtodos que implementam
funes polinomiais (f1, f2 e f3). Exemplos para estas funes:
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 tambm implementar a funo polinomio, que recebe os
coeficientes dos diversos graus do polinmio (c1, c2, etc.) e retorna o resultado da
funo:
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 opes 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 boto desenhar, o programa simula valores de x de -100 a
100 e plota o grfico correspondente a partir do retorno da funo 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 grfico
automaticamente.

67) Fazer um programa para efetuar operaes comuns de vetor. O programa possui
as seguintes caractersticas:
item de menu adicionar vetor, no qual o usurio insere um nome para o
vetor e dimenses x e y (vetores bidimensionais). Os vetores adicionados
devem ser exibidos numa rea de desenho.

item de menu operaes, no qual devem constar produto vetorial,


produto escalar e projeo como sub-itens. Ao ativar uma operao o
usurio deve fornecer os nomes dos vetores envolvidos. Para as operaes de
produto vetorial e projeo 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 equaes. O programa
possui as seguintes caractersticas:
o usurio deve editar um arquivo contendo os coeficientes das equaes,
separados por espao, e contendo uma equao 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 contedo:

2315
1 -2 8 9
4 1 3 -2
o programa deve abrir o arquivo, obter os coeficientes e utilizar as tcnicas de
lgebra (clculo de determinante, etc.) para solucionar os valores das
incgnitas. Deve ser possvel solucionar sistemas de at 10 incgnitas.

Clculo
69) Fazer um programa em Java para calcular, simulando valores de x, o limite de
uma determinada funo f(x). Os valores de x devem se aproximar
progressivamente do valor de tendncia, direita e esquerda, de tal forma que
se possa determinar o valor do limite atravs da anlise da variao dos valores.

Fsica
70) Fazer um programa para mostrar a variao da posio de um corpo qualquer
em queda livre na atmosfera, considerando a resistncia do ar. Esta variao
deve ser calculada de 2 formas:

a partir do resultado da integrao da frmula que determina a velocidade em


funo do tempo

t
v
y vt (t t (1 e vt ))
g
1

m g n
vt (
)
b
b
a g ( ) vn
m

a partir do mtodo de Euler, ou seja, do clculo da acelerao, depois


velocidade e deslocamento em vrios instantes de tempo consecutivos,
utilizando um valor delta de incremento de tempo que pode ser variado para
se aproximar de zero.
b
n
a 0 g ( ) v0
m
v1 v0 a0 t
y1 y 0 v0 t

a0 t 2
2

Sugestes: m = 70 kg, b = 0,251 kg/m, n = 1 e tfinal = 10 s.


71) Fazer um programa para simular a atrao gravitacional entre dois corpos:
programa instancia um frame, o qual possui uma rea de desenho na qual
desenhada uma poro bidimensional do espao com dimenses em escala
planetria (por exemplo, 100e6 km de largura por 100e6 km de altura)
dois corpos so posicionados aleatoriamente (ou por entrada do usurio) no
espao bidimensional. Os corpos possuem massas em escala planetria (por
exemplo, 6e27 kg), tambm definida pelo usurio
os corpos possuem velocidades nos eixos x e y, tambm em escala planetria
(por exemplo, 30 km/s) e tambm definida pelo usurio
ao iniciar-se o funcionamento do programa, os corpos devem ter sua interao
gravitacional calculada (terceira lei de Newton), o que permite calcular a
acelerao, variao da velocidade e variao da posio para um intervalo de
tempo (tambm definvel pelo usurio). Os corpos devem ento ser
redesenhados e o processo deve ser repetido, simulando a trajetria dos corpos
sujeita atrao gravitacional.
72) Um passageiro corre sua velocidade mxima de 8 m/s para pegar um trem.
Quando est distncia d da porta de entrada, o trem principia a rodar com
acelerao constante a = 1 m/(s*s), afastando-se.
Se d = 30 m e se o passageiro continua a correr, conseguir ou no 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 analtico (obtido atravs da resoluo da equao).

A distncia crtica de separao inicial chamada de dc. Adaptar o


programa anterior para variar a distncia inicial d e obter a distncia crtica
por comparao. Com a distncia crtica de separao dc, qual a
velocidade do trem quando o passageiro consegue peg-lo? Qual a
velocidade mdia do trem no intervalo de tempo t = 0 at este instante?
Qual o valor de dc?
Fazer um programa em Java para desenhar a funo posio x(t) do trem,
com x = 0 em t = 0. No mesmo grfico, desenhar a funo x(t) do
passageiro, com diversas distncias de separao inicial d, incluindo a
distncia d = 30 m e a distncia crtica de separao 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
mdia nos primeiros 10s? Responda a essa pergunta elaborando um programa
em Java que simula a variao 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 analtico (obtido atravs da integrao).

area = tamlado*tamlado*numlados/(4*tan(pi/numlados))