Escolar Documentos
Profissional Documentos
Cultura Documentos
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
O que um programa de computador? Quem escreve estes programas? Como so escritos? O que podemos fazer com estes programas?
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
Conceitos
Sistema Operacional Controla o hardware e os programas do computador. Linguagem de Programao usada para escrever programas. Compilador Traduz programas de linguagens de programao para cdigo que o computador pode entender diretamente.
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
Linguagens de programao modernas so de alto nvel (pessoas podem entender os programas). O computador entende cdigo de baixo nvel (pessoas no conseguem entender diretamente). Compiladores traduzem alto nvel para baixo nvel.
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
Quantas linguagens de programao existem? Mais de 500! Algumas so variaes, algumas no servem para (quase) nada... Muitas linguagens modernas evoluiram das mais antigas. Algumas das mais populares: C, C++, C#, Java, Python, PHP, Visual Basic, Delphi, Perl. Por que existem tantas? Quais aprender? Programas podem fazer muitas coisas Linguagens podem ser muito complicadas!
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
Retorne ao incio. Leia o valor do joystick. Mova o personagem. Se encontrar algo, execute um subprograma.
9
Dirija um carro.
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
10
publicclassPrimeiroPrograma {
//Outrotipodecomentrio(sumalinha). publicstaticvoidmain(String[]args) { System.out.println("MeuprimeiroprogramaemJava!"); } Trechos de programas que tem uma funo definida so }
chamados mtodos. Mtodo main: diz o que ser feito quando o programa for executado.
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
11
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
13
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
14
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
15
public class SegundoPrograma { public static void main(String[] args) { String nome = JOptionPane.showInputDialog("Entre seu nome"); String sIdade = JOptionPane.showInputDialog("Entre sua idade"); int idade = Integer.parseInt(sIdade); int meses = 12*idade; int dias = 365*idade; System.out.println("Ol, "+nome); System.out.println("Voc j viveu mais de "+meses+" meses"); System.out.println(" e mais de "+dias+" dias."); } }
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
16
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
17
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
18
public class SegundoPrograma { public static void main(String[] args) { String nome = JOptionPane.showInputDialog("Entre seu nome"); String sIdade = JOptionPane.showInputDialog("Entre sua idade"); int idade = Integer.parseInt(sIdade); int meses = 12*idade; int dias = 365*idade; System.out.println("Ol, "+nome); System.out.println("Voc j viveu mais de "+meses+" meses"); System.out.println(" e mais de "+dias+" dias."); } } Mtodos podem ter valores retornados. Pense em mtodos como tarefas ou perguntas que podem precisar de mais informao.
Outubro/2008 http://www.lac.inpe.br/~rafael.santos 19
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
20
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
21
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
22
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
23
importjavax.swing.JApplet; importjavax.swing.JLabel; publicclassTestAppletextendsJApplet { publicTestApplet() { JLabellabel=newJLabel("VersodoJava:"+ System.getProperty("java.version")); label.setOpaque(true); label.setHorizontalAlignment(JLabel.CENTER); label.setBackground(Color.yellow); add(label); } } Mudamos algumas de suas caractersticas.
Outubro/2008 http://www.lac.inpe.br/~rafael.santos 24
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
25
O que Robocode?
um software educacional. Serve para aprender conceitos de programao brincando! Robocode tem uma arena onde robs virtuais competem. Programadores criam o comportamento dos robs. Robs simples podem ser criados em minutos (vamos fazer alguns!). Robs complexos podem demorar meses para ser aperfeioados.
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
26
Robocode
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
27
Robocode
Muita ajuda, mas em ingls. Opes para exibio dos robs e batalhas, outros. Crie novos robs ou times de robs, empacote robs, edite seus robs e outros. Crie novas batalhas, abra arquivos com batalhas j pr-programadas, saia do Robocode.
Outubro/2008 http://www.lac.inpe.br/~rafael.santos 28
Criando Robs
Ctrl+E
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
29
Criando Robs
Ajuda para comandos, em ingls. Controle das janelas do editor. Traduo do cdigo-fonte para o que o computador entende. Comandos de editor de texto. Crie novos robs, edite-os e salve-os no disco.
Outubro/2008 http://www.lac.inpe.br/~rafael.santos 30
Robs no Robocode
Eixo do movimento do rob (move-se para a frente e para trs) Direo do rob
Direo do canho
Outubro/2008 http://www.lac.inpe.br/~rafael.santos 31
Robs no Robocode
Posso dar comandos para o rob... ... executar enquanto nada acontece. ... executar quando enxergar outro rob. ... executar quando bater em outro rob. ... executar quando bater em uma parede. ... executar quando acertar em outro rob. ... executar quando outro rob nos acertar. ... executar quando errar o tiro em outro rob.
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
32
Robs no Robocode
Comandos para o rob: Andar para a frente ou para trs (unidades de distncia). Girar para a esquerda ou para a direita (graus). Girar o canho para a esquerda ou para a direita (graus). Atirar (com energia). O rob pode ainda... ... saber suas coordenadas (x e y) e ... saber sua energia. ... saber quantos oponentes ainda existem e quanto tempo falta para o fim da partida.
Outubro/2008 http://www.lac.inpe.br/~rafael.santos 33
Robs no Robocode
Quando vir o oponente o rob pode... ... saber sua direo e distncia. ... saber sua energia e velocidade, ... mas no saber onde est (x,y). Quando for atingido o rob pode... ... saber de onde veio a bala. ... saber quem atirou.
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
34
Um primeiro rob
Ctrl+N
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
35
Um primeiro rob
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
36
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
37
Enquanto no acontece nada de importante, nosso rob andar 100 passos para a frente, girar o canho 360 graus, andar 100 passos para trs e girar novamente o canho 360 graus.
Outubro/2008 http://www.lac.inpe.br/~rafael.santos 38
O que nosso rob far se enxergar outro rob (atira). O que nosso rob far se levar um tiro (vira 90 graus menos o ngulo da bala).
Outubro/2008 http://www.lac.inpe.br/~rafael.santos 39
Ctrl+N
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
40
Podemos ter vrias cpias (instncias) de cada rob no jogo ao mesmo tempo!
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
41
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
42
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
43
publicvoidonScannedRobot(ScannedRobotEvente) { } publicvoidonHitByBullet(HitByBulletEvente) { }
Outubro/2008 http://www.lac.inpe.br/~rafael.santos 44
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
46
publicclassNumero2extendsNumero1 Quando enxergar outro rob, pare, { publicvoidonScannedRobot(ScannedRobotEvente) { stop(); ahead(10); fire(10); Quando for atingido, resume(); vire 90 graus } e ande para trs. publicvoidonHitByBullet(HitByBulletEvente) { turnRight(90); back(100); } }
Outubro/2008 http://www.lac.inpe.br/~rafael.santos 47
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
48
publicvoidonHitByBullet(HitByBulletEvente) { back(40); }
Outubro/2008 http://www.lac.inpe.br/~rafael.santos 49
Demonstrao
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
51
Outubro/2008
http://www.lac.inpe.br/~rafael.santos
52