Baixe o app para aproveitar ainda mais
Prévia do material em texto
35323 – Linguagem de Programação II Ciência da Computação – T. 2016 – 2017/01 Exercícios Prof. Gerson Groth Lista de Exercícios 1. Fundamentos de programação Java 1.1 (leitura) Escreva um programa para ler dois números inteiros e mostrar a soma dos mesmos; 1.2 (estrutura condicional) Escreva um programa que leia dois números inteiros a e b. Determinar se a é divisível por b; 1.3 (estrutura condicional) Leia dois números reais e imprima ‘>’ se o primeiro número for maior que o segundo, ‘<’ se o primeiro número for menor, e ‘=’ se os dois valores são iguais 1.4 (repetição) Imprima todos os números ímpares entre (exclusive) dois inteiros especificados pelo usuário. Considere que o primeiro número pode ser maior que o segundo. 1.5 (repetição) Escreva um programa que leia um número do teclado e imprima todos os números primos entre 2 (inclusive) e o número lido (inclusive) 1.6 (String) Escreva um programa que leia uma frase e imprima na tela. Utilize a classe Scanner e o método nextLine() para ler a linha inteira 1.7 (String) Escreva um programa que leia duas strings e imprima “iguais” se elas são iguais ou “diferentes”, caso contrário. Utilize o método equals() da String para comparar. 1.8 (arrays) Escreva um programa que leia 5 números reais e armazene-os em um array (vetor). Em seguida, imprima todos os elementos do array, imprimindo a soma e média no final. 1.9 (arrays) Leia 5 números reais e armazene-os em um array. Imprima a posição e o valor do maior elemento do array (em caso de empate, imprima o que foi lido primeiro). 1.10 (switch) Leia dois números reais. Após, leia um número inteiro (aceitar somente valores entre 1 e 4, caso contrário, solicitar que informe novamente). Se o valor informado for 1, imprima a soma dos dois valores lidos, 2 para subtração, 3 para multiplicação, e 4 para divisão. 35323 – Linguagem de Programação II Ciência da Computação – T. 2016 – 2017/01 Exercícios Prof. Gerson Groth 2. Introdução a Objetos 2.1 (classe) Escreva uma classe para representar um paciente. O cálculo do IMC consiste de peso/altura^2 Paciente nome : String peso : double altura : double calcularIMC() : double 2.2 (classe) Escreva uma classe para representar um círculo. Area = π*raio^2 Perimetro=2*π*raio Para o π, considerar utilizar Math.PI, ou o valor 3.14159 Circulo raio : int calcularArea() : double calcularPerimetro() : double 2.3 (classe) Utilizando a classe do exercício anterior, escreva um programa que leia três inteiros, imprimindo a área e o perímetro de cada um. Pode-se criar um novo método dentro da classe círculo que imprima esses valores na tela. 2.4 (classe) Escreva uma classe para representar um funcionário. Salário=horasTrabalhadas*valorHora Funcionário nome: String horasTrabalhadas: int valorHora: double calcularSalario() : double 2.5 (classe) Com base no exercício anterior, crie um programa que leia 2 funcionários (nome, horas trabalhadas e valor por hora de cada um), imprimindo o salário de cada funcionário. Após, imprima o nome do funcionário que recebeu o maior salário. 35323 – Linguagem de Programação II Ciência da Computação – T. 2016 – 2017/01 Exercícios Prof. Gerson Groth 2.6 (construtor) Modifique a classe desenvolvida no exercício 2.2, adicionando um construtor que receba um valor inteiro e armazene no atributo raio. 2.7 (construtor) Modifique a classe desenvolvida no exercício 2.4, adicionando um construtor que receba um nome, horas trabalhadas, e valor da hora, setando essas informações nos atributos. 2.8 (construtor) Crie uma classe para representar um quadrado. Área=lado^2 Perímetro=4 * lado Quadrado lado : double <<constructor>>Quadrado (lado : double) : void calcularArea() : double calcularPerimetro() : double 2.9 (sobrecarga) O que há de errado com o código abaixo? 2.10 (sobrecarga) Crie uma classe para formatar um número. A classe não terá atributos. Os métodos formatarNumero deverão retornar um número formatado com a quantidade de casas decimais especificadas. Para o primeiro método, utilizar um valor padrão de 2 casas decimais. Para formatar um número, utilize String.format(), conforme exemplo abaixo: String stringFormatada = String.format("%.2f", 12.44498); 35323 – Linguagem de Programação II Ciência da Computação – T. 2016 – 2017/01 Exercícios Prof. Gerson Groth FormataNumero formatarNumero(numero: double): String formatarNumero(numero: double, casas: int): String 2.11 Jogo da adivinhação. O jogo sorteia um número, e 2 jogadores tentam adivinhar o número escolhido. Para esse exercício, será necessário uma classe para representar um jogador. O método adivinhar() deve devolver um número aleatório entre 0 e 9. Para isso, utilize o método random() da classe Math. Ex, a linha abaixo irá retornar um número entre 0 e 499. int numero = (int) (Math.random() * 500) Jogador id : int acertou: boolean adivinhar() : int Além da classe para os jogadores, precisamos de uma classe para o jogo em si. O jogo inicia através do método iniciarJogo() . Ao iniciar o jogo, o objeto da classe Jogo deve sortear um número, e continuar o jogo até que ao menos um dos jogadores tenha acertado. Jogo jogadores[] : Jogador <<construtor>> Jogo(numeroJogadores: int) iniciarJogo(): void 2.12 Estacionamento (baseado no problema Estacionamento - UOJ 1246) Um estacionamento utiliza um terreno em que os veículos precisam ser guardados em fila única, um atrás do outro. A tarifa tem o valor fixo de R$10,00 por veículo estacionado, cobrado na entrada, independente do porte e tempo de permanência. Quando um veículo chega ao estacionamento, o atendente primeiro determina se há vaga para esse veículo. Para isso, ele percorre a pé o estacionamento, do início até o fim, procurando um espaço que esteja vazio e tenha comprimento maior ou igual ao comprimento do veículo. Para economizar seu tempo, ele sempre escolhe o primeiro espaço que encontrar. Encontrada a vaga, o atendente pega o veículo e o estaciona. Se não houver vagas, o veículo não entra no estacionamento, e a tarifa não é cobrada. Aleatoriamente, um veículo sai do estacionamento, liberando espaço para novos veículos. O comprimento do veículo consiste em x vagas cada. Um estacionamento possui y vagas no total. Cada veículo possui uma placa, que será única. Pode utilizar a classe TesteEstacionamento.java (disponível juntamente com os exercícios) para testar. 35323 – Linguagem de Programação II Ciência da Computação – T. 2016 – 2017/01 Exercícios Prof. Gerson Groth 3. Encapsulamento 3.1 Crie uma classe chamada Pessoa contendo os seguintes atributos: nome, cpf e idade. Respeite a regra do encapsulamento. Forneça métodos de acesso e modificadores (getters/setters). Escreva um programa de teste onde deverão ser instanciados dois objetos da classe e testado os métodos implementados. 3.2 Crie uma classe chamada Aluno contendo os seguintes atributos: nome, n1 e n2. Respeite a regra do encapsulamento. Essa classe tem um método chamado média que calcula a média aritmética das notas desse aluno. Escreva um programa de teste (Principal) onde deverão ser instanciados dois objetos da classe Aluno com valores: Aluno(“Ana”,10,9) e Aluno(“Beto”, 9,10) 3.3 Crie uma classe chamada Calculo que deverá ter apenas um atributo inteiro chamado saldo que deverá ser encapsulado e inicializado com o valor 0. Essa classe conterá três métodos públicos chamados credito, debito e getSaldo. O método credito soma o valor recebido como parâmetro ao atributo saldo, o método debito subtrai o valor recebido como parâmetro do atributo saldo. Já o método getSaldo retorna o conteúdo do atributo saldo. Crie uma classe de teste que cria uma instancia de Calculo. Em seguida é feita uma operação de crédito no objeto e depois outra operação de debito.Depois o programa mostrará o saldo final do objeto 3.4 Criar uma classe ContaCorrente que possua os seguintes atributos: nome, senha e saldo. Possui ainda os métodos cadastrarSenha que recebe uma senha como parâmetro e altera o atributo senha e o método alterarSenha que recebe como parâmetro a senha antiga e a nova senha. Ele alterará o atributo senha apenas se a senha antiga for a correta. Os métodos debitar e creditar também deverão ser implementados, eles receberão como parâmetro o valor a ser debitado ou creditado e a senha. Eles só deverão efetuar a operação caso a senha for correta. Observar o encapsulamento e escreva um programa de teste para a classe 35323 – Linguagem de Programação II Ciência da Computação – T. 2016 – 2017/01 Exercícios Prof. Gerson Groth 4. Herança 4.1 Escreva duas classes, A e B, com construtores padrão (sem argumentos) que imprimem mensagens “classe A” e “classe B” respectivamente. Escreva outra classe chamada C que herda de A e possui um atributo do tipo B que é instanciado no momento da declaração. Não crie um construtor para C. Escreva um programa e no método main crie um objeto da classe C. Depois da execução desse programa o que será impresso. Explique os resultados. 4.2 Escreva uma classe chamada Pessoa com os atributos: nome (tipo String), sexo (tipo char), idade (tipo int). Escreva agora outra classe chamada Amigo, que é uma pessoa (estende da classe Pessoa) de quem sabemos o dia de seu aniversário, atributo diaDoAniversario (tipo String). Use encapsulamento e forneça construtor padrão e construtor usando todos os atributos para as duas classes. 4.3 Implemente uma classe para representar um professor. Devem ser atributos da classe o nome, e a matrícula do professor. Codifique métodos para ajustar e obter os valores dos atributos assim como um método construtor para inicializar o estado de novos objetos da classe Professor. Especialize essa classe criando duas subclasses: ProfessorEfetivo e ProfessorHorista. A subclasse ProfessorEfetivo deve conter dois atributos adicionais: jornadaDeTrabalho (validar os valores 20 hs, 40 hs ou Dedicação Exclusiva) e salário. Codifique um método para validar a jornada de trabalho informada e também escreva um método construtor que receba o Nome, Matrícula, e Jornada e inicialize o estado do objeto. A classe ProfessorHorista deve ter também dois atributos: horasTrabalhadas e salarioHora. Implemente um construtor para a classe ProfessorHorista e codifique um método para calcular seu salário (horas trabalhadas multiplicadas pelo salário hora). Nos métodos construtores das subclasses procure reutilizar o código da superclasse. 35323 – Linguagem de Programação II Ciência da Computação – T. 2016 – 2017/01 Exercícios Prof. Gerson Groth 4.4 Implemente o seguinte diagrama de classes Considere: • Na classe Animal o método falar() deve retornar uma string vazia, o método imprime() deve escrever o nome do animal e sua classe; • Na classe Pássaro o método falar() deve retornar a string "piu, piu" e o método voar() deve repetir a string "voando" n vezes, de acordo com o parâmetro do método. O método construtor da classe Pássaro deve ajustar o atributo classe da classe Animal para "Ave"; • Na classe BemTeVi o método falar() deve retornar a string "bem-te-vi"; • Na classe Papagaio o método falar() deve retornar a string armazenada em seu vocabulário; • Na classe Mamífero o método correr() deve repetir a string "correndo" tantas vezes quantas armazenadas no parâmetro velocidade. O método construtor da classe Mamífero deve ajustar o atributo classe da classe Animal para "Mamífero"; • Na classe Cachorro o método falar() deve retornar a string "AU, AU" ou "au, au" dependendo o valor do atributo tipoLatido; • Na classe Vaca, o método falar() deve retornar a string "Muuuu" e o método ordenhar() deve retornar a string "ordenhando" se o atributo permiteOrdenha contiver o valor verdadeiro; 35323 – Linguagem de Programação II Ciência da Computação – T. 2016 – 2017/01 Exercícios Prof. Gerson Groth 5. Revisando entendimento dos conceitos 5.1 Considere a seguinte classe Qual é o resultado da seguinte execução? A. B. C. D. igual igual igual diferente diferente igual diferente diferente 35323 – Linguagem de Programação II Ciência da Computação – T. 2016 – 2017/01 Exercícios Prof. Gerson Groth 5.2 O que será impresso após a execução do método main? A. B. C. D. 0 0 440 200 480 200 60 200 5.3 O que será impresso após a execução do método main? A. B. C. D. null 0 Erro ao executar a linha 8 35323 – Linguagem de Programação II Ciência da Computação – T. 2016 – 2017/01 Exercícios Prof. Gerson Groth 5.4 O que será impresso na tela? A. B. C. D. São Paulo São Paulo Rio de Janeiro Rio de Janeiro São Paulo Rio de Janeiro São Paulo São PauloRio de Janeiro 5.5 Considere o seguinte código. O que será impresso? A. B. C. D. 30 10 10 10 20 20 30 30 35323 – Linguagem de Programação II Ciência da Computação – T. 2016 – 2017/01 Exercícios Prof. Gerson Groth 5.6 Considere as seguintes classes. Marque a opção a alternativa que contém a(s) opção(ões) que preenchem o espaço sublinhado sem erro de compilação. I. Object II. Estudante III. Senior IV. Junior V. String A. Somente III é verdadeira B. Todas são verdadeiras C. Somente II e III são verdadeiras D. Somente I, II e III são verdadeiras E. Somente III e V são verdadeiras
Compartilhar