32
Programando em Programando em Alice Alice Tim Margush Tim Margush Department of Computer Science Department of Computer Science University of Akron University of Akron © 2006 © 2006

Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Embed Size (px)

Citation preview

Page 1: Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Programando em AliceProgramando em AliceTim MargushTim Margush

Department of Computer ScienceDepartment of Computer ScienceUniversity of AkronUniversity of Akron

© 2006© 2006

Page 2: Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Programming in AliceProgramming in Alice © 2006 Dr. Tim Margush© 2006 Dr. Tim Margush 22

Metodologia de ProgramaçãoMetodologia de Programação

Entender o problema e pensar em Entender o problema e pensar em uma solução.uma solução.

Cria um algoritmo para solucionar o Cria um algoritmo para solucionar o problemaproblema– StoryboardsStoryboards são úteis para ajudar a são úteis para ajudar a

entender a animaçãoentender a animação Implementar o algoritmoImplementar o algoritmo Testar e melhorarTestar e melhorar

Page 3: Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Programming in AliceProgramming in Alice © 2006 Dr. Tim Margush© 2006 Dr. Tim Margush 33

Cenário (Problema)Cenário (Problema)

Descrever a animação desejadaDescrever a animação desejada– Cena inicialCena inicial

Objetos, posicionamento, etcObjetos, posicionamento, etc

– Mudanças na cenaMudanças na cenaMovimentação de Objetos, etcMovimentação de Objetos, etc

– Interações com a cenaInterações com a cenaComandos do usuário, eventos na animaçãoComandos do usuário, eventos na animação

Page 4: Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Programming in AliceProgramming in Alice © 2006 Dr. Tim Margush© 2006 Dr. Tim Margush 44

Cenário (Exemplo)Cenário (Exemplo)

Um peixe e um barco estão na agua Um peixe e um barco estão na agua perto de uma pequena ilha. O peixe perto de uma pequena ilha. O peixe da uma volta em torno da ilha, da uma volta em torno da ilha, submerge e salta para frente. O submerge e salta para frente. O barco está a deriva perto da ilha. barco está a deriva perto da ilha. Uma arvore indica que o vento sopra Uma arvore indica que o vento sopra forte na ilha. forte na ilha.

Page 5: Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Programming in AliceProgramming in Alice © 2006 Dr. Tim Margush© 2006 Dr. Tim Margush 55

Cenário (Exemplo) - ObjetosCenário (Exemplo) - Objetos

Uma cena no mar com Uma cena no mar com o ator principal sendo o ator principal sendo o peixe. O peixe nada o peixe. O peixe nada em volta da ilha. Uma em volta da ilha. Uma simples animação sem simples animação sem interação do usuário.interação do usuário.

ObjetosObjetos– Peixe, barco, arvore Peixe, barco, arvore

(animada)(animada)– IlhaIlha– MarMar

O O peixe e o barco estão no mar perto de uma ilha. O peixe circula a ilha, submerge e salta para frente. O barco está a deriva perto da ilha. Uma arvore indica que o vento sopra forte na ilha.

Page 6: Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Programming in AliceProgramming in Alice © 2006 Dr. Tim Margush© 2006 Dr. Tim Margush 66

Cenário (Exemplo)- AçõesCenário (Exemplo)- Ações Peixe circula a ilhaPeixe circula a ilha Peixe submerge e salta Peixe submerge e salta

para frente. para frente. O barco está a deriva perto O barco está a deriva perto

da ilha.da ilha. Os galhos da arvore Os galhos da arvore

balançam balançam O peixe e o barto estão na O peixe e o barto estão na

água perto da ilha. O peixe água perto da ilha. O peixe circulacircula a ilha, a ilha, mergulamergula, , saltasalta para frente. O barco para frente. O barco está a está a derivaderiva. Uma arvore . Uma arvore indicaindica que o vento sopra que o vento sopra forte naforte na

Page 7: Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Programming in AliceProgramming in Alice © 2006 Dr. Tim Margush© 2006 Dr. Tim Margush 77

StoryboardStoryboard

VisualVisual– Ilustra o posicionamento e movimento Ilustra o posicionamento e movimento

dos objetos com uma série de cenas. dos objetos com uma série de cenas. – Com a descrição de cada cena.Com a descrição de cada cena.

TextualTextual– Define as cenas de animaçãoDefine as cenas de animação– Descreve o roteiro das cenas passo a Descreve o roteiro das cenas passo a

passo. passo.

Page 8: Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Programming in AliceProgramming in Alice © 2006 Dr. Tim Margush© 2006 Dr. Tim Margush 88

Visual StoryboardVisual Storyboard

Cena Inicial: Cena Inicial: – Ilha com uma Ilha com uma

