Bacharelado em Ciência e Tecnologia BC-0505 Processamento da Informação Lista de Exercícios Nº 02 Algoritmos Computacionais – Estruturas de Seleção Soluções de Referência em Java ATENÇÃO- Para cada um dos exercícios abaixo, antes de escrever o algoritmo, identifique ENTRADA, PROCESSAMENTO e SAÍDA, utilizando a seguinte técnica de interpretação de enunciado: 1. Escreva um programa que informe ao usuário se deve ou não levar uma blusa consigo. Sabe-se que a blusa é indicada se a temperatura em graus celsius estiver abaixo de 20 graus. import java.util.Scanner; public class Ex1 { public static void main(String[] args) { //Declaração de Variáveis Scanner leia = new Scanner(System.in); float temp; //Leitura de Variáveis System.out.print("Digite a temperatura atual: "); temp = leia.nextFloat(); //Processamento e saída de dados if (temp < 20) { // Verifica a temperatura e indica a mensagem ao usuário System.out.print("\nVocê deve levar uma blusa consigo.\n"); } else { System.out.print("\nVocê não precisa levar uma blusa consigo.\n"); } } } 2. Escreva um programa que solicite ao usuário um valor inteiro e exibe uma mensagem informando se o número é par ou ímpar. Exiba: Caso verdadeiro: ―O número é par‖ Caso falso: ―O número é ímpar‖ import java.util.Scanner; public class Ex2 { public static void main(String[] args) { //Declaração de variáveis Scanner leia= new Scanner(System.in); int n; //Entrada System.out.print("Digite um número inteiro: "); n=leia.nextInt(); // Leitura de Variável //Processamento e saída de dados if(n%2==0){ //Verifica se o número é par ou impar. System.out.println("O número é par "); } else{ System.out.println("O número é impar. "); } } } 3. Escreva um programa que solicite ao usuário uma letra e verifique se ela é uma vogal ou não exibindo uma mensagem correspondente. Exiba: Caso verdadeiro: ―É uma vogal‖ Caso falso: ―Não é uma vogal‖ import java.util.Scanner; public class Ex3 { public static void main(String[] args) { //Declaração de variável Scanner leia = new Scanner(System.in); char a; //Entrada System.out.print("Digite uma letra: "); a = leia.nextLine().charAt(0); //Processamento e saída de dados /*Verificação de se ela é ou não uma vogal. Deve considerar a possibilidade da letra escrita pelo usuário ser maiúscula ou minúscula.*/ if (a == 'a' || a == 'e' || a == 'i' || a == 'o' || a == 'u' || a == 'A' || a == 'E' || a == 'I' || a == 'O' || a == 'U') { System.out.print("\nÉ uma vogal.\n"); } else { System.out.print("\nNão é uma vogal.\n"); } } } 4. Escreva um programa que exiba o maior dentre dois números reais digitados pelo usuário, na forma ―numero tal‖ é maior que ―numero tal‖. Caso eles sejam iguais deve-se exibir a mensagem na forma: numero tal‖ é igual ao ―numero tal‖ import java.util.Scanner; public class Ex4 { public static void main(String[] args) { //Declaração de variáveis Scanner leia = new Scanner(System.in); float a, b; //Entrada de dados System.out.print("Digite um número real: "); a = leia.nextFloat(); System.out.print("Digite um segundo número real: "); b = leia.nextFloat(); //Processameno e saída de dados /*Estrutura para verificar qual número é maior , ou se ambos são iguais. Pode ser feito em estrutura encadeada, conforme segue:*/ if (a > b) { System.out.print("\n" + a + " é maior que " + b + ".\n"); } else if (b > a) { System.out.print("\n" + b + " é maior que " + a + ".\n"); } else { System.out.print("\n" + a + " é igual a " + b + ".\n"); } } } 5. Escreva um programa que exiba na tela o triplo de um número inteiro informado pelo usuário. Caso o número informado pelo usuário seja negativo, o mesmo deve ser transformado no seu equivalente positivo antes da exibição do seu triplo. import java.util.Scanner; public class Ex5 { public static void main(String[] args) { //Declaração de variável Scanner leia = new Scanner(System.in); int n; System.out.print("Digite um número inteiro: "); //Entrada de dados n = leia.nextInt(); //Processameno e saída de dados /* O valor do triplo pode ser inserido diretamente na saída, sem necessidade de criar uma variável para armazená-lo. Utilizando a seguinte estrutura.*/ if (n >= 0) { // Condicional para Verificar se o Número é Positivo ou não System.out.print("\nO triplo do modulo do número digitado é " + 3 * n + ".\n"); } else { System.out.print("\nO triplo do modulo do número digitado é " + (-3 * n) + ".\n"); } } } 6. Escreva um programa que calcule a idade de uma pessoa a partir do seu ano de nascimento. O programa deve mostrar na tela a idade e também as seguintes mensagens, quando for o caso: Já pode votar (se tiver 16 anos ou mais) Já pode solicitar a Carteira de Habilitação (se tiver 18 anos ou mais) import java.util.Scanner; public class Ex6 { public static void main(String[] args) { //Declaração de variável /*Obs.: O ano de nascimento deve ser calculado utilizando o ano anterior e o ano atual*/ int ano_atual, ano_nasc; Scanner entrada = new Scanner(System.in); //Entrada de dados System.out.print("Digite o ano atual: "); ano_atual = entrada.nextInt(); System.out.print("Digite o ano de seu nascimento: "); ano_nasc = entrada.nextInt(); //Processamento e saída de dados /* Cálculo da idade -> Não é necessário criar uma variável para armazená-lo. Ele pode ser diretamente inserido na saída.*/ System.out.print("\nA sua idade é: " + (ano_atual - ano_nasc) + " anos.\n"); /* Estrutura condicional para verificar se o usuário pode votar-> Mais uma vez, pode ser feito sem a criação de uma variável para armazenar a idade.*/ if ((ano_atual - ano_nasc) >= 16) { System.out.print("Já pode votar.\n"); } /*Estrutura condicional para verificar se o usuário pode solicitar a carteira de habilitação. Mais uma vez, pode ser feito sem a criação de uma variável para armazenar a idade.*/ if ((ano_atual - ano_nasc) >= 18) { System.out.print("Já pode solicitar a Carteira de Habilitação.\n"); } } } 7. Escreva um algoritmo que leia três números inteiros e imprima-os em ordem crescente. Efetue pelo menos 3 testes do seu algoritmo com entradas de dados distintas. Analise os resultados do seu algoritmo. import java.util.Scanner; public class Ex7 { public static void main(String[] args) { //Declaração de variável Scanner entrada = new Scanner(System.in); int a, b, c, maior, medio, menor; //Entrada de dados System.out.println("Digite o primeiro número "); a = entrada.nextInt(); System.out.println("Digite o segundo número "); b = entrada.nextInt(); System.out.println("Digite o terceiro número "); c = entrada.nextInt(); //Processamento e saída de dados if (a < b && b < c) { System.out.printf("A ordem é: %d %d %d \n", a, b, c); } else if (a < c && c < b) { System.out.printf("A ordem é: %d %d %d \n", a, c, b); } else if (b < a && a < c) { System.out.printf("A ordem é: %d %d %d \n", b, a, c); } else if (b < c && c < a) { System.out.printf("A ordem é: %d %d %d \n", b, c, a); } else if (c < a && a < b) { System.out.printf("A ordem é: %d %d %d \n", c, a, b); } else { System.out.printf("A ordem é: %d %d %d \n", c, b, a); } } } 8. Escreva um algoritmo que peça como entrada os coeficientes a, b e c de uma equação de 2.o grau e forneça como saída as suas raízes. Lembre-se de prever os seguintes casos: I. a = 0 : Equação de 1.o grau, calcule a única raiz diretamente II. Δ = 0 : Calcule a única raiz pela fórmula de Baskara III. Δ < 0 : Calcule as 2 raízes complexas pela fórmula de Baskara IV. Δ > 0 : Calcule as 2 raízes reais pela fórmula de Baskara A formula de Bhaskara = Δ = b2 – 4ac Exemplo: a = 1 , b = -5, c = 6 raiz1 = 2 e raiz2 = 3 import java.util.Scanner; import java.lang.Math; public class Ex8 { public static void main(String[] Args) { //Declaração das variáveis Scanner entrada = new Scanner(System.in); float a, b, C, delta, raiz1, raiz2, parteReal; //Entrada de dados System.out.println("Seja ax^2+bx+c=0 uma equação de segundo grau digite o valor do coeficiente a: "); a = entrada.nextFloat(); System.out.println("Digite o valor do coeficiente b: "); b = entrada.nextFloat(); System.out.println("Digite o valor do coeficiente c: "); C = entrada.nextFloat(); //Processamento e saída de dados if (a == 0) { raiz1 = (-C / b); System.out.printf("A raiz única da equação é %.2f.\n", raiz1); } else { //Cálculo das raízes através da formula de báskhara delta = b * b - 4 * a * C; if (delta > 0) { raiz1 = (float) ((-b + Math.sqrt(delta)) / (2 * a)); raiz2 = (float) ((-b - Math.sqrt(delta)) / (2 * a)); System.out.printf("As raízes da equação são %.2f e %.2f.\n", raiz1, raiz2 ); } else if (delta < 0) { parteReal = (-b / (2 * a)); raiz1 = (float) ((Math.sqrt(-1 * delta)) / (2 * a)); System.out.printf("As raízes da equação são %.2f + %.2fi e %.2f - %.2fi.\n", parteReal, raiz1, parteReal, raiz1); } else { //delta == 0 raiz1 = (-b) / (2 * a); System.out.printf("A raiz da equação é %.2f.\n", raiz1); } } } } } 9. Escreva um algoritmo que peça como entrada o conceito final de um aluno em uma disciplina cursada na UFABC e imprima a mensagem correta, conforme tabela abaixo: CONCEITO FINAL A B C D F O I SITUAÇÃO Desempenho excepcional Bom desempenho Desempenho adequado Aproveitamento mínimo Reprovado Reprovado por falta Incompleto import java.util.Scanner; public class Ex9 { public static void main(String[] Args) { //Declaração das variáveis Scanner entrada = new Scanner(System.in); char conceito; //Entrada de dados System.out.println("Entre com o conceito do aluno(A, B, C, D, F, O ou I) "); conceito = entrada.nextLine().charAt(0); //Processamento e saída de dados if (conceito == 'A') { System.out.println("Desempenho excepcional"); } else if (conceito == 'B') { System.out.println("Bom desempenho"); } else if (conceito == 'C') { System.out.println("Desempenho adequado"); } else if (conceito == 'D') { System.out.println("Aproveitamento Mínimo"); } else if (conceito == 'F') { System.out.println("Reprovado"); } else if (conceito == 'O') { System.out.println("Reprovado por falta"); } else { System.out.println("Incompleto"); } } } 10. Uma livraria está fazendo uma promoção para pagamento à vista em que o comprador pode escolher entre dois critérios de desconto: Critério A: R$ 0,25 por livro + R$ 7,50 fixo Critério B: R$ 0,50 por livro + R$ 2,50 fixo Escreva um algoritmo em que o usuário digite a quantidade de livros que deseja comprar e programa diga qual é a melhor opção de desconto. import java.util.Scanner; public class Ex10 { public static void main(String[] Args) { //Declaração de variáveis Scanner entrada = new Scanner(System.in); int livros; float a, b; //Entrada de dados System.out.print("Entre com quantos livros deseja comprar: "); livros = entrada.nextInt(); //Processamento e saída de dados a = (float) (0.25 * livros + 7.50); b = (float) (0.50 * livros + 2.50); if (a > b) { System.out.println("\nMelhor opção é a B"); System.out.println("\nMelhor opção é a A"); } } } 11. O imposto de renda MENSAL de uma pessoa física (IR) é calculado com base na sua renda mensal. Escreva um algoritmo para calcular e imprimir o IR MENSAL e o IR ANUAL de uma pessoa considerando a seguinte tabela e supondo que sua renda mensal (salário) é a mesma durante os 12 meses. Base de cálculo mensal em R$ Alíquota % Parcela a deduzir do imposto em R$ - - De 1.499,16 até 2.246,75 7,5 112,43 De 2.246,76 até 2.995,70 15,0 280,94 De 2.995,71 até 3.743,19 22,5 505,62 Acima de 3.743,19 27,5 Até 1.499,15 Exemplo de Calculo: Se uma pessoa ganha 3500,00 por mês, com base na tabela acima, deve-se aplicar a alíquota (taxa) de 22,5% de imposto de renda e deduzir o valor de 505.62. Assim 3500 x 22.5 /100 = 785,50. Deduzindo-se os 505,62 o valor do imposto mensal será de 281.88. Para o Para verificar se o seu programa está correto, efetue os dois testes que seguem: TESTE 1: Entrada: salário mensal = 3500.00 Saída Esperada: IR Mensal = 281.88 IR Anual = 3382.56 TESTE 2: Entrada: salário mensal = 3500.00 Saída Esperada: IR Mensal = 281.88 IR Anual = 3382.56 import java.util.Scanner; public class Ex11 { public static void main(String[] Args) { //Declaração de variáveis double sal, iranual, irmensal; //Entrada de dados Scanner entrada = new Scanner(System.in); System.out.println("Digite o salário: "); sal = entrada.nextDouble(); //Processamento if (sal > 3743.19) { irmensal = ((sal * 0.275) - 692.78); } else if (3743.19 > sal && sal >= 2995.71) { irmensal = ((sal * 0.225) - 505.62); } else if (sal < 2995.70 && sal >= 2246.76) { irmensal = ((sal * 0.15) - 280.94); } else if (sal < 2246.75 && sal >= 1499.16) { irmensal = ((sal * 0.075) - 112.43); } else { irmensal = 0; } iranual = irmensal * 12; //Saída de dados System.out.println ("O imposto de renda anual é " + iranual + " e o imposto de renda mensal é " + irmensal); } } 12. Escreva um programa que exiba uma mensagem indicando se um número inteiro informado pelo usuário é positivo, negativo ou nulo, de acordo com as seguintes condições: Caso seja maior que zero, exibir: Número ―tal‖ é positivo‖; Caso seja menor que zero, exibir: Número ―tal‖ é negativo‖; Caso seja igual a zero, exibir: Número ―tal‖ é nulo‖. OBS. É OBRIGATÓRIO O USO DE SELEÇÃO ENCADEADA. import java.util.Scanner; public class Ex12 { public static void main(String[] Args) { //Declaração de variáveis int n; //Entrada de dados Scanner entrada = new Scanner(System.in); System.out.println("Digite um número inteiro: "); n = entrada.nextInt(); //Processamento e saída de dados if (n > 0) { System.out.println("O número " + n + " é positivo"); } else if (n == 0) { System.out.println("O número " + n + " é nulo"); } else { System.out.println("O número " + n + " é negativo"); } } } 13. Escreva um algoritmo que peça como entrada o peso (em kilogramas) e a altura (em metros) da pessoa e calcule e exiba o seu IMC – Índice de Massa Corpórea. Adicionalmente, o programa deve emitir as mensagens correspondentes conforme a tabela a seguir: Cálculo IMC Abaixo de 18.5 Entre 18.5 e 24.9 Entre 25.0 e 29.9 Entre 30.0 e 34.9 Entre 35.0 e 39.9 40.0 e acima Situação Você está abaixo do peso ideal Parabéns — você está em seu peso normal! Você está acima de seu peso (sobrepeso) Obesidade grau I Obesidade grau II Obesidade grau III O IMC é calculado da seguinte forma: divide-se o peso (quilogramas) pela altura ao quadrado (em metros). Exemplo1: peso = 65, altura = 1.67 IMC = 65 / (1.67 * 1.67) = 23.30 Exemplo2: peso = 85, altura = 1.60 IMC = 85 / (1.60 * 1.60) = 33.20 OBS. É OBRIGATÓRIO O USO DE SELEÇÃO ENCADEADA. Para verificar se o seu programa está correto, efetue os dois testes que seguem: TESTE 1: Entrada: peso=65 altura = 1.67 Saída Esperada: IMC = 23.30 - Parabéns — você está em seu peso normal! TESTE 2: Entrada: peso=85 altura = 1.60 Saída Esperada: IMC = 33.20 - Obesidade grau I import java.util.Scanner; public class Ex13 { public static void main(String[] Args) { //Declaração de variáveis float peso, altura, imc; //Entrada de dados Scanner entrada = new Scanner(System.in); System.out.println("Entre com seu peso em kg: "); peso = entrada.nextFloat(); System.out.println("Entre com sua altura em metros: "); altura = entrada.nextFloat(); //Processamento e saída de dados imc = peso / (altura * altura); if (imc < 18.5) { System.out.println("Você está abaixo do peso ideal!"); } else if (imc >= 18.5 && imc <= 24.9) { System.out.println("Parabéns! Você está no seu peso ideal!"); } else if (imc >= 25.0 && imc <= 29.9) { System.out.println("Você está acima do peso (sobrepeso)"); } else if (imc >= 30.0 && imc <= 34.9) { System.out.println("Obesidade grau 1"); } else if (imc >= 35.5 && imc <= 39.9) { System.out.println("Obesidade grau 2"); } else { System.out.println("Obesidade grau 3"); } } }