21
Conteúdo : Introdução ao Java (exercícios) Programação de Computadores II TCC00.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

ProgramaçãodeComputadoresII - ic.uff.brrosseti/PROGII/2013-2/aula_02_Introducao_Java... · display"LCD,"câmeras"digitais"e"páginas ... (sequencia/de/inteiros/primos/que/mulOplicados

Embed Size (px)

Citation preview

Page 1: ProgramaçãodeComputadoresII - ic.uff.brrosseti/PROGII/2013-2/aula_02_Introducao_Java... · display"LCD,"câmeras"digitais"e"páginas ... (sequencia/de/inteiros/primos/que/mulOplicados

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  

Page 2: ProgramaçãodeComputadoresII - ic.uff.brrosseti/PROGII/2013-2/aula_02_Introducao_Java... · display"LCD,"câmeras"digitais"e"páginas ... (sequencia/de/inteiros/primos/que/mulOplicados

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  

Page 3: ProgramaçãodeComputadoresII - ic.uff.brrosseti/PROGII/2013-2/aula_02_Introducao_Java... · display"LCD,"câmeras"digitais"e"páginas ... (sequencia/de/inteiros/primos/que/mulOplicados

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

Page 4: ProgramaçãodeComputadoresII - ic.uff.brrosseti/PROGII/2013-2/aula_02_Introducao_Java... · display"LCD,"câmeras"digitais"e"páginas ... (sequencia/de/inteiros/primos/que/mulOplicados

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  

Page 5: ProgramaçãodeComputadoresII - ic.uff.brrosseti/PROGII/2013-2/aula_02_Introducao_Java... · display"LCD,"câmeras"digitais"e"páginas ... (sequencia/de/inteiros/primos/que/mulOplicados

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  

Page 6: ProgramaçãodeComputadoresII - ic.uff.brrosseti/PROGII/2013-2/aula_02_Introducao_Java... · display"LCD,"câmeras"digitais"e"páginas ... (sequencia/de/inteiros/primos/que/mulOplicados

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  

Page 7: ProgramaçãodeComputadoresII - ic.uff.brrosseti/PROGII/2013-2/aula_02_Introducao_Java... · display"LCD,"câmeras"digitais"e"páginas ... (sequencia/de/inteiros/primos/que/mulOplicados

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  

Page 8: ProgramaçãodeComputadoresII - ic.uff.brrosseti/PROGII/2013-2/aula_02_Introducao_Java... · display"LCD,"câmeras"digitais"e"páginas ... (sequencia/de/inteiros/primos/que/mulOplicados

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

Page 9: ProgramaçãodeComputadoresII - ic.uff.brrosseti/PROGII/2013-2/aula_02_Introducao_Java... · display"LCD,"câmeras"digitais"e"páginas ... (sequencia/de/inteiros/primos/que/mulOplicados

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  

Page 10: ProgramaçãodeComputadoresII - ic.uff.brrosseti/PROGII/2013-2/aula_02_Introducao_Java... · display"LCD,"câmeras"digitais"e"páginas ... (sequencia/de/inteiros/primos/que/mulOplicados

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.  

Page 11: ProgramaçãodeComputadoresII - ic.uff.brrosseti/PROGII/2013-2/aula_02_Introducao_Java... · display"LCD,"câmeras"digitais"e"páginas ... (sequencia/de/inteiros/primos/que/mulOplicados

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.  

Page 12: ProgramaçãodeComputadoresII - ic.uff.brrosseti/PROGII/2013-2/aula_02_Introducao_Java... · display"LCD,"câmeras"digitais"e"páginas ... (sequencia/de/inteiros/primos/que/mulOplicados

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.  

Page 13: ProgramaçãodeComputadoresII - ic.uff.brrosseti/PROGII/2013-2/aula_02_Introducao_Java... · display"LCD,"câmeras"digitais"e"páginas ... (sequencia/de/inteiros/primos/que/mulOplicados

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

Page 14: ProgramaçãodeComputadoresII - ic.uff.brrosseti/PROGII/2013-2/aula_02_Introducao_Java... · display"LCD,"câmeras"digitais"e"páginas ... (sequencia/de/inteiros/primos/que/mulOplicados

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  

Page 15: ProgramaçãodeComputadoresII - ic.uff.brrosseti/PROGII/2013-2/aula_02_Introducao_Java... · display"LCD,"câmeras"digitais"e"páginas ... (sequencia/de/inteiros/primos/que/mulOplicados

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  

Page 16: ProgramaçãodeComputadoresII - ic.uff.brrosseti/PROGII/2013-2/aula_02_Introducao_Java... · display"LCD,"câmeras"digitais"e"páginas ... (sequencia/de/inteiros/primos/que/mulOplicados

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  

Page 17: ProgramaçãodeComputadoresII - ic.uff.brrosseti/PROGII/2013-2/aula_02_Introducao_Java... · display"LCD,"câmeras"digitais"e"páginas ... (sequencia/de/inteiros/primos/que/mulOplicados

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).  

Page 18: ProgramaçãodeComputadoresII - ic.uff.brrosseti/PROGII/2013-2/aula_02_Introducao_Java... · display"LCD,"câmeras"digitais"e"páginas ... (sequencia/de/inteiros/primos/que/mulOplicados

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  

Page 19: ProgramaçãodeComputadoresII - ic.uff.brrosseti/PROGII/2013-2/aula_02_Introducao_Java... · display"LCD,"câmeras"digitais"e"páginas ... (sequencia/de/inteiros/primos/que/mulOplicados

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  

Page 20: ProgramaçãodeComputadoresII - ic.uff.brrosseti/PROGII/2013-2/aula_02_Introducao_Java... · display"LCD,"câmeras"digitais"e"páginas ... (sequencia/de/inteiros/primos/que/mulOplicados

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.  

Page 21: ProgramaçãodeComputadoresII - ic.uff.brrosseti/PROGII/2013-2/aula_02_Introducao_Java... · display"LCD,"câmeras"digitais"e"páginas ... (sequencia/de/inteiros/primos/que/mulOplicados

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.