Caderno de Exercı́cios Processamento da Informação – Edição Java Jesús P. Mena-Chalco Centro de Matemática, Computação e Cognição - CMCC Universidade Federal do ABC Alguns exercı́cios podem conter erros. Caso os identifique, por favor, envie a sugestão de melhora ou correções ao email [email protected]. Atualizado em 4 de março de 2015 1 Caderno de exercı́cios – Processamento da Informação – Edição Java I Exemplos básicos 1. Olá Mundo! Nome do arquivo de código fonte: OlaMundo.java /* Este eh um comentario */ class OlaMundo { public static void main(String[] args) { System.out.println("Ola Mundo!"); } } 2. Soma de dois números inteiros. Nome do arquivo de código fonte: Soma0.java class Soma0 { public static void main(String[] args) { int a, b, soma; a = 10; b = 17; soma = a+b; System.out.println(soma); } } 3. Soma de dois números inteiros dados pelo usuário. Nome do arquivo de código fonte: Soma1.java import java.util.*; // utilizado para a leitura de dados. class Soma1 { public static void main(String[] args) { Scanner in = new Scanner(System.in); int a, b, soma; a = in.nextInt(); b = in.nextInt(); soma = a+b; System.out.println(soma); } } 4. Soma de dois números inteiros dados pelo usuário (usando uma função denominada ‘somatoria’). Nome do arquivo de código fonte: Soma2.java 2 Caderno de exercı́cios – Processamento da Informação – Edição Java import java.util.*; class Soma2 { /*Exemplo de uma nova funcao/procedimento*/ static int somatoria(int a, int b) { return a + b; } public static void main(String[] args) { Scanner in = new Scanner(System.in); int a, b, soma; a = in.nextInt(); b = in.nextInt(); soma = somatoria(a, b); System.out.println(soma); } } 5. Soma de três números inteiros dados pelo usuário (usando uma função denominada ‘somatoria’). Nome do arquivo de código fonte: Soma3.java import java.util.*; class Soma3 { static int somatoria(int a, int b, int c) { return a + b + c; } public static void main(String[] args) { Scanner in = new Scanner(System.in); int a, b, c, soma; a = in.nextInt(); b = in.nextInt(); c = in.nextInt(); soma = somatoria(a, b, c); System.out.println(soma); } } 3 Caderno de exercı́cios – Processamento da Informação – Edição Java II Módulos, Funções ou Métodos (primeira parte) 1. Exemplo de função/método. Nome do arquivo de código fonte: Funcao01.java public class Funcao01 { static int caixaPreta(int a, int b) { return a*a + b; } public static void main(String []args) { int resposta; resposta = caixaPreta(3, 5); System.out.println(resposta); } } Instrução para compilar o código fonte: javac Funcao01.java O compilador gerará o arquivo Funcao01.class Instrução para executar o programa: java Funcao01 14 2. Exemplo de função/método que calcula a operação x = a2 + 2ab + b2 . Nome do arquivo de código fonte: Funcao02.java public class Funcao02 { static double calcular(double a, double b) { double x; x = a*a + 2*a*b + b*b; return x; } public static void main(String []args) { double resposta; resposta = calcular(2, 3); System.out.println(resposta); } } Instrução para compilar o código fonte: javac Funcao02.java O compilador gerará o arquivo Funcao02.class Instrução para executar o programa: java Funcao02 25.0 3. Exemplo de função/método que calcula a operação x = a2 + 2ab + b2 . Aqui é utilizada a biblioteca Java.Math. Nome do arquivo de código fonte: Funcao03.java 4 Caderno de exercı́cios – Processamento da Informação – Edição Java import java.math.*; public class Funcao03 { static double calcular(double a, double b) { double x; x = Math.pow(a,2) + 2*a*b + Math.pow(b,2); return x; } public static void main(String []args) { double resposta; resposta = calcular(2, 3); System.out.println(resposta); } } Instrução para compilar o código fonte: javac Funcao03.java O compilador gerará o arquivo Funcao03.class Instrução para executar o programa: java Funcao03 25.0 4. Exemplo de funções matemáticas. import java.math.*; public class Funcao04 { static void calcular(double a, double b) { System.out.println( Math.floor(a/b) ); System.out.println( Math.ceil(a/b) ); System.out.println( Math.min(a,b) ); System.out.println( Math.max(a,b) ); System.out.println( Math.pow(a,b) ); System.out.println( Math.sqrt(a+b) ); System.out.println( Math.abs(-a-b) ); } public static void main(String []args) { calcular(2, 3); } } Resultado: 5 Caderno de exercı́cios – Processamento da Informação – Edição Java 0.0 1.0 2.0 3.0 8.0 2.23606797749979 5.0 5. Exemplo de função, considerando tipo de dado boolean. public class Funcao05 { static boolean nao(boolean p) { return !p; } public static void main(String []args) { boolean var; var = true; System.out.println( var ); System.out.println( nao(var) ); System.out.println( nao(nao(var)) ); } } Resultado: true false true 6. Exemplo de função. public class Funcao06 { static void algumasOperacoes(int a, int b, int c) { int t; imprimeValores(a, b, c); t a b c = = = = a; b; c; t; imprimeValores(a, b, c); } static void imprimeValores(int a, int b, int c) { System.out.println("A="+a+", B="+b+", C="+c); } public static void main(String []args) { algumasOperacoes(10, 20, 30); } } Resultado: A=10, B=20, C=30 A=20, B=30, C=10 6 Caderno de exercı́cios – Processamento da Informação – Edição Java 7. Os números de Fibonacci estão relacionados com a razão aurea e o i-ésimo número pode ser aproximado pela seguinte equação (formula explı́cita): √ √ $ % ( 1+2 5 )i − ( 1−2 5 )i √ Fi = 5 Crie uma função/método em Java que receba um número inteiro i, e devolva Fi . import java.math.*; public class Fibonacci { static double iessimoTermo(int i) { double var1, var2, var3; var1 = Math.pow( (1+Math.sqrt(5))/2, i); var2 = Math.pow( (1-Math.sqrt(5))/2, i); var3 = Math.sqrt(5); return Math.floor((var1-var2)/var3); } public static void main(String []args) { System.out.println( iessimoTermo(10) ); System.out.println( iessimoTermo(11) ); System.out.println( iessimoTermo(12) ); } } Resultado: 55.0 89.0 144.0 8. Crie funções, em Java, que calculem o volume e a área de um cilindro com raio r e altura h. import java.math.*; public class Cilindro { static double calcularVolume(double r, double h) { return Math.PI * r*r * h; } static double calcularArea(double r, double h) { return 2*Math.PI*r*(r+h); } public static void main(String []args) { double r, h; r = 2; h = 10; System.out.println( calcularVolume(r, h) ); System.out.println( calcularArea(r, h) ); } } Resultado: 7 Caderno de exercı́cios – Processamento da Informação – Edição Java 125.66370614359172 150.79644737231007 8 Caderno de exercı́cios – Processamento da Informação – Edição Java III Estruturas e seleção simples e composta 1. Exemplo 01. public class Operadores { static void operacoes(int p, int q) { System.out.println("\nOperacoes entre os numeros "+p+" e "+q+":"); System.out.println(p/q); System.out.println((double)p/q); System.out.println(p%q); } public static void main(String []rgs) { operacoes(7, 3); operacoes(1, 100); } } Resultado: Operacoes entre os numeros 7 e 3: 2 2.3333333333333335 1 Operacoes entre os numeros 1 e 100: 0 0.01 1 2. Atividade01. public class Atividade01 { static boolean questao00() { return 2>4; } static int questao01(char c) { int t = 4; if (c==’A’) t = t-0; if (c==’B’) t = t-1; if (c==’C’) t = t-2; if (c==’D’) t = t-3; else t = t-4; return t; } 9 Caderno de exercı́cios – Processamento da Informação – Edição Java static int questao02(char c) { int t; if (c==’A’) t = 4; if (c==’B’) t = 3; if (c==’C’) t = 2; if (c==’D’) t = 1; else t = 0; return t; } static String questao03(double t, int f) { String var="reprovado"; if (t>=5 & t<=10 & !(f>=4)) var = "aprovado"; return var; } static void questao04(int w, int q) { if (w>q) { questao04(q, w); } else { System.out.println(w+"-"+q); } } static int questao05(int n) { if (n==0) { return 1; } else { return questao05(n-1)*n; } } static int questao06(int a, int b) { if (a<b) return b; else if (a>b) return a; return -1; } 10 Caderno de exercı́cios – Processamento da Informação – Edição Java public static void main(String []rgs) { /* Questao 00 */ System.out.println( questao00() ); System.out.println( questao00() ); System.out.println( questao00() ); /* Questao 01 */ System.out.println( questao01(’A’) ); System.out.println( questao01(’B’) ); System.out.println( questao01(’F’) ); /* Questao 02 */ System.out.println( questao02(’A’) ); System.out.println( questao02(’C’) ); System.out.println( questao02(’D’) ); /* Questao 03 */ System.out.println( questao03(2, 0) ); System.out.println( questao03(6, 2) ); System.out.println( questao03(9, 6) ); /* Questao 04 */ questao04(100, 200); questao04(200, 100); /* Questao 05 */ System.out.println( questao05(2) ); System.out.println( questao05(3) ); System.out.println( questao05(4) ); /* Questao 06 */ System.out.println( questao06(2, 4) ); System.out.println( questao06(4, 2) ); System.out.println( questao06(6, 6) ); } } Resultado: 11 Caderno de exercı́cios – Processamento da Informação – Edição Java false false false 0 -1 0 0 0 1 reprovado aprovado reprovado 100-200 100-200 2 6 24 4 4 -1 12 Caderno de exercı́cios – Processamento da Informação – Edição Java IV Estruturas de repetição (while) 1. Atividade02. public class Atividade02 { static int q0(int a, int b) { while (a<b) { a = a+1; } return a; } static int q1(int a, int b) { a = b; while (a<b | a%2==0) { a = a+1; } return a; } static int q2(int a, int b) { a = b; while (a<b & a>b) { a = a+1; } return a; } static int q3(int n) { int x = 1; while (n>1) { x = x*n; n = n-1; } return x; } static int q4(int n) { int soma = 0; int i; while (n>=1) { i = n; while (i>=1) { soma = soma+n; i = i-1; } n = n-1; } return soma; } 13 Caderno de exercı́cios – Processamento da Informação – Edição Java public static void main(String []args) { /*Questao 0*/ System.out.println( q0(1,10) ); System.out.println( q0(10,1) ); /*Questao 1*/ System.out.println( q1(1,10) ); System.out.println( q1(10,1) ); /*Questao 2*/ System.out.println( q2(1,10) ); System.out.println( q2(10,1) ); /*Questao 3*/ System.out.println( q3(0) ); System.out.println( q3(6) ); /*Questao 4*/ System.out.println( q4(3) ); System.out.println( q4(5) ); } } Resultado: 10 10 11 1 10 1 1 720 14 55 14 Caderno de exercı́cios – Processamento da Informação – Edição Java V Estruturas de repetição (for) 1. Atividade03. public class Atividade03 { static int q1 (int n) { int soma=0; for (int x=1; x<=n; x=x+1) { x = x+1; soma = soma+x; } return soma; } static int q2 (int n) { int soma=0; for (int x=1; x<=n; x=x+1) { soma = soma+x; break; } return soma; } static int q3 (int n) { int soma=0; for (int x=1; x<=n; x=x+1) { soma = soma+q2(x); } return soma; } static int q4 (int n) { int soma=0; for (int i=1; i<=n; i=i+1) { for (int j=1; j<=n; j=j+1) { for (int k=1; k<=n; k=k+1) { soma = soma+1; } } } return soma; } 15 Caderno de exercı́cios – Processamento da Informação – Edição Java static int q5 (int n) { int soma=0; for (int i=1; i<=n; i=i+1) { for (int j=i; j<=n; j=j+1) { soma = soma+1; } } return soma; } public static void main(String []args) { /* Questao 1 */ System.out.println( q1(0) ); System.out.println( q1(10) ); /* Questao 2 */ System.out.println( q2(2) ); System.out.println( q2(4) ); /* Questao 3 */ System.out.println( q3(2) ); System.out.println( q3(4) ); /* Questao 4 */ System.out.println( q4(0) ); System.out.println( q4(3) ); /* Questao 5 */ System.out.println( q5(5) ); System.out.println( q5(6) ); } } Resultado: 0 30 1 1 2 4 0 27 15 21 16 Caderno de exercı́cios – Processamento da Informação – Edição Java VI Vetores 1. Atividade04. public class Atividade04 { static void q1 (int v[]) { int i, soma=0; for (i=v.length-1; i>=0; i=i-1) { soma = soma+v[i]; } System.out.println( (double)soma/v.length ); } static void q2 (int v[]) { int i, cont=0; for (i=0; i<v.length; i=i+1) { if (v[i]<=v[i]-v[i]) { cont = cont+1; } } System.out.println(cont); } static int int int void q3 (int v[]) { i; m1=v[0]; m2=v[0]; for (i=v.length-1; i>=0; i=i-1) { if (m1>v[i]) { m1 = v[i]; } if (m2<v[i]) { m2 = v[i]; } } System.out.println( m1+" "+m2 ); } static int int int void q4 (int v[]) { i, temp; soma=0; n = v.length; for (i=0; i<n/2; i=i+1) { temp = v[i]; v[i] = v[n-i-1]; v[n-i-1] = temp; } for (i=0; i<n; i=i+1) { System.out.print(v[i]+" "); } System.out.print("\n"); } 17 Caderno de exercı́cios – Processamento da Informação – Edição Java public static void main(String []args) { int T[ ] = {20, 100, 0, 30, -60, 10, 0, 0}; /* Questao 1*/ q1(T) ; /* Questao 2*/ q2(T) ; /* Questao 3*/ q3(T) ; /* Questao 4*/ q4(T) ; } } Resultado: 12.5 4 -60 100 0 0 10 -60 30 0 100 20 18