+ All Categories
Home > Documents > Programando com Alice Tim Margush Department of Computer Science University of Akron © 2006.

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

Date post: 17-Apr-2015
Category:
Upload: internet
View: 103 times
Download: 0 times
Share this document with a friend
Popular Tags:
25
Programando com Programando com Alice Alice Tim Margush Tim Margush Department of Computer Science Department of Computer Science University of Akron University of Akron © 2006 © 2006
Transcript
Page 1: Programando com Alice Tim Margush Department of Computer Science University of Akron © 2006.

Programando com AliceProgramando com AliceTim MargushTim Margush

Department of Computer ScienceDepartment of Computer ScienceUniversity of AkronUniversity of Akron

© 2006© 2006

Page 2: Programando com 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

Estruturas de ControleEstruturas de Controle

SequencialSequencial– doTogether{} and doInOrder{}doTogether{} and doInOrder{}

SeleçãoSeleção– If If

RepetiçãoRepetição– While, loopWhile, loop

Page 3: Programando com 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

Mecanismos de ControleMecanismos de Controle

Expressões e FunçõesExpressões e Funções– Representando valoresRepresentando valores

Valores podem ser numeros, Booleans ou Valores podem ser numeros, Booleans ou outros tiposoutros tipos

Uma expressão booleana e funções Uma expressão booleana e funções são usadas para controlar a são usadas para controlar a seleção(if) e repetição(while)seleção(if) e repetição(while)– if (expressão é “true”) faz algoif (expressão é “true”) faz algo– while (expressão é “true”) faz algowhile (expressão é “true”) faz algo

Page 4: Programando com 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

Métodos x FunçõesMétodos x Funções

Métodos representam uma açãoMétodos representam uma ação– object_name.method_name(<argumentos>);object_name.method_name(<argumentos>);

Funções representam valoresFunções representam valores– object_name.function_name(<arguments>);object_name.function_name(<arguments>);

– Funções são usadas como argumentos ou Funções são usadas como argumentos ou como expressões para seleção e repetiçãocomo expressões para seleção e repetição

Algo acontece ao objeto (Ex: mover, girar)

Retorna um valor dependendo das propriedades de um objeto

Page 5: Programando com 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

ValoresValores

Em programação valores podem ser Em programação valores podem ser de diferentes tiposde diferentes tipos– Tipos comuns são: numeros, letras, Tipos comuns são: numeros, letras,

Booleans, strings, e objetosBooleans, strings, e objetos– Numeros normalmente são divididos Numeros normalmente são divididos

entre integers(inteiros) e float(reais), as entre integers(inteiros) e float(reais), as vezes podendo ter até outros tiposvezes podendo ter até outros tipos

Misturar tipos normalmente causa Misturar tipos normalmente causa problemasproblemas

Page 6: Programando com 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

Funções embutidasFunções embutidas Cada objeto tem um Cada objeto tem um

conjunto de funções conjunto de funções embutidas que podem ser embutidas que podem ser acessados na aba de acessados na aba de funções do objetofunções do objeto– Funções estão Funções estão

agrupadas por agrupadas por funcionalidades (Ex: funcionalidades (Ex: distância, tamanho, distância, tamanho, posição dos eixos, etc..)posição dos eixos, etc..)

