Você está na página 1de 5

Departamento de Cincia da Computao

Universidade de Braslia
Computao Bsica 2004.1
Professor Jorge H. C. Fernandes
Lista de Exerccios 3 Programao Bsica em Java
Resolva os exerccios abaixo usando a Linguagem Java. Dica: para facilitar a compreenso do
programa utilize comentrios digitando dois sinais de barra (//) numa linha qualquer, o que permite
que o texto at o final da linha seja ignorado pelo compilador. A figura abaixo mostra um exemplo
de um programa em Java que apresenta na sada o produto de dois nmeros recebidos como
entrada..
class Multiplica { // declara classe de nome Multiplica
public static void main(String[] args) { // declara mtodo main
IO.println("Informe o primeiro numero"); // solicita entrada de dados
int a = IO.readInt();
// l numero 1
IO.println("Informe o segundo numero"); // solicita entrada de dados
int b = IO.readInt();
// l numero 2
int produto = a * b;
// calcula produto
IO.println(a+" * "+b+" = "+produto);
}
}
O programa abaixo l uma lista de nmeros inteiros positivos terminada por 1 e imprime o resto
da diviso do maior deles dividido pelo menor deles.
class RestosMenoresMaiores {
public static void main(String[] args) {
int n;
n = IO.readInt();
if (n <= 0) return;
int menor, maior;
menor = n;
maior = n;
while ((n = IO.readInt()) > 0) {
if (n > maior) maior = n;
if (n < menor) menor = n;
}
int resto = maior % menor;
IO.println(resto);
}
}
Exerccio 0 Quadrados.java - Crie um programa que recebe uma lista de pares de nmeros
inteiros positivos, terminada por 1, e, para cada par de nmeros n1 e n2, imprime a potncia de
n1 elevada a n2.
Exemplo:
Entrada // Comentrios
Sada // Comentrios
2 // n1 base
32 // 2 quinta potncia
5 // n2 expoente
225 // 15 ao quadrado
15 // n1 base
2 // n2 expoente
-1 // fim da lista

Exerccio 01 DecimalParaBinario.java - Crie um programa que recebe uma lista de numerais


inteiros positivos decimais (0-9)*, terminada por 1, e, para cada numeral n, imprime a seqncia
de 0s e 1s que formam os bits (do menos significativo para o mais significativo) deste numeral
representado em binrio, a seqncia de bits deve ser apresentada na mesma linha e concluda
por \n. Use o mtodo print para imprimir cada um dos bits, e o mtodo println para pular de linha.
Exemplo:
Entrada // Comentrios
Sada // Comentrios
2 // converte o numeral decimal 2
01 // 2 decimal
5 // converte o numeral decimal 5
101 // 5 decimal
15 // converte o numeral decimal 15
1111 // 15 decimal
259 // converte o numeral decimal 259
110000001 // 259 decimal
-1 // fim de execuo
Exerccio 02 DecimalParaBinario2.java - Crie um programa que recebe uma lista de nmeros
inteiros positivos decimais (0-9)*, terminada por 1, e imprime para cada nmero n a seqncia de
0s e 1s que formam os bits (do mais significativo para o menos significativo) deste nmero
representado em binrio, a seqncia de bits deve ser apresentada na mesma linha e concluda
por \n. Use o mtodo print para imprimir cada um dos bits, e o mtodo println para pular de linha.
Exemplo:
Entrada
Sada
2
10
5
101
15
1111
259
100000011
-1
Exerccio 03 DecimalParaOctal.java. Crie um programa que recebe uma lista de nmeros inteiros
positivos decimais (0-9)* terminada por 1. e imprime uma seqncia de algarismos octais (0-7)*
(do menos significativo para o mais significativo) que representam cada nmero. Os algarismos
octais de cada nmero devem estar na mesma linha, encerrados pelo algarismo 0 e pelo final de
linha (\n)
Exemplo:
Entrada
Sada
2
20
5
50
15
710
259
3040
560
06010
-1
Exerccio 04 DecimalParaHexa.java. Crie um programa que recebe uma lista de nmeros inteiros
positivos decimais terminada por 1. e imprime uma seqncia de algarismos hexadecimais (0-F)*
(do menos significativo para o mais significativo) que representam cada nmero. Os algarismos
hexadecimais de cada nmero devem estar na mesma linha, e encerrados por 0x\n.
Exemplo:
Entrada
Sada
2
20x
5
50x
15
F0x
259
3010x
560
0320x
-1
Quesito 05 - A mdia aritmtica de uma srie de nmeros igual ao somatrio dos nmeros
dividido pela quantidade de nmeros somados. O desvio quadrado de uma srie de nmeros
igual soma dos quadrados da diferena entre cada nmero e a mdia aritmtica dos nmeros. A

varincia de uma srie de nmeros igual ao desvio quadrado dos nmeros da srie dividido pela
quantidade de nmeros que a compem, subtrada de um. O desvio padro de uma srie de
valores numricos igual raiz quadrada da varincia da srie. As frmulas abaixo descrevem
matematicamente:
Mdia(v1, v2, ..., vn) = (v1 + v2 + ... + vn)/n
DesvioQuadrado(v1, v2, ..., vn) =
2
2
2
(v1 - Mdia(v1, v2, ..., vn)) + (v2 - Mdia(v1, v2, ..., vn)) + ... + (vn - Mdia(v1, v2, ..., vn))
Varincia(v1, v2, ..., vn) = DesvioQuadrado(v1, v2, ..., vn) / (n-1)
DesvioPadro (v1, v2, ..., vn) = RaizQuadrada (Varincia (v1, v2, ..., vn))
Implemente os mtodos de uma classe chamada Estatistica, conforme o cdigo abaixo, que
responsvel por calcular cada uma das medidas descritas acima (desvio padro, varincia, desvio
quadrado e mdia aritmtica). Cada um dos mtodos recebe a srie de valores atravs de array de
ponto flutuante (float) e ret orna um float contendo a medida adequada. Observao: para calculo
da raiz quadrada utilize o mtodo static float sqrt(float f) da classe Math, que recebe um nmero em
ponto flutuante e retorna a raiz quadrada do nmero recebido. O mtodo main na classe Estatistica
recebe como argumentos de linha de comando uma lista de numerais de ponto flutuante e faz
alguns testes com o uso das funes, como mostrado abaixo.
class Estatistica {
static float desvioPadrao(float[] serie) { return 0f;}
static float variancia(float[] serie) { return 0f;}
static float desvioQuadrado(float[] serie) { return 0f;}
static float mediaAritmetica(float[] serie) { return 0f;}
public static void main(String[] args) {
// converte os valores digitados na linha de comando
float[] serie = new float[args.length];
for (int i = 0; i < args.length; i++) {
serie[i] = Float.parseFloat(args[i]);
}
IO.println("Media["+mediaAritmetica(serie)+"]");
IO.println("Desvio Quadrado["+desvioQuadrado(serie)+"]");
IO.println("Variancia["+variancia(serie)+"]");
IO.println("Desvio Padrao["+desvioPadrao(serie)+"]");
}
}
Exerccio 06 EhPrimo.java. Escreva um programa java que l uma lista de nmeros inteiros
positivos, terminada por 1, e para cada nmero da lista, imprime 0 ou 1, caso o nmero seja ou
no primo.
Exemplos:
Entrada
Sada
1
0
3
1
2
1
4
0
6
0
78
0
5
1
4
0
3
1
21
0
3
1
4
0
56
0
76
0
8
0
9
0
554
0

2
1
-1

1
0

Exerccio 07 NEsimoPrimo.java. Escreva um programa java que l uma lista de nmeros inteiros
positivos, terminada por 1, e para cada nmero n da lista, imprime o n-esimo nmero primo.
NEsimoPrimo pode usar o cdigo da classe EhPrimo se for possvel. Por definio 2 o 1-simo
nmero primo, 3 o 2-simo nmero primo, 5 o 3-simo nmero primo, etc.
Exemplos:
Entrada
Sada
1
2
2
3
3
5
4
7
5
11
6
13
-1
Exerccio 08 DifPrimos.java - Escreva um programa que l uma lista de pares de nmeros
inteiros positivos x e y, menores do que 100, onde x menor que y, e imprima a diferena entre Xsimo e o Y-simo nmeros primos. A lista de nmeros terminada quando o primeiro nmero do
par for1. Por definio 2 o 1-simo nmero primo, 3 o 2-simo nmero primo, 5 o 3-simo
nmero primo, etc. Busque os nmeros primos na faixa de 1 a 1000000. DifPrimos pode usar o
cdigo da classe NEsimoPrimo se for possvel.
Exemplos:
Entrada
Sada
1
3
3
4
2
538
4
0
2
100
1
1
-1
Exerccio 9 ConversorBinarioOctalDecimalHexa.java. Crie um programa que converte a
representao de nmeros entre qualquer base. A sintaxe EntradaSada (E/S) de dados do
programa apresenta o seguinte formato:
ES ::= E[CdBase] E[CdBase] (E[Numeral] S[Numeral])* E[-1].
CdBase ::= b | 0 | d | x
Numero ::= [0-F]*
Os cdigos de bases b, 0, d e x representam, respectivamente as bases binrio, octal,
decimal e hexadecimal.
Exemplo de Execuo onde se deseja converter de binrio para decimal:
Entrada
Sada
b // numerais sero digitados em binrio
0 // 0 binrio convertido para decimal
d // numerais sero impressos em decimal
2 // 10 binrio convertido para decimal
0 // converte
14 // 1100 binrio convertido para decimal
10
127 // 1111111 binrio convertido para decimal
1110
1111111

-1
d // numerais sero digitados em decimal
x // numerais sero impressos em hexadecimal
2
5
15
259
560
-1
D // numerais sero digitados em decimal
B // numerais sero impressos em binrio
2
5
15
259
-1

2 // 2 decimal convertido para hexa


5 // 5 decimal convertido para hexa
F // 15 decimal convertido para hexa
C2 // 259 decimal convertido para hexa
181 // 560 decimal convertido para hexa

01
101
1111
110000001

Exerccio 10 ComplementoA2.java - Complemento a dois. Escreva um programa que l um


nmero N, inteiro positivo decimal, entre 0 e 127, e imprime a seqncia de 0s e 1s que formam os
bits (do menos significativo para o mais significativo) do nmero N, representado em formato de
complemento a dois, ocupando um espao de 8 bits.
Exemplo:
Entrada
25
1
1
1
0
0
1
1
1
120
0
0
0
1
0
0
0
1
Exerccio 11 InverteString.java - Invertido. Escreva um programa que l uma lista de Strings N,
terminada por um string vazio e imprime cada um dos strings da lista com seus caracteres
invertidos. Dica: use uma pilha para inverter os algarismos.
Exemplo
Entrada
Sada
1234
4321
1000
0001
Java
avaJ
Ola Pessoal
laosseP alO