Nesta aula, vamos colocar em prática os conhecimentos adquiridos sobre estruturas de controle (if-else, for, while, do-while) através de desafios de programação. Estes exercícios ajudarão a consolidar os conceitos aprendidos e desenvolver sua lógica de programação.
Crie um programa que solicite ao usuário para inserir valores entre 0 e 10. O programa deve continuar solicitando valores até que o usuário digite um valor fora desse intervalo. Ao final, o programa deve exibir:
Utilize a estrutura do-while para continuar solicitando valores enquanto forem válidas.
Crie
Dentro do loop, verifique se o valor inserido está entre 0 e 10. Se estiver, adicione-o à soma; caso contrário, encerre o loop.
import java.util.Scanner;
public class validacaoValor {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
int soma = 0;
int valor;
System.out.println("Soma de valores entre 0 e 10. Para encerrar, digite um valor fora desse intervalo.");
do{
System.out.print("\nDigite valor entre 0 e 10: ");
valor = entrada.nextInt();
if(valor < 0 || valor > 10)
break;
soma = soma + valor;
} while (true);
System.out.println("A soma é: " + soma);
entrada.close();
}
}
Soma de valores entre 0 e 10. Para encerrar, digite um valor fora desse intervalo.
Digite valor entre 0 e 10: 1
Digite a nota: 2
Digite a nota: 3
Digite a nota: 4
Digite a nota: 5
Digite a nota: 11
A soma é: 10
Crie um programa que solicite ao usuário para inserir notas (tipo double, separadas por vírgulas) entre 0 e 10. O programa deve continuar solicitando notas até que o usuário digite um valor fora desse intervalo. Ao final, o programa deve exibir:
Utilize a estrutura do-while para continuar solicitando valores enquanto forem válidas.
As notas devem ser separadas por vírgulas.
Crie
Ao final do loop, calcule a média dividindo a soma pelo contador de notas válidas.
import java.util.Scanner;
public class mediaNotas {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
double soma = 0;
int contador = 0;
double valor;
double media;
System.out.println("Cálculo da Média de Notas entre 0 e 10 (para sair digite um valor fora desse intervalo)");
System.out.println("Digite as notas separadas por vírgula (e não por ponto):");
do {
System.out.print("Digite uma nota entre 0 e 10: ");
valor = entrada.nextDouble();
if (valor < 0 || valor > 10)
break;
soma += valor;
contador++;
} while (true);
if (contador > 0) {
media = (double) soma / contador;
System.out.println("A média é: " + media);
} else {
System.out.println("Nenhum valor válido foi inserido.");
}
entrada.close();
}
}
Cálculo da Média de Notas entre 0 e 10 (para sair digite um valor fora desse intervalo).
Digite as notas separadas por vírgula (e não por ponto):
Digite uma nota entre 0 e 10: 4,5
Digite uma nota entre 0 e 10: 6,5
Digite uma nota entre 0 e 10: 11
A média é: 5.5
Um número primo é aquele que é divisível apenas por 1 e por ele mesmo. Crie um programa que verifique se um número fornecido pelo usuário é primo.
Em seguida, modifique o programa para exibir todos os números primos no intervalo de 1 a N, onde N é informado pelo usuário.
Para verificar se um número é primo, você pode criar um método que recebe um número inteiro como parâmetro e retorna um booleano indicando se o número é primo ou não. Para encontrar os números primos em um intervalo, você pode usar um loop para iterar de 1 até N e chamar o método de verificação de primalidade para cada número.
Use o seguinte método personalizado:
// Método para verificar se um número é primo
public static boolean ehPrimo(int numero) {
if (numero <= 1) return false;
if (numero <= 3) return true;
if (numero % 2 == 0) return false;
int raiz = (int) Math.sqrt(numero);
for (int i = 3; i <= raiz; i += 2) {
if (numero % i == 0) return false;
}
return true;
}
import java.util.Scanner;
public class NumerosPrimos {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Verificando se um número específico é primo
System.out.print("Digite um número para verificar se é primo: ");
int numero = scanner.nextInt();
if (ehPrimo(numero)) {
System.out.println(numero + " é um número primo.");
} else {
System.out.println(numero + " não é um número primo.");
}
// Encontrando números primos em um intervalo
System.out.print("\nDigite um número N para encontrar todos os primos de 1 a N: ");
int n = scanner.nextInt();
System.out.println("\nNúmeros primos de 1 a " + n + ":");
// Caso especial para o número 1
if (n >= 1) {
System.out.println("1 não é considerado primo.");
}
// Verificando cada número no intervalo
int contador = 0;
for (int i = 2; i <= n; i++) {
if (ehPrimo(i)) {
System.out.print(i + " ");
contador++;
// Quebra de linha a cada 10 números para melhor visualização
if (contador % 10 == 0) {
System.out.println();
}
}
}
System.out.println("\n\nTotal de números primos encontrados: " + contador);
scanner.close();
}
// Método para verificar se um número é primo
public static boolean ehPrimo(int numero) {
// Casos especiais
if (numero <= 1) {
return false; // 0 e 1 não são primos
}
if (numero <= 3) {
return true; // 2 e 3 são primos
}
// Verificando divisibilidade por 2
if (numero % 2 == 0) {
return false; // Números pares maiores que 2 não são primos
}
// Verificando divisibilidade por ímpares até a raiz quadrada
// Otimização: só precisamos verificar até a raiz quadrada do número
int raiz = (int) Math.sqrt(numero);
for (int i = 3; i <= raiz; i += 2) {
if (numero % i == 0) {
return false; // Encontrou um divisor
}
}
return true; // Nenhum divisor encontrado
}
}
Digite um número para verificar se é primo: 17
17 é um número primo.
Digite um número N para encontrar todos os primos de 1 a N: 50
Números primos de 1 a 50:
1 não é considerado primo.
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47
Total de números primos encontrados: 15
Observação sobre otimização: Para verificar se um número é primo, só precisamos dividir até a raiz quadrada do número. Se não houver divisores até esse ponto, não haverá divisores maiores que a raiz quadrada.
Crie um programa que leia uma frase do usuário e conte:
Você pode usar o método split() da classe String para dividir a frase em palavras. Para contar vogais e consoantes, percorra cada caractere da frase e verifique se é uma letra, e se é uma vogal ou consoante.
import java.util.Scanner;
public class ContadorPalavras {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Digite uma frase:");
String frase = scanner.nextLine();
// Contando o número de caracteres (excluindo espaços)
int totalCaracteres = 0;
for (int i = 0; i < frase.length(); i++) {
if (frase.charAt(i) != ' ') {
totalCaracteres++;
}
}
// Contando o número de palavras
String[] palavras = frase.split("\\s+"); // Divide a frase por um ou mais espaços
int totalPalavras = palavras.length;
// Se a frase estiver vazia, não há palavras
if (frase.trim().isEmpty()) {
totalPalavras = 0;
}
// Contando vogais e consoantes
int vogais = 0;
int consoantes = 0;
for (int i = 0; i < frase.length(); i++) {
char c = Character.toLowerCase(frase.charAt(i));
if (c >= 'a' && c <= 'z') { // Verifica se é uma letra
if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') {
vogais++;
} else {
consoantes++;
}
}
}
// Exibindo os resultados
System.out.println("\nAnálise da frase:");
System.out.println("Total de caracteres (excluindo espaços): " + totalCaracteres);
System.out.println("Total de palavras: " + totalPalavras);
System.out.println("Total de vogais: " + vogais);
System.out.println("Total de consoantes: " + consoantes);
scanner.close();
}
}
Digite uma frase:
Java é uma linguagem de programação incrível!
Análise da frase:
Total de caracteres (excluindo espaços): 38
Total de palavras: 7
Total de vogais: 17
Total de consoantes: 17
Observação: Este programa considera apenas as letras básicas do alfabeto inglês. Para um programa mais completo, seria necessário considerar letras acentuadas, caracteres especiais e outros alfabetos.
Teste seus conhecimentos sobre os desafios apresentados:
Reforce o conteúdo desta aula com mais dois exercícios práticos: