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 jesus.mena@ufabc.edu.br. Atualizado em 4 de março de 2015 1
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
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
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 = a 2 + 2ab + b 2. 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 = a 2 + 2ab + b 2. Aqui é utilizada a biblioteca Java.Math. Nome do arquivo de código fonte: Funcao03.java 4
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); 5
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)) ); 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; a = b; b = c; 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); A=10, B=20, C=30 A=20, B=30, C=10 6
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+ 5 2 ) i ( 1 5 2 ) i F i = 5 Crie uma função/método em Java que receba um número inteiro i, e devolva F i. 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) ); 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) ); 7
125.66370614359172 150.79644737231007 8
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); 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
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
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) ); 11
false false false 0-1 0 0 0 1 reprovado aprovado reprovado 100-200 100-200 2 6 24 4 4-1 12
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
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) ); 10 10 11 1 10 1 1 720 14 55 14
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
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) ); 0 30 1 1 2 4 0 27 15 21 16
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 void q3 (int v[]) int i; int m1=v[0]; int 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 void q4 (int v[]) int i, temp; int soma=0; int 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
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) ; 12.5 4-60 100 0 0 10-60 30 0 100 20 18