Lista de exercícios fáceis em Java — Parte 2
Tags: java, braziliandevs, exercises, study
Published: 2020-10-22 02:18:01

Hoje darei continuidade a resolução de mais seis exercícios básicos de programação. Caso vocês gostem, posso trazer mais artigos deste tipo no futuro. Vamos aos exercícios!


![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/t04u33vcdu6aumy5keey.jpg)

__1. Faça um algoritmo para ler um número que é um código de usuário. Caso este código seja diferente de um código armazenado internamente no algoritmo (igual a 1234) deve ser apresentada a mensagem ‘Usuário inválido!’. Caso o Código seja correto, deve ser lido outro valor que é a senha. Se esta senha estiver incorreta (a certa é 9999) deve ser mostrada a mensagem ‘senha incorreta’. Caso a senha esteja correta, deve ser mostrada a mensagem ‘Acesso permitido’__

Este programa é bem simples, vamos ter como variáveis do tipo int apenas o código e senha. Vamos inserir o Scanner para entrada de dados e exibir uma mensagem pedindo para o usuário inserir o código de acesso. Agora vamos criar um condicional if, pois caso o número digitado seja igual a “1234”, o programa pedirá a senha de acesso. Dentro haverá outro if, onde se a senha for igual a “9999”, o sistema vai exibir a mensagem de “Acesso Permitido”, caso contrário”, exibirá “Senha errada”. Se o código inserido for diferente de 1234, vai ser exibido uma mensagem de “código inválido”. Para terminarmos, vamos fechar o scanner com o comando close().

```java
package artigosExercicios;

import java.util.Scanner;

public class Codigo {
	public static void main(String[] args) {
		int codigo, senha;
		Scanner entrada = new Scanner(System.in);
		
		System.out.print("Insira o código de acesso: ");
		codigo = entrada.nextInt();
		
		if (codigo == 1234) {
			System.out.print("Insira a senha de acesso: ");
			senha = entrada.nextInt();
			if(senha == 9999) {
				System.out.println("Acesso permitido");
			} else {
				System.out.println("Senha incorreta");
			}
		} else {
			System.out.println("Código incorreto");
		}
		
		entrada.close();
	}
}
```


__2. Número primo é aquele que só é divisível por ele mesmo e pela unidade. Fazer um algoritmo que determine e escreva os números primos compreendidos entre um intervalo fornecido pelo usuário.__

Vamos começar declarando como int as variáveis inicio e fim (que será o intervalo dos números para se calcular os primos) e primo com o valor 0, que será nosso contador. Vamos chamar a classe Scanner e já colocar o fechamento close() no fim do código, para não esquecermos. Agora vamos pedir ao usuário o range de números, através das variáveis início e fim. Vamos criar um laço de repetição for, que receberá na variável i o primeiro número do intervalo e como condição de parada o último número do intervalo. 

Dentro dele, nós teremos um outro laço condicional que vai testar se cada um dos números do intervalo é primo. Neste for, nós iremos dividir o número que está sendo testado por ele mesmo e todos os seus anteriores. Declarei uma variável j valendo 1 como condição inicial e a condição de parada será o valor do próprio i, ou seja, caso esteja testando o número 5, este laço irá pelos valores de 1, 2, 3, 4 e 5.

Para sabermos se um número é primo, basta dividirmos ele por ele mesmo e todos os seus antecessores. Se ele for divisível apenas por 1 ou por ele mesmo, então encontramos o número primo. Para testarmos esta condição, vamos criar um laço if que vai extrair o resto da divisão do valor i pelo j, se o resto for igual 0, significa que ele dividiu sem sobras e, assim, o contador primo recebera o valor +1 na sua memória. No fim do teste para todos os seus antecessores, se a variável primo for igual a 2, significa que encontramos um número primo! Agora vamos sair do laço de repetição interno, que está testando cada um dos números, e vamos criar um if que exibirá o valor encontrado (se primo for igual a 2) do número primo. Por fim, como a variável primo possui um número em seu interior, precisamos “limpar” ela para realizar um novo cálculo, então vamos atribuir o valor de 0 a ela, no final do laço for externo.

``` java 
package artigosExercicios;

import java.util.Scanner;

public class Primos {
	public static void main(String[] args) {
		int inicio, fim, primo=0;
		
		Scanner entrada = new Scanner(System.in);
		System.out.print("Número inicial: ");
		inicio = entrada.nextInt();
		System.out.print("Número final: ");
		fim = entrada.nextInt();
		
		for (int i=inicio; i<=fim; i++) {
			for (int j=1; j<=i; j++) {
				if (i % j == 0) {
					primo++;
				}
			}
			if (primo == 2) {
				System.out.println("O número " + i + " é PRIMO!");
			}
			primo = 0;
		}
		
		entrada.close();
	}
}
```

A lógica deste exercício ficou um pouco complexa, não sei se consegui explicar de forma clara mas, se você fez o exercício de outra forma e conseguiu encontrar os números primos, também é valido! Esse é um daqueles exercícios que existem inúmeras formas diferentes de se resolver, o que vai mudar é o tamanho do código e o tempo de processamento pela JVM.


__3. Escrever um programa que armazene um horário (hora, minuto e segundo) em variáveis, depois, determine e exiba a quantidade de segundos que se passaram desde as 0h00min0s e a quantidade de segundos que faltam para a meia-noite.__

Vamos declarar as variáveis hora, minuto, segundo, passado e faltam como int. Vamos atribuir alguns valos para hora, minuto e segundo para testarmos. Em seguida, vamos criar a fórmula que calcula quanto tempo se passou até o momento (segundo + minuto*60 + hora * 3600). Para descobrir quanto falta para acabar o dia, a fórmula é subtrair 86400 (quantidade de segundos que tem em um dia) com o tempo que já passou. Nosso programa está pronto, basta exibir agora o resultado!

```java 
package exercicios;

public class Horas {
	public static void main(String[] args) {
		int hora, minuto, segundo, passado, faltam;
		
		hora = 3;
		minuto = 32;
		segundo = 54;
		
		passado = segundo + minuto*60 + hora*3600;
		faltam = 86400 - passado;
		
		System.out.println("Já se passaram " + passado + " segundos desde o início do dia");
		System.out.println("Faltam " + faltam + " segundos para terminar o dia");
	}
}
```


__4. Elabore um programa para armazenar uma medida de raio em metros, determinar e exibir o perímetro e a área de um círculo com esse raio, através das fórmulas: perímetro = 2 x 3.14159 x raio; área = 3.14159 x raio².__

Vamos declarar como double o raio, perimetro e area, e atribuir algum valor ao raio para fazermos os cálculos. Em seguida, vamos criar as duas fórmulas que o enunciado nos mostra, e, depois, é só exibir na tela o resultado do cálculo da área e do perímetro.

```java
package apostilaJava_parte1;

public class Pagina50 {
	public static void main(String[] args) {
		double raio, perimetro, area;
		raio = 4.3;
		
		perimetro = 2 * 3.14159 * raio;
		area = 3.14159 * raio * raio;
		
		System.out.println("O perímetro do círculo é: " + perimetro);
		System.out.println("Areá do círculo é: " + area);
	}
}
```


__5. Faça um algoritmo para ler 50 números e armazenar em um vetor VET, verificar e escrever se existem números repetidos no vetor VET e em que posições se encontram.__

Este exercício é o mais difícil da lista, vamos realizar operações com vetores com laços de repetição aninhados. Vamos começar declarando nosso array de inteiros de 50 posições e, em seguida, chamar a classe Scanner (não se esquecendo de fechá-la com o close()). Agora vamos iniciar um valor for que vai percorrer as 50 posições do nosso array (de 0 a 49). Vamos exibir uma mensagem ao usuário pedindo que ele digite um número inteiro, que será armazenado na posição i do vetor. Para verificarmos se o número digitado é repetido, vamos criar um outro laço for (dentro do laço do array) utilizando a variável j, que também percorrerá as 50 posições do nosso array.

Agora, vamos colocar um condicional if dentro do laço, vamos verificar se o valor que foi digitado agora já está dentro do array, percorrendo cada uma das suas opções, e verificar se o i é diferente do j (pois se os dois valores forem iguais, ele vai deixar passar como se o número tivesse sido digitado, causando uma brecha em nossa lógica). Caso o número seja igual de fato, vamos exibir ele na tela e lançar um break, para não ficar repetindo a mensagem até o for completar de percorrer todas as posições do array. Pronto! Assim concluímos este exercício trabalhando com manipulação de array.

```java
package artigosExercicios;

import java.util.Scanner;

public class Vet {
	public static void main(String[] args) {
		int VET[] = new int[50];
		
		Scanner entrada = new Scanner(System.in);
		
		for(int i=0; i<50; i++) {
			System.out.print("Digite o valor da posição " + i + ": ");
			VET[i] = entrada.nextInt();
			for(int j=0; j<50; j++) {
				if(VET[i]==VET[j] && i!=j) {
					System.out.println("o número " + VET[i] + " é repetido!");
					break;
				}
			}
		}

		entrada.close();
	}
}
```


__6. O custo de um carro novo ao consumidor é a soma do custo de fábrica com a porcentagem do distribuidor e dos impostos (aplicados ao custo de fábrica). Supondo que o percentual do distribuidor seja de 28% e os impostos de 45%, escrever um algoritmo para ler o custo de fábrica de um carro, calcular e escrever o custo final ao consumidor.__

Este programa é bem simples, vamos declarar o precoCarro e o precoFinal como double, declarar a classe Scanner e pedir para o usuário inserir o preco de fábrica do carro, guardando este dado na variável precoCarro. Por fim, vamos calcular o precoFinal (precoCarro + precoCarro*0.28 + precoFinal*0.45) e e exibí-lo na tela!

```java
package artigosExercicios;

import java.util.Scanner;

public class CarroNovo {
	public static void main(String[] args) {
		double precoCarro, precoFinal;
		Scanner entrada = new Scanner(System.in);
		
		System.out.print("Digite o valor de fábrica do veículo: R$ ");
		precoCarro = entrada.nextDouble();
		
		precoFinal = precoCarro + precoCarro*0.28 + precoCarro*0.45;
		
		System.out.println("O preço que o consumidor deve pagar pelo veículo é de: R$ " + precoFinal);
		entrada.close();
	}
}
```


Com este exercício do carro, terminamos mais uma listinha de exercícios, desta vez trouxe mais exercícios bem básicos e um de vetor e outro de primos que são um pouco mais complexos. Se gostaram deste tipo de resolução de exercícios posso trazer novos desafios nos próximos artigos, também aceito sugestões de exercícios para resolver para os próximos artigos.