Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

<p>DOMINANDO JAVA:</p><p>100+ Exercícios Resolvidos e Comentados para</p><p>Acelerar seu Aprendizado</p><p>Ruhan Avila da Conceição</p><p>Prefácio</p><p>Seja bem-vindo a este livro onde são apresentados exercícios resolvidos e comentados de</p><p>Java. Neste livro, você encontrará uma coleção de mais de 100 exercícios elaborados para</p><p>ajudá-lo a aprimorar suas habilidades de programação nessa poderosa linguagem, utilizada em</p><p>mais de 1 bilhão de dispositivos.</p><p>Aprender a programar envolve não apenas a compreensão dos conceitos teóricos, mas</p><p>também a aplicação prática desses conceitos em situações reais. É exatamente isso que você</p><p>encontrará neste livro: uma ampla variedade de problemas que abrangem desde os fundamentos</p><p>básicos até desafios mais complexos.</p><p>Cada exercício é acompanhado de uma solução completa e detalhada, que não apenas</p><p>apresenta o código-fonte, mas também explica o raciocínio por trás da abordagem adotada. Esses</p><p>comentários comentam conceitos importantes, fornecem dicas valiosas e ajudam a entender</p><p>como a lógica de programação pode ser aplicada de maneira eficiente na resolução de problemas.</p><p>À medida que você avança pelos exercícios, será desafiado a lidar com questões de</p><p>manipulação de fórmulas matemáticas, strings, condicionais, laços de repetição, manipulação de</p><p>vetores, matrizes e muito mais.</p><p>O objetivo principal deste livro é fornecer um recurso prático e abrangente para</p><p>programadores em busca de aprimoramento. Seja você um iniciante em Java procurando</p><p>consolidar seus conhecimentos, ou um programador experiente desejando aprofundar sua</p><p>expertise, esses exercícios servirão como um excelente guia de estudo e referência. Esse livro</p><p>também é indicado para professores que desejariam possuir um material rico de exercícios de</p><p>Lógica de Programação resolvidos para elaborar exercícios e questões aos seus alunos.</p><p>Em diversas questões, são apresentadas mais de uma solução para o mesmo problema</p><p>proposto, envolvendo estratégias e técnicas distintas.</p><p>Aproveite esta jornada de aprendizado e aventure-se pelos exercícios resolvidos e comentados</p><p>de Java. Prepare-se para desafios estimulantes, soluções criativas e uma oportunidade única de</p><p>aprimorar suas habilidades de programação.</p><p>Este livro foi escrito utilizando ferramentas de inteligência artificial na elaboração do</p><p>conteúdo, porém todo material foi revisado e editado pelo autor, a fim de entregar um produto</p><p>final de alta qualidade.</p><p>Boa leitura, bons estudos e divirta-se explorando o mundo fascinante da programação em</p><p>Java!</p><p>Ruhan Avila da Conceição.</p><p>Sumário</p><p>Introdução</p><p>Fórmulas Matemáticas</p><p>Strings</p><p>Condicionais</p><p>Laços de Repetição</p><p>Vetores</p><p>Matrizes</p><p>Funções Recursivas</p><p>Exercícios Extras</p><p>Lista Completa de Exercícios</p><p>Conteúdo Adicional</p><p>Sobre o Autor</p><p>Introdução</p><p>Se você adquiriu este livro, você quer começar a programar e ser desafiado logicamente o</p><p>quanto antes, não querendo ler um sermão da montanha. Mas, é importante ressaltarmos</p><p>algumas coisas antes.</p><p>Por mais que diversos exercícios possam ser considerados fáceis, se você é novo nesta</p><p>jornada de programação, é importante você primeiramente tentar resolver o problema para então</p><p>ir para a resolução do mesmo. Existe mais de uma solução possível para o mesmo problema.</p><p>E, você precisa pensar e elaborar a sua solução. Então, você compara com a proposta no livro,</p><p>verifica quais potencialidade de cada uma, e tenta aprender um pouco mais.</p><p>Se o exercício for muito difícil, e não conseguir resolver, pule para o próximo, e tente</p><p>novamente no dia seguinte. Não vá de imediato para a resposta, mesmo que você não consiga</p><p>resolver, e muito menos vá para a resposta sem ao menos tentar.</p><p>Aprender lógica de programação não é obter a resposta, mas sim trilhar o caminho até</p><p>chegar na resposta.</p><p>Dito isto, os demais capítulos deste livro estão divididos de acordo com os tópicos de</p><p>programação dos exercícios propostos:</p><p>● Fórmulas Matemáticas (15 exercícios)</p><p>● Strings (10 exercícios)</p><p>● Condicionais (20 exercícios)</p><p>● Laços de Repetição (25 exercícios)</p><p>● Vetores (10 exercícios)</p><p>● Matrizes (10 exercícios)</p><p>● Funções Recursivas (10 exercícios)</p><p>● + Exercícios Extras ao Final</p><p>Você pode conferir a lista completa de exercícios ao final do livro.</p><p>A partir de agora, é tudo com você!</p><p>Fórmulas Matemáticas</p><p>1. Escreva um programa que solicite ao usuário dois números e exiba a soma,</p><p>subtração, multiplicação e divisão entre eles.</p><p>Nesse programa, utilizamos a classe Scanner para obter a entrada do usuário. Primeiro,</p><p>solicitamos o primeiro número e armazenamos em numero1. Em seguida, solicitamos o segundo</p><p>número e armazenamos em numero2.</p><p>Em seguida, realizamos as operações matemáticas e armazenamos os resultados nas variáveis</p><p>soma, subtracao, multiplicacao e divisao. Por fim, exibimos os resultados na tela utilizando</p><p>System.out.println().</p><p>2. Escreva um programa que calcule a média aritmética de dois números.</p><p>Nesse programa, utilizamos a classe Scanner para obter a entrada do usuário. Primeiro,</p><p>solicitamos o primeiro número e armazenamos em numero1. Em seguida, solicitamos o segundo</p><p>número e armazenamos em numero2.</p><p>Em seguida, calculamos a média aritmética dos dois números, somando-os e dividindo o</p><p>resultado por 2, e armazenamos o valor na variável media.</p><p>Por fim, exibimos a média na tela utilizando System.out.println().</p><p>3. Crie um programa que calcule e exiba a média aritmética de três notas</p><p>informadas pelo usuário.</p><p>Nesse programa, utilizamos a classe Scanner para obter a entrada do usuário. Solicitamos ao</p><p>usuário que informe as três notas, que são armazenadas nas variáveis nota1, nota2 e nota3.</p><p>Em seguida, calculamos a média aritmética das três notas, somando-as e dividindo o resultado</p><p>por 3, e armazenamos o valor na variável media.</p><p>Por fim, exibimos a média na tela utilizando System.out.println().</p><p>4. Escreva um programa que calcule a média geométrica entre três números</p><p>informados pelo usuário</p><p>Nesse programa, utilizamos a classe Scanner para obter a entrada do usuário. Solicitamos ao</p><p>usuário que informe os três números, que são armazenados nas variáveis numero1, numero2 e</p><p>numero3.</p><p>Em seguida, calculamos a média geométrica dos três números utilizando a fórmula:</p><p>mediaGeometrica = (numero1 * numero2 * numero3)^(1/3). Utilizamos a função Math.pow()</p><p>para calcular a raiz cúbica dos produtos dos números.</p><p>Por fim, exibimos a média geométrica na tela utilizando System.out.println().</p><p>5. Escreva um programa que calcule o IMC de um indivíduo, utilizando a</p><p>fórmula IMC = peso / altura²</p><p>Nesse programa, utilizamos a classe Scanner para obter a entrada do usuário. Solicitamos ao</p><p>usuário que informe o peso em quilogramas, que é armazenado na variável peso, e a altura em</p><p>metros, que é armazenada na variável altura.</p><p>Em seguida, calculamos o IMC utilizando a fórmula IMC = peso / (altura * altura), e</p><p>armazenamos o resultado na variável imc.</p><p>Por fim, exibimos o valor do IMC na tela utilizando System.out.println().</p><p>6. Crie um programa que calcule e exiba o perímetro de um círculo, solicitando</p><p>o raio ao usuário.</p><p>Nesse programa, utilizamos a classe Scanner para obter a entrada do usuário. Solicitamos ao</p><p>usuário que informe o raio do círculo, que é armazenado na variável raio.</p><p>Em seguida, calculamos o perímetro do círculo utilizando a fórmula 2 * π * raio, onde π é o</p><p>valor da constante pi (aproximadamente 3.14159), que é obtido através da constante Math.PI em</p><p>Java.</p><p>Por fim, exibimos o valor do perímetro na tela utilizando System.out.println().</p><p>7. Escreva um programa que calcule a área de um círculo a partir do raio,</p><p>utilizando a fórmula A = πr²</p><p>Nesse programa, utilizamos a classe Scanner para obter a entrada do usuário. Solicitamos ao</p><p>usuário que informe o raio do círculo, que é armazenado na variável raio.</p><p>Em seguida, calculamos a área do círculo utilizando a fórmula A = πr², onde π é o valor da</p><p>constante pi (aproximadamente 3.14159), que é obtido através da constante Math.PI em Java. A</p><p>função Math.pow() é usada para elevar o raio ao quadrado.</p><p>Por fim, exibimos o valor da área na tela utilizando System.out.println().</p><p>no console,</p><p>imprimindo cada valor seguido por um espaço em branco.</p><p>A lógica por trás do código é percorrer as posições da matriz original e atribuir os valores</p><p>correspondentes à matriz transposta nas posições invertidas. Dessa forma, obtemos a matriz</p><p>transposta.</p><p>Declarando Funções</p><p>Neste programa, criamos uma matriz 4x4 chamada matriz e utilizamos um loop aninhado para</p><p>preencher cada posição da matriz com valores aleatórios usando a classe Random. No exemplo,</p><p>os valores aleatórios são gerados entre 0 e 9.</p><p>Em seguida, utilizamos o método exibirMatriz para exibir a matriz original na tela.</p><p>Depois, chamamos o método calcularMatrizTransposta, que recebe a matriz original como</p><p>parâmetro e retorna a matriz transposta. Esse método percorre as posições da matriz original e</p><p>atribui o valor correspondente à posição inversa na matriz transposta.</p><p>Por fim, utilizamos novamente o método exibirMatriz para exibir a matriz transposta na tela.</p><p>83. Faça um programa que leia duas matrizes 2x2 e exiba a soma das duas</p><p>matrizes.</p><p>Neste programa, declaramos três matrizes: matriz1, matriz2 e resultado. Em seguida,</p><p>utilizamos dois loops for aninhados para ler os valores das duas matrizes do usuário.</p><p>Depois, temos outro loop for aninhado para calcular a soma das duas matrizes, armazenando</p><p>o resultado na matriz resultado.</p><p>Por fim, utilizamos mais um loop for aninhado para exibir a matriz resultado no console.</p><p>84. Faça um programa que preencha uma matriz 5x5 com números inteiros e</p><p>exiba o maior valor da matriz e a posição em que ele se encontra.</p><p>Neste programa, declaramos a matriz 5x5 chamada matriz. Também declaramos as variáveis</p><p>maiorValor, linhaMaiorValor e colunaMaiorValor para armazenar o maior valor encontrado e</p><p>suas respectivas coordenadas na matriz.</p><p>Utilizamos dois loops for aninhados para preencher a matriz com os valores informados pelo</p><p>usuário. Ao preencher cada elemento da matriz, comparamos o valor atual com o maiorValor</p><p>atual. Caso o valor seja maior, atualizamos o maiorValor e armazenamos as coordenadas do</p><p>novo maior valor.</p><p>Por fim, exibimos o maiorValor e a posição [linhaMaiorValor][colunaMaiorValor] onde ele</p><p>se encontra na matriz.</p><p>85. Faça um programa que leia uma matriz 3x3 e calcule a média dos valores</p><p>presentes nas posições pares (soma dos índices par) da matriz.</p><p>Neste programa, declaramos a matriz 3x3 chamada matriz. Também declaramos as variáveis</p><p>soma para armazenar a soma dos valores nas posições pares e quantidade para contar quantos</p><p>valores estão nas posições pares.</p><p>Utilizamos dois loops for aninhados para preencher a matriz com os valores informados pelo</p><p>usuário. Ao preencher cada elemento da matriz, verificamos se a posição (i + j) é par. Caso seja</p><p>par, adicionamos o valor à soma e incrementamos quantidade.</p><p>Depois de percorrer toda a matriz e somar os valores das posições pares, calculamos a média</p><p>dividindo a soma pela quantidade.</p><p>Por fim, exibimos a média calculada.</p><p>86. Faça um programa que preencha uma matriz 4x4 com números aleatórios e</p><p>exiba a soma dos valores presentes em cada linha e em cada coluna.</p><p>Neste programa, declaramos a matriz 4x4 chamada matriz e utilizamos a classe Random para</p><p>gerar números aleatórios.</p><p>Em seguida, utilizamos dois loops for aninhados para preencher a matriz com números</p><p>aleatórios entre 0 e 99. Após preencher a matriz, exibimos a matriz completa.</p><p>Em seguida, utilizamos outro loop for para calcular a soma dos valores em cada linha. Para</p><p>cada linha, percorremos todos os elementos daquela linha e somamos os valores. Exibimos a</p><p>soma de cada linha.</p><p>Por fim, utilizamos mais um loop for para calcular a soma dos valores em cada coluna. Para</p><p>cada coluna, percorremos todos os elementos daquela coluna e somamos os valores. Exibimos a</p><p>soma de cada coluna.</p><p>87. Faça um programa que leia uma matriz 3x3 e calcule o determinante da</p><p>matriz.</p><p>A matriz 3x3 é uma matriz com três linhas e três colunas, e é representada por uma matriz</p><p>bidimensional em Java, com dimensões 3x3.</p><p>A lógica do programa é a seguinte:</p><p>- Criamos a matriz 3x3 chamada matriz usando int[][] matriz = new int[3][3].</p><p>- Utilizamos um loop for aninhado para percorrer cada posição da matriz e ler os valores</p><p>digitados pelo usuário.</p><p>- Calculamos o determinante da matriz usando a fórmula matemática para matrizes 3x3.</p><p>- Exibimos o valor do determinante na saída.</p><p>88. Faça um programa que leia duas matrizes e dê como resposta a</p><p>multiplicação entre elas. O programa deverá observar se é possível ou não</p><p>realizar a multiplicação entre as duas matrizes.</p><p>Primeiro, importamos a classe Scanner para ler os dados de entrada do usuário.</p><p>Em seguida, declaramos a classe MultiplicacaoMatrizes e o método main, que é o ponto de</p><p>entrada do programa.</p><p>Dentro do método main, criamos um objeto Scanner para ler os valores do usuário.</p><p>Solicitamos ao usuário que informe o número de linhas e colunas da primeira matriz (linhasA</p><p>e colunasA, respectivamente).</p><p>Solicitamos também que o usuário informe o número de linhas e colunas da segunda matriz</p><p>(linhasB e colunasB, respectivamente).</p><p>Verificamos se a multiplicação é possível comparando o número de colunas da primeira</p><p>matriz (colunasA) com o número de linhas da segunda matriz (linhasB). Se não for possível,</p><p>exibimos uma mensagem de erro e o programa é encerrado usando System.exit(0).</p><p>Criamos três matrizes: matrizA para armazenar a primeira matriz informada pelo usuário,</p><p>matrizB para armazenar a segunda matriz informada pelo usuário e matrizResultado para</p><p>armazenar o resultado da multiplicação.</p><p>Utilizamos loops aninhados para ler os elementos da primeira matriz. O loop externo percorre</p><p>as linhas (i de 0 a linhasA-1) e o loop interno percorre as colunas (j de 0 a colunasA-1). Usamos</p><p>o método nextInt() do objeto Scanner para ler cada elemento e atribuí-lo à posição correta na</p><p>matriz.</p><p>Repetimos o mesmo processo para ler os elementos da segunda matriz, utilizando os loops</p><p>para percorrer as linhas (i de 0 a linhasB-1) e colunas (j de 0 a colunasB-1).</p><p>Utilizamos três loops aninhados para calcular o resultado da multiplicação das matrizes. O</p><p>loop externo percorre as linhas da primeira matriz (i de 0 a linhasA-1), o segundo loop percorre</p><p>as colunas da segunda matriz (j de 0 a colunasB-1) e o terceiro loop (k de 0 a colunasA-1)</p><p>realiza a multiplicação dos elementos correspondentes e acumula o resultado na matriz</p><p>matrizResultado.</p><p>Após calcular a matriz resultado, utilizamos loops aninhados para exibir os elementos da</p><p>matriz, percorrendo as linhas (i de 0 a linhasA-1) e as colunas (j de 0 a colunasB-1), e usando</p><p>System.out.print para exibir cada elemento na mesma linha. Após exibir os elementos de uma</p><p>linha, utilizamos System.out.println para pular para a próxima linha.</p><p>Por fim, fechamos o objeto Scanner e o programa é encerrado.</p><p>89. Faça um programa que leia uma matriz 4x4 e verifique se ela é uma matriz</p><p>diagonal, isto é, se todos os elementos fora da diagonal principal são iguais a</p><p>zero.</p><p>Importamos a classe Scanner para leitura dos dados do usuário.</p><p>Declaramos a classe MatrizDiagonal e o método main, que é o ponto de entrada do</p><p>programa.</p><p>Criamos um objeto Scanner para ler os valores do usuário.</p><p>Definimos a variável tamanho com o valor 4 para representar o tamanho da matriz 4x4.</p><p>Criamos uma matriz de inteiros chamada matriz com o tamanho definido.</p><p>Utilizamos dois loops aninhados para ler os elementos da matriz. O primeiro loop percorre as</p><p>linhas (i) de 0 a tamanho-1 e o segundo loop percorre as colunas (j) de 0 a tamanho-1.</p><p>Solicitamos ao usuário que digite o valor de cada elemento e armazenamos na posição correta da</p><p>matriz.</p><p>Definimos a variável ehDiagonal como true para iniciar a verificação da diagonal.</p><p>Utilizamos dois loops aninhados para percorrer todos os elementos da matriz. O primeiro loop</p><p>percorre as linhas (i) de 0 a tamanho-1 e o segundo loop percorre as colunas (j) de 0 a tamanho-</p><p>1. Verificamos se o elemento atual está fora da diagonal principal (i != j) e se é diferente de zero.</p><p>Se essa condição for verdadeira,</p><p>definimos a variável ehDiagonal como false e interrompemos a</p><p>verificação.</p><p>Após verificar todos os elementos da matriz, exibimos uma mensagem indicando se a matriz</p><p>é diagonal ou não.</p><p>Fechamos o objeto Scanner e encerramos o programa.</p><p>90. Faça um programa que leia uma matriz m x n, indicando o local onde há</p><p>minas de um jogo de campo minado (sendo 0 para campo neutro, e 1 para</p><p>locais onde haveriam minas), e o programa deveria retornar uma matriz</p><p>indicando, para cada posição, o número de minas nas casas vizinhas.</p><p>Importamos a classe Scanner para leitura dos dados do usuário.</p><p>Definimos a classe CampoMinado e o método main como ponto de entrada do programa.</p><p>Criamos um objeto Scanner para ler as dimensões da matriz.</p><p>Solicitamos ao usuário que digite o número de linhas e colunas da matriz.</p><p>Criamos uma matriz chamada campoMinado com as dimensões informadas pelo usuário.</p><p>Utilizamos dois loops aninhados para ler a matriz campoMinado, solicitando ao usuário que</p><p>digite o valor de cada elemento.</p><p>Criamos outra matriz chamada resultado com as mesmas dimensões da matriz campoMinado</p><p>para armazenar a contagem de minas nas casas vizinhas.</p><p>Utilizamos dois loops aninhados para percorrer a matriz campoMinado.</p><p>Verificamos se a posição atual contém uma mina (valor igual a 1).</p><p>Chamamos o método incrementarVizinhos para incrementar o número de minas nas casas</p><p>vizinhas na matriz resultado.</p><p>O método incrementarVizinhos recebe a matriz resultado, a linha e a coluna da posição atual</p><p>como parâmetros.</p><p>Dentro do método incrementarVizinhos, obtemos as dimensões da matriz resultado.</p><p>Utilizamos dois loops aninhados para percorrer os vizinhos em torno da posição atual.</p><p>Verificamos se a posição é válida e não é a posição atual.</p><p>Incrementamos o valor na posição correspondente na matriz resultado.</p><p>Após percorrer toda a matriz campoMinado, exibimos a matriz resultado, que contém a</p><p>contagem de minas nas casas vizinhas.</p><p>Fechamos o objeto Scanner e encerramos o programa.</p><p>Funções Recursivas</p><p>91. Escreva uma função recursiva para calcular o fatorial de um número.</p><p>Na função calcularFatorial, verificamos se o número é igual a 0. Se for, retornamos 1, pois o</p><p>fatorial de 0 é definido como 1.</p><p>Caso o número não seja 0, calculamos o fatorial chamando a função calcularFatorial</p><p>recursivamente, passando como argumento o número decrementado em 1.</p><p>Na chamada recursiva, o número vai sendo decrementado até que atinja 0, onde a condição de</p><p>parada é satisfeita e o cálculo do fatorial é finalizado.</p><p>A cada chamada recursiva, multiplicamos o número atual pelo resultado da chamada</p><p>recursiva com o número decrementado.</p><p>O valor do fatorial é retornado pela função.</p><p>No método main, é feita uma chamada à função calcularFatorial com o número 5 como</p><p>argumento.</p><p>O resultado é armazenado na variável resultado e exibido na tela.</p><p>92. Implemente uma função recursiva para calcular a sequência de Fibonacci</p><p>até um determinado número.</p><p>Na função calcularFibonacci, verificamos se o número é igual a 0 ou 1. Se for, retornamos o</p><p>próprio número, pois os primeiros dois termos da sequência de Fibonacci são 0 e 1.</p><p>Caso o número não seja 0 ou 1, calculamos o próximo termo da sequência chamando a função</p><p>calcularFibonacci recursivamente, passando como argumento o número decrementado em 1 e o</p><p>número decrementado em 2.</p><p>Na chamada recursiva, somamos o resultado da chamada com numero - 1 e o resultado da</p><p>chamada com numero - 2, o que representa a soma dos dois termos anteriores da sequência.</p><p>O valor do termo da sequência é retornado pela função.</p><p>No método main, é feito um loop para calcular e exibir os termos da sequência de Fibonacci</p><p>até o limite especificado (50, no exemplo).</p><p>93. Crie uma função recursiva para verificar se um número é primo.</p><p>Na função verificarPrimo, verificamos se o número é menor ou igual a 1, pois números</p><p>menores ou iguais a 1 não são considerados primos. Nesse caso, retornamos false.</p><p>Caso contrário, chamamos a função verificarPrimoRecursivo para fazer a verificação</p><p>recursiva.</p><p>Na função verificarPrimoRecursivo, verificamos se o divisor é igual ao número. Se for, isso</p><p>significa que o número é divisível apenas por 1 e por ele mesmo, portanto, é primo. Nesse caso,</p><p>retornamos true.</p><p>Caso contrário, verificamos se o número é divisível pelo divisor. Se for, isso significa que não</p><p>é primo, pois encontramos um divisor diferente de 1 e do próprio número. Nesse caso,</p><p>retornamos false.</p><p>Se o número não for divisível pelo divisor, chamamos novamente a função</p><p>verificarPrimoRecursivo incrementando o divisor em 1, para continuar a verificação recursiva.</p><p>O resultado da verificação é retornado pela função.</p><p>No exemplo acima, o número 17 é verificado como sendo primo. A função verificarPrimo é</p><p>chamada e o resultado é exibido.</p><p>94. Desenvolva uma função recursiva para calcular a soma dos dígitos de um</p><p>número inteiro.</p><p>A função calcularSomaDigitos recebe um número inteiro como parâmetro.</p><p>Se o número for menor que 10, significa que ele é um único dígito, então retornamos esse</p><p>número diretamente.</p><p>Caso contrário, calculamos o resto da divisão do número por 10, que representa o último</p><p>dígito do número.</p><p>Em seguida, chamamos recursivamente a função calcularSomaDigitos passando o número</p><p>dividido por 10, removendo assim o último dígito.</p><p>A cada chamada recursiva, somamos o último dígito com o resultado da soma dos dígitos</p><p>restantes.</p><p>No final, quando o número se tornar menor que 10, a recursão termina e a soma dos dígitos é</p><p>retornada.</p><p>No exemplo acima, a função calcularSomaDigitos é chamada com o número 12345 e o</p><p>resultado é a soma dos dígitos desse número, que é 15.</p><p>95. Escreva uma função recursiva para calcular a potência de um número</p><p>inteiro elevado a um expoente.</p><p>A função calcularPotencia recebe dois parâmetros: a base e o expoente.</p><p>Se o expoente for igual a 0, retornamos 1, pois qualquer número elevado a 0 é igual a 1.</p><p>Caso contrário, chamamos recursivamente a função calcularPotencia passando a mesma base</p><p>e o expoente decrementado em 1.</p><p>A cada chamada recursiva, multiplicamos a base pelo resultado da potência com expoente</p><p>decrementado.</p><p>A recursão continua até que o expoente se torne igual a 0, momento em que a recursão</p><p>termina e retorna o resultado final da potência.</p><p>No exemplo acima, a função calcularPotencia é chamada com base igual a 2 e expoente igual</p><p>a 5, e o resultado é 32, que é 2 elevado a 5.</p><p>96. Implemente uma função recursiva para encontrar o máximo divisor comum</p><p>(MDC) de dois números.</p><p>A função calcularMDC recebe dois parâmetros: numero1 e numero2.</p><p>Se numero2 for igual a 0, significa que numero1 é o MDC, então retornamos numero1.</p><p>Caso contrário, chamamos recursivamente a função calcularMDC passando numero2 como</p><p>o novo numero1 e numero1 % numero2 como o novo numero2. Isso é feito para encontrar o</p><p>MDC entre numero2 e o resto da divisão entre numero1 e numero2.</p><p>A recursão continua até que numero2 se torne igual a 0, momento em que a recursão termina</p><p>e retorna numero1, que é o MDC.</p><p>No exemplo acima, a função calcularMDC é chamada com numero1 igual a 36 e numero2</p><p>igual a 48, e o resultado é 12, que é o MDC entre esses dois números.</p><p>97. Crie uma função recursiva para inverter uma string.</p><p>A função inverterString recebe uma string texto como parâmetro.</p><p>Se a string estiver vazia (texto.isEmpty()), retornamos a string vazia.</p><p>Caso contrário, pegamos o primeiro caractere da string (texto.charAt(0)) e o concatenamos</p><p>com a chamada recursiva da função inverterString passando o restante da string</p><p>(texto.substring(1)). Isso é feito para inverter o restante da string.</p><p>A recursão continua até que a string se torne vazia, momento em que a recursão termina e a</p><p>string invertida é formada pela concatenação dos caracteres em ordem inversa.</p><p>No exemplo acima, a função inverterString é chamada com a string "Olá, mundo!" e o</p><p>resultado é "!odnum ,álO", que é a string invertida.</p><p>98. Desenvolva uma função recursiva para encontrar o menor valor em um</p><p>vetor.</p><p>A função encontrarMenorValor é responsável por chamar a função recursiva</p><p>encontrarMenorValorRecursivo</p><p>passando o vetor e os índices de início e fim.</p><p>Na função encontrarMenorValorRecursivo, verificamos se o índice de início é igual ao</p><p>índice de fim. Se forem iguais, significa que temos apenas um elemento no vetor, então</p><p>retornamos esse elemento como o menor valor.</p><p>Caso contrário, calculamos o índice do meio do vetor e fazemos duas chamadas recursivas:</p><p>uma para a metade esquerda do vetor (de inicio até meio) e outra para a metade direita do vetor</p><p>(de meio + 1 até fim).</p><p>Em cada chamada recursiva, obtemos o menor valor encontrado na metade correspondente.</p><p>Por fim, retornamos o menor valor entre o valor encontrado na metade esquerda e o valor</p><p>encontrado na metade direita usando o método Math.min().</p><p>No exemplo acima, a função encontrarMenorValor é chamada com um vetor de inteiros e o</p><p>menor valor presente no vetor é retornado e exibido.</p><p>99. Escreva uma função recursiva para determinar se uma palavra é um</p><p>palíndromo.</p><p>A função verificarPalindromo é responsável por verificar se a palavra é um palíndromo. Ela</p><p>recebe a palavra como parâmetro.</p><p>Na base da recursão, quando a palavra possui apenas 1 caractere (ou nenhum), consideramos</p><p>que é um palíndromo, então retornamos true.</p><p>Caso contrário, comparamos o primeiro caractere da palavra com o último caractere. Se eles</p><p>forem iguais, removemos o primeiro e o último caractere da palavra e chamamos recursivamente</p><p>a função verificarPalindromo com a nova palavra resultante.</p><p>Repetimos o processo até atingir a base da recursão ou até encontrar uma diferença entre os</p><p>caracteres. Se em algum momento os caracteres comparados forem diferentes, retornamos false.</p><p>Se a função chegar até o final sem encontrar diferenças, isso significa que a palavra é um</p><p>palíndromo, então retornamos true.</p><p>No exemplo acima, a função verificarPalindromo é chamada com a palavra "radar" e o</p><p>resultado é exibido.</p><p>100. Implemente uma função recursiva para calcular a soma dos elementos de</p><p>um vetor.</p><p>A função calcularSomaVetor recebe o vetor como parâmetro, juntamente com o índice atual</p><p>para realizar a soma.</p><p>Na base da recursão, quando o índice é menor que zero, significa que chegamos ao final do</p><p>vetor e retornamos zero como valor da soma.</p><p>Caso contrário, somamos o elemento do vetor no índice atual com a chamada recursiva da</p><p>função calcularSomaVetor passando o vetor e o índice anterior.</p><p>Repetimos o processo até chegar à base da recursão, somando todos os elementos do vetor.</p><p>No exemplo acima, a função calcularSomaVetor é chamada com um vetor de exemplo {1, 2,</p><p>3, 4, 5}, e o resultado é exibido.</p><p>Exercícios Extras</p><p>101. Faça o Algoritmo BubbleSort em Java</p><p>O algoritmo Bubble Sort é um algoritmo de ordenação simples que funciona percorrendo</p><p>repetidamente a lista, comparando pares de elementos adjacentes e trocando-os se estiverem na</p><p>ordem errada. Ele recebe esse nome porque os elementos maiores "flutuam" gradualmente para o</p><p>final da lista, assim como as bolhas em um tanque de água.</p><p>Aqui está uma explicação passo a passo do funcionamento do Bubble Sort:</p><p>1. Começamos com uma lista de elementos a serem ordenados.</p><p>2. Percorremos a lista do início ao fim.</p><p>3. Comparamos cada elemento atual com o próximo elemento na lista.</p><p>4. Se o elemento atual for maior que o próximo elemento, trocamos suas posições.</p><p>5. Repetimos esse processo até chegarmos ao final da lista.</p><p>6. Ao final da primeira iteração, o maior elemento terá sido movido para a última</p><p>posição.</p><p>7. Repetimos os passos 2 a 6 para o restante dos elementos, exceto o último.</p><p>8. A cada iteração, o maior elemento restante é colocado em sua posição correta no</p><p>final da lista.</p><p>9. Continuamos repetindo esse processo até que todos os elementos estejam na ordem</p><p>correta.</p><p>10. No final, a lista estará ordenada em ordem crescente.</p><p>Uma característica do Bubble Sort é que ele faz múltiplas passagens pela lista, comparando e</p><p>trocando elementos adjacentes. Em cada passagem, pelo menos um elemento é movido para a</p><p>posição correta. O número total de passagens necessárias é igual ao número de elementos menos</p><p>um.</p><p>Embora o Bubble Sort seja simples de entender e implementar, ele não é eficiente para listas</p><p>grandes, pois requer um número significativo de comparações e trocas. Sua complexidade de</p><p>tempo é ), onde "n" é o número de elementos na lista. Porém, para listas pequenas ou quase</p><p>ordenadas, pode ser uma opção razoável devido à sua simplicidade.</p><p>102. Faça um algoritmo que resolva a Torre de Hanoi, em java</p><p>Neste exemplo, o método resolverTorreDeHanoi é implementado de forma recursiva. Ele</p><p>recebe o número de discos, o pino de origem (A), o pino auxiliar (B) e o pino de destino (C). A</p><p>cada chamada recursiva, o método é chamado novamente para mover n-1 discos da origem para</p><p>o auxiliar usando o destino como auxiliar. Em seguida, o disco restante é movido da origem para</p><p>o destino. Por fim, os n-1 discos são movidos do auxiliar para o destino usando a origem como</p><p>auxiliar.</p><p>103. Faça uma função que receba uma matriz 3x3 representando o jogo da</p><p>velha, e verifique se há um ganhador, se houve empate, ou se o jogo ainda não</p><p>terminou.</p><p>104. Palavras-primas: Escreva um algoritmo que verifique se uma palavra é</p><p>uma "palavra-prima". Uma palavra é considerada uma "palavra-prima" se a</p><p>soma dos valores das letras (em que 'a' = 1, 'b' = 2, etc.) é um número primo.</p><p>105. Implemente um algoritmo que receba um número inteiro e gere a</p><p>sequência de Collatz para esse número. A sequência de Collatz é gerada</p><p>aplicando as seguintes regras: se o número é par, divida-o por 2; se o número é</p><p>ímpar, multiplique-o por 3 e some 1. Repita esse processo até chegar ao número</p><p>1.</p><p>Neste exemplo, a função generateCollatzSequence recebe um número inteiro como</p><p>parâmetro e gera a sequência de Collatz para esse número, imprimindo cada número da</p><p>sequência. No método main, um exemplo de uso é dado, onde a sequência de Collatz para o</p><p>número 27 é gerada e exibida no console.</p><p>Lista Completa de Exercícios</p><p>1. Escreva um programa que solicite ao usuário dois números e exiba a soma, subtração,</p><p>multiplicação e divisão entre eles.</p><p>2. Escreva um programa que calcule a média aritmética de dois números.</p><p>3. Crie um programa que calcule e exiba a média aritmética de três notas informadas pelo</p><p>usuário.</p><p>4. Escreva um programa que calcule a média geométrica entre três números informados pelo</p><p>usuário</p><p>5. Escreva um programa que calcule o IMC de um indivíduo, utilizando a fórmula IMC = peso /</p><p>altura²</p><p>6. Crie um programa que calcule e exiba o perímetro de um círculo, solicitando o raio ao usuário.</p><p>7. Escreva um programa que calcule a área de um círculo a partir do raio, utilizando a fórmula A</p><p>= πr²</p><p>8. Escreva um programa que calcule o delta de uma equação de segundo grau (Δ = b² - 4ac).</p><p>9. Escreva um programa que calcule o perímetro e a área de um retângulo, utilizando as fórmulas</p><p>P = 2(l + c) e A = lc, onde l é a largura e c é o comprimento</p><p>10. Escreva um programa que calcule o perímetro e a área de um triângulo, utilizando as</p><p>fórmulas P = a + b + c e A = (b * h) / 2, onde a, b e c são os lados do triângulo e h é a altura</p><p>relativa ao lado b.</p><p>11. Escreva um programa que calcule a velocidade média de um objeto, utilizando a fórmula v =</p><p>Δs/Δt, onde v é a velocidade média, Δs é a variação de espaço e Δt é a variação de tempo</p><p>12. Escreva um programa que calcule a energia cinética de um objeto em movimento, utilizando</p><p>a fórmula E = (mv²) / 2, onde E é a energia cinética, m é a massa do objeto e v é a velocidade.</p><p>13. Escreva um programa que calcule o trabalho realizado por uma força que atua sobre um</p><p>objeto, utilizando a fórmula T = F * d, onde T é o trabalho, F é a força aplicada e d é a distância</p><p>percorrida pelo objeto.</p><p>14. Escreva um programa que leia a posição x e y de dois pontos no plano cartesiano, e calcule a</p><p>distância entre ambos.</p><p>15. Crie um programa que solicite ao usuário o valor do raio de uma esfera e calcule e exiba o</p><p>seu volume.</p><p>16. Crie um programa que leia duas palavras e as concatene, exibindo a palavra resultante.</p><p>17. Faça um programa que receba uma palavra e exiba cada letra separadamente</p><p>(necessita de</p><p>laço de repetição).</p><p>18. Crie um programa que receba uma frase e substitua todas as letras "a" por "e".</p><p>19. Escreva um programa que receba um nome e verifique se o mesmo começa com a letra "A".</p><p>20. Faça um programa que leia uma palavra e verifique se a mesma é palíndromo (se pode ser</p><p>lida da mesma forma de trás para frente).</p><p>21. Crie um programa que leia duas palavras e verifique se a segunda palavra é um anagrama da</p><p>primeira.</p><p>22. Escreva um programa que receba um nome completo e exiba somente o primeiro nome.</p><p>23. Faça um programa que receba uma frase e exiba a quantidade de espaços em branco</p><p>presentes na mesma.</p><p>24. Crie um programa que leia uma palavra e exiba a quantidade de vogais presentes na mesma.</p><p>25. Escreva um programa que receba um nome completo e exiba o sobrenome (último nome)</p><p>primeiro.</p><p>26. Faça um programa que solicite a idade de uma pessoa e exiba se ela é maior de idade ou não.</p><p>27. Faça um programa que leia dois números e informe qual é o maior.</p><p>28. Escreva um programa que solicite três números ao usuário e exiba o maior deles.</p><p>29. Faça um programa que leia um número e informe se ele é par ou ímpar.</p><p>30. Faça um programa que leia um número e informe se ele é positivo, negativo ou zero.</p><p>31. Faça um programa que leia as notas de duas provas e informe se o aluno foi aprovado (nota</p><p>maior ou igual a 6) ou reprovado (nota menor que 6) em cada uma das provas.</p><p>32. Faça um programa que leia as notas de duas provas, calcule a média aritmética simples, e</p><p>informe se o aluno foi aprovado (média maior ou igual a 6) ou reprovado (média menor que 6).</p><p>33. Faça um programa que leia três números, e informe se a soma deles é divisível por 5 ou não.</p><p>34. Crie um programa que leia três números e verifique se a soma deles é positiva, negativa ou</p><p>igual a zero</p><p>35. Faça um programa que leia três números, e mostre eles na tela em ordem crescente.</p><p>36. Faça um programa que leia a idade de três pessoas e quantas delas é maior de idade (idade</p><p>maior ou igual a 18).</p><p>37. Faça um programa que leia três números e informe se eles podem ser os lados de um</p><p>triângulo (a soma de dois lados deve ser sempre maior que o terceiro lado).</p><p>38. Faça um programa que leia o ano de nascimento de uma pessoa e informe se ela está apta a</p><p>votar (idade maior ou igual a 16 anos).</p><p>39. Faça um programa que leia a idade de uma pessoa e informe se ela não está apta a votar</p><p>(idade inferior a 16 anos), se está apta a votar, porém não é obrigada (16, 17 anos, ou idade igual</p><p>ou superior a 70 anos), ou se é obrigada (18 a 69 anos).</p><p>40. Faça um programa que leia três notas de um aluno e informe se ele foi aprovado (nota final</p><p>maior ou igual a 7), reprovado (nota final menor que 4) ou ficou de recuperação (nota final entre</p><p>4 e 7).</p><p>41. Faça um programa que solicite o nome de um dia da semana e exiba se é um dia útil</p><p>(segunda a sexta-feira) ou um dia de fim de semana (sábado e domingo).</p><p>42. Escreva um programa que solicite a altura e o peso de uma pessoa e calcule o seu índice de</p><p>massa corporal (IMC), exibindo a categoria correspondente (abaixo do peso, peso normal,</p><p>sobrepeso, obesidade, obesidade grave).</p><p>43. Escreva um programa que solicite um número inteiro e verifique se é divisível por 3 e por 5</p><p>ao mesmo tempo.</p><p>44. Crie um programa que solicite a idade de uma pessoa e exiba se ela é criança (0-12 anos),</p><p>adolescente (13-17 anos), adulto (18-59 anos) ou idoso (60 anos ou mais).</p><p>45. Faça um programa que solicite dois números e exiba se o primeiro é divisível pelo segundo.</p><p>46. Escreva um programa que exiba os números de 1 a 10 utilizando um laço de repetição</p><p>47. Escreva um programa que exiba todos os números de 1 a 100</p><p>48. Escreva um programa que exiba todos os números pares de 1 a 100.</p><p>49. Escreva um programa que exiba os números pares de 1 a 50 e os números ímpares de 51 a</p><p>100 utilizando um laço de repetição.</p><p>50. Crie um programa que solicite ao usuário um número e exiba a tabuada desse número</p><p>utilizando um laço de repetição.</p><p>51. Escreva um programa que imprima na tela a tabuada de todos os números de 1 a 10</p><p>52. Escreva um programa que solicite ao usuário um número N e exiba a soma de todos os</p><p>números de 1 a N.</p><p>53. Faça um programa que calcule e exiba a soma dos números pares de 1 a 100 utilizando um</p><p>laço de repetição.</p><p>54. Escreva um programa que calcule e exiba o valor da potência de um número informado pelo</p><p>usuário elevado a um expoente também informado pelo usuário, utilizando laços de repetição.</p><p>55. Escreva um programa que solicite ao usuário um número N e diga se o mesmo é primo ou</p><p>não.</p><p>56. Escreva um programa que solicite ao usuário um número N e exiba todos os números primos</p><p>menores que N.</p><p>57. Crie um programa que exiba os primeiros N números primos, onde N é informado pelo</p><p>usuário, utilizando um laço de repetição.</p><p>58. Crie um programa que exiba os primeiros N primeiros quadrados perfeitos, onde N é</p><p>informado pelo usuário, utilizando um laço de repetição.</p><p>59. Escreva um programa que solicite ao usuário dois números A e B e exiba todos os números</p><p>entre A e B.</p><p>60. Escreva um programa que leia números do usuário até que seja digitado um número</p><p>negativo, e exiba a soma dos números positivos.</p><p>61. Faça um programa que solicite ao usuário um número e exiba a sequência de Fibonacci até o</p><p>número informado utilizando um laço de repetição.</p><p>62. Escreva um programa que leia números do usuário até que seja digitado zero, e exiba a média</p><p>dos números digitados.</p><p>63. Escreva um programa que solicite ao usuário uma lista de números, até o usuário digitar o</p><p>número zero, e exiba o maior e o menor número da lista.</p><p>64. Escreva um programa que solicite ao usuário uma frase e exiba a quantidade de vogais na</p><p>frase.</p><p>65. Escreva um programa que solicite ao usuário uma frase e exiba a frase de trás para frente</p><p>66. Escreva um programa que leia uma sequência de caracteres e indique se a mesma é um</p><p>palíndromo ou não.</p><p>67. Escreva um programa que solicite ao usuário um número e exiba os seus divisores.</p><p>68. Faça um programa que determine o menor múltiplo comum (MMC) entre dois números</p><p>informados pelo usuário.</p><p>69. Faça um programa que determine o máximo divisor comum (MDC) entre dois números</p><p>informados pelo usuário.</p><p>70. Faça um programa que solicite o CPF do usuário e então faça a validação do mesmo.</p><p>71. Crie um programa que leia um vetor de números inteiros e exiba a soma de todos os</p><p>elementos.</p><p>72. Faça um programa que leia um vetor de números inteiros e exiba o maior elemento presente</p><p>no vetor.</p><p>73. Escreva um programa que leia um vetor de números inteiros e exiba a média dos elementos.</p><p>74. Crie um programa que leia dois vetores de números inteiros com o mesmo tamanho e exiba</p><p>um novo vetor com a soma dos elementos correspondentes dos dois vetores.</p><p>75. Faça um programa que leia um vetor de números inteiros e verifique se ele está em ordem</p><p>crescente.</p><p>76. Escreva um programa que leia um vetor de números inteiros e exiba os elementos na ordem</p><p>inversa.</p><p>77. Crie um programa que leia um vetor de números inteiros e encontre o segundo maior</p><p>elemento presente no vetor.</p><p>78. Faça um programa que leia um vetor de números inteiros e exiba quantas vezes um número</p><p>específico aparece no vetor.</p><p>79. Escreva um programa que leia dois vetores de números inteiros com o mesmo tamanho e</p><p>exiba um novo vetor com os elementos resultantes da multiplicação dos elementos</p><p>correspondentes dos dois vetores.</p><p>80. Crie um programa que leia um vetor de números inteiros e verifique se todos os elementos</p><p>são pares.</p><p>81. Faça um programa que preencha uma matriz 3x3 com valores informados pelo usuário e</p><p>exiba a soma dos valores da diagonal principal.</p><p>82. Faça um programa que preencha uma matriz 4x4 com valores aleatórios e exiba a matriz</p><p>transposta.</p><p>83. Faça um programa que leia duas matrizes 2x2 e exiba a soma das duas matrizes.</p><p>84. Faça um programa que preencha uma matriz 5x5 com números inteiros e exiba o maior valor</p><p>da matriz e a posição em que ele se encontra.</p><p>85. Faça um programa que leia uma matriz 3x3 e calcule a média dos valores presentes nas</p><p>posições pares (soma dos índices par) da matriz.</p><p>86. Faça um programa que preencha uma matriz 4x4 com números aleatórios e exiba a soma dos</p><p>valores presentes em cada linha e em cada coluna.</p><p>87. Faça um programa que leia uma matriz 3x3 e calcule o determinante da matriz.</p><p>88. Faça um programa que leia duas matrizes e dê como resposta a multiplicação entre elas. O</p><p>programa deverá observar se é possível ou não realizar a multiplicação entre as duas matrizes.</p><p>89. Faça um programa que leia uma matriz 4x4 e verifique se ela é uma matriz diagonal, isto é,</p><p>se todos os elementos fora da diagonal principal são iguais a zero.</p><p>90. Faça um programa que leia uma matriz m x n, indicando o local onde há minas de um jogo</p><p>de campo minado (sendo 0 para campo neutro, e 1 para locais onde haveriam minas), e o</p><p>programa deveria retornar uma matriz indicando, para cada posição, o número de minas nas</p><p>casas vizinhas.</p><p>91. Escreva uma função recursiva para calcular o fatorial de um número.</p><p>92. Implemente uma função recursiva para calcular a sequência de Fibonacci até um determinado</p><p>número.</p><p>93. Crie uma função recursiva para verificar se um número é primo.</p><p>94. Desenvolva uma função recursiva para calcular a soma dos dígitos de um número inteiro.</p><p>95. Escreva uma função recursiva para calcular a potência de um número inteiro elevado a um</p><p>expoente.</p><p>96. Implemente uma função recursiva para encontrar o máximo divisor comum (MDC) de dois</p><p>números.</p><p>97. Crie uma função recursiva para inverter uma string.</p><p>98. Desenvolva uma função recursiva para encontrar o menor valor em um vetor.</p><p>99. Escreva uma função recursiva para determinar se uma palavra é um palíndromo.</p><p>100. Implemente uma função recursiva para calcular a soma dos elementos de um vetor.</p><p>101. Faça o Algoritmo BubbleSort em Java</p><p>102. Faça um algoritmo que resolva a Torre de Hanoi, em java</p><p>103. Faça uma função que receba uma matriz 3x3 representando o jogo da velha, e verifique se</p><p>há um ganhador, se houve empate, ou se o jogo ainda não terminou.</p><p>104. Palavras-primas: Escreva um algoritmo que verifique se uma palavra é uma "palavra-</p><p>prima". Uma palavra é considerada uma "palavra-prima" se a soma dos valores das letras (em</p><p>que 'a' = 1, 'b' = 2, etc.) é um número primo.</p><p>105. Implemente um algoritmo que receba um número inteiro e gere a sequência de Collatz para</p><p>esse número. A sequência de Collatz é gerada aplicando as seguintes regras: se o número é par,</p><p>divida-o por 2; se o número é ímpar, multiplique-o por 3 e some 1. Repita esse processo até</p><p>chegar ao número 1.</p><p>Conteúdo Adicional</p><p>Caso você queira acessar o código de todos os exercícios, você pode obtê-lo no link abaixo:</p><p>https://forms.gle/dzQEufFcj9U896Aj9</p><p>Cada arquivo está nomeado com o número do exercício, com a extensão .java.</p><p>Note que para compilar o arquivo, você deve renomear o arquivo para o mesmo nome da</p><p>classe.</p><p>https://forms.gle/dzQEufFcj9U896Aj9</p><p>Sobre o Autor</p><p>Ruhan Avila da Conceição (@ruhanconceicao, nas redes sociais) é formado em Engenharia</p><p>de Computação (2015) pela Universidade Federal de Pelotas e Mestre em Computação (2016)</p><p>também pela mesma universidade. Desde 2018 é professor do Instituto Federal de Educação,</p><p>Ciência e Tecnologia Sul-rio-grandense na área de Informática, onde ministra, entre outras, as</p><p>disciplinas de Programação Orientada a Objetos, Programação Visual e Programação de</p><p>Dispositivos Móveis.</p><p>Em 2014, ainda quando aluno de graduação, Ruhan recebeu o título de Pesquisador Gaúcho</p><p>na categoria Jovem Inovador por conta de sua trajetória acadêmica e científica durante seus anos</p><p>na universidade. Seu tema de pesquisa sempre foi relacionado ao desenvolvimento algorítmico</p><p>de soluções eficientes para codificação de vídeos em tempo real. Ainda com relação à pesquisa</p><p>científica, Ruhan acumula dezenas de trabalhos publicados em congressos nacionais e</p><p>internacionais, bem como artigos em revistas científicas de grande relevância, e dois programas</p><p>de computador registrados no Instituto Nacional de Propriedade Intelectual.</p><p>Iniciado na programação na linguagem C, Ruhan Conceição possui amplo conhecimento nas</p><p>linguagens JavaScript, bem como suas bibliotecas e frameworks ReactJS, React Native, NextJS;</p><p>e Java. Além disso, o autor também já desenvolveu projetos em C#, Matlab, GoogleScript e C++.</p><p>Dentre os seus hobbies, Ruhan Conceição possui um podcast denominado R-Cast (@rcasttv</p><p>nas redes sociais), onde leva convidados para conversarem sobre diversos assuntos, incluindo:</p><p>tecnologia, política, educação, saúde, cultura, música, etc.</p><p>Por fim, Ruhan também é autor dos livros Primeiros passos em Javascript, e Dominando</p><p>JavaScript: 100 Exercícios Resolvidos e Comentados para Acelerar seu Aprendizado na</p><p>Amazon.com.br.</p><p>Introdução</p><p>Fórmulas Matemáticas</p><p>Strings</p><p>Condicionais</p><p>Laços de Repetição</p><p>Vetores</p><p>Matrizes</p><p>Funções Recursivas</p><p>Exercícios Extras</p><p>102. Faça um algoritmo que resolva a Torre de Hanoi, em java</p><p>Lista Completa de Exercícios</p><p>Conteúdo Adicional</p><p>Sobre o Autor</p><p>8. Escreva um programa que calcule o delta de uma equação de segundo grau</p><p>(Δ = b² - 4ac).</p><p>Nesse programa, utilizamos a classe Scanner para obter a entrada do usuário. Solicitamos ao</p><p>usuário que informe os valores de a, b e c da equação de segundo grau.</p><p>Em seguida, calculamos o delta da equação utilizando a fórmula Δ = b² - 4ac. Utilizamos a</p><p>função Math.pow() para elevar b ao quadrado.</p><p>Por fim, exibimos o valor do delta na tela utilizando System.out.println().</p><p>9. Escreva um programa que calcule o perímetro e a área de um retângulo,</p><p>utilizando as fórmulas P = 2(l + c) e A = lc, onde l é a largura e c é o</p><p>comprimento</p><p>Nesse programa, utilizamos a classe Scanner para obter a entrada do usuário. Solicitamos ao</p><p>usuário que informe a largura e o comprimento do retângulo, que são armazenados nas variáveis</p><p>largura e comprimento, respectivamente.</p><p>Em seguida, calculamos o perímetro do retângulo utilizando a fórmula P = 2(l + c), onde l é a</p><p>largura e c é o comprimento. Armazenamos o resultado na variável perimetro.</p><p>Também calculamos a área do retângulo utilizando a fórmula A = lc, onde l é a largura e c é o</p><p>comprimento. Armazenamos o resultado na variável area.</p><p>Por fim, exibimos o valor do perímetro e da área na tela utilizando System.out.println().</p><p>10. Escreva um programa que calcule o perímetro e a área de um triângulo,</p><p>utilizando as fórmulas P = a + b + c e A = (b * h) / 2, onde a, b e c são os lados</p><p>do triângulo e h é a altura relativa ao lado b.</p><p>Nesse programa, utilizamos a classe Scanner para obter a entrada do usuário. Solicitamos ao</p><p>usuário que informe os lados a, b e c do triângulo, bem como a altura h relativa ao lado b. Esses</p><p>valores são armazenados nas variáveis ladoA, ladoB, ladoC e altura, respectivamente.</p><p>Em seguida, calculamos o perímetro do triângulo utilizando a fórmula P = a + b + c, onde a,</p><p>b e c são os lados do triângulo. Armazenamos o resultado na variável perimetro.</p><p>Também calculamos a área do triângulo utilizando a fórmula A = (b * h) / 2, onde b é o lado</p><p>do triângulo e h é a altura relativa a esse lado. Armazenamos o resultado na variável area.</p><p>Por fim, exibimos o valor do perímetro e da área na tela utilizando System.out.println().</p><p>11. Escreva um programa que calcule a velocidade média de um objeto,</p><p>utilizando a fórmula v = Δs/Δt, onde v é a velocidade média, Δs é a variação de</p><p>espaço e Δt é a variação de tempo</p><p>Nesse programa, utilizamos a classe Scanner para obter a entrada do usuário. Solicitamos ao</p><p>usuário que informe a variação de espaço (Δs) e a variação de tempo (Δt), que são armazenadas</p><p>nas variáveis variacaoEspaco e variacaoTempo, respectivamente.</p><p>Em seguida, calculamos a velocidade média utilizando a fórmula v = Δs/Δt. Dividimos a</p><p>variação de espaço pela variação de tempo e armazenamos o resultado na variável</p><p>velocidadeMedia.</p><p>Por fim, exibimos o valor da velocidade média na tela utilizando System.out.println().</p><p>12. Escreva um programa que calcule a energia cinética de um objeto em</p><p>movimento, utilizando a fórmula E = (mv²) / 2, onde E é a energia cinética, m é</p><p>a massa do objeto e v é a velocidade.</p><p>Nesse programa, utilizamos a classe Scanner para obter a entrada do usuário. Solicitamos ao</p><p>usuário que informe a massa do objeto e a velocidade, que são armazenadas nas variáveis massa</p><p>e velocidade, respectivamente.</p><p>Em seguida, calculamos a energia cinética utilizando a fórmula E = (mv²) / 2. Multiplicamos</p><p>a massa do objeto pelo quadrado da velocidade e dividimos por 2. Utilizamos a função</p><p>Math.pow() para calcular o quadrado da velocidade.</p><p>Por fim, exibimos o valor da energia cinética na tela utilizando System.out.println().</p><p>13. Escreva um programa que calcule o trabalho realizado por uma força que</p><p>atua sobre um objeto, utilizando a fórmula T = F * d, onde T é o trabalho, F é a</p><p>força aplicada e d é a distância percorrida pelo objeto.</p><p>Nesse programa, utilizamos a classe Scanner para obter a entrada do usuário. Solicitamos ao</p><p>usuário que informe a força aplicada e a distância percorrida, que são armazenadas nas variáveis</p><p>forca e distancia, respectivamente.</p><p>Em seguida, calculamos o trabalho utilizando a fórmula T = F * d. Multiplicamos a força pela</p><p>distância e armazenamos o resultado na variável trabalho.</p><p>Por fim, exibimos o valor do trabalho realizado na tela utilizando System.out.println().</p><p>14. Escreva um programa que leia a posição x e y de dois pontos no plano</p><p>cartesiano, e calcule a distância entre ambos.</p><p>Nesse programa, utilizamos a classe Scanner para obter a entrada do usuário. Solicitamos ao</p><p>usuário que informe as coordenadas (x, y) do primeiro ponto e do segundo ponto. Essas</p><p>coordenadas são armazenadas nas variáveis x1, y1, x2 e y2, respectivamente.</p><p>Em seguida, calculamos a distância entre os pontos utilizando a fórmula da distância</p><p>Euclidiana, que é a distância entre dois pontos no plano cartesiano. Utilizamos a função</p><p>Math.sqrt() para calcular a raiz quadrada e Math.pow() para calcular o quadrado das diferenças</p><p>das coordenadas.</p><p>Por fim, exibimos o valor da distância entre os pontos na tela utilizando System.out.println().</p><p>15. Crie um programa que solicite ao usuário o valor do raio de uma esfera e</p><p>calcule e exiba o seu volume.</p><p>Nesse programa, utilizamos a classe Scanner para obter a entrada do usuário. Solicitamos ao</p><p>usuário que informe o valor do raio da esfera, que é armazenado na variável raio.</p><p>Em seguida, calculamos o volume da esfera utilizando a fórmula V = (4/3) * π * r³, onde V é</p><p>o volume, π é o valor de Pi (aproximadamente 3.14159) e r é o raio da esfera. Utilizamos a</p><p>função Math.pow() para elevar o raio ao cubo.</p><p>Por fim, exibimos o valor do volume da esfera na tela utilizando System.out.println().</p><p>Strings</p><p>16. Crie um programa que leia duas palavras e as concatene, exibindo a</p><p>palavra resultante.</p><p>Nesse programa, utilizamos a classe Scanner para obter a entrada do usuário. Solicitamos ao</p><p>usuário que informe a primeira palavra, que é armazenada na variável palavra1, e a segunda</p><p>palavra, armazenada na variável palavra2.</p><p>Em seguida, utilizamos o operador + para concatenar as duas palavras e armazenar o</p><p>resultado na variável resultado.</p><p>Por fim, exibimos a palavra resultante na tela utilizando System.out.println().</p><p>17. Faça um programa que receba uma palavra e exiba cada letra</p><p>separadamente (necessita de laço de repetição).</p><p>Versão 1</p><p>Nesse programa, utilizamos a classe Scanner para obter a entrada do usuário. Solicitamos ao</p><p>usuário que informe uma palavra, que é armazenada na variável palavra.</p><p>Em seguida, utilizamos um loop for para percorrer cada posição da palavra. Dentro do loop,</p><p>utilizamos o método charAt() para obter a letra em cada posição e armazenamos na variável</p><p>letra. Por fim, exibimos a letra na tela utilizando System.out.println().</p><p>Versão 2</p><p>Nesse programa, utilizamos a classe Scanner para obter a entrada do usuário. Solicitamos ao</p><p>usuário que informe uma palavra, que é armazenada na variável palavra.</p><p>Em seguida, utilizamos o método toCharArray() para converter a palavra em um array de</p><p>caracteres. Isso nos permite acessar cada letra individualmente.</p><p>Finalmente, percorremos o array de caracteres utilizando um loop for-each e exibimos cada</p><p>letra separadamente utilizando System.out.println().</p><p>18. Crie um programa que receba uma frase e substitua todas as letras "a" por</p><p>"e".</p><p>Utilizando Replace</p><p>Nesse programa, utilizamos a classe Scanner para obter a entrada do usuário. Solicitamos ao</p><p>usuário que informe uma frase, que é armazenada na variável frase.</p><p>Em seguida, utilizamos o método replace() para substituir todas as ocorrências da letra "a"</p><p>por "e" na frase. Armazenamos o resultado na variável novaFrase.</p><p>Por fim, exibimos a frase modificada na tela utilizando System.out.println().</p><p>Utilizando Laço de Repetição</p><p>Nesse programa, utilizamos a classe Scanner para obter a entrada do usuário. Solicitamos ao</p><p>usuário que informe uma frase, que é armazenada na variável frase.</p><p>Em seguida, criamos uma variável novaFrase do tipo String para armazenar a frase</p><p>modificada.</p><p>Utilizamos um loop for para percorrer</p><p>cada caractere da frase. Se a letra for igual a 'a',</p><p>concatenamos 'e' à variável novaFrase. Caso contrário, concatenamos a própria letra.</p><p>Por fim, exibimos a frase modificada na tela utilizando System.out.println().</p><p>Lembre-se de que, em Java, a concatenação de strings com o operador += pode criar novos</p><p>objetos de string a cada iteração do loop, o que pode ser ineficiente para grandes quantidades de</p><p>concatenações. Por isso, em situações mais complexas, é recomendado o uso da classe</p><p>StringBuilder. No entanto, para casos simples como este exemplo, a concatenação de strings</p><p>usando o operador += é aceitável.</p><p>19. Escreva um programa que receba um nome e verifique se o mesmo começa</p><p>com a letra "A".</p><p>Nesse programa, utilizamos a classe Scanner para obter a entrada do usuário. Solicitamos ao</p><p>usuário que informe um nome, que é armazenado na variável nome.</p><p>Em seguida, convertemos o nome para letras minúsculas utilizando o método toLowerCase().</p><p>Isso nos permite fazer a comparação sem considerar a diferença entre letras maiúsculas e</p><p>minúsculas.</p><p>Utilizamos o método startsWith() para verificar se o nome começa com a letra "a". Se sim,</p><p>exibimos a mensagem "O nome começa com a letra A". Caso contrário, exibimos a mensagem</p><p>"O nome não começa com a letra A".</p><p>20. Faça um programa que leia uma palavra e verifique se a mesma é</p><p>palíndromo (se pode ser lida da mesma forma de trás para frente).</p><p>Nesse programa, utilizamos a classe Scanner para obter a entrada do usuário. Solicitamos ao</p><p>usuário que informe uma palavra, que é armazenada na variável palavra.</p><p>Em seguida, removemos os espaços em branco da palavra utilizando o método</p><p>replaceAll("\\s+", "") e convertemos todos os caracteres para letras minúsculas.</p><p>Em seguida, utilizamos um loop for para percorrer a metade da palavra. Comparamos o</p><p>caractere na posição atual com o caractere na posição correspondente no final da palavra. Se</p><p>houver alguma diferença, definimos a variável palindromo como false e saímos do loop</p><p>utilizando break.</p><p>No final, verificamos o valor da variável palindromo. Se for true, exibimos a mensagem "A</p><p>palavra é um palíndromo". Caso contrário, exibimos a mensagem "A palavra não é um</p><p>palíndromo".</p><p>21. Crie um programa que leia duas palavras e verifique se a segunda palavra é</p><p>um anagrama da primeira.</p><p>Nesse programa, utilizamos a classe Scanner para obter a entrada do usuário. Solicitamos ao</p><p>usuário que informe a primeira palavra, que é armazenada na variável palavra1, e a segunda</p><p>palavra, que é armazenada na variável palavra2.</p><p>Em seguida, removemos os espaços em branco das palavras utilizando o método</p><p>replaceAll("\\s+", "") e convertemos todas as letras para minúsculas.</p><p>Verificamos se as palavras têm o mesmo tamanho. Se não tiverem, exibimos a mensagem "A</p><p>segunda palavra não é um anagrama da primeira." e encerramos o programa. Caso contrário,</p><p>continuamos a verificação.</p><p>Convertemos as palavras em arrays de caracteres e as ordenamos utilizando o método sort()</p><p>da classe Arrays. Em seguida, verificamos se os arrays ordenados são iguais utilizando o método</p><p>equals() da classe Arrays. Se forem iguais, exibimos a mensagem "A segunda palavra é um</p><p>anagrama da primeira.", caso contrário, exibimos a mensagem "A segunda palavra não é um</p><p>anagrama da primeira.".</p><p>22. Escreva um programa que receba um nome completo e exiba somente o</p><p>primeiro nome.</p><p>Nesse programa, utilizamos a classe Scanner para obter a entrada do usuário. Solicitamos ao</p><p>usuário que digite o nome completo, que é armazenado na variável nomeCompleto.</p><p>Em seguida, utilizamos o método split(" ") para dividir o nome completo em partes separadas</p><p>pelo espaço em branco. Armazenamos essas partes em um array de strings chamado</p><p>partesNome.</p><p>O primeiro nome estará na primeira posição do array partesNome, que é o índice 0. Portanto,</p><p>obtemos o primeiro nome atribuindo partesNome[0] à variável primeiroNome.</p><p>Por fim, exibimos o primeiro nome utilizando System.out.println().</p><p>23. Faça um programa que receba uma frase e exiba a quantidade de espaços</p><p>em branco presentes na mesma.</p><p>Utilizando Laço de Repetição</p><p>Nesse programa, utilizamos a classe Scanner para obter a entrada do usuário. Solicitamos ao</p><p>usuário que digite uma frase, que é armazenada na variável frase.</p><p>Em seguida, declaramos uma variável contadorEspacos e a inicializamos com o valor zero.</p><p>Essa variável será responsável por armazenar a quantidade de espaços em branco na frase.</p><p>Utilizamos um loop for para percorrer cada caractere da frase. A condição i</p><p>utilizamos a classe Scanner para obter a entrada do usuário. O usuário é</p><p>solicitado a digitar o primeiro número, que é armazenado na variável numero1. Em seguida, o</p><p>usuário é solicitado a digitar o segundo número, que é armazenado na variável numero2.</p><p>Utilizamos uma estrutura condicional if-else para comparar os números. Se numero1 for</p><p>maior que numero2, exibimos a mensagem "O primeiro número é maior". Se numero2 for</p><p>maior que numero1, exibimos a mensagem "O segundo número é maior". Caso contrário, se os</p><p>números forem iguais, exibimos a mensagem "Os números são iguais".</p><p>28. Escreva um programa que solicite três números ao usuário e exiba o maior</p><p>deles.</p><p>Neste programa, utilizamos a classe Scanner para obter a entrada do usuário. O usuário é</p><p>solicitado a digitar três números: numero1, numero2 e numero3.</p><p>Criamos uma variável maior e inicializamos com o valor de numero1. Em seguida,</p><p>utilizamos duas estruturas condicionais if para comparar numero2 e numero3 com maior. Se</p><p>algum dos números for maior do que maior, atualizamos o valor de maior com o novo número.</p><p>Por fim, exibimos o valor de maior, que representa o maior número digitado pelo usuário.</p><p>29. Faça um programa que leia um número e informe se ele é par ou ímpar.</p><p>Neste programa, utilizamos a classe Scanner para obter a entrada do usuário. O usuário é</p><p>solicitado a digitar um número, que é armazenado na variável numero.</p><p>Em seguida, utilizamos a expressão numero % 2 para verificar se o número é divisível por 2.</p><p>Se o resto da divisão for 0, significa que o número é par. Caso contrário, o número é ímpar.</p><p>Utilizamos uma estrutura condicional if-else para exibir a mensagem correspondente,</p><p>indicando se o número é par ou ímpar.</p><p>30. Faça um programa que leia um número e informe se ele é positivo, negativo</p><p>ou zero.</p><p>Neste programa, utilizamos a classe Scanner para obter a entrada do usuário. O usuário é</p><p>solicitado a digitar um número, que é armazenado na variável numero.</p><p>Em seguida, utilizamos uma estrutura condicional if-else para verificar se o número é maior</p><p>que zero, menor que zero ou igual a zero. Se o número for maior que zero, exibimos a mensagem</p><p>"O número é positivo". Se for menor que zero, exibimos a mensagem "O número é negativo".</p><p>Caso contrário, se for igual a zero, exibimos a mensagem "O número é zero".</p><p>31. Faça um programa que leia as notas de duas provas e informe se o aluno foi</p><p>aprovado (nota maior ou igual a 6) ou reprovado (nota menor que 6) em cada</p><p>uma das provas.</p><p>Neste programa, utilizamos a classe Scanner para obter a entrada do usuário. O usuário é</p><p>solicitado a digitar as notas da primeira e da segunda prova, que são armazenadas nas variáveis</p><p>nota1 e nota2, respectivamente.</p><p>Em seguida, utilizamos estruturas condicionais if-else para verificar se as notas são maiores</p><p>ou iguais a 6. Se forem, exibimos a mensagem "Aluno aprovado na primeira/segunda prova".</p><p>Caso contrário, exibimos a mensagem "Aluno reprovado na primeira/segunda prova".</p><p>32. Faça um programa que leia as notas de duas provas, calcule a média</p><p>aritmética simples, e informe se o aluno foi aprovado (média maior ou igual a</p><p>6) ou reprovado (média menor que 6).</p><p>Neste programa, utilizamos a classe Scanner para obter a entrada do usuário. O usuário é</p><p>solicitado a digitar as notas da primeira e da segunda prova, que são armazenadas nas variáveis</p><p>nota1 e nota2, respectivamente.</p><p>Em seguida, calculamos a média aritmética simples das notas, armazenando o resultado na</p><p>variável media. A média é calculada pela soma das notas divididas por 2.</p><p>Finalmente, utilizamos uma estrutura condicional if-else para verificar se a média é maior ou</p><p>igual a 6. Se for, exibimos a mensagem "Aluno aprovado". Caso contrário, exibimos a</p><p>mensagem "Aluno reprovado".</p><p>33. Faça um programa que leia três números, e informe se a soma deles é</p><p>divisível por 5 ou não.</p><p>Neste programa, utilizamos a classe Scanner para obter a entrada do usuário. O usuário é</p><p>solicitado a digitar três números, que são armazenados nas variáveis numero1, numero2 e</p><p>numero3, respectivamente.</p><p>Em seguida, calculamos a soma dos três números, armazenando o resultado na variável soma.</p><p>Depois, utilizamos uma estrutura condicional if-else para verificar se a soma é divisível por 5.</p><p>Isso é feito verificando se o resto da divisão da soma por 5 é igual a zero. Se for, exibimos a</p><p>mensagem "A soma é divisível por 5". Caso contrário, exibimos a mensagem "A soma não é</p><p>divisível por 5".</p><p>34. Crie um programa que leia três números e verifique se a soma deles é</p><p>positiva, negativa ou igual a zero</p><p>Neste programa, utilizamos a classe Scanner para obter a entrada do usuário. O usuário é</p><p>solicitado a digitar três números, que são armazenados nas variáveis numero1, numero2 e</p><p>numero3, respectivamente.</p><p>Em seguida, calculamos a soma dos três números, armazenando o resultado na variável soma.</p><p>Depois, utilizamos uma estrutura condicional if-else para verificar se a soma é positiva,</p><p>negativa ou igual a zero. Se a soma for maior que zero, exibimos a mensagem "A soma é</p><p>positiva". Se a soma for menor que zero, exibimos a mensagem "A soma é negativa". Caso</p><p>contrário, exibimos a mensagem "A soma é igual a zero".</p><p>35. Faça um programa que leia três números, e mostre eles na tela em ordem</p><p>crescente.</p><p>Neste programa, utilizamos a classe Scanner para obter a entrada do usuário. O usuário é</p><p>solicitado a digitar três números, que são armazenados nas variáveis numero1, numero2 e</p><p>numero3, respectivamente.</p><p>Em seguida, utilizamos estruturas condicionais para comparar os três números e exibi-los em</p><p>ordem crescente. Começamos comparando o numero1 com o numero2 e o numero3.</p><p>Dependendo do resultado da comparação, imprimimos os números na ordem correta.</p><p>Explicando melhor os IFs: Primeiramente, vamos comparar os números para exibi-los em</p><p>ordem crescente. Começamos comparando numero1 com numero2 e numero3. Se numero1 for</p><p>menor ou igual a ambos, então numero1 é o menor número e deve ser exibido primeiro. Em</p><p>seguida, comparamos numero2 com numero3 para decidir qual número é o segundo e qual é o</p><p>terceiro.</p><p>Se numero2 for menor ou igual a numero3, exibimos numero2 e numero3 em sequência.</p><p>Caso contrário, exibimos numero3 e numero2 em sequência. O mesmo se aplica, caso número1</p><p>não seja o menor.</p><p>36. Faça um programa que leia a idade de três pessoas e quantas delas é maior</p><p>de idade (idade maior ou igual a 18).</p><p>Neste programa, utilizamos a classe Scanner para ler a idade de três pessoas. Em seguida,</p><p>comparamos cada uma das idades com 18 para verificar se a pessoa é maior de idade. Se a idade</p><p>for maior ou igual a 18, incrementamos o contador contadorMaioresIdade.</p><p>Após realizar as comparações, exibimos a quantidade de pessoas maiores de idade.</p><p>37. Faça um programa que leia três números e informe se eles podem ser os</p><p>lados de um triângulo (a soma de dois lados deve ser sempre maior que o</p><p>terceiro lado).</p><p>Neste programa, utilizamos a classe Scanner para ler os três lados do triângulo. Em seguida,</p><p>aplicamos a condição para verificar se os lados podem formar um triângulo. Caso a condição seja</p><p>verdadeira, exibimos a mensagem indicando que os números podem ser os lados de um</p><p>triângulo. Caso contrário, exibimos a mensagem indicando que os números não podem formar</p><p>um triângulo.</p><p>38. Faça um programa que leia o ano de nascimento de uma pessoa e informe</p><p>se ela está apta a votar (idade maior ou igual a 16 anos).</p><p>Importamos a classe Scanner do pacote java.util para permitir a leitura de entrada do usuário.</p><p>Dentro do método main, instanciamos um objeto Scanner para receber a entrada do usuário.</p><p>Usamos o System.out.print para solicitar ao usuário que digite o ano de nascimento. Em</p><p>seguida, lemos o valor usando o método nextInt do objeto Scanner e atribuímos à variável</p><p>anoNascimento.</p><p>Obtemos o ano atual usando java.time.Year.now().getValue() e armazenamos na variável</p><p>anoAtual. Calculamos a idade subtraindo o anoNascimento do anoAtual.</p><p>Usamos uma estrutura condicional if para verificar se a idade é maior ou igual a 16. Se for</p><p>verdadeiro, exibimos a mensagem "A pessoa</p><p>está apta a votar." usando o System.out.println.</p><p>Caso contrário, exibimos a mensagem "A pessoa não está apta a votar.". Por fim, chamamos o</p><p>método close() do objeto Scanner para liberar os recursos.</p><p>O programa lê o ano de nascimento da pessoa, calcula a idade com base no ano atual e</p><p>verifica se a pessoa está apta a votar, ou seja, se a idade é maior ou igual a 16. Dependendo do</p><p>resultado, é exibida a mensagem apropriada.</p><p>39. Faça um programa que leia a idade de uma pessoa e informe se ela não está</p><p>apta a votar (idade inferior a 16 anos), se está apta a votar, porém não é</p><p>obrigada (16, 17 anos, ou idade igual ou superior a 70 anos), ou se é obrigada</p><p>(18 a 69 anos).</p><p>Importamos a classe Scanner do pacote java.util para permitir a leitura de entrada do usuário.</p><p>Dentro do método main, instanciamos um objeto Scanner para receber a entrada do usuário.</p><p>Usamos o System.out.print para solicitar ao usuário que digite a idade. Em seguida, lemos o</p><p>valor usando o método nextInt do objeto Scanner e atribuímos à variável idade.</p><p>Usamos uma estrutura condicional if-else if-else para verificar a faixa etária da pessoa. Se a</p><p>idade for menor que 16, exibimos a mensagem "A pessoa não está apta a votar." Se a idade</p><p>estiver entre 16 e 17 (inclusive) ou for igual ou maior que 70, exibimos a mensagem "A pessoa</p><p>está apta a votar, porém não é obrigada." Caso contrário, exibimos a mensagem "A pessoa é</p><p>obrigada a votar."</p><p>Por fim, chamamos o método close() do objeto Scanner para liberar os recursos. O programa</p><p>lê a idade da pessoa e verifica em qual faixa etária ela se encontra. Com base nisso, é exibida a</p><p>mensagem correspondente indicando se a pessoa não está apta a votar, se está apta porém não é</p><p>obrigada ou se é obrigada a votar.</p><p>40. Faça um programa que leia três notas de um aluno e informe se ele foi</p><p>aprovado (nota final maior ou igual a 7), reprovado (nota final menor que 4) ou</p><p>ficou de recuperação (nota final entre 4 e 7).</p><p>Importamos a classe Scanner do pacote java.util para permitir a leitura de entrada do usuário.</p><p>Dentro do método main, instanciamos um objeto Scanner para receber a entrada do usuário.</p><p>Usamos o System.out.print para solicitar ao usuário que digite a primeira nota. Em seguida,</p><p>lemos o valor usando o método nextDouble do objeto Scanner e atribuímos à variável nota1.</p><p>Repetimos os passos anteriores a segunda e terceira notas, respectivamente.</p><p>Calculamos a média aritmética das três notas, somando-as e dividindo por 3, e atribuímos o</p><p>resultado à variável media.</p><p>Usamos uma estrutura condicional if-else if-else para verificar a média do aluno. Se a media</p><p>for maior ou igual a 7, exibimos a mensagem "Aluno aprovado!". Se a media for menor que 4,</p><p>exibimos a mensagem "Aluno reprovado!". Caso contrário, exibimos a mensagem "Aluno em</p><p>recuperação!".</p><p>Por fim, chamamos o método close() do objeto Scanner para liberar os recursos.</p><p>O programa lê as três notas do aluno, calcula a média e determina se o aluno foi aprovado,</p><p>reprovado ou ficou em recuperação, de acordo com as faixas de notas estabelecidas.</p><p>41. Faça um programa que solicite o nome de um dia da semana e exiba se é</p><p>um dia útil (segunda a sexta-feira) ou um dia de fim de semana (sábado e</p><p>domingo).</p><p>Importamos a classe Scanner do pacote java.util para permitir a leitura de entrada do usuário.</p><p>Criamos a classe VerificarDiaSemana. Dentro do método main, instanciamos um objeto</p><p>Scanner para receber a entrada do usuário. Usamos o System.out.print para solicitar ao usuário</p><p>que digite o nome de um dia da semana. Em seguida, lemos o valor usando o método nextLine</p><p>do objeto Scanner e atribuímos à variável diaSemana.</p><p>Usamos uma estrutura condicional if-else if-else para verificar se o diaSemana é um dia útil</p><p>(segunda a sexta-feira) ou um dia de fim de semana (sábado e domingo).</p><p>Utilizamos o método equalsIgnoreCase para comparar o valor digitado pelo usuário com os</p><p>dias da semana. Esse método realiza a comparação de strings ignorando maiúsculas e</p><p>minúsculas. Se o diaSemana for igual a "segunda", "terça", "quarta", "quinta" ou "sexta",</p><p>exibimos a mensagem informando que é um dia útil.</p><p>Se o diaSemana for igual a "sábado" ou "domingo", exibimos a mensagem informando que é</p><p>um dia de fim de semana.</p><p>Caso contrário, exibimos a mensagem "Dia inválido" para qualquer outro valor digitado pelo</p><p>usuário.</p><p>Por fim, chamamos o método close() do objeto Scanner para liberar os recursos.</p><p>42. Escreva um programa que solicite a altura e o peso de uma pessoa e calcule</p><p>o seu índice de massa corporal (IMC), exibindo a categoria correspondente</p><p>(abaixo do peso, peso normal, sobrepeso, obesidade, obesidade grave).</p><p>Neste programa, utilizamos estruturas condicionais if-else para verificar em qual faixa o IMC</p><p>se enquadra e atribuir a categoria correspondente à variável categoria. Em seguida, exibimos o</p><p>valor do IMC e a categoria na saída.</p><p>43. Escreva um programa que solicite um número inteiro e verifique se é</p><p>divisível por 3 e por 5 ao mesmo tempo.</p><p>Neste programa, utilizamos o operador de módulo % para verificar se o resto da divisão por 3</p><p>é igual a zero e se o resto da divisão por 5 também é igual a zero. Se ambas as condições forem</p><p>verdadeiras, o programa exibe a mensagem "O número é divisível por 3 e por 5". Caso contrário,</p><p>exibe a mensagem "O número não é divisível por 3 e por 5".</p><p>44. Crie um programa que solicite a idade de uma pessoa e exiba se ela é</p><p>criança (0-12 anos), adolescente (13-17 anos), adulto (18-59 anos) ou idoso (60</p><p>anos ou mais).</p><p>Neste programa, utilizamos estruturas condicionais if e else if para verificar a faixa etária com</p><p>base na idade digitada pelo usuário. O programa exibirá a mensagem correspondente à faixa</p><p>etária na qual a pessoa se encontra.</p><p>45. Faça um programa que solicite dois números e exiba se o primeiro é</p><p>divisível pelo segundo.</p><p>Neste programa, utilizamos o operador de módulo % para verificar se o resto da divisão de</p><p>numero1 por numero2 é igual a zero. Se for o caso, significa que o primeiro número é divisível</p><p>pelo segundo. Caso contrário, não é divisível.</p><p>Laços de Repetição</p><p>Nos primeiros exercícios, serão apresentadas soluções tanto com while e for. Após, apenas</p><p>um dos dois serão utilizados.</p><p>46. Escreva um programa que exiba os números de 1 a 10 utilizando um laço de</p><p>repetição</p><p>Utilizando while</p><p>Neste programa, a variável i é inicializada com o valor 1 antes do laço while. Enquanto o</p><p>valor de i for menor ou igual a 10, o bloco de código dentro do while será executado. Dentro do</p><p>bloco, exibimos o valor de i e, em seguida, incrementamos i em 1 usando o operador ++.</p><p>Utilizando for</p><p>Neste programa, utilizamos o laço de repetição for para percorrer os números de 1 a 10. A</p><p>cada iteração do laço, a variável i é incrementada em 1 e o valor de i é exibido utilizando o</p><p>método println da classe System.out.</p><p>47. Escreva um programa que exiba todos os números de 1 a 100</p><p>Utilizando while</p><p>Neste programa, inicializamos a variável i com o valor 1. Em seguida, utilizamos o laço de</p><p>repetição while com a condição i</p><p>menor ou igual a 100.</p><p>Dentro do laço, imprimimos o valor de i na tela utilizando System.out.println(i), e em</p><p>seguida, incrementamos o valor de i em 2 com o operador i += 2. Isso faz com que a variável i</p><p>seja incrementada de 2 em 2, garantindo que o programa exiba somente os números pares.</p><p>Utilizando for</p><p>Neste programa, utilizamos um laço for para percorrer os números de 2 a 100 com</p><p>incremento de 2 em cada iteração, garantindo que sejam exibidos somente os números pares.</p><p>Dentro do laço, utilizamos System.out.println(i) para imprimir o valor atual de i na tela.</p><p>49. Escreva um programa que exiba os números pares de 1 a 50 e os números</p><p>ímpares de 51 a 100 utilizando um laço de repetição.</p><p>Utilizando while</p><p>Neste programa, utilizamos dois laços while separados. O primeiro laço percorre os números</p><p>de 1 a 50 e verifica se cada número é par utilizando o operador % (resto da divisão por 2). Se o</p><p>número for par, ele é exibido na tela. O contador i é incrementado no final do laço.</p><p>O segundo laço percorre os números de 51 a 100 e verifica se cada número é ímpar utilizando</p><p>o mesmo operador %. Se o número for ímpar, ele é exibido na tela. O contador i é novamente</p><p>incrementado no final do laço.</p><p>Utilizando for</p><p>Neste programa, utilizamos dois laços for separados. O primeiro laço percorre os números de</p><p>1 a 50 e verifica se cada número é par utilizando o operador % (resto da divisão por 2). Se o</p><p>número for par, ele é exibido na tela.</p><p>O segundo laço percorre os números de 51 a 100 e verifica se cada número é ímpar utilizando</p><p>o mesmo operador %. Se o número for ímpar, ele é exibido na tela.</p><p>Utilizando apenas um laço de repetição</p><p>Neste programa, utilizamos apenas um laço while para percorrer os números de 1 a 100.</p><p>Dentro do laço, verificamos se o número está na faixa de 1 a 50 e se é par, exibindo-o se essa</p><p>condição for verdadeira. Em seguida, verificamos se o número está na faixa de 51 a 100 e se é</p><p>ímpar, exibindo-o se essa condição for verdadeira.</p><p>50. Crie um programa que solicite ao usuário um número e exiba a tabuada</p><p>desse número utilizando um laço de repetição.</p><p>Neste programa, utilizamos a classe Scanner para solicitar ao usuário um número. Em</p><p>seguida, utilizamos um laço for para percorrer os números de 1 a 10 e calculamos o resultado da</p><p>multiplicação do número informado pelo usuário com cada um desses números. Por fim,</p><p>exibimos a tabuada, mostrando o número informado, o multiplicador e o resultado da</p><p>multiplicação.</p><p>51. Escreva um programa que imprima na tela a tabuada de todos os números</p><p>de 1 a 10</p><p>Neste programa, utilizamos dois laços for aninhados. O primeiro laço percorre os números de</p><p>1 a 10, representando o multiplicador da tabuada. O segundo laço percorre os números de 1 a 10,</p><p>representando o multiplicando. Dentro dos laços, calculamos o resultado da multiplicação e o</p><p>exibimos na tela.</p><p>Ao executar o programa, ele irá exibir a tabuada de cada número de 1 a 10, mostrando as</p><p>multiplicações de 1x1 a 10x10. Cada tabuada é separada por uma linha em branco.</p><p>52. Escreva um programa que solicite ao usuário um número N e exiba a soma</p><p>de todos os números de 1 a N.</p><p>Neste programa, utilizamos um laço for para percorrer os números de 1 a N, somando cada</p><p>número à variável soma. No final, exibimos o resultado da soma na tela.</p><p>53. Faça um programa que calcule e exiba a soma dos números pares de 1 a 100</p><p>utilizando um laço de repetição.</p><p>Neste programa, utilizamos um laço for para percorrer os números de 1 a 100, incrementando</p><p>de 2 em 2 para obter apenas os números pares. A cada iteração, somamos o número à variável</p><p>soma. No final, exibimos o resultado da soma na tela.</p><p>Ao executar o programa, ele irá calcular a soma dos números pares de 1 a 100 e exibir o</p><p>resultado. No caso, a soma será 2550.</p><p>54. Escreva um programa que calcule e exiba o valor da potência de um</p><p>número informado pelo usuário elevado a um expoente também informado</p><p>pelo usuário, utilizando laços de repetição.</p><p>Neste programa, utilizamos um laço for para multiplicar a base pelo número digitado pelo</p><p>usuário repetidamente, até atingir o valor do expoente. A cada iteração, multiplicamos o valor</p><p>atual do resultado pela base. No final, exibimos o resultado da potência na tela.</p><p>Versão simplificada</p><p>Neste programa, utilizamos a função Math.pow para calcular a potência. Ela recebe dois</p><p>argumentos: a base e o expoente, e retorna o valor da potência.</p><p>Ao executar o programa, ele irá solicitar ao usuário que digite o número base e o expoente.</p><p>Em seguida, calculará o resultado da potência utilizando a função Math.pow e exibirá o valor na</p><p>tela.</p><p>55. Escreva um programa que solicite ao usuário um número N e diga se o</p><p>mesmo é primo ou não.</p><p>Lembre-se de que um número primo é aquele que é divisível apenas por 1 e por ele mesmo,</p><p>sem ter outros divisores.</p><p>Neste programa, solicitamos ao usuário um número inteiro. Em seguida, verificamos se o</p><p>número é menor ou igual a 1. Se for, definimos a variável ehPrimo como false. Caso contrário,</p><p>utilizamos um laço de repetição for para verificar se o número é divisível por algum número</p><p>entre 2 e a raiz quadrada do próprio número. Se encontrarmos algum divisor, definimos ehPrimo</p><p>como false e interrompemos o laço. Caso contrário, ao final do laço, ehPrimo será true.</p><p>Por fim, exibimos uma mensagem informando se o número é primo ou não, com base no</p><p>valor da variável ehPrimo.</p><p>56. Escreva um programa que solicite ao usuário um número N e exiba todos os</p><p>números primos menores que N.</p><p>Neste programa, solicitamos ao usuário um número inteiro N. Em seguida, utilizamos um</p><p>loop for para iterar por todos os números de 2 a N-1. Para cada número, utilizamos outro loop</p><p>for para verificar se ele é divisível por algum número entre 2 e i-1. Se encontrarmos algum</p><p>divisor, definimos a variável isPrimo como false e interrompemos o loop interno usando break.</p><p>Após o loop interno, verificamos se a variável isPrimo é true. Se for, significa que o número é</p><p>primo e o exibimos na tela.</p><p>Utilizando Funções</p><p>Neste programa, solicitamos ao usuário um número inteiro N. Em seguida, utilizamos um</p><p>loop for para iterar por todos os números de 2 a N-1. Para cada número, chamamos a função</p><p>isPrimo para verificar se é primo ou não. Se a função retornar true, exibimos o número na tela.</p><p>A função isPrimo verifica se um número é primo ou não, seguindo a mesma lógica do</p><p>programa anterior. Ela retorna true se o número for primo e false caso contrário.</p><p>57. Crie um programa que exiba os primeiros N números primos, onde N é</p><p>informado pelo usuário, utilizando um laço de repetição.</p><p>Neste programa, solicitamos ao usuário a quantidade de números primos desejada,</p><p>armazenando o valor na variável quantidade. Em seguida, utilizamos um laço while para</p><p>encontrar os primeiros N números primos.</p><p>Dentro do laço, verificamos se o número atual é primo utilizando um laço for. Percorremos</p><p>todos os números de 2 até a raiz quadrada do número atual. Se encontrarmos algum divisor,</p><p>definimos a variável isPrimo como false e interrompemos o laço usando break.</p><p>Se o número atual for primo, o exibimos na tela e incrementamos o contador. Quando o</p><p>contador alcançar a quantidade desejada, saímos do laço while.</p><p>58. Crie um programa que exiba os primeiros N primeiros quadrados perfeitos,</p><p>onde N é informado pelo usuário, utilizando um laço de repetição.</p><p>Neste programa, solicitamos ao usuário a quantidade de quadrados perfeitos desejada,</p><p>armazenando o valor na variável quantidade. Em seguida, utilizamos um laço while para</p><p>encontrar os primeiros N quadrados perfeitos.</p><p>Dentro do laço, calculamos a raiz quadrada do número atual utilizando Math.sqrt(numero).</p><p>Em seguida, verificamos se o quadrado da raiz é igual ao número atual. Se for igual, significa</p><p>que o número é um quadrado perfeito.</p><p>Se o número atual for um quadrado perfeito, o exibimos na tela e incrementamos o contador.</p><p>Quando o contador alcançar a quantidade desejada, saímos do laço while.</p><p>59. Escreva um programa que solicite ao usuário dois números A e B e exiba</p><p>todos os números entre A e B.</p><p>Neste programa,</p><p>solicitamos ao usuário dois números A e B, armazenando os valores nas</p><p>variáveis a e b, respectivamente. Em seguida, utilizamos uma estrutura condicional para verificar</p><p>se A é menor que B.</p><p>Se A for menor que B, utilizamos um laço for para percorrer todos os números entre A+1 e</p><p>B-1, exibindo-os na tela.</p><p>Se A for maior que B, utilizamos um laço for para percorrer todos os números entre B+1 e A-</p><p>1, exibindo-os na tela.</p><p>60. Escreva um programa que leia números do usuário até que seja digitado</p><p>um número negativo, e exiba a soma dos números positivos.</p><p>Neste programa, utilizamos um laço do-while para ler os números do usuário. A cada</p><p>iteração, o programa solicita ao usuário que digite um número. Se o número digitado for</p><p>positivo, ele é somado à variável soma. O laço continua executando até que seja digitado um</p><p>número negativo, momento em que ele é encerrado.</p><p>Após a finalização do laço, o programa exibe a soma dos números positivos utilizando a</p><p>variável soma.</p><p>Dessa forma, o programa permite ao usuário digitar vários números positivos e exibe a soma</p><p>deles. O programa é encerrado quando um número negativo é digitado.</p><p>61. Faça um programa que solicite ao usuário um número e exiba a sequência</p><p>de Fibonacci até o número informado utilizando um laço de repetição.</p><p>Neste programa, utilizamos um laço while para gerar e exibir os termos da sequência de</p><p>Fibonacci até o número informado pelo usuário. Começamos com os primeiros dois termos da</p><p>sequência: 0 e 1.</p><p>A cada iteração do laço, exibimos o valor do primeiro termo e calculamos o próximo termo</p><p>somando o primeiro e o segundo termos. Em seguida, atualizamos os valores dos termos para</p><p>avançar na sequência.</p><p>O laço continua executando enquanto o primeiro termo for menor ou igual ao número</p><p>informado pelo usuário. Quando o primeiro termo ultrapassa esse número, o laço é interrompido.</p><p>Dessa forma, o programa exibe a sequência de Fibonacci até o número informado pelo</p><p>usuário.</p><p>62. Escreva um programa que leia números do usuário até que seja digitado</p><p>zero, e exiba a média dos números digitados.</p><p>Neste programa, utilizamos um laço while para ler os números digitados pelo usuário até que</p><p>seja digitado o número zero, momento em que o laço é interrompido com a instrução break.</p><p>Dentro do laço, somamos os números digitados na variável soma e contamos a quantidade de</p><p>números digitados na variável contador.</p><p>Após a saída do laço, verificamos se algum número foi digitado (ou seja, se o contador é</p><p>diferente de zero) e, em caso afirmativo, calculamos a média dividindo a soma pelo contador.</p><p>Em seguida, exibimos a média na tela. Caso nenhum número tenha sido digitado, exibimos uma</p><p>mensagem informando que nenhum número foi digitado.</p><p>Dessa forma, o programa lê os números do usuário, calcula a média e a exibe na tela.</p><p>63. Escreva um programa que solicite ao usuário uma lista de números, até o</p><p>usuário digitar o número zero, e exiba o maior e o menor número da lista.</p><p>Neste programa, utilizamos um laço while para ler os números digitados pelo usuário até que</p><p>seja digitado o número zero, momento em que o laço é interrompido com a instrução break.</p><p>Dentro do laço, comparamos cada número digitado com as variáveis maior e menor para</p><p>atualizar os valores conforme necessário.</p><p>Após a saída do laço, verificamos se nenhum número foi digitado (nesse caso, o maior ainda</p><p>terá o valor inicial Integer.MIN_VALUE e o menor terá o valor inicial Integer.MAX_VALUE).</p><p>Se nenhum número foi digitado, exibimos uma mensagem informando que nenhum número foi</p><p>digitado. Caso contrário, exibimos o maior e o menor número da lista.</p><p>64. Escreva um programa que solicite ao usuário uma frase e exiba a</p><p>quantidade de vogais na frase.</p><p>Neste programa, utilizamos um laço for para percorrer cada caractere da frase digitada pelo</p><p>usuário. Dentro do laço, verificamos se o caractere é uma vogal (nesse caso, as vogais</p><p>consideradas são 'a', 'e', 'i', 'o' e 'u') e, se for, incrementamos o contador de vogais.</p><p>Ao final do laço, exibimos a quantidade de vogais presentes na frase.</p><p>É importante mencionar que, nesse exemplo, as vogais são consideradas independentemente</p><p>de serem maiúsculas ou minúsculas.</p><p>65. Escreva um programa que solicite ao usuário uma frase e exiba a frase de</p><p>trás para frente</p><p>Neste programa, utilizamos um laço for que percorre a frase de trás para frente, começando</p><p>do último caractere até o primeiro. A cada iteração, concatenamos o caractere atual na variável</p><p>fraseReversa.</p><p>Ao final do laço, exibimos a variável fraseReversa, que contém a frase digitada pelo usuário</p><p>de trás para frente.</p><p>Outra forma de realizar (sem utilizar laço de repetição)</p><p>No programa em Java, utilizamos a classe StringBuilder para criar um objeto chamado</p><p>fraseReversa. O StringBuilder é uma classe que nos permite manipular sequências mutáveis de</p><p>caracteres.</p><p>Primeiro, solicitamos ao usuário que digite uma frase utilizando o objeto Scanner e</p><p>armazenamos a frase digitada na variável frase.</p><p>Em seguida, criamos o objeto fraseReversa utilizando new StringBuilder(frase), passando a</p><p>frase digitada como argumento para o construtor do StringBuilder. Isso cria uma representação</p><p>mutável da sequência de caracteres da frase.</p><p>Utilizamos o método reverse() do StringBuilder para inverter a ordem dos caracteres da</p><p>frase. Esse método altera o conteúdo do objeto fraseReversa para que ele contenha a frase</p><p>invertida.</p><p>Finalmente, convertemos o objeto fraseReversa de volta para uma String utilizando o método</p><p>toString() do StringBuilder. Dessa forma, obtemos a versão invertida da frase digitada pelo</p><p>usuário e a armazenamos na variável fraseReversa.</p><p>Por fim, exibimos a frase invertida na tela utilizando System.out.println().</p><p>É importante ressaltar que a solução utiliza implicitamente um laço de repetição dentro da</p><p>implementação do método reverse() da classe StringBuilder, mas essa lógica não é exposta</p><p>explicitamente no código.</p><p>66. Escreva um programa que leia uma sequência de caracteres e indique se a</p><p>mesma é um palíndromo ou não.</p><p>Um palíndromo é uma palavra, frase ou sequência de caracteres que pode ser lida da mesma</p><p>forma de trás para frente, desconsiderando espaços em branco e diferenciação entre letras</p><p>maiúsculas e minúsculas.</p><p>Utilizando uma função</p><p>A solução proposta utiliza um laço de repetição while para percorrer a sequência de</p><p>caracteres. A ideia é comparar o primeiro caractere com o último, o segundo com o penúltimo, e</p><p>assim por diante. Para fazer isso, utilizamos duas variáveis: i que inicia no começo da sequência</p><p>(posição 0) e j que inicia no final da sequência (posição sequencia.length() - 1).</p><p>Em cada iteração do laço, comparamos os caracteres na posição i e j. Se encontrarmos uma</p><p>diferença, significa que a sequência não é um palíndromo. Nesse caso, atribuímos o valor false à</p><p>variável ePalindromo e utilizamos o comando break para interromper o laço, pois não há mais</p><p>necessidade de continuar a verificação.</p><p>Ao final do laço, verificamos o valor da variável ePalindromo. Se seu valor for true, isso</p><p>significa que todos os caracteres foram comparados e não houve nenhuma diferença, ou seja, a</p><p>sequência é um palíndromo. Caso contrário, a sequência não é um palíndromo.</p><p>É importante destacar que nesse programa não consideramos espaços em branco e não</p><p>fazemos diferenciação entre letras maiúsculas e minúsculas. Portanto, "radar", "Ana", "Ame a</p><p>ema", "Arara" são exemplos de sequências que seriam consideradas palíndromos.</p><p>67. Escreva um programa que solicite ao usuário um número e exiba os seus</p><p>divisores.</p><p>Neste programa, utilizamos a classe Scanner para ler o número digitado pelo usuário. Em</p><p>seguida, utilizamos um laço for para percorrer os números de 1 até o número informado. A cada</p><p>iteração, verificamos se o número é divisor do número informado utilizando a condição numero</p><p>% i == 0. Se for divisor, imprimimos o número.</p><p>68. Faça um programa que determine o menor múltiplo comum (MMC) entre</p><p>dois números informados pelo usuário.</p><p>Solicitamos ao usuário que digite os dois números para os quais desejamos encontrar o MMC.</p><p>Determinamos</p><p>o maior número entre os dois digitados usando a função Math.max(numero1,</p><p>numero2). Isso nos ajudará a iniciar a busca pelo MMC a partir do número mais alto.</p><p>Inicializamos uma variável chamada mmc com o valor do maior número.</p><p>Em um laço de repetição while, verificamos se mmc não é divisível por ambos os números</p><p>fornecidos. Caso contrário, incrementamos mmc pelo valor do maior número.</p><p>Quando o laço de repetição termina, significa que mmc é o MMC entre os dois números</p><p>fornecidos.</p><p>Exibimos o resultado na tela, informando os números originais e o MMC calculado.</p><p>A lógica básica do algoritmo é encontrar o primeiro número que é divisível por ambos os</p><p>números fornecidos, começando pelo maior número. O incremento pelo valor do maior número</p><p>garante que o MMC seja um múltiplo comum para ambos os números.</p><p>69. Faça um programa que determine o máximo divisor comum (MDC) entre</p><p>dois números informados pelo usuário.</p><p>A lógica do programa para determinar o Máximo Divisor Comum (MDC) entre dois números</p><p>é baseada no algoritmo de Euclides.</p><p>O algoritmo de Euclides é um método eficiente para encontrar o MDC entre dois números. A</p><p>ideia principal é que o MDC entre dois números não é afetado se subtrairmos o menor número</p><p>do maior número repetidamente até que os dois números se tornem iguais. Quando os dois</p><p>números se tornam iguais, esse número é o MDC.</p><p>Aqui está a lógica passo a passo do programa:</p><p>- Solicita ao usuário que digite os dois números.</p><p>- Inicializa a variável mdc com 1 (pois qualquer número é divisor de 1).</p><p>- Determina o menor número entre os dois números digitados usando a função Math.min().</p><p>- Utiliza um laço de repetição for que começa em 1 e vai até o menor número.</p><p>- Para cada número no laço, verifica se ele é um divisor comum dos dois números usando o</p><p>operador de módulo %. Se o resto da divisão de ambos os números por esse número for</p><p>igual a zero, significa que ele é um divisor comum.</p><p>- Se o número for um divisor comum, atualiza a variável mdc com o valor desse número.</p><p>- Ao final do laço, o valor armazenado na variável mdc será o MDC entre os dois números.</p><p>- Exibe o resultado na tela, mostrando os números originais e o valor do MDC.</p><p>Dessa forma, o programa utiliza o algoritmo de Euclides para encontrar o MDC entre dois</p><p>números informados pelo usuário.</p><p>70. Faça um programa que solicite o CPF do usuário e então faça a validação</p><p>do mesmo.</p><p>O programa começa solicitando ao usuário que digite o CPF, sendo necessário apenas os</p><p>dígitos numéricos.</p><p>Em seguida, é verificado se o CPF possui 11 dígitos. Caso contrário, é considerado inválido e</p><p>o programa encerra.</p><p>É realizada uma verificação para verificar se todos os dígitos do CPF são iguais. Se forem, o</p><p>CPF é considerado inválido e o programa encerra.</p><p>O programa então calcula o primeiro dígito verificador do CPF. Para isso, são realizadas as</p><p>seguintes etapas:</p><p>- Percorre-se os primeiros 9 dígitos do CPF.</p><p>- Cada dígito é multiplicado por um peso que varia de 10 a 2, em ordem decrescente.</p><p>- Os resultados das multiplicações são somados.</p><p>- Calcula-se o resto da divisão dessa soma por 11.</p><p>- Com base no resto, é determinado o valor do primeiro dígito verificador: se o resto for</p><p>menor que 2, o dígito verificador é 0; caso contrário, é 11 menos o resto.</p><p>- O programa verifica se o primeiro dígito verificador informado pelo usuário é igual ao</p><p>calculado na etapa anterior. Se forem diferentes, o CPF é considerado inválido e o programa</p><p>encerra.</p><p>Em seguida, o programa realiza os mesmos passos para calcular o segundo dígito verificador,</p><p>considerando agora todos os 10 dígitos do CPF, incluindo o primeiro dígito verificador. O</p><p>processo é semelhante ao cálculo do primeiro dígito verificador.</p><p>Por fim, o programa verifica se o segundo dígito verificador informado pelo usuário é igual</p><p>ao calculado na etapa anterior. Se forem diferentes, o CPF é considerado inválido e o programa</p><p>encerra.</p><p>Se todas as etapas forem concluídas com sucesso, ou seja, o CPF passou por todas as</p><p>validações, o programa exibe a mensagem "CPF válido". Caso contrário, exibe a mensagem</p><p>"CPF inválido".</p><p>Vetores</p><p>71. Crie um programa que leia um vetor de números inteiros e exiba a soma de</p><p>todos os elementos.</p><p>Neste programa, é utilizado um objeto Scanner para ler a entrada do usuário. O usuário</p><p>informa o tamanho do vetor e em seguida digita os elementos para preenchê-lo. Em seguida, é</p><p>feito um loop para calcular a soma de todos os elementos do vetor. Por fim, a soma é exibida na</p><p>tela. Não se esqueça de importar a classe Scanner no início do programa.</p><p>Utilizando ArrayList</p><p>Importamos as classes ArrayList e Scanner para trabalhar com uma lista de números e ler a</p><p>entrada do usuário, respectivamente.</p><p>Criamos um objeto Scanner chamado input para ler a entrada do usuário e solicitamos ao</p><p>usuário que digite a quantidade de elementos que deseja inserir na lista.</p><p>Criamos um objeto ArrayList chamado lista para armazenar os elementos.</p><p>Utilizamos um loop for para percorrer de 0 até a quantidade de elementos informada pelo</p><p>usuário.</p><p>Dentro do loop, solicitamos ao usuário que digite cada elemento da lista e o adicionamos ao</p><p>ArrayList utilizando o método add().</p><p>Inicializamos a variável soma com o valor zero, que será utilizada para armazenar a soma dos</p><p>elementos.</p><p>Utilizamos outro loop for-each para percorrer cada elemento da lista.</p><p>Dentro do loop, adicionamos o valor de cada elemento à variável soma usando o operador +=</p><p>para acumular a soma.</p><p>Por fim, exibimos a soma dos elementos utilizando System.out.println().</p><p>Fechamos o objeto Scanner para liberar os recursos.</p><p>Essa é a lógica básica do programa. Ele permite ao usuário fornecer a quantidade de</p><p>elementos desejada e, em seguida, digitar cada elemento para calcular e exibir a soma de todos</p><p>eles.</p><p>72. Faça um programa que leia um vetor de números inteiros e exiba o maior</p><p>elemento presente no vetor.</p><p>Neste programa, realizamos os seguintes passos:</p><p>- Importamos a classe Scanner para ler a entrada do usuário e criamos um objeto Scanner</p><p>chamado input para ler a entrada do usuário.</p><p>- Solicitamos ao usuário que digite a quantidade de elementos que deseja inserir no vetor.</p><p>- Criamos um vetor chamado vetor com o tamanho igual à quantidade de elementos</p><p>informada pelo usuário.</p><p>- Utilizamos um loop for para percorrer de 0 até a quantidade de elementos informada pelo</p><p>usuário.</p><p>- Dentro do loop, solicitamos ao usuário que digite cada elemento do vetor e o</p><p>armazenamos na posição correspondente do vetor.</p><p>- Inicializamos a variável maior com o valor do primeiro elemento do vetor.</p><p>- Utilizamos outro loop for para percorrer cada elemento do vetor, começando a partir do</p><p>segundo elemento.</p><p>- Dentro do loop, comparamos cada elemento com o valor atual da variável maior e</p><p>atualizamos maior caso o elemento seja maior.</p><p>- Por fim, exibimos o valor de maior, que corresponde ao maior elemento presente no</p><p>vetor.</p><p>- Fechamos o objeto Scanner para liberar os recursos.</p><p>- Dessa forma, o programa lê os elementos digitados pelo usuário, armazena-os no vetor e</p><p>encontra o maior elemento presente no vetor, exibindo-o na saída.</p><p>73. Escreva um programa que leia um vetor de números inteiros e exiba a</p><p>média dos elementos.</p><p>Importamos a classe Scanner para ler a entrada do usuário e criamos um objeto Scanner</p><p>chamado input para ler a entrada do usuário. Solicitamos ao usuário que digite a quantidade de</p><p>elementos que deseja inserir no vetor.</p><p>Criamos um vetor chamado vetor com o tamanho igual à quantidade de elementos informada</p><p>pelo usuário.</p><p>Utilizamos um loop for para percorrer de 0 até a quantidade de elementos informada pelo</p><p>usuário.</p><p>Dentro do loop, solicitamos ao usuário que digite cada elemento do vetor e o armazenamos na</p><p>posição correspondente do vetor.</p><p>Inicializamos a variável soma com o valor zero.</p><p>Utilizamos outro loop for para percorrer cada elemento do</p><p>vetor. Dentro do loop, somamos</p><p>cada elemento à variável soma.</p><p>Calculamos a média dividindo a soma pelo número de elementos (convertido para double</p><p>para obter a parte decimal). Por fim, exibimos o valor da média dos elementos do vetor.</p><p>Fechamos o objeto Scanner para liberar os recursos.</p><p>Dessa forma, o programa lê os elementos digitados pelo usuário, armazena-os no vetor e</p><p>calcula a média dos elementos, exibindo-a na saída.</p><p>74. Crie um programa que leia dois vetores de números inteiros com o mesmo</p><p>tamanho e exiba um novo vetor com a soma dos elementos correspondentes dos</p><p>dois vetores.</p><p>Neste programa, utilizamos um loop for para ler os elementos de cada vetor e armazená-los</p><p>nos respectivos vetores vetor1 e vetor2. Em seguida, criamos um terceiro vetor chamado</p><p>vetorSoma para armazenar a soma dos elementos correspondentes dos dois vetores anteriores.</p><p>Por fim, utilizamos outro loop for para exibir os elementos do vetor vetorSoma, que contém a</p><p>soma dos elementos correspondentes dos vetores vetor1 e vetor2.</p><p>75. Faça um programa que leia um vetor de números inteiros e verifique se ele</p><p>está em ordem crescente.</p><p>Neste programa, utilizamos um loop for para ler os elementos do vetor e armazená-los no</p><p>vetor vetor. Em seguida, temos outro loop for que percorre o vetor e verifica se cada elemento é</p><p>menor ou igual ao próximo elemento. Se algum elemento for maior que o próximo, definimos a</p><p>variável estaEmOrdemCrescente como false e saímos do loop usando o comando break.</p><p>Após percorrer o vetor, verificamos o valor da variável estaEmOrdemCrescente. Se ela for</p><p>true, significa que o vetor está em ordem crescente. Caso contrário, significa que o vetor não está</p><p>em ordem crescente.</p><p>76. Escreva um programa que leia um vetor de números inteiros e exiba os</p><p>elementos na ordem inversa.</p><p>Neste programa, utilizamos um loop for para ler os elementos do vetor e armazená-los no</p><p>vetor vetor. Em seguida, temos outro loop for que percorre o vetor a partir do último elemento</p><p>até o primeiro, imprimindo cada elemento na ordem inversa.</p><p>Ao executar o programa, você será solicitado a digitar o tamanho do vetor e, em seguida, os</p><p>elementos do vetor. Após a leitura, o programa exibirá os elementos do vetor na ordem inversa.</p><p>Outra forma de resolver o exercício</p><p>Neste código, utilizamos um ArrayList para armazenar os elementos do vetor, que é mais</p><p>flexível em termos de tamanho dinâmico. Em seguida, utilizamos o método reverse da classe</p><p>Collections para inverter o vetor. Por fim, percorremos o vetor invertido e exibimos os</p><p>elementos.</p><p>Com essa abordagem, não precisamos de um loop for manual para inverter os elementos. O</p><p>método reverse faz isso de forma mais eficiente e conveniente.</p><p>77. Crie um programa que leia um vetor de números inteiros e encontre o</p><p>segundo maior elemento presente no vetor.</p><p>Primeiramente, pedimos ao usuário que digite o tamanho do vetor. Criamos um vetor de</p><p>inteiros chamado vetor com o tamanho especificado pelo usuário. Solicitamos ao usuário que</p><p>digite os elementos do vetor usando um loop for.</p><p>Inicializamos duas variáveis maior e segundoMaior com o valor mínimo possível</p><p>(Integer.MIN_VALUE) para garantir que qualquer número do vetor seja maior que elas.</p><p>Percorremos o vetor e, para cada elemento, verificamos se ele é maior que o valor atual de</p><p>maior. Se for, atualizamos maior e movemos o valor antigo de maior para segundoMaior. Se não</p><p>for maior que maior, mas for maior que segundoMaior e diferente de maior, atualizamos</p><p>segundoMaior.</p><p>Por fim, verificamos se segundoMaior foi atualizado. Se sim, exibimos o valor do segundo</p><p>maior elemento. Caso contrário, informamos que não foi encontrado um segundo maior elemento</p><p>no vetor.</p><p>78. Faça um programa que leia um vetor de números inteiros e exiba quantas</p><p>vezes um número específico aparece no vetor.</p><p>Neste programa, primeiro solicitamos ao usuário o tamanho do vetor. Em seguida, criamos o</p><p>vetor com o tamanho informado. Depois, pedimos ao usuário para digitar os elementos do vetor.</p><p>Em seguida, solicitamos ao usuário o número que desejamos buscar no vetor. Criamos uma</p><p>variável contagem para armazenar a quantidade de vezes que o número aparece no vetor.</p><p>Percorremos o vetor e, para cada elemento, verificamos se ele é igual ao número buscado. Se for,</p><p>incrementamos a variável contagem.</p><p>Por fim, exibimos a quantidade de vezes que o número aparece no vetor.</p><p>79. Escreva um programa que leia dois vetores de números inteiros com o</p><p>mesmo tamanho e exiba um novo vetor com os elementos resultantes da</p><p>multiplicação dos elementos correspondentes dos dois vetores.</p><p>Neste programa, primeiro solicitamos ao usuário o tamanho dos vetores. Em seguida, criamos</p><p>três vetores: vetor1, vetor2 e vetorResultado, todos com o tamanho informado.</p><p>Depois, pedimos ao usuário para digitar os elementos do primeiro vetor (vetor1). Em seguida,</p><p>pedimos para digitar os elementos do segundo vetor (vetor2).</p><p>Em seguida, utilizamos um loop para percorrer os vetores e realizar a multiplicação dos</p><p>elementos correspondentes dos dois vetores. Armazenamos o resultado da multiplicação no vetor</p><p>vetorResultado.</p><p>Por fim, exibimos os elementos do vetor vetorResultado, que contém o resultado da</p><p>multiplicação dos elementos correspondentes dos dois vetores.</p><p>80. Crie um programa que leia um vetor de números inteiros e verifique se</p><p>todos os elementos são pares.</p><p>Neste programa, primeiro solicitamos ao usuário o tamanho do vetor. Em seguida, criamos</p><p>um vetor vetor com o tamanho informado.</p><p>Depois, pedimos ao usuário para digitar os elementos do vetor.</p><p>Utilizamos uma variável booleana todosPares para armazenar se todos os elementos do vetor</p><p>são pares. Inicialmente, atribuímos true à variável, indicando que todos os elementos são pares.</p><p>Em seguida, percorremos o vetor com um loop e verificamos se algum elemento é ímpar, ou</p><p>seja, se o resto da divisão por 2 é diferente de zero. Se encontrarmos um elemento ímpar,</p><p>alteramos o valor da variável todosPares para false e encerramos o loop utilizando break.</p><p>Por fim, verificamos o valor da variável todosPares. Se for true, exibimos a mensagem</p><p>"Todos os elementos são pares". Caso contrário, exibimos a mensagem "Existem elementos</p><p>ímpares no vetor".</p><p>Matrizes</p><p>81. Faça um programa que preencha uma matriz 3x3 com valores informados</p><p>pelo usuário e exiba a soma dos valores da diagonal principal.</p><p>Neste programa, criamos uma matriz 3x3 chamada matriz para armazenar os valores</p><p>informados pelo usuário.</p><p>Em seguida, utilizamos dois loops aninhados para percorrer cada posição da matriz. Na linha</p><p>System.out.print, solicitamos ao usuário que digite o valor para cada posição da matriz, e em</p><p>seguida, lemos o valor digitado utilizando o método input.nextInt().</p><p>Depois de preencher a matriz, utilizamos um loop para percorrer a diagonal principal</p><p>(posições onde i é igual a j) e somamos os valores correspondentes utilizando a variável</p><p>somaDiagonal.</p><p>Por fim, exibimos a soma dos valores da diagonal principal na tela.</p><p>82. Faça um programa que preencha uma matriz 4x4 com valores aleatórios e</p><p>exiba a matriz transposta.</p><p>Declaramos a matriz principal matriz com o tamanho 4x4 para armazenar os valores</p><p>aleatórios e a matriz transposta matrizTransposta também com o tamanho 4x4 para armazenar</p><p>os valores transpostos.</p><p>Utilizamos um loop for aninhado para percorrer cada posição da matriz e preencher os valores</p><p>aleatórios usando o objeto Random. A função nextInt(10) gera um número aleatório entre 0 e 9,</p><p>e esse valor é atribuído à posição correspondente da matriz.</p><p>Em seguida, usamos outro loop for aninhado para exibir a matriz original no console. O valor</p><p>de cada posição da matriz é impresso seguido por um espaço em branco.</p><p>Agora, vamos calcular a matriz transposta. Usamos novamente um loop for aninhado, mas</p><p>desta vez atribuímos os valores da matriz original à matriz transposta nas posições inversas. Ou</p><p>seja, o valor da posição [i][j] da matriz original será atribuído à posição [j][i] da matriz</p><p>transposta.</p><p>Por fim, utilizamos outro loop for aninhado para exibir a matriz transposta</p>

Mais conteúdos dessa disciplina