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))