Exercício /Solução Exercício Semelhante Exercício /Solução

Propaganda
Exercício /Solução
Exercícios em Java
usando estruturas
de controle de fluxo
Slides_Java_3
• Escreva um programa em Java que calcule a
soma dos números pares entre 2 e 200.
• (resultado=10100)
public class SumEvenIntegers{
public static void main(String[] args){
int sum = 0;
for (int i = 2; i <= 200; i =i+2) {
sum = sum+ i;
}
System.out.println("Sum: " + sum);
}
}
Sistemas Informáticos
Exercício/Solução
Exercício Semelhante
• Escreva um programa que leia valores
inteiros de um ficheiro e que no final do
programa imprima no écrân a média dos
números positivos.
• O programa termina quando chegar ao final
do ficheiro.
•
Determinar os múltiplos de 5, mas que não
sejam múltiplos de 3, entre 100 e 10000.
import essential.*;
class multiplos{
public static void main(String args[]){
System.out.println("Eis os numeros entre 100 e 10000 que sao
multiplos de 5 mas nao sao de 3:");
for(int i =100; i <= 10000; i++){
if((i % 5 == 0)&&(i % 3 != 0))
System.out.println(i+" ");
}
}
}
Exercício
•
•
Escreva um programa que represente um
quadrado de asteriscos. O tamanho do lado
é definido pelo utilizador.
Exemplo (n=5):
*****
*****
*****
*****
*****
Solução
import essential.*;
class Asteriscos {
public static void main(String[] args) {
int lado;
System.out.print("Qual a dimensão do quadrado? ");
lado = Keyboard.readInt();
if (lado >0) {
for (int i = 1; i<= lado; i++) {
for (int j = 1; j <=lado; j++)
System.out.print("*");
System.out.println();
}
}
else
System.out.println("Por favor, introduza um valor positivo!");
}
}
1
Exercício
Calcular o valor do saldo de um artigo, sabendo
que os descontos são feitos em função do
preço e segundo a seguinte tabela:
Preço
P>10000
5000 < P <= 10000
2500 < P <= 5000
outros
Desconto
40%
20%
10%
5%
Solução
import essential.*;
public class saldo{
public static void main(String args[]){
int p;
double saldo;
System.out.println("Qual o preço do artigo: ");
p = Keyboard.readInt();
if(p > 10000)
saldo = p * 0.4;
else if(p > 5000)
saldo = p * 0.2;
else if(p > 2500)
saldo = p * 0.1;
else
saldo = p*0.05;
System.out.println("Terá um saldo de "+ saldo + " euros");
System.out.println("Custo final do artigo = "+ (p-saldo));
}
}
Exercício
•
Dados três números inteiros positivos:
Exercício
•
– Determinar se estes 3 números podem ser os
comprimentos dos lados de um triângulo
rectângulo;
– Determinar a soma dos seus quadrados;
– Determinar o quadrado da sua soma;
apresenta a tangente.
– Determinar a sua média aritmética.
Exercício
•
Escreva um programa que calcule qual é o
menor e o maior de 10 números inteiros
introduzidos pelo utilizador.
•
Exemplo:
8 23 45 2 56 3 7 12 38 43
Maior=56
Menor=2
Escreva um programa em Java que apresente uma tabela no
écrân onde a primeira coluna deve ter os graus de um ângulo
desde 0º a 360º (de 30 em 30). Na 2ª coluna apresenta o seno
desse ângulo, na 3ª coluna apresenta o coseno e na 4ª coluna
Grau
Seno
Coseno
Tangente
0
30
60
90
120
150
180
...
0.00
0.50
0.87
1.00
0.87
0.50
0.00
1.00
0.87
0.50
0.00
-0.50
-0.87
-1.00
0.00
0.58
1.73
16331239353195370.00
-1.73
-0.58
-0.00
Exercício
•
Escreva um programa que calcule e
apresente todos os divisores de um número.
•
Exemplo:
input = 12
divisores = 1, 2, 3, 4, 6, 12
2
Exercício
•
Escreva um programa que leia 2 nºs inteiros
e apresente a sua soma se ambos forem
pares, o seu produto se ambos forem
ímpares ou o número ímpar se um deles for
par e o outro ímpar.
•
Exemplos:
input: x=4, y=8 ----- result = 12
input: x=3, y=9 ----- result = 27
input: x=4, y=11 ----- result = 11
Exercício
1. Escreva um programa que determine se um
determinado
ano
(introduzido
pelo
utilizador) é um ano bissexto ou não.
2. Os anos bissextos são múltiplos de 4, não
são múltiplos de 100, com excepção dos
anos que são múltiplos de 400, que também
são bissextos.
3. Por exemplo, os anos 1996 e 2000 são
bissextos, enquanto que os anos 1998 e
1900 são comuns.
Exercício
• Ler três números inteiros e determinar qual
deles é o maior e qual é o menor.
Exercício
•
A série de Fibonnaci é dada por:
F(0) = 0
F(1) = 1
F(n) = F(n-2) + F(n-1) (n>=2)
•
Escreva um programa para apresentar os
primeiros 20 termos desta série.
Exercício
•
Um hotel concebeu uma forma original de
cobrar aos seus clientes. A 1ª noite custa
50€, a segunda 25€ (50€/2), a n-ésima
custa 50€/n. Calcule a cobrança a efectuar
a um cliente que fique n noites no hotel
(preço a pagar por noite e o total).
Exercício
Escreva um programa para calcular a soma dos
digitos de um número.
Exemplos:
43 -> 7
432 -> 9
3271 -> 13
3
Gerador de Números
• Escreva um programa que execute em ciclo, a gerar
números aleatórios entre 1 e 6. O programa deve
terminar quando sair um 6 e deve imprimir no écrân
quantos números é que foram gerados.
Estrutura do Programa
1. Gera um número entre 1-6 e imprime no écrân
2. Incrementa contador de tentativas
3. Enquanto esse número for diferente de 6 repete:
1. Gera um novo número entre 1-6 e imprime
2. Incrementa contador de tentativas
4. Imprime no écrân o número total de tentativas
•
Como gerar um número inteiro entre 1 e 6:
int number = (int) Math.floor(6*Math.random())+1;
random()- Returns a double value with a positive sign, greater than or equal to 0.0 and less than 1.0.
floor(double a) - Returns the largest (closest to positive infinity) double value that is not greater than the
argument and is equal to a mathematical integer.
Jogo: Adivinhar um número
•
Escreva um programa em Java que começa por
gerar um número entre 1 e 100 e depois pede ao
utilizador para adivinhar esse número. O programa
executa em ciclo até o número ser adivinhado.
•
Eis a estrutura:
1.
2.
3.
Gera número (n) entre 1 e 100.
Pergunta ao utilizador qual é o número
Enquanto a resposta não estiver certa
1.
Se a tentativa do utilizador for menor do que o número n
2.
Se a tentativa do utilizador for maior do que o número n
1.
1.
3.
4.
Diz ao utilizador que o número está acima
Diz ao utilizador que o número está abaixo
Pede ao utilizador uma nova tentativa
Imprime “certo!” no écrân
Resolução parcial...
number = (int) Math.floor(6*Math.random())+1;
Exercício
• Calcular as coordenadas de um projéctil e fazer a
sua representação usando a classe Graph.
• Se o projéctil é lançado a uma velocidade inicial de υ
m/s e segundo um ângulo α sobre a horizontal
então as coordenadas x,y do projéctil t segundos
depois do lançamento são dadas pelas seguintes
fórmulas:
x = υt cos(α )
y = υt sin(α ) −
gt 2
2
• Considera-se que não existe resistência do ar.
• Os graus α na fórmula devem ser em radianos.
π _ radians = 180 º
Output (60º, 60 m/s)
import essential.*;
public class MyProjectil{
public static void main(String[ ] args){
double a, u;
System.out.print( "Introduza o grau inicial (em graus): " );
a = Keyboard.readDouble();
System.out.print( "Introduza a velocidade inicial: " );
u = Keyboard.readDouble();
a = a*Math.PI/180; //converter para radianos
Graph traj = new Graph();
traj.setAxes(0, 400, 0, 150);
....
traj.addPoint(x, y);
}
}
}
4
Determinar se um número é
Primo
• Escreva um programa em Java que indique
se um determinado número (P) é primo ou
não. Eis um possível algoritmo:
•
•
•
•
•
•
P é o número que vai ser testado. Temos que verificar se
P
conseguimos encontrar qualquer número N, em que dá resto
N
zero. Se não existir nenhum número N então P é um número
primo.
Se P deve ser ímpar então os números N devem ser todos
ímpares.
N começa no número 3.
Quando paramos o teste? Quando N=P?
Não é preciso, podemos parar quando N atingir P
Se existir um factor superior a P deve existir um outro factor
menor que P, que deverá ter sido encontrado.
Algoritmo
•
•
•
•
– Incrementa N por 2 (N = N + 2)
– Calcula R (R = P % N)
• Se R ≠ 0 P é um número Primo!
• Caso contrário, P não é primo.
Exercício
• Escreva um programa em Java para inverter
os digitos de um número positivo.
Pede ao utilizador para introduzir o número P
N=3
Encontra resto da divisão (R = P % N)
Enquanto R ≠ 0 e N p P repete:
Exercício
•
Um número inteiro não negativo diz-se
perfeito se é igual à soma dos seus
divisores próprios.
•
Por exemplo, 6 é um número perfeito
porque 6=2+3+1.
•
Dado n, determine todos os números
perfeitos inferiores a n.
• Exemplo:
input: 1234
result: 4321
Exercício
•
Resultado
Escreva um programa em Java, que usando a classe Graph,
represente o seguinte fractal que é dado pela seguinte fórmula:
x k +1 = y k (1 + sin 0.7 x k ) − 1.2 x k
y k +1 = 0.21 − x k
•
•
Comece com xo=yo=0.0.
Deve representar os pontos em separado no gráfico da figura
usando as seguintes instruções:
Graph one = new Graph();
one.setDrawingStyle(Graphable.PLOTPOINTS);
one.setAxes(-1,0.5,-0.5,2);
// ...
one.addPoint(…,…);
5
Exercício
Resultado
• A seguinte fórmula é usada para modelar o
crescimento limitado da população quando existem,
por exemplo, restrições de alimento:
yk+1 = r.yk(1-yk)
• Fenómenos interessantes ocorrem quando o valor de
r está entre 3 e 4 (conhecido pelo “caos matemático”).
• Escreva um programa em Java para representar a
evolução de y sobre k, usando a classe Graph.
• Teste por exemplo com 3.9, e y0=0.2.
Exercício
Resultado
• A Espiral de Arquimedes é representada pela
seguinte fórmula:
r = a.α
x = r.cos(α )
y = r.sin(α )
• Escreva um programa em Java, usando a class
Graph, que represente uma espiral de
Arquimedes. (por ex: a=0.1,α =0.1.....50).
Exercício
Resultado
• A equação de uma elipse em coordenadas polares é
dada pela seguinte fórmula:
r = a.(1-e2)/(1 – e.cosθ)
• a é o semi-eixo maior;
• “e” é a ecentrecidade.
• O cometa Halley que nos visitou em 1985/86 movese numa trajectória elíptica em órbita do Sol. O semieixo maior (a) é igual a 17.9 A.U. (A.U.= 1 unidade
astronómica, aprox. distância da Terra ao Sol, 149.6
milhões kms).
• A ecentricidade da órbita é 0.967276.
• Escreva um programa em Java que desenhe a órbita
do cometa Halley e a órbita da Terra (neste último
caso, assuma uma órbita circular).
6
Números Triangulares
1
3
6
10
1 3 6 10 15 21 28 36 45 55 66 ...
Programa em Java
• Escreva um programa em Java que calcule
os primeiros 100 números triangulares e os
armazene num vector. Deve também
apresentá-los no écrân.
• De seguida escreva mais um pedaço de
código que prove a seguinte propriedade:
1+3=4 (22)
3+6=9 (32)
6+10=16 (42)
10+15=25 (52)
1 3 6 10 15 21 28 36 45 55 66 ...
Os números de Bonatchi
1 1 2 3 5 8 13 21 34 55 89 144 233 ...
1=1
1+1=2
1+2=3
2+3=5
3+5=8
5+8=13
8+13=21
13+21=34
Programa em Java
• Escreva um programa em Java para calcular
os 40 primeiros números da série de
Bonatchi.
1 1 2 3 5 8 13 21 34 55 89 144 233 ...
Série de Bonatchi
1 1 2 3 5 8 13 21 34 55 89 144 233 ...
1+1+3+8+21=34
1+2+5+13+34=55
1+1+3+8+21+55=89
...
• Acrescente mais um pedaço de código no
seu programa de modo a provar que esta
regra é verdadeira.
7
8
Download