Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Gabriel T.I

Java Faça um programa que deverá ler e armazenar na memória um as informações das pessoas.

Recommended Posts

Bom dia Galera, estou tendo dificuldade com algumas partes dos meus códigos pois mal comecei a estudar java e já tenho essa lista de 4 exercícios para responder, fiz os códigos até onde eu consegui, porém todos estão incompletos, faltando alguns detalhes, alguém pode me ajudar aí com as partes incompletas dos códigos ? Fico muito grato a quem puder pois meu prazo é curto para entregar essa lista !

 

Segue aí os exercícios com os códigos:

 

1.Faça um programa que deverá ler e armazenar na memória um as informações das pessoas. Deverá ser criada uma classe Pessoa com os atributos nome, data de nascimento, peso e altura. Crie os métodos públicos necessários para sets e gets e também um método para imprimir todos dados de uma pessoa. Crie um método para calcular a idade da pessoa. Crie um método para calcular o índice de massa corporal (IMC) de uma pessoa seguindo a seguinte fórmula
IMC=peso/〖altura〗^2
Deverá ser criada uma classe de teste para testar a chamada de todos os métodos.

(neste problema consegui fazer a classe pessoa mas faltando algumas coisas que esta comentada no código, e não consegui fazer a classe teste)

“classe pessoa”:

 

public class Pessoa{

private static String nome;
private static String dataNascimento;
private static float altura;
private static float peso;
private static float idade;

public static String getNome() {
	return nome;
}

public void setNome(String nome) {
	Pessoa.nome = nome;
}

public static String getDataNascimento() {
	return dataNascimento;
}

public void setDataNacimento(String dataNacimento) {
	Pessoa.dataNascimento = dataNacimento;
}

public static float getAltura() {
	return altura;
}

public void setAltura(float altura) {
	Pessoa.altura = altura;
}

public static float getPeso() {
	return peso;
}

public void setPeso(float peso) {
	Pessoa.peso = peso;
}

public static float getIdade() {
	return idade;
}

public static void setIdade(float idade) {
	Pessoa.idade = idade;
}

public static Scanner entrada;
public static float imc;

public static void main(String[] args) {
	entrada = new Scanner(System.in);
	
	System.out.println("Digite seu nome: ");
	nome = entrada.nextLine();
	
	System.out.println("Digite sua data de nacimento: ");
	dataNascimento = entrada.nextLine();

	System.out.println("Digite seu Peso: ");
	peso = entrada.nextFloat();
	
	System.out.println("Digite sua Altura: ");
	altura = entrada.nextFloat();
}

public void imc() {
	imc = altura * altura;
	imc = peso / imc;
}

// preciso de um metodo para calcular a idade do usuario que seria a data atual - a data de nacimento.
// alocando na variavel idade.

public static void main1(String[] args) {
	System.out.println("Seu nome e: " + nome);
	System.out.println("Sua altura e: " + altura);
	System.out.println("Seu peso e: " + peso);
	System.out.println("Sua idade e: " + idade);
	System.out.println("Seu IMC : " + imc);
}
}
]

2- Escreva uma classe cujos objetos representam alunos matriculados em uma disciplina. Cada objeto dessa classe deve guardar os seguintes dados do aluno: matrícula, nome, 2 notas de prova e 1 nota de trabalho. Escreva os seguintes métodos para esta classe: calculaMedia - calcula a média final do aluno (cada prova tem peso 2,5 e o trabalho tem peso 2) calculaFinal calcula quanto o aluno precisa para a prova final (retorna zero se ele não for para a final). Deverá ser criada uma classe de teste para testar a chamada de todos os métodos.

( Neste eu consegui fazer a classe alunos, mas falta a classe calculaMedia , calculaFinal e a classe teste)

“Classe aluno”:

 

public class Alunos {

	private static String matricula;
	private static String nome;
	private static float nota1;
	private static float nota2;
	private static float trabalho;
	
