Bacharelado em Ciência e Tecnologia BC-0505 Processamento da Informação Lista de Exercícios Nº 01 Algoritmos – Estruturas Sequenciais 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. Leia um número inteiro e escreva seu sucessor e antecessor. SAÍDA: Quais os resultados que o algoritmo dever fornecer ? Sucessor e antecessor de um número inteiro. ENTRADA: Quais os insumos necessários para se obter a saída? Um número inteiro (Z). PROCESSAMENTO: Como transformar os insumos na saída? Sucessor=Z+1 Antecessor=Z-1 PROGRAMA - JAVA import java.util.Scanner; public class Exercicio1{ public static void main(String[] args) { //DECLARAÇÃO DE VARIÁVEIS; int Z; Scanner scan = new Scanner(System.in); //ENTRADA; System.out.println("Digite um numero inteiro"); Z = scan.nextInt(); //PROCESSAMENTO E SAIDA; System.out.println("Sucessor: "+(Z+1)); System.out.println("Antecessor: "+(Z-1)); } 2. Leia dois números e escreva o dividendo, divisor, quociente e resto. SAÍDA: Quais os resultados que o algoritmo dever fornecer ? O dividendo, divisor, quociente e resto entre dois números. ENTRADA: Quais os insumos necessários para se obter a saída? Dois números (n1 e n2). PROCESSAMENTO: Como transformar os insumos na saída? Dividendo = n1 Divisor = n2 Quociente = n1/n2 Resto = n1 – (n2*Quociente) PROGRAMA - JAVA import java.util.Scanner; public class Exercicio2{ public static void main(String[] args) { // DECLARACAO DE VARIÁVEIS; int n1, n2, divid, divis, quoc, resto; Scanner scan = new Scanner(System.in); // ENTRADA; System.out.println("Digite um número: "); n1 = scan.nextInt(); System.out.println("Digite outro número: "); n2 = scan.nextInt(); // PROCESSAMENTO; divid = n1; divis = n2; quoc = (n1/n2); resto = n1%n2; // SAIDA; System.out.println ("O dividendo da divisão de "+ n1 +" por "+ n2 +" é " + divid); System.out.println ("O divisor da divisão de "+ n1 +" por "+ n2 +" é " + divis); System.out.println ("O quociente da divisão de "+ n1 +" por "+ n2 +" é "+ quoc); System.out.println ("O resto da divisão de "+ n1 +" por "+ n2 +" é "+ resto); } 3. Calcule a dívida do cheque especial ao ser quitada 6 meses depois a uma taxa de 5% de juros. O valor do empréstimo deve ser informado. SAÍDA: Quais os resultados que o algoritmo dever fornecer ? O valor da dívida do cheque especial a ser quitada. ENTRADA: Quais os insumos necessários para se obter a saída? O valor do empréstimo (N). PROCESSAMENTO: Como transformar os insumos na saída? Fórmula de juros compostos: D=N(1+0.05)^6 PROGRAMA - JAVA import java.util.Scanner; public class Exercicio3{ public static void main(String[] args) { //DECLARAÇÃO DE VARIÁVEIS; double N, D; Scanner scan = new Scanner(System.in); // ENTRADA; System.out.println("Valor do empréstimo: "); N = scan.nextDouble(); // PROCESSAMENTO (Formula de Juros Compostos); D=N*(Math.pow((1+0.05),6)); // SAIDA; System.out.printf("Valor da dívida: %.2f\n", D); } 4. Dada a base e a altura de um retângulo, calcule o perímetro, a área e a diagonal. SAÍDA: Quais os resultados que o algoritmo dever fornecer ? O perímetro, a área e a diagonal do retângulo. ENTRADA: Quais os insumos necessários para se obter a saída? Base e altura de um retângulo PROCESSAMENTO: Como transformar os insumos na saída? Perímetro = (2*altura) + (2*base) Área = altura*base Diagonal = sqrt((base*base) + (altura*altura)) PROGRAMA - JAVA import java.util.Scanner; public class Exercicio4{ public static void main(String[] args) { // DECLARAÇÃO DE VARIÁVEIS; double base, alt, per, area, diag; Scanner scan = new Scanner (System.in); // ENTRADA; System.out.print("Informe o valor da base do retângulo: "); base = scan.nextDouble(); System.out.print("Informe o valor da altura do retângulo: "); alt = scan.nextDouble(); // PROCESSAMENTO; per = (2*alt) + (2*base); // Calculando o perímetro area = alt*base; //Calculando a área diag = Math.sqrt((base*base) + (alt*alt)); //Calculando a diagonal // SAIDA; System.out.println("O perímetro do retângulo é "+ per); System.out.println("A área do retângulo é "+ area); System.out.println("A diagonal do retângulo é "+ diag); } 5. Dada o lado de um quadrado, calcule o perímetro, a área e a diagonal. SAÍDA: Quais os resultados que o algoritmo dever fornecer ? O perímetro, a área e a diagonal de um quadrado. ENTRADA: Quais os insumos necessários para se obter a saída? O lado (L) do quadrado. PROCESSAMENTO: Como transformar os insumos na saída? Perímetro= Lx4 Área= L^2 Diagonal= sqrt(2)xL PROGRAMA - JAVA import java.util.Scanner; public class Exercicio5{ public static void main(String[] args) { //DECLARAÇÃO DE VARIÁVEIS; double L, P, A, D; Scanner scan = new Scanner(System.in); // ENTRADA; System.out.println("Lado do quadrado: "); L = scan.nextDouble(); // PROCESSAMENTO; P=L*4; //Calcula o perímetro A=L*L; //Calcula a área D=L*(Math.sqrt(2)); //Calcula a diagonal // SAIDA; System.out.println("O perímetro do quadrado é: " + P); System.out.println("A área do quadrado é: " + A); System.out.println("A diagonal do quadrado é: " + D); } 6. Dado o raio de um círculo, calcule o perímetro e a área. SAÍDA: Quais os resultados que o algoritmo dever fornecer ? O perímetro e a área de um círculo. ENTRADA: Quais os insumos necessários para se obter a saída? Raio de um círculo (R). PROCESSAMENTO: Como transformar os insumos na saída? Perímetro = (2*π*R) Área = (π*R*R) PROGRAMA - JAVA import java.util.Scanner; public class Exercicio6{ public static void main(String[] args) { // DECLARAÇÃO DE VARIÁVEIS; double R, area, per; Scanner scan = new Scanner (System.in); // ENTRADA; System.out.println("Informe o raio do círculo: "); R = scan.nextDouble(); // PROCESSAMENTO; per = (2*Math.PI*R); //Calcula perímetro area = Math.PI*(R*R); //Calcula área // SAIDA; System.out.println("O perímetro do circulo é "+per); System.out.println("A área do circulo é "+area); } 7. Dados os três lados de um paralelepípedo, calcule o perímetro, a área, o volume e a diagonal. SAÍDA: Quais os resultados que o algoritmo dever fornecer ? Perímetro, área, volume e diagonal de um paralelepípedo. ENTRADA: Quais os insumos necessários para se obter a saída? Os três lados de um paralelepípedo (A, B, C). PROCESSAMENTO: Como transformar os insumos na saída? Perímetro= 4*(A+B+C) Área= 2(AB+BC+CA) Volume= A*B*C Diagonal= sqrt(A^2+B^2+C^2) PROGRAMA - JAVA import java.util.Scanner; public class Exercicio7{ public static void main(String[] args) { //DECLARAÇÃO DE VARIÁVEIS; double A, B, C, P, Ar, V, D; Scanner scan = new Scanner(System.in); // ENTRADA; System.out.println("Digite os 3 lados do paralelepípedo: "); A = scan.nextDouble(); B = scan.nextDouble(); C = scan.nextDouble(); // PROCESSAMENTO; P=4*(A+B+C); Ar=2*(A*B+B*C+C*A); V=A*B*C; D=Math.sqrt(A*A+B*B+C*C); // SAIDA; System.out.printf("Perímetro: %.2f\n", P); System.out.printf("Área: %.2f\n", Ar); System.out.printf("Volume: %.2f\n", V); System.out.printf("Diagonal: %.2f\n", D); } 8. Dados dois catetos de um triangulo retângulo, calcule a hipotenusa. SAÍDA: Quais os resultados que o algoritmo dever fornecer ? A hipotenusa de um triângulo retângulo. ENTRADA: Quais os insumos necessários para se obter a saída? Dois catetos do triângulo retângulo (cat1, cat2). PROCESSAMENTO: Como transformar os insumos na saída? Hipotenusa = sqrt ((cat1*cat1) + (cat2*cat2)) PROGRAMA - JAVA import java.util.Scanner; public class Exercicio8{ public static void main(String[] args) { //DECLARAÇÃO DE VARIÁVEIS; double cat1, cat2, hip; Scanner scan = new Scanner (System.in); // ENTRADA; System.out.println("Informe o valor de um cateto do triangulo retângulo: "); cat1 = scan.nextDouble(); System.out.println("Informe o valor do outro cateto do triangulo retângulo: "); cat2 = scan.nextDouble(); // PROCESSAMENTO; hip = Math.sqrt((cat1*cat1) + (cat2*cat2)); // SAIDA; System.out.println("O valor da hipotenusa do triangulo retângulo é "+hip); } 9. Dada a razão de uma PA e seu primeiro termo, calcular o 20º termo. SAÍDA: Quais os resultados que o algoritmo dever fornecer ? O 20º termo de uma PA. ENTRADA: Quais os insumos necessários para se obter a saída? A razão e o primeiro termo de uma PA. PROCESSAMENTO: Como transformar os insumos na saída? Fórmula do termo geral de uma PA: An=A1+(n-1)*r, onde n=20. PROGRAMA - JAVA import java.util.Scanner; public class Exercicio9{ public static void main(String[] args) { // DECLARAÇÃO DE VARIÁVEIS; int A1, r, An; Scanner scan = new Scanner(System.in); // ENTRADA; System.out.println("Digite o primeiro termo e a razão de uma PA, respectivamente: "); A1 = scan.nextInt(); r = scan.nextInt(); // PROCESSAMENTO; An=A1+ ((20-1)*r); // SAIDA; System.out.println("O 20º termo dessa PA é: "+ An); } 10. Dada a razão de uma PG e seu primeiro termo, calcular o 20º termo. SAÍDA: Quais os resultados que o algoritmo dever fornecer ? O 20º termo de uma PG. ENTRADA: Quais os insumos necessários para se obter a saída? A razão (q) e o primeiro termo (A1) de uma PG. PROCESSAMENTO: Como transformar os insumos na saída? Fórmula do termo geral de uma Pg: An=A1*(q^(n-1)), onde n=20. PROGRAMA - JAVA import java.util.Scanner; public class Exercicio10{ public static void main(String[] args) { // DECLARAÇÃO DE VARIÁVEIS; int A1, q; double An; Scanner scan = new Scanner(System.in); // ENTRADA; System.out.println("Digite o primeiro termo e a razão de uma PG, respectivamente: "); A1 = scan.nextInt(); q = scan.nextInt(); // PROCESSAMENTO; An=A1*Math.pow(q, 19); // SAIDA; System.out.println("O 20º termo dessa PG é: " + An); } 11. Dado um horário, calcule quantos minutos e segundos transcorreram desde o início do dia. SAÍDA: Quais os resultados que o algoritmo dever fornecer ? Minutos (M) e segundos (S) transcorridos. ENTRADA: Quais os insumos necessários para se obter a saída? Um horário – horas, minutos e segundos(h, m, s). PROCESSAMENTO: Como transformar os insumos na saída? S=(3600*h)+(60*m)+s M=S/60 PROGRAMA - JAVA import java.util.Scanner; public class Exercicio11{ public static void main(String[] args) { // DECLARAÇÃO DE VARIÁVEIS; int h, m, s; double M, S; Scanner scan = new Scanner(System.in); // ENTRADA; System.out.println("Digite um horário - horas, minutos e segundos, respectivamente: "); h = scan.nextInt(); m = scan.nextInt(); s = scan.nextInt(); // PROCESSAMENTO; S=(3600*h)+(60*m)+s; M=S/60; // SAIDA; System.out.printf("Minutos transcorridos: %.2f\n", M); System.out.printf("Segundos transcorridos: %.2f\n", S); } 12. Dado o valor do salário-mínimo e um determinado salário, calcule quantos salários-mínimos estão contidos nele. SAÍDA: Quais os resultados que o algoritmo dever fornecer ? Quantidade de salários-mínimos que estão contidos em um determinado salário. ENTRADA: Quais os insumos necessários para se obter a saída? Valor do salário-mínimo (salariomin) e de um determinado salário (salario). PROCESSAMENTO: Como transformar os insumos na saída? Quant = salario/salariomin PROGRAMA - JAVA import java.util.Scanner; public class Exercicio12{ public static void main(String[] args) { // DECLARAÇÃO DE VARIÁVEIS; double salariomin, salario, quant; Scanner scan = new Scanner(System.in); // ENTRADA; System.out.println("Informe o valor do salario mínimo: "); salariomin = scan.nextDouble(); System.out.println("Informe o valor de um salário: "); salario = scan.nextDouble(); // PROCESSAMENTO; quant = salario/salariomin; // SAIDA; System.out.printf("Estão contidos %.2f salários mínimos no salário.\n", quant); } 13. Escreva um algoritmo para mostrar a média final de um aluno a partir de 4 notas. Para o calculo da media final, deve-se utilizar média ponderada, aplicando-se a seguinte fórmula: M = ((p1 x 30) + (p2 x 40) + (t1 x 10) + (t2 x 20)) / 100 Legenda: p1: primeira prova (peso de 30%) / p2: segunda prova (peso de 40%) t1: primeiro trabalho (peso de 10%) / t2: segundo trabalho (peso de 20%) SAÍDA: Quais os resultados que o algoritmo dever fornecer ? A média (M). ENTRADA: Quais os insumos necessários para se obter a saída? P1, P2, T1, T2 PROCESSAMENTO: Como transformar os insumos na saída? Aplicar a fórmula: M = ( ( p1 x 30) + (p2 x 40) + (t1 x 10) + (t2 x 20) ) / 100 PROGRAMA - JAVA import java.util.Scanner; public class Exercicio13{ public static void main(String[] args) { // DECLARAÇÃO DE VARIÁVEIS; double P1, P2, T1, T2, M; Scanner scan = new Scanner(System.in); // ENTRADA; System.out.println("Digite as notas da Prova1, Prova2, Trabalho1 e Trabalho2, respectivamente: "); P1 = scan.nextDouble(); P2 = scan.nextDouble(); T1 = scan.nextDouble(); T2 = scan.nextDouble(); // PROCESSAMENTO; M = ((P1 * 30) + (P2 * 40) + (T1 * 10) + (T2 * 20)) / 100; // SAIDA; System.out.printf("Média: %.2f\n", M); } 14. Escreva um algoritmo para calcular a quantidade de latas de tintas necessárias para pintar o piso de um quintal que possui uma área retangular. Deve-se calcular também o custo total para comprar as latas de tintas necessárias. Sabe-se que: Cada lata de tinta contém 5 litros Cada litro de tinta pinta 3 metros quadrados A área de um retângulo é dada por: base X altura SAÍDA: Quais os resultados que o algoritmo dever fornecer ? Quantidade de latas de tintas necessárias e o custo total para compra das latas de tintas necessárias. ENTRADA: Quais os insumos necessários para se obter a saída? Base (base), altura (alt) da área retangular e o custo unitário da lata de tinta. PROCESSAMENTO: Como transformar os insumos na saída? Aplicar a fórmula: latas = (base*alt)/15 PROGRAMA - JAVA import java.util.Scanner; import java.lang.Math; public class LISTAEx14 { public static void main(String[] args) { // DECLARAÇÃO DE VARIÁVEIS; double base, alt, x, precounit, custototal; Scanner scan = new Scanner(System.in); // ENTRADA; System.out.println("Informe o valor da base da área retangular: "); base = scan.nextDouble(); System.out.println("Informe o valor da altura da área retangular: "); alt = scan.nextDouble(); System.out.println("Informe o valor o custo de compra de 1 (uma) lata de tinta em reais: "); precounit = scan.nextDouble(); // PROCESSAMENTO; x = ((base*alt)/(15.0)); custototal = x*precounit; // SAIDA; System.out.println("São necessárias "+ Math.round(x) +" lata(s) de tinta para pintar o piso"); System.out.println("O custo total para comprar "+Math.round(x)+" lata(s) eh de "+custototal+ " reais"); } } Observação: Na saída de dados foi utilizado a função Math.round() para arredondar para cima o número de latas, já que o número de latas deve ser um número inteiro. 15. Construa um algoritmo que, tendo como dados de entrada dois pontos quaisquer do plano, P(x1,y1) e Q(x2,y2), imprima a distância entre eles. A fórmula que efetua tal cálculo é d ( x2 x1 ) 2 ( y 2 y1 ) 2 . SAÍDA: Quais os resultados que o algoritmo dever fornecer ? Distância (d) entre os pontos P e Q. ENTRADA: Quais os insumos necessários para se obter a saída? Um ponto P(x1,y1) e um ponto Q(x2,y2). PROCESSAMENTO: Como transformar os insumos na saída? Aplicar a fórmula: d=sqrt((x2-x1)^2+(y2-y1)^2) PROGRAMA - JAVA import java.util.Scanner; public class Exercicio15{ public static void main(String[] args) { // DECLARAÇÃO DE VARIÁVEIS; double d; int x1, y1, x2, y2; Scanner scan = new Scanner(System.in); // ENTRADA; System.out.println("Determine o ponto P(x1,y1)- digite x1 e y1, respectivamente: "); x1 = scan.nextInt(); y1 = scan.nextInt(); System.out.println("Determine o ponto Q(x2,y2)- digite x2 e y2, respectivamente: "); x2 = scan.nextInt(); y2 = scan.nextInt(); // PROCESSAMENTO; d=Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)); // SAIDA; System.out.printf("Distância entre P e Q: %.2f\n", d); } 16. Um motorista anota a marcação do odometro do seu veículo antes e após uma viagem, bem como o número de litros de combustível gastos. Escreva um algoritmo para ler os três dados acima, o preço do litro do combustível e imprima: o A quilometragem rodada o Quantos quilômetros, por litro, faz o veículo o O custo da viagem SAÍDA: Quais os resultados que o algoritmo dever fornecer ? Quilometragem rodada, quantos quilômetros por litro o veículo faz e o custo da viagem. ENTRADA: Quais os insumos necessários para se obter a saída? Marcação do odômetro antes da viagem (iniciood), marcação do odômetro após a viagem (fimod), o número de litros de combustível gastos (litrogasto) e o preço do litro do combustível (precolitro) PROCESSAMENTO: Como transformar os insumos na saída? Quilometragem rodada = fimod – iniciood Quilometros por litro = (fimod – iniciood) / (litrogasto) Custo da viagem = precolitro * litrogasto PROGRAMA - JAVA import java.util.Scanner; public class Exercicio16{ public static void main(String[] args) { // DECLARAÇÃO DE VARIÁVEIS; double iniciood, fimod, litrogasto, precolitro, quilometrodado, quilometporlitro, custoviagem; Scanner scan = new Scanner(System.in); // ENTRADA; System.out.println("Informe a marcação o odômetro antes da viagem: "); iniciood = scan.nextDouble(); System.out.println("Informe a marcação o odômetro após a viagem: "); fimod = scan.nextDouble(); System.out.println("Informe o numero de litros de combustível gastos na viagem: "); litrogasto = scan.nextDouble(); System.out.println("Informe o preço do litro do combustível: "); precolitro = scan.nextDouble(); // PROCESSAMENTO; quilometrodado = fimod - iniciood; quilometporlitro = (fimod - iniciood) / (litrogasto); custoviagem = precolitro*litrogasto; // SAIDA; System.out.println("A quilometragem rodada é " + quilometrodado + " km."); System.out.println("O veiculo faz " + quilometporlitro + " km por litro."); System.out.println("O custo da viagem foi de "+ custoviagem + " reais."); } 17. O custo ao consumidor de um carro novo é a soma do custo de fábrica, acrescido da porcentagem do distribuidor, mais os impostos (aplicados ao custo de fábrica). Supondo que a percentagem do distribuidor seja de 28% e os impostos de 45%, escrever um algoritmo que leia o custo de fábrica de um carro e escreva o custo do consumidor. SAÍDA: Quais os resultados que o algoritmo dever fornecer ? O custo do consumidor de um carro novo (Cc). ENTRADA: Quais os insumos necessários para se obter a saída? O custo de fábrica de um carro novo (Cf). PROCESSAMENTO: Como transformar os insumos na saída? Calcular o custo do consumidor a partir do custo de fábrica, a porcentagem do distribuidor e os impostos: Cc=Cf+(Cf*0.28)+(Cf*0.45) PROGRAMA - JAVA import java.util.Scanner; public class Exercicio17{ public static void main(String[] args) { // DECLARACAO DE VARIAVEIS; double Cf, Cc; Scanner scan = new Scanner(System.in); // ENTRADA; System.out.println("Custo de fábrica: "); Cf = scan.nextDouble(); // PROCESSAMENTO; Cc=Cf+(Cf*0.28)+(Cf*0.45); // SAIDA; System.out.println("O custo do consumidor é: " + Cc); } 18. Uma revendedora de carros usados paga seus funcionários vendedores um salário fixo por mês, mais uma comissão, também fixa, por cada carro vendido, e mais 5% do valor das vendas por ele efetuadas. Escrever um algoritmo e um fluxograma para ler o número do vendedor, o número de carros por ele vendido, o valor total de suas vendas, o salário fixo e o valor que recebe por carro vendido. Ao final, o algoritmo deve calcular o salário mensal do vendedor, escrevendo-o juntamente com o seu número de identificação. SAÍDA: Quais os resultados que o algoritmo dever fornecer ? Salário mensal do vendedor e o seu número de identificação. ENTRADA: Quais os insumos necessários para se obter a saída? Número do vendedor (id), número de carros por ele vendido (carrosvendidos), o valor total de suas vendas (valorvendas), o salário fixo (salariofixo) e o valor que recebe por carro vendido (valorporcarro). PROCESSAMENTO: Como transformar os insumos na saída? Salário = salariofixo + (valorporcarro*carrosvendidos) + (0.05*valorvendas) Identificação do funcionário: id PROGRAMA - JAVA import java.util.Scanner; public class Exercicio18{ public static void main(String[] args) { // DECLARAÇÃO DE VARIÁVEIS; double salariofixo, valorporcarro, valorvendas, salariofinal; int id, carrosvendidos; Scanner scan = new Scanner(System.in); // ENTRADA; System.out.println("Informe o número do vendedor: "); id = scan.nextInt(); System.out.println("Informe o salário fixo por mês: "); salariofixo = scan.nextDouble(); System.out.println("Informe o número de carros vendidos pelo vendedor: "); carrosvendidos = scan.nextInt(); System.out.println("Informe o valor que recebe por cada carro vendido: "); valorporcarro = scan.nextDouble(); System.out.println("Informe o valor total de vendas do vendedor: "); valorvendas = scan.nextDouble(); // PROCESSAMENTO; salariofinal = salariofixo + (valorporcarro*carrosvendidos) + (0.05*valorvendas); // SAIDA; System.out.println("Número de identificação: "+id); System.out.println("O salário mensal do vendedor é de "+ salariofinal+ " reais"); }