Uma chamada da função Uma chamada da função retorna a resposta para retorna a resposta para uma pergunta(ex: uma pergunta(ex: Distância do objeto até o Distância do objeto até o chãochão

Page 7: Programando com 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

Funções úteisFunções úteis

object.distanceTo(<alvobject.distanceTo(<alvo>)o>)– Distância entre o Distância entre o

objeto e o alvoobjeto e o alvo

Movimentação original (1m)

Arraste a função para substituir o

parametro(1m)

Escolha o alvo como parametro

Nova movimentação com a distância entre

o objeto e o alvo

Page 8: Programando com 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

Evitando colisõesEvitando colisões

Para determinar quando dois objetos Para determinar quando dois objetos estão próximos você precisa estão próximos você precisa considerar o volume e a posição do considerar o volume e a posição do seu centro (distanceTo x colisão)seu centro (distanceTo x colisão)

distanceTo()

perto

Centro perto da traseira do sapo

A cabeça vai mais alto que a cauda

Page 9: Programando com 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

Tricks para colisãoTricks para colisão Em conjunto com distanceTo, considere…Em conjunto com distanceTo, considere… x.distanceAbove(y)x.distanceAbove(y)

– mede a distância vertical entre a base de x e o mede a distância vertical entre a base de x e o topo de ytopo de y

x.distanceBelow(y)x.distanceBelow(y)– Amede a distância vertical entre o topo de x e Amede a distância vertical entre o topo de x e

a base de ya base de y Veja tambémVeja também

– distanceToTheLeftOfdistanceToTheLeftOf– distanceToTheRightOfdistanceToTheRightOf– distanceInFrontOfdistanceInFrontOf– distanceBehinddistanceBehind

y

x

Page 10: Programando com 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

Usando o EditorUsando o Editor

Para usar uma função como argumento:Para usar uma função como argumento:– Primeiro crie a instrução com um simples Primeiro crie a instrução com um simples

argumento (ex 1m)argumento (ex 1m)– Arraste a função para o lugar do argumento Arraste a função para o lugar do argumento

para substituí-lo pelo retorno da funçãopara substituí-lo pelo retorno da função Você pode aplicar também funções Você pode aplicar também funções

aritméticas ao retorno da função clicando aritméticas ao retorno da função clicando na seta no final da funçãona seta no final da função

Clique, depois escolha a operação

Page 11: Programando com 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

DimensõesDimensões

Objetos tem 3 dimensõesObjetos tem 3 dimensões Voce pode determinar o tamanho do Voce pode determinar o tamanho do

box box do objeto utilizando essas do objeto utilizando essas funções:funções:– obj.getWidth()obj.getWidth()– obj.getHeight()obj.getHeight()– obj.getDepth()obj.getDepth()

Dimensões são alteradas quando sub-

partes se movem

Page 12: Programando com 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

Execução condicional Execução condicional

Alice usa a estrutura IF-ELSEAlice usa a estrutura IF-ELSE– if (condição é “true”){if (condição é “true”){

faz issofaz isso– }else{}else{

faz outra coisafaz outra coisa– }}

Perceba esses dois blocosPerceba esses dois blocos– SE (também chamado THEN/IF) SE (também chamado THEN/IF) – SENÃO (também chamado ELSE)SENÃO (também chamado ELSE)

condição Booleana

SE (THEN/IF)

SENÃO(ou ELSE)

true false

Page 13: Programando com 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

Funções BooleanasFunções Booleanas

x.isSmallerThan(y)x.isSmallerThan(y) x.isWiderThan(y)x.isWiderThan(y) x.isAbove(y)x.isAbove(y) x.isBehind(y)x.isBehind(y)

ELSE pode ser deixado em branco

Se necessário, o treinador precisa abaixar o braço para passar na

porta

Page 14: Programando com 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

Operadores relacionaisOperadores relacionais

Comparação entre dois numeros é Comparação entre dois numeros é algo comum:algo comum:– if (x == y){if (x == y){

se x é igual a yse x é igual a y

– if (x != y){if (x != y){se x é diferente de yse x é diferente de y

– if (x > y){if (x > y){se x é maior de yse x é maior de y

– if (x >= y){if (x >= y){se x é maior ou igual de yse x é maior ou igual de y

Page 15: Programando com 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

Usando comparaçõesUsando comparações

Utilizando Utilizando comparações:comparações:– Selecione a aba de Selecione a aba de

funções do objeto funções do objeto WorldWorld

– Arraste a função de Arraste a função de comparação comparação desejada para o desejada para o códigocódigo

– Escolha os valores Escolha os valores numéricosnuméricos

Arraste

World!

Page 16: Programando com 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

Usando comparaçõesUsando comparações

Arraste as Arraste as propriedades propriedades desejadas para desejadas para substituir os substituir os valores numéricosvalores numéricos

Page 17: Programando com 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

RepetiçãoRepetição

Em Alice existem quatro estruturas Em Alice existem quatro estruturas de repetiçãode repetição– Loop(FOR) utiliza umLoop(FOR) utiliza um

contador para controlarcontador para controlaras repetiçõesas repetições index < times

index = 0

código

tru

e

false

index++

for (int index=0; index<times; index++){for (int index=0; index<times; index++){bloco de códigobloco de código

}}

contador condição de parada incremento

do contador

Page 18: Programando com 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

Ande 5 passosAnde 5 passos

Page 19: Programando com 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

Outras estruturas de repetiçãoOutras estruturas de repetição

Alice também tem o whileAlice também tem o while while(condição é “true”){while(condição é “true”){

– Bloco de códigoBloco de código }} condição

código

tru

e

false

Em Alice existe um Em Alice existe um for allfor all que que repete a ação para cada item em repete a ação para cada item em uma lista. As ações podem ser uma lista. As ações podem ser feitas sequenciais ou em feitas sequenciais ou em paradalelo(todas juntas)paradalelo(todas juntas)

Page 20: Programando com 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

Exemplo: Caça ao CoelhoExemplo: Caça ao Coelho

Lobo caça o coelho!Lobo caça o coelho! http://www.cs.uakron.edu/~margush/289Alice/hunt.a2whttp://www.cs.uakron.edu/~margush/289Alice/hunt.a2w

Loop

Page 21: Programando com 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

Testando a proximidadeTestando a proximidade

Quando o coelho está perto da Quando o coelho está perto da cabeça do lobo, ele grita!cabeça do lobo, ele grita!– Note o uso da comparação como uma Note o uso da comparação como uma

expressão booleana na condição do IF expressão booleana na condição do IF abaixoabaixo

Page 22: Programando com 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

Ficando visível!Ficando visível!

A função isFarFrom que diz se o coelho A função isFarFrom que diz se o coelho está longe do centro do chão é utilizada está longe do centro do chão é utilizada para fazê-lo voltar ao centropara fazê-lo voltar ao centro

(SENÃO/ELSE)Caso contrário ele utiliza a (SENÃO/ELSE)Caso contrário ele utiliza a função Random para escolher uma direção função Random para escolher uma direção aleatória (turn left, entre -0.25 e 0.25)aleatória (turn left, entre -0.25 e 0.25)

Page 23: Programando com 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

Gerando numeros aleatóriosGerando numeros aleatórios

Random.nextDouble() é uma função do Random.nextDouble() é uma função do objeto mundoobjeto mundo– Retorna um numero entre um valor minimo e Retorna um numero entre um valor minimo e

máximomáximo A faixa de valores padrão é entre 0 e 1A faixa de valores padrão é entre 0 e 1 Escolha uma faixa maior e veja o resultadoEscolha uma faixa maior e veja o resultado

O Coelho vira pra esquerda algum valor O Coelho vira pra esquerda algum valor entre -0.25 e 0.25entre -0.25 e 0.25– Virar pra esquerda com um valor negativo na Virar pra esquerda com um valor negativo na

verdade vai fazer o coelho virar para direitaverdade vai fazer o coelho virar para direita

Page 24: Programando com 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

A Caça!A Caça!

O Lobo sempre vira em direção a O Lobo sempre vira em direção a última posição do coelhoúltima posição do coelho– A movimentação do lobo está dentro do A movimentação do lobo está dentro do

dpTogether, junto com o movimento do dpTogether, junto com o movimento do coelhocoelho

– O Coelho se move um pouco mais O Coelho se move um pouco mais rapido que o loborapido que o lobo

Page 25: Programando com 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

Melhorias?Melhorias?

Mover as pernasMover as pernas– Coelho e loboCoelho e lobo

Virar a cabeça do coelho para olhar Virar a cabeça do coelho para olhar para o lobopara o lobo– Algumas vezes olha pra trás para ver se Algumas vezes olha pra trás para ver se

o lobo está muito longeo lobo está muito longe Movimentar a boca do loboMovimentar a boca do lobo

– Só quando chega perto do coelhoSó quando chega perto do coelho


Recommended