arvorearvore– Peixe e barcoPeixe e barco

Ação: Ação: – Arvore balançaArvore balança– Barco a derivaBarco a deriva

Som: Som: – VentoVento

Page 9: Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Programming in AliceProgramming in Alice © 2006 Dr. Tim Margush© 2006 Dr. Tim Margush 99

Visual StoryboardVisual Storyboard Descrição:Descrição:

– Peixe submerge e Peixe submerge e salta para frente.salta para frente.

Ações:Ações:– Peixe submerge e Peixe submerge e

então se prepara para então se prepara para saltar.saltar.

– Peixe salta pra frente.Peixe salta pra frente.– Outras ações e Outras ações e

continuaçãocontinuação SomSom

– VentoVento

Page 10: Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Programming in AliceProgramming in Alice © 2006 Dr. Tim Margush© 2006 Dr. Tim Margush 1010

Textual StoryboardTextual Storyboard

Cena 2: O SaltoCena 2: O Salto Do these in orderDo these in order

– Move fish downMove fish down– Turn fish backTurn fish back– Do these togetherDo these together

Move fish UpMove fish UpTurn fish forwardTurn fish forward

– Faz som de mergulhoFaz som de mergulho

Um Algoritmo(pseudocódigo)

Page 11: Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Programming in AliceProgramming in Alice © 2006 Dr. Tim Margush© 2006 Dr. Tim Margush 1111

AvaliaçãoAvaliação

As cenas se conectam bem?As cenas se conectam bem? O que podemos modificar para fazer O que podemos modificar para fazer

a transição entre cenas mais suave? a transição entre cenas mais suave? Está faltando alguma cena(baseada Está faltando alguma cena(baseada

na especificação original)?na especificação original)? Está faltando alguma descrição na Está faltando alguma descrição na

especificação original?especificação original?

Page 12: Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Programming in AliceProgramming in Alice © 2006 Dr. Tim Margush© 2006 Dr. Tim Margush 1212

ImplementaçãoImplementação

Escolha uma linguagem de Escolha uma linguagem de programação e ambienteprogramação e ambiente– Vamos escolher Alice =)Vamos escolher Alice =)– Escolha de acordo com a disponibilidade Escolha de acordo com a disponibilidade

e capacidade de cada linguageme capacidade de cada linguagem– Nem sempre escolha o que você está Nem sempre escolha o que você está

mais confortávelmais confortável

Page 13: Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Programming in AliceProgramming in Alice © 2006 Dr. Tim Margush© 2006 Dr. Tim Margush 1313

Início da AnimaçãoInício da Animação

Crie um novo Mundo em AliceCrie um novo Mundo em Alice– Escolha o template como ponto de Escolha o template como ponto de

partidapartida– Escolha um nome bem representativo Escolha um nome bem representativo

para o mundo e salve-o numa pastapara o mundo e salve-o numa pasta Crie a Cena InicialCrie a Cena Inicial

– Adicione os objetos de acordo com o Adicione os objetos de acordo com o storyboard. storyboard.

Page 14: Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Programming in AliceProgramming in Alice © 2006 Dr. Tim Margush© 2006 Dr. Tim Margush 1414

ProgramandoProgramando

EditorEditor – A ferramento utilizada para – A ferramento utilizada para escrever o seu programaescrever o seu programa– Use o editor para comandar os objetos Use o editor para comandar os objetos

da sua cenada sua cena Nossa primeira instrução vai ser Nossa primeira instrução vai ser

colocada no métodocolocada no método– world.my_first_method()world.my_first_method()

Objeto ao qual o Método pertence

Nome do Método

Nome complet

o do Método

Page 15: Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Programming in AliceProgramming in Alice © 2006 Dr. Tim Margush© 2006 Dr. Tim Margush 1515

Método InicialMétodo Inicial Quando o mundo inicia, Quando o mundo inicia,

um um metodometodo específico é específico é executadoexecutado– Isso é mostrado na parte Isso é mostrado na parte

de eventosde eventos– Nesse exemplo, Nesse exemplo,

world.my_first_method()world.my_first_method()

As intruções para o método é inserida na aba de As intruções para o método é inserida na aba de código no Editorcódigo no Editor– Alice usa drag-n-drop para reduzir os erros de sintaxeAlice usa drag-n-drop para reduzir os erros de sintaxe

Erro de sintaxe é um erro “gramatical” na estrutura de Erro de sintaxe é um erro “gramatical” na estrutura de instruções: pontuação, erro de digitação, ordem errada de instruções: pontuação, erro de digitação, ordem errada de palavras, etcpalavras, etc

O editor de Alice te ajuda a não errar na sintaxeO editor de Alice te ajuda a não errar na sintaxe

