ÁREA1 Curso : Engenharia de Computação Disciplina : Programação Orientada a Objetos Prof. : Fernando Cardeal Lista de Exercícios de Programação Bloco I – problemas simples que não utilizam vetores 1) Desenvolva um programa em JAVA para ler uma série de 10 números e informar se cada um deles é par ou é ímpar. 2) Chico mede 1,30 metro de altura e cresce 2 centímetros por ano, enquanto Zé mede 1,10 metro de altura e cresce 3 centímetros por ano. Construa uma classe em Java que calcule e exiba na tela quantos anos serão necessários para que Zé seja mais alto do que Chico. A classe também deve exibir as alturas finais de Chico e de Zé quando ocorrer a ultrapassagem. 3) Desenvolva uma classe em Java que gere o números de 1000 a 1999 e Desenvolva aqueles que divididos por 11 dão resto igual a 5. Também deve exibir quantos números atenderam ao critério acima. 4) Desenvolva uma classe em Java que leia 5 números inteiros e calcule a porcentagem de cada número em relação ao total (quantos por cento cada número representa em relação ao total). Exibir os números lidos, o total e a porcentagem de cada número. Exemplo: supondo que fossem lidos os valores 22, 5, 20, 30 e 33, espera-se a seguinte saída (que pode ser feita usando tabulações). Número % 22 20% 5 5% 20 18% 30 27% 33 30% Total: 110 5) Desenvolva uma classe em Java que gere e exiba os 20 primeiros termos da seqüência de Fibonacci (1, 1, 2, 3, 5, 8, ..., ou seja a partir dos dois primeiros termos, cada termo é a soma dos dois anteriores). 6) Desenvolva uma classe em Java que calcule a média aritmética simples de vários valores inteiros positivos, lidos externamente. O final da leitura acontecerá quando for lido um valor negativo (que não deve ser considerado para o cálculo). 7) Desenvolva uma classe em Java que leia uma quantidade desconhecida de números inteiros, conte e informe quantos deles estão nos seguintes intervalos: [0,25], [26,50], [51,75] e [76,100]. A entrada de dados deve terminar quando for lido um número negativo. 8) Desenvolva uma classe em Java que leia um conjunto de 20 informações contendo, cada uma delas, a altura e o sexo de uma pessoa (‘M’ ou ‘m’ ou ‘F’ ou ‘f’), calcule e mostre o seguinte: a) a maior e a menor altura da turma; Prof. Fernando Cardeal 1 1 ÁREA1 b) a média da altura das mulheres; c) a média da altura da turma. 9) Desenvolva uma classe em Java que leia o código de um aluno e suas três notas. Calcule a média ponderada do aluno, considerando que o peso para a maior nota seja 4 e para as duas restantes, 3. Mostre o código do aluno, suas três notas, a média calculada e uma mensagem "APROVADO" se a média for maior ou igual a 5 e "REPROVADO" se a média for menor que 5. Repita a operação até que o código lido seja negativo. Bloco II – problemas que utilizam vetores 1) Desenvolva uma classe em Java que leia um conjunto de 30 valores e os coloque em 2 vetores conforme sejam pares ou ímpares. Depois imprima o vetor dos números pares e o vetor dos números ímpares. 2) Desenvolva uma classe em Java que leia e mostre um vetor com N elementos inteiros (N deve ser informado no início do processo) e, a seguir, execute as seguintes operações: a) Localize e informe todos os números pares encontrados, inclusive informando em que posições do vetor eles estão; b) Informe a quantidade de números pares encontrados. 3) Desenvolva uma classe em Java que leia dois vetores de 10 elementos inteiros e faça a multiplicação dos elementos de mesmo índice, colocando o resultado em um terceiro vetor. Mostre os vetores originais e o vetor resultante. 4) Desenvolva uma classe em Java que leia um vetor de 13 elementos inteiros, que é o Gabarito de um teste da loteria esportiva, contendo os valores 1(coluna 1), 2 (coluna 2) e 3 (coluna do meio). Leia, a seguir, para cada apostador, o número do seu cartão e um vetor de Respostas de 13 posições. Verifique para cada apostador o número de acertos, comparando o vetor de Gabarito com o vetor de Respostas. Escreva o número do apostador e o número de acertos. Se o apostador tiver 13 acertos, mostrar a mensagem "Ganhador". 5) Desenvolva uma classe em Java que leia um vetor de 20 elementos inteiros e mostreo. Em seguida, troque o primeiro elemento com o último, o segundo com o penúltimo, o terceiro com o antepenúltimo, e assim sucessivamente. Mostre o novo vetor depois da troca 6) Desenvolva uma classe em Java que leia um vetor de 10 elementos inteiros e mostreo ordenado em ordem crescente. 7) Desenvolva uma classe em Java que leia um vetor X(20) e o escreva. Escreva, a seguir, cada um dos valores distintos que aparecem em X dizendo quantas vezes cada valor aparece em X. 8) Desenvolva uma classe em Java que leia um vetor (A) de N elementos (N é informado no início da execução). Em seguida, compacte o vetor, retirando os valores nulos e negativos. Coloque o resultado no vetor B e exiba o resultado. 9) Uma locadora de DVDs tem guardada, em um vetor de 500 posições, a quantidade de filmes retirados por seus clientes durante o ano de 2005. A locadora decidiu fazer uma Prof. Fernando Cardeal 2 1 ÁREA1 promoção e, para cada 10 filmes retirados, o cliente tem direito a uma locação grátis. Desenvolva uma classe em Java que crie um outro vetor contendo a quantidade de locações gratuitas a que cada cliente tem direito, exibindo o resultado em seguida (apenas com aqueles clientes que têm direito a locações grátis). A posição do vetor corresponde ao código do cliente. 10) Uma certa loja resolveu utilizar vetores em Java para controlar o seu estoque de mercadorias. Para isso projetou três vetores: o primeiro conterá os códigos das mercadorias, o segundo conterá os nomes das mercadorias correspondentes aos códigos do primeiro vetor e o terceiro vetor conterá os saldos em estoque com a mesma correspondência. Desenvolva uma classe em Java que atenda a loja citada, realizando as seguintes operações: a) Crie os três vetores (codigos, produtos e saldos) com capacidade para 500 produtos; b) Leia os dados iniciais para a montagem do estoque. A leitura deve ser feita até encontrar um produto com código negativo. Esse deve ser desconsiderado. c) Após a montagem do estoque, a classe deverá ler vários pedidos de mercadoria contendo código e quantidade desejada e processar da seguinte forma: i) Para cada código lido, deve pesquisar se o produto existe no estoque; ii) Se não existir, emitir mensagem “Produto xxxx não cadastrado”; iii) Caso o produto exista, a classe deve verificar se o saldo é suficiente para atender ao pedido do cliente e, se for, deve atualizar o estoque (subtraindo a quantidade pedida); iv) Caso o saldo seja insuficiente, deve emitir a mensagem “Produto xxxx – xxxxxxxxxxxxxx saldo x insuficiente”. Após o processamento de cada pedido, a classe deve perguntar se deseja processar novo pedido (‘S’ ou ‘N’), repetindo o processo até o cliente digitar ‘N’ ou ‘n’.Bloco III – problemas que envolvem tratamento de Strings 1) Desenvolva uma classe em JAVA que leia várias frases até encontrar a palavra PARE (escrita com qualquer combinação de maiúsculas e minúsculas). Para cada frase, o programa deve exibir: a) A frase e o seu comprimento em caracteres; b) A letra central de cada frase; se a frase tiver número par de caracteres, informar os dois caracteres centrais. 2) Escreva uma classe em Java que leia uma frase, separe e exiba separadamente a última letra de cada palavra da frase. Por exemplo, se for digitada a frase: “Esse programa está muito fácil”, o programa exibiria como resposta: eaáol 3) Escreva uma classe em Java que leia duas Strings e localize a primeira String na segunda, informando todas as ocorrências e as posições onde encontrou. Caso não encontre, a classe deve exibir a mensagem “O texto ‘xxx’ não foi encontrado em ‘xxxxxxxxxx’”. 4) Escreva uma classe em Java que leia uma frase qualquer e elimine o excesso de espaços entre as palavras (inclusive os espaços antes da primeira palavra e após a última palavra da frase). Exemplo: supondo que seja lida a frase “ cada macaco Prof. Fernando Cardeal 3 1 ÁREA1 no seu galho “, a classe deve gerar a frase “cada macaco no seu galho”. Exibir a frase antes e depois da eliminação dos espaços excessivos. 5) Escreva uma classe em JAVA que leia uma frase e inverta as palavras formando uma nova String. Exiba na tela a frase original e a frase invertida. Exemplo: LIDA: Esta classe é fácil de fazer RESULTADO: fazer de fácil é classe Esta 6) Escreva uma classe em Java para normalizar nomes de pessoas, obedecendo as seguintes regras: a) Converter todas as letras não iniciais para minúsculas; b) Converter as letras iniciais de cada palavra para maiúsculas. c) Exemplo 1: se for lido o nome: “antônio maciel dos santos” o resultado deveria ser “Antônio Maciel Dos Santos”; d) Exemplo 2: se for lido o nome: “JoÃo SILveiRa LiMeira de souza" o resultado deveria ser “João Silveira Limeira De Souza”. 7) Aperfeiçoe a classe anterior para que as partículas como “de” “dos” “da” etc, sejam convertidas para minúsculas. Considerando os mesmos exemplos anteriores, os resultados passariam a ser “Antônio Maciel dos Santos” e “João Silveira Limeira de Souza”. Observe que o “dos” e o “de” foram convertidos totalmente para letras minúsculas. Aperfeiçoe a classe anterior para abreviar os nomes intermediários. Considerando os mesmos exemplos anteriores, os resultados passariam a ser “Antônio M. dos Santos” e “João S. L. de Souza”. Bloco IV – problemas que envolvem tratamento de objetos 1) Crie uma classe com as seguintes características: Nome da classe: Produto; Atributos da classe: o descricao (texto) o preco (real); o saldo (inteiro); Deve existir um método “set” e um método “get” para cada atributo; Deve existir um método construtor que inicia os valores dos atributos “descricao”, “preco” e “saldo” (nesta ordem); Para testar a classe acima, desenvolva OUTRA classe com as seguintes características: Crie um vetor com 5 objetos da classe Produto, dados obtidos através dos métodos da classe Swing; Leia o nome de um produto, pesquise no vetor de produtos e informe o preço e o saldo. Se o produto não existir, emita mensagem adequada. 2) Crie uma classe chamada Motor com as seguintes características: Atributos da classe: o nome (tipo texto); o potencia (tipo real); Prof. Fernando Cardeal 4 1 ÁREA1 o ligado (tipo booleano); Existe um método “set” e um método “get” para os atributos “nome” e “potencia”. Existe um método “ligar()” e um método “desligar()” que alteram respectivamente o atributo “ligado”; Existe um método construtor que recebe e armazena os atributos “nome” e “potencia” e inicia o atributo “ligado” com o valor false. Pede-se: Desenvolva uma classe adicional para testar a classe Motor que, utilizando os métodos da classe Swing, faça as seguintes operações: crie um vetor com 5 objetos da classe Motor; a seu critério, ligue 3 motores; (você decide!!!!); percorra o vetor de objetos e informe as potências dos motores que estiverem desligados. 3) Desenvolva uma classe chamada Refrigerante com as seguintes características: Atributos da classe: o nome (tipo texto); o preco (tipo real); o saldo (tipo inteiro); Existe um método “set” e um método “get” para cada um dos atributos; Existe um método construtor que recebe e armazena os atributos “nome” , “preco” e “saldo” (nesta ordem) quando um objeto da classe Refrigerante é instanciado; Existe um método “venda” que atualiza o saldo do produto após uma venda bem sucedida. Pede-se: Desenvolva uma outra classe que, no seu método main, faça as seguintes operações: crie 5 objetos da classe Refrigerante com os seguintes dados (que são constantes): Nome Cocacola FantaUva FantaLaranja Sprite Kuat Preç o 1,50 0,90 0,90 0,80 1,00 Saldo 40 10 8 20 100 Utilizando os métodos da classe Refrigerante, efetue duas vendas dos refrigerantes da sua escolha, sendo que cada cliente pagou com uma nota de R$5,00. Informe o saldo de cada refrigerante e o troco do cliente, usando métodos da classe Swing. 4) Desenvolva uma classe chamada Empresa com as seguintes características: Atributos da classe: o nome (tipo texto); Prof. Fernando Cardeal 5 1 ÁREA1 o capital (tipo real); o nFuncionarios (tipo inteiro); Existe um método “set” e um método “get” para cada atributo. Existe um método construtor que recebe e armazena os 3 atributos da classe. Pede-se: Desenvolva outra classe que, utilizando os métodos da classe Swing, faça as seguintes operações: crie um vetor com 5 objetos da classe Empresa; percorra o vetor de objetos e informe qual o nome da empresa que tem o menor número de funcionários. Percorra o vetor de objetos e informe qual o nome da empresa que tem o maior capital. Prof. Fernando Cardeal 6 1