Upload
nguyenkien
View
215
Download
2
Embed Size (px)
Citation preview
Conteúdo: Introdução ao Java (exercícios)
Programação de Computadores II TCC-‐00.174
Profs.: Leandro A. F. Fernandes(Turma A1) & Marcos Lage(Turma B1)
(Turma A1) www.ic.uff.br/~laffernandes (Turma B1) www.ic.uff.br/~mlage
Material elaborado pelos profs. Anselmo Montenegro e Marcos Lage com contribuições do prof. Leandro A. F. Fernandes
Exercícios
Diferentes sistemas são u?lizados 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 u?lizado 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.
9/10/13 Programação de Computadores II 2
Conversão de cores
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 u?lize a fórmula abaixo:
9/10/13 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
k =1−w
Exercí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.
9/10/13 Programação de Computadores II 4
Padrão de divisores
Exercícios
Escreva um programa Java que receba um inteiro N e imprima sua fatoração. (sequencia de inteiros primos que mulOplicados iguala a N).
Escreva uma versão mais eficiente do seu algoritmo.
9/10/13 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.
9/10/13 Programação de Computadores II 6
Fatoração de Inteiros
Exercícios
Escreva um programa Java que ache a raiz quadrada de um número real c u?lizando método de Newton-‐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 es?ma?va da raíz t0 2. A par?r de uma es?ma?va ti, compute uma nova es?ma?va ti+1 onde ti é
a interseção da linha tangente ao gráfico de f(x) no ponto (ti,f(ti)) com o eixo das abcissas.
9/10/13 Programação de Computadores II 7
Cálculo de Raiz Quadrada
Exercícios
9/10/13 Programação de Computadores II 8
Cálculo de Raiz Quadrada
′f (ti ) =f (ti )− 0
ti − ti+1
′f (ti )(ti − ti+1) = f (ti )
ti+1 = ti +f (ti )
′f (ti )ti ti+1
f(ti)
f(ti+1)
ti
Exercícios
Computar a raiz de um número é equivalente a achar a raíz da função f(x)=x2-‐c. Considere uma es?ma?va inicial t0 = c. Se ti*ti-‐c<eps; então tome ti como raiz de c.
9/10/13 Programação de Computadores II 9
Cálculo de Raiz Quadrada
Exercícios
9/10/13 Programação de Computadores II 10
Jogo de senhas
Escreva um programa em Java que simule um jogo de senhas.
Obje-vo: 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 con?nua até que a senha seja descoberta ou o numero máximo de jogadas seja a?ngido.
Obs: As senhas são compostas por números inteiros de 0 ao numero de dígitos da senha. O número de tenta?vas é igual ao número de dígitos da senha.
Exercícios
9/10/13 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 ?rar 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 con?nuam até que: • O Ponto sair antes de um 7, e assim o jogador vence. • O 7 sair antes do Ponto, e assim o jogador perde.
Exercícios
9/10/13 Programação de Computadores II 12
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 re?culado.
Exercícios
9/10/13 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
M2k−1 M
2k−1
M2k−1 −M
2k−1
Exercícios
Escreva um programa em Java que 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 consecu?vas “Chute circular”. Para uma letra a seguida de uma letra b imprime “dragon punch”.
9/10/13 Programação de Computadores II 14
Sequencia de Símbolos
Exercícios
O problema pode ser resolvido através de um autômato finito determinís?co, que é um modelo para definição de linguagens regulares composto de cinco elementos: <Σ, S, so, δ, F>, onde: Σ é o alfabeto sobre o qual a linguagem é definida; S é um conjunto finito de estados não vazio; so é o estado inicial, so ∈ S; δ: S × Σ → S é a função de transição de estados; F é o conjunto de estados finais F ⊆ S.
9/10/13 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. Ele recebe uma cadeia e diz se ela pertence ou não a linguagem modelada. Ele possui um controle de estados S. O Controle Finito de Estados sempre coloca a máquina em um estado pertencente a S.
9/10/13 Programação de Computadores II 16
Sequência de Símbolos
Exercícios
9/10/13 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 uOlizando ferramentas Java. (Márcio Delamaro – novatec).
Exercícios
9/10/13 Programação de Computadores II 18
Sequência de Símbolos
Controle finito de estados
Aceita
Rejeita
a b b a
Controle finito de estados
Aceita
Rejeita
Exercícios
9/10/13 Programação de Computadores II 19
Sequência de Símbolos
Autômato finito determinís?co para o problema da sequência de símbolos
I
CH
SO
s0
a a
CC
DP
b
b
SxΣ a b Estado I CH SO Inicial
CH CC DP Chute
SO Soco
CC Chute circular
DP Dragon Punch
Exercícios
9/10/13 Programação de Computadores II 20
Caminhos Aleatórios sem Auto-‐Interseção
Suponha que você abandone seu cão no meio de uma grande cidade cujas ruas formam uma estrutura de re?culado. Considere que existam N ruas na direção norte-‐sul e M na direção leste-‐oeste. Com o obje?vo de escapar da cidade, o cão faz uma escolha aleatória de qual direção ir em cada iteração, mas sabe através do faro como evitar visitar um lugar previamente visitado. Apesar de tudo é possível que o cão fique perdido em um beco sem saída onde a próxima escolha obrigatoriamente leva a um lugar já percorrido.
Exercícios
9/10/13 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 re?culado 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.