Page 16: Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Programming in AliceProgramming in Alice © 2006 Dr. Tim Margush© 2006 Dr. Tim Margush 1616

Storyboard to CodeStoryboard to Code

Instruções em Alice normalmente Instruções em Alice normalmente afetam um objeto. afetam um objeto.

A sintaxe de uma instrução que A sintaxe de uma instrução que chama uma ação de um objeto é:chama uma ação de um objeto é:– object_name.method_name() object_name.method_name()

pode existir coisas dentro do parenteses pode existir coisas dentro do parenteses chamadas chamadas argumentosargumentos

Page 17: Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Programming in AliceProgramming in Alice © 2006 Dr. Tim Margush© 2006 Dr. Tim Margush 1717

Estruturas de ControleEstruturas de Controle

Palavras reservadas são utilizadas Palavras reservadas são utilizadas em linguagens de programação para em linguagens de programação para determinar a ordem(fluxo) de determinar a ordem(fluxo) de instruções. instruções.

Alice fornece essas palavras na parte Alice fornece essas palavras na parte inferior da janela do editor inferior da janela do editor

Sequencia e Execução paralela

Seleção e Repetição

Instruções Especiais

Comentário e Documentação

Page 18: Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Programming in AliceProgramming in Alice © 2006 Dr. Tim Margush© 2006 Dr. Tim Margush 1818

Criando uma Estrutura de Criando uma Estrutura de ControleControle

Arraste o comando Arraste o comando para o editorpara o editor

Solte-o no local Solte-o no local corretocorretocontorno verde indica contorno verde indica legal, não legal, não corretocorreto

A estrutura do bloco é A estrutura do bloco é criadacriada

Note as chaves que Note as chaves que encerram cada bloco encerram cada bloco

Page 19: Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Programming in AliceProgramming in Alice © 2006 Dr. Tim Margush© 2006 Dr. Tim Margush 1919

Adicionando AçõesAdicionando Ações

Cena 2: O SaltoCena 2: O Salto Do these in orderDo these in order

– Move fish downMove fish down– Turn fish backTurn fish back– Do these togetherDo these together

Move fish forwardMove fish forward Turn fish forwardTurn fish forward

– Faz som de mergulhoFaz som de mergulho

Arraste o peixe para o

bloco

Escolha os parametros do método

Page 20: Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Programming in AliceProgramming in Alice © 2006 Dr. Tim Margush© 2006 Dr. Tim Margush 2020

Chamada do MétodoChamada do Método

O objeto lilfish se O objeto lilfish se moverámoverá– Argumentos para Argumentos para

“move” significam:“move” significam: Direção: downDireção: down Distância: .5 mDistância: .5 m Outros??? (more…)Outros??? (more…)

Clique Play para Clique Play para ver o que acontecever o que acontece

O objeto é “lilfish”

O método é “move”

Os argumentos são: “DOWN” e

“0.5m”

Page 21: Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Programming in AliceProgramming in Alice © 2006 Dr. Tim Margush© 2006 Dr. Tim Margush 2121

Mais AçõesMais Ações

Cena 2: O SaltoCena 2: O Salto Do these in orderDo these in order

– Move fish downMove fish down– Turn fish backTurn fish back– Do these togetherDo these together

Move fish forwardMove fish forward Turn fish forwardTurn fish forward

– Make splash soundMake splash sound

Page 22: Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Programming in AliceProgramming in Alice © 2006 Dr. Tim Margush© 2006 Dr. Tim Margush 2222

Mais DetalhesMais Detalhes

Dow

n 0

.5m

O Quão alto o peixe vai?

Turn Back

0.25 rev

Together: Forward 1 Turn Front .25

Page 23: Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Programming in AliceProgramming in Alice © 2006 Dr. Tim Margush© 2006 Dr. Tim Margush 2323

Analizando o Caminho do Analizando o Caminho do PeixePeixe

C = 2 * PI * r

4 = 2 * PI * r

2/PI = r

0.63 = r

O peixe sobe 0.63, então termina 0.13m

acima da água.1 metro pra

frente (forward 1m)

Ângulo de 90 graus(turn 0.25)

r

Page 24: Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Programming in AliceProgramming in Alice © 2006 Dr. Tim Margush© 2006 Dr. Tim Margush 2424

Um Salto melhorUm Salto melhor

C = 2 * PI * r

C = 2 * PI * 1.5

C = 9.42

Metade do circulo é 4.71

Alcança 1m de altura

Ângulo de 180 graus (turn 0.5)

r = 1.5mComeçou 0.5m abaixo da superfície

Do Together: Forward 4.71 Turn forward 0.5