	public static String getMatricula() {
		return matricula;
	}
	public void setMatricula(String matricula) {
		Alunos.matricula = matricula;
	}
	public static float getNota1() {
		return nota1;
	}
	public void setNota1(float nota1) {
		Alunos.nota1 = nota1;
	}
	public static String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		Alunos.nome = nome;
	}
	public static float getNota2() {
		return nota2;
	}
	public void setNota2(float nota2) {
		Alunos.nota2 = nota2;
	}
	public static float getTrabalho() {
		return trabalho;
	}
	public void setTrabalho(float trabalho) {
		Alunos.trabalho = trabalho;
	}
}
]

 

3-Crie uma classe denominada Elevador para armazenar as informações de um elevador dentro de um prédio. A classe deve armazenar o andar atual (térreo = 0), total de andares no prédio (desconsiderando o térreo), capacidade do elevador e quantas pessoas estão presentes nele. A classe deve também disponibilizar os seguintes métodos:
construtor : que deve receber como parâmetros a capacidade do elevador e o total de andares no prédio (os elevadores sempre começam no térreo e vazio);
Entra : para acrescentar uma pessoa no elevador (só deve acrescentar se ainda houver espaço);
Sai : para remover uma pessoa do elevador (só deve remover se houver alguém dentro dele);
Sobe : para subir um andar (não deve subir se já estiver no último andar);
Desce : para descer um andar (não deve descer se já estiver no térreo);
Encapsular todos os atributos da classe (criar os métodos set e get).


Deverá ser criada uma classe de teste para testar a chamada de todos os métodos.

 

(Este eu não tenho a menor ideia de como fazer, não conseguir fazer nada dele !! Se alguém puder ajudar :tw_confused:).

 

4-Crie uma classe Televisao e uma classe ControleRemoto que pode controlar o volume e trocar os canais da televisão. O controle de volume permite:
• aumentar ou diminuir a potência do volume de som em uma unidade de cada vez;
• aumentar e diminuir o número do canal em uma unidade
• trocar para um canal indicado;
• consultar o valor do volume de som e o canal selecionado.

(Este eu consegui fazer as duas classes (Televisao e ControleRemoto) mas esta faltando algumas coisas que esta comentado nos codigos)

 

“Classe televeisao”:

 

public static int getCanal() {
	return canal;
}
public static void setCanal(int canal) {
	Televisao.canal = canal;
}
public static int getVolume() {
	return volume;
}
public static void setVolume(int volume) {
	Televisao.volume = volume;
}

public void canal() {
	System.out.println(nextInt(99));
	// Nao sei se esta correto mas fiz esse metodo para limita os canais a no maximo 99.
	//necessito tambem de um metodo para quando o usuario por + aumentar o numeor do canal e - diminuir.
	// para ele ter duas opções ou pelo numero certo dele ou pelo + e -.
}

public void volume() {
	System.out.println(nextInt(100));
	// mesma coisa aqui mas com o volume limitado a 100.
}

private char[] nextInt(int i) {
	return null;
}
}
]

“classe controle remoto”:

Exercício 4;

 

public class ControleRemoto {
private static int consulta;
private static Scanner entrada;

public static int getConsulta() {
	return consulta;
}

public static Scanner getEntrada() {
	return entrada;
}

public static void setEntrada(Scanner entrada) {
	ControleRemoto.entrada = entrada;
}

public static void setConsulta(int consulta) {
	ControleRemoto.consulta = consulta;
}

public static void main(String[] args) {
	setEntrada(new Scanner(System.in));
	
//O usuario ira colocar as informações ex: numero do canal que deseja trocar,
// se deseja aumentar ou diminuir o volume (obs: tem dois jeitos de trocar de canal pelo numero ou por + e -)
}	

// um metodo para imprimir a confirmacao da entrada ex: voce trocou para o canal 5 , 
// o volume da tv esta em 12.(que seria a parte de consulta)
}
]

 

Bom galera, foi até aí que consegui fazer os códigos, sei que talvez seja até bastante as partes incompletas porém preciso entregar logo e o prazo está acabando, espero que alguém possa me ajudar  :tw_fearful:, Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

OBservando o exercício 1 , seguem algumas dicas.

 

Evite usar static em atributos e métodos.
Para a maioria das situações, não precisa usar static. então a dica é, na dúvida, não declare como static. O fato de você declarar praticamente tudo como static demonstra que você ainda não domina esse conceito. Estude mais sobre ele ok ? Só use static se tiver um bom motivo para tornar alguma coisa static.

 

