Conteúdo: Introdução ao Java (exercícios)
Material elaborado pelos profs. Anselmo Montenegro e Marcos Lage com contribuições do prof. Leandro A. F. Fernandes
Programação de Computadores II
TCC‐00.174Profs.: Leandro A. F. Fernandes(A1)& Marcos Lage(B1)& Isabel Rosseti(C1) (Turma A1) www.ic.uff.br/~laffernandes
(Turma B1) www.ic.uff.br/~mlage (Turma C1) www.ic.uff.br/~rosseti
Exercícios
Diferentes sistemas são utilizados para representar cores.
Por exemplo, o sistema mais comum para representação de cores em display LCD, câmeras digitais e páginas web conhecido como sistema RGB, especifica os níveis de vermelho(R), verde(G) e azul(B) em uma escala de 0 a 255.
O sistema utilizado na publicação de livros e revistas, conhecido como
CMYK, especifica os níveis de ciano, magenta, amarelo e preto em um escala de 0.0 a 1.0.
Exercícios
Escreva um programa Java que receba três inteiros r, g e b representando um cor no sistema RGB e imprima os valores das componentes c, m, y, k correspondentes no sistema CMYK.
Se r=g=b=0 então c=m=y=0 e k = 1, caso contrário utilize a fórmula abaixo: 10/09/2013 Programação de Computadores II 3
Conversão de cores
w max(r / 255, g / 255, b / 255); c (w (r / 255)) / w m (w (g / 255)) / w y (w (b / 255)) / w k1 wExercícios
Escreva um programa Java
que receba um inteiro N e imprima
um tabela NxN com um asterisco na linha i e coluna j se ou i
divide j ou j divide i.
Exercícios
Escreva um programa Java
que receba um inteiro N e imprima
sua
fatoração
.
(sequencia de inteiros primos que multiplicados iguala a N).
Escreva uma
versão mais eficiente
do seu algoritmo.
10/09/2013 Programação de Computadores II 5
Fatoração de Inteiros
Exercícios
Escreva um programa Java
que receba um número inteiro N e
gere todos os
fatores primos
de N.
Exercícios
Escreva um programa Javaque ache a raiz quadrada de um número real c
utilizando método deNewton‐Raphson.
Sob certas condições, dada uma função f(x), o método de Newton‐Raphson é capaz de encontrar as raízes de uma equação f(x)=0.
Algoritmo:
1. O método inicia com uma estimativa da raíz t0
2. A partir de uma estimativa ti, compute uma nova estimativa ti+1onde tié a interseção da linha tangente ao gráfico de f(x) no ponto (ti,f(ti)) com o eixo das abcissas.
10/09/2013 Programação de Computadores II 7
Cálculo de Raiz Quadrada
Exercícios
Cálculo de Raiz Quadrada
f (t
i)
f (t
i)
0
t
i t
i1
f (t
i)(t
i t
i1)
f (t
i)
t
i1 t
i f (t
i)
f (t
i)
ti ti+1 f(ti) f(ti+1) tiExercícios
Computar a raiz de um número é equivalente a achar a raíz da
função
f(x)=x
2‐c
.
Considere uma
estimativa inicial t
0= c
.
Se
t
i*t
i‐c<eps
; então tome t
icomo raiz de c.
10/09/2013 Programação de Computadores II 9
Cálculo de Raiz Quadrada
Exercícios
Jogo de senhas
Escreva um programa em Java
que simule um jogo de senhas.
Objetivo: descobrir a senha gerada aleatoriamente pelo computador. A cada rodada: o jogador tenta descobrir a senha e o computador retorna “*” para os dígitos que ainda não foram descobertos e o valor do digito nas posições corretas. Fim do jogo:Jogo continua até que a senha seja descoberta ou o numero máximo de jogadas seja atingido. Obs:
As senhassão compostas por números inteiros de 0 ao numero de dígitos da senha.
Exercícios
10/09/2013 Programação de Computadores II 11
Jogo de dados
Escreva um programa em Java
que simule um jogo de dados.
Lançamento inicial:
Se o lançador tirar um 7 ou 11 no primeiro lançamento, vence o jogo. Se os dados somarem 2, 3 ou 12, o jogador perde o jogo.
Qualquer outro número que saia no lançamento inicial (4, 5, 6, 8, 9, ou 10)
se torna o seu “Ponto”.
Os lançamentos continuam até que:
• OPonto sair antes de um 7, e assim o jogador vence. • O 7 sair antes do Ponto, e assim o jogador perde.
Exercícios
Picos de um terreno
Escreva um programa em Java que calcule os picos de um terreno. Modelagem do terreno: Podemos representar um terreno computacionalmente através de uma matriz que armazena a altura dos NxN pontos de um reticulado.Exercícios
10/09/2013 Programação de Computadores II 13
Matriz de Hadamard
A Matriz de Hadamardé uma matriz quadrada cujas entradas são 1 ou ‐1 e as linhas são ortogonais entre si. Podemos construir uma matriz de Hadamard NxN, com N sendo potência de 2, da seguinte forma: Para N=1 Para N = 2k M1= 1 M2k= Para N = 2 M2= 1 1 1 1 M2k1 M2k1 M2k1 M2k1 Exercícios
Escreva um programa em Javaque receba uma sequencia de letras da linha de comando formada por um conjunto de símbolos e gere as seguintes mensagens:
Para uma letra a “Soco”. Para uma letra b “Chute lateral”.
Para duas letras a’s consecutivas “Chute circular”.
Para uma letra a seguida de uma letra b imprime “dragon punch”.
Exercícios
O problema pode ser resolvido através de um autômato finito determinístico, que é um modelo para definição de linguagens regulares composto de cinco elementos: <Σ, S, so, δ, F>, onde:
Σ é oalfabetosobre o qual a linguagem é definida; S é um conjunto finito deestadosnão vazio; soé oestado inicial, so∈ S;
δ: S × Σ → S é a função detransição de estados; F é o conjunto deestados finaisF ⊆ S.
10/09/2013 Programação de Computadores II 15
Sequência de Símbolos
Exercícios
Um AFD é uma máquina reconhecedora de cadeias que pertencem a linguagem.
Elerecebe uma cadeiae diz se elapertence ou nãoa linguagem modelada. Ele possui um controle de estados S.
Exercícios
10/09/2013 Programação de Computadores II 17
Sequência de Símbolos
A função F diz como a máquina deve mudar de estado, à medida em que os símbolos da cadeia são analisados.
Após processar todos os símbolos e realizar as mudanças determinadas o AFD aceita ou não a cadeia.
Uma cadeia é rejeitada quando o autômato para em um estado que não é final. Referência: Como construir um compilador utilizando ferramentas Java.
(Márcio Delamaro – novatec).
Exercícios
Sequência de Símbolos
Controle finito de estados Controle finito de estados Aceita Aceita Rejeita Rejeita aa b b b b aa Controle finito de estados Controle finito de estados Aceita Aceita Rejeita RejeitaExercícios
10/09/2013 Programação de Computadores II 19Sequência de Símbolos
Autômato finito determinístico para o problema da sequência de símbolos I CH SO s0 a a CC DP b b II CH CH SO SO s0 s0 aa aa CC CC DP DP b b b bSx
a
b
Estado
I CH SO Inicial CH CC DP Chute SO Soco CC Chute circular DP Dragon PunchExercícios
Caminhos Aleatórios sem Auto‐Interseção
Suponha que você abandone seu cão no meio de uma grande cidade cujasruas formam uma estrutura de reticulado.
Considere que existamN ruasna direção norte‐sul eMna direção leste‐oeste. Com o objetivo de escapar da cidade, o cão faz umaescolha aleatóriade qual direção ir em cada iteração, mas sabe através do faro como evitar visitar um lugar previamente visitado.
Exercícios
10/09/2013 Programação de Computadores II 21
Caminhos Aleatórios sem Auto‐Interseção
Escreva um programa Java que receba como parâmetros a largura e altura do reticulado e simule o caminho percorrido por um cão T vezes.
O programa deve determinar o número de vezes em que o cão fica sem saída.