Page 25: Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Programming in AliceProgramming in Alice © 2006 Dr. Tim Margush© 2006 Dr. Tim Margush 2525

Aninhando Estruturas de Aninhando Estruturas de ControleControle

Cada estrutura de Cada estrutura de controle consiste controle consiste de um de um blocobloco

Adicionando uma Adicionando uma estrutura de estrutura de controle dentro de controle dentro de outra é chamado outra é chamado aninhamento aninhamento (nesting)(nesting) Os colchetes indicam os blocos

Blocos não se sobrepõe

Page 26: Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Programming in AliceProgramming in Alice © 2006 Dr. Tim Margush© 2006 Dr. Tim Margush 2626

DocumentaçãoDocumentação

Todos os programas merecem uma boa Todos os programas merecem uma boa documentaçãodocumentação– ComentáriosComentários são incluidos no código para são incluidos no código para

indicar o comportamento desejadoindicar o comportamento desejado– Em Alice comentários são adicionados Em Alice comentários são adicionados

arrastando o controle de comentário para o arrastando o controle de comentário para o editoreditor

Inserindo comentário

Terminado o comentário

Page 27: Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Programming in AliceProgramming in Alice © 2006 Dr. Tim Margush© 2006 Dr. Tim Margush 2727

Método Orient ToMétodo Orient To

obj.orientTo(<asSeenBy>)obj.orientTo(<asSeenBy>) Use esse método para copiar a orientação Use esse método para copiar a orientação

de outro objeto (front, right and up)de outro objeto (front, right and up)– O centro do objeto não é alteradoO centro do objeto não é alterado

Page 28: Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Programming in AliceProgramming in Alice © 2006 Dr. Tim Margush© 2006 Dr. Tim Margush 2828

Turn To FaceTurn To Face

obj.turnToFace(<alvo>)obj.turnToFace(<alvo>) Use esse método para que Use esse método para que

a frente dele fique a frente dele fique direcionada para o alvo (a direcionada para o alvo (a orientação horizontal não é orientação horizontal não é alterada)alterada)

Page 29: Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Programming in AliceProgramming in Alice © 2006 Dr. Tim Margush© 2006 Dr. Tim Margush 2929

Point AtPoint At

obj.pointAt(<alvo>)obj.pointAt(<alvo>) O objeto é apontado em direção ao O objeto é apontado em direção ao

centro do alvo (a frente do objeto é centro do alvo (a frente do objeto é apontada em direção ao centro do apontada em direção ao centro do alvo e seu eixo horizontal é alterado)alvo e seu eixo horizontal é alterado)– Mover para frente depois de Mover para frente depois de

obj.pointAt(alvo) irá fazer com que o obj.pointAt(alvo) irá fazer com que o objeto passe pelo centro do alvoobjeto passe pelo centro do alvo

Page 30: Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Programming in AliceProgramming in Alice © 2006 Dr. Tim Margush© 2006 Dr. Tim Margush 3030

Propriedade VehiclePropriedade Vehicle

Escolha a propriedade Escolha a propriedade vehiclevehicle de um objeto para de um objeto para fazê-lo se movimentar junto fazê-lo se movimentar junto com o veículocom o veículo

Mover o barco fará o macaco se mover com eleMas mover o macaco não irá mover o barco, a menos que a propriedade vehicle do barco seja definida como macado, porém isso é ilegal!

Page 31: Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Programming in AliceProgramming in Alice © 2006 Dr. Tim Margush© 2006 Dr. Tim Margush 3131

Argumentos Adicionais de Argumentos Adicionais de MovimentoMovimento

duraçãoduração– Padrão é 1 secondPadrão é 1 second

stylestyle– Como uma sequência de movimentos Como uma sequência de movimentos

interageinterage asSeenByasSeenBy

– Controla os movimentos do objeto com Controla os movimentos do objeto com o ponto de vista de um objeto o ponto de vista de um objeto diferente(outro objeto)diferente(outro objeto)

Page 32: Programando em Alice Tim Margush Department of Computer Science University of Akron © 2006

Programming in AliceProgramming in Alice © 2006 Dr. Tim Margush© 2006 Dr. Tim Margush 3232

As Seen ByAs Seen By

obj.move(UP,1m) define pra cima em obj.move(UP,1m) define pra cima em relação a orientação do chãorelação a orientação do chão

obj.turn(LEFT,.25rev); asSeenBy(island) obj.turn(LEFT,.25rev); asSeenBy(island) roda o objeto ao redor da ilha ao invés de roda o objeto ao redor da ilha ao invés de rodar em torno de si mesmorodar em torno de si mesmo

sun.turn(RIGHT,0.25 revolutions); asSeenBy(smiley)