Caderno de exercícios (com resoluções)

Propaganda
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
Download