No programa principal você não instanciou pessoa alguma. Recomendo criar uma nova pessoa. Verifique o método construtor da pessoa.

 

O método para calcular IMC deve ser um método da classe pessoa e nao um método público. 

A ideia seria mais ou menos assim


 

public class Pessoa {
  /* definicoes de atributos e métodos da classe pessoa ... que você já fez */
  .
   .
    .
  /* adicione esse método aqui */ 
  public float  imc() { 
       return this.peso / (this.altura * this.altura) ;
}

com a definição desse método assim, basta criar uma pessoa no programa principal           

  Pessoa umCaraMagro = new Pessoa();
  umCaraMagro.setNome("Gabrielzinho");
  umCaraMagro.setPeso(60.0);
  umCaraMagro.setAltura(1.78);
  System.out.prinln("A pessoa "+umCaraMagro.getNome()+
                     " pesa "+umCaraMagro.getPeso()+
                     " e mede "+umCaraMagro.getAltura()+
                     " o que dá um IMC de "+umCaraMagro.imc() ) ;

Quanto a idade, temos um dilema aí que você precisa resolver. É uma opção pessoal sua. Existem algumas alternativas e seu programa sugere pelo menos duas delas. O problema é que você ficou no meio. Ou usa uma forma ou usa a outra.

Então vejamos: tem duas formas de você guardar a idade de uma pessoa. Ou você cria um atributo/campo com o idade da pessoa (que você fez) e registra a idade dela, ou ... você cria um campo data de nascimento (que você também fez) e CALCULA a idade da pessoa toda vez que quiser saber a idade dela.

Existem vantagens e desvantagens em cada  uma das abordagens.

 

Se você cria um campo com  a idade, basta ir ver o valor da idade nesse campo e tá resolvido. No caso o método getIdade(), que você já fez, resolve. Simples e prático. Só tem um problema ... e quando o tempo passar ? Qual será a idade da pessoa ? Alguma coisa tem que de ano em ano , em algum mês, num certo dia, mudar a idade da pessoa para idade + 1. Para tanto precisaríamos saber o mês e o dia em que a pessoa nasceu, além da idade. Ihhh, tá começando a complicar ...

 

Se você cria um campo com a data de nascimento (ano, mês, dia) , fica mais fácil e prático calcular a idade. Basta criar um método chamado calcIdade() que em vez de simplesmente pegar o campo idade, calcula a idade baseando-se no ano, mês, dia de nascimento e o ano, mês, dia corrente. A vantagem desse método é que sempre se calcula a idade correta no momento em que se precisa fazer a conta. Não precisa ficar atualizando a idade o tempo todo. Só calcula quando precisa. Tem ideia de como fazer um método que dado o dia, mês, ano de nascimento e o dia, mês, ano atual calcula a idade de ume pessoa ? Ora, se tenho a data de nascimento (dia, mês, ano) de uma pessoa, não preciso ter um campo de idade da pessoa, concorda ? E para facilitar ainda mais, talvez seja melhor usar um campo para dia, outro para mês e outro para ano, em vez de uma string com a data de nascimento. Facilita ter os campos separados para fazer contas, calcular inclusive dias entre uma data e outra e até em que dia da semana uma data cai. Pense nisso.

 

 

Outra dica. 

Dentro da classe, ao referenciar o próprio objeto, prefira usar o termo this em vez do nome da classe. Isso facilita a manutenção do programa no futuro. Não faz diferença na lógica porém é um hábito bom de se cultivar para quem pensa em seguir a carreira profissional de programador Java (que inclusive tem forte demanda de programadores bons).

Por exemplo, você usa 

public void setNome(String nome) {
	Pessoa.nome = nome;
}

/* prefira usar assim */ 
public void setNome(String nome) {
	this.nome = nome;
}



Recomendo estudar mais a estrutura do programa Java. O fato de você ter declarado dos "mains" no mesmo fonte demonstra que esse ponto está meio fraco e precisa de mais exercício.

 

Se me permite uma dica, use o http://repl.it para testar e compartilhar seus programas em Java. É gratuito e facilita. Não é tão bacana quanto o Eclipse e o Netbeams mas quebra um galhão.

 

Outra dica, instale o teamviewer no seu computador. Assim, quando tiver uma dificuldade maior no seu código, você pode pedir para alguém dar uma olhada via teamviewer. Eu tenho dado dicas assim  e agiliza um bocado.

 

Essas são apenas observações quanto ao exercício 1. Portanto, outra dica. QUando tiver uma lista de exercícios, abra um tópico para cada exercício. Facilita ao ajudador responder e também facilita para você entender.

 

adicionado 34 minutos depois
Em 12/04/2018 às 07:42, Gabriel T.I disse:

2- Escreva uma classe cujos objetos representam alunos matriculados em uma disciplina. Cada objeto dessa classe deve guardar os seguintes dados do aluno: matrícula, nome, 2 notas de prova e 1 nota de trabalho. Escreva os seguintes métodos para esta classe: calculaMedia - calcula a média final do aluno (cada prova tem peso 2,5 e o trabalho tem peso 2) calculaFinal calcula quanto o aluno precisa para a prova final (retorna zero se ele não for para a final). Deverá ser criada uma classe de teste para testar a chamada de todos os métodos.

:


Aqui você fez praticamente nada. Apenas declarou a classe com os atributos e novamente exagerou no uso de static. Pode tirar todos os static dai. Não é necessário

 

Novamente você usou o nome da classe para referenciar-se a seus atributos. Prefira usar this. em vez do nome da classe.

 

Esse seu comentário abaixo é preocupante ...

Em 12/04/2018 às 07:42, Gabriel T.I disse:

Neste eu consegui fazer a classe alunos, mas falta a classe calculaMedia , calculaFinal e a classe teste)

 

 

Aqui você está misturando e confundindo os conceitos de classe com método.

calculaMedia e calculaFinal são métodos e não classes

.

A classe "teste"  na verdade é o programa principal, que você sequer tentou fazer. Precisa se esforçar mais aqui.

 

Voltando ao método que calcula a média. Segundo o enunciado a média é ponderada entre 3 notas, 2 notas e um trabalho.

Então a média seria 2.5* nota1 + 2.5*nota2 + 2*trabalho , tudo isso somado pela soma dos pesos que é 2.5+2.5+2 = 7

então ... consegue escrever o método agora ? Tente escrevê-lo e se tiver dificuldade me avise.

 

Agora o método que calcula quanto o aluno precisa para a prova final. Esse cálculo precisa de duas informações que não temos:

1 - Qual é a média necessária para passar direto sem final ? 

2 - Como calcula a nota com a final ? é ponderada ? Ou é uma média aritmética normal ? 

Pergunte ao seu professor e peça mas esclarecimentos. 

 

Por último, a classe de teste, que como disse, é o programa principal. Vou dar uma dica para você. 
Todos os exercícios vão precisar de uma classe de teste que é o programa principal. (exceto num lance aí que explico depois). Então as classes de teste devem ser assim

 

/* este é um template de um programa Java*/
/* Este template serve para 99% dos casos dos exercícios de cursos de Java por aí*/
/* use-o como um modelo, por isso é chamado de template (template = modelo) */ 
/* primeiro coloque os imports */ 
import java.util.Scanner;  /* para fazer leitura de dados no teclado */ 
import java.util.Random; /* para gerar números aleatórios, por exemplo */ 

Class Exercício_xxxxx  {
  
  /* substitua xxxx pelo lista-número do exercicio. */
  /* Este será o nome do arquivo .java (fonte) e do .jar (programa pronto para rodar) */
  public static void main(String[] args) { 
    /* declare os objetos e instancie-os */ 
    /* no exemplo seria */ 
    Alunos nerd = new Aluno() ;
    Alunos malandroQueNaoEstuda = new Aluno();
    Alunos peixeDoProfessor = new Aluno();
    
    /* carregue as variáveis com dados iniciais. as vezes vai ler do teclado, as vezes você vai atribuir direto */ 
    
    
    /* lógica principal do programa */
    
  } /* fim do main, o programa principal */ 
 } /* fim da classe, o fonte do programa */ 

 

Como essa é a segunda resposta que dou para você tem algumas dicas que são específicas para esse exercício e tem algumas dicas que servem para qualquer exercício. 

Se precisar de mais esclarecimentos, não hesite em me contactar.

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×