Programming in Alice

Download Report

Transcript Programming in Alice

Programando com Alice
Tim Margush
Department of Computer Science
University of Akron
© 2006
Estruturas de Controle
 Sequencial
– doTogether{} and doInOrder{}
 Seleção
– If
 Repetição
– While, loop
Programming in Alice
© 2006 Dr. Tim Margush
2
Mecanismos de Controle
 Expressões
e Funções
– Representando valores
 Valores
podem ser numeros, Booleans ou
outros tipos
 Uma
expressão booleana e funções
são usadas para controlar a
seleção(if) e repetição(while)
– if (expressão é “true”) faz algo
– while (expressão é “true”) faz algo
Programming in Alice
© 2006 Dr. Tim Margush
3
Métodos x Funções

Métodos representam uma ação
– object_name.method_name(<argumentos>);
Algo acontece ao objeto (Ex: mover, girar)

Funções representam valores
– object_name.function_name(<arguments>);
Retorna um valor dependendo das propriedades de um objeto
– Funções são usadas como argumentos ou
como expressões para seleção e repetição
Programming in Alice
© 2006 Dr. Tim Margush
4
Valores
 Em
programação valores podem ser
de diferentes tipos
– Tipos comuns são: numeros, letras,
Booleans, strings, e objetos
– Numeros normalmente são divididos
entre integers(inteiros) e float(reais), as
vezes podendo ter até outros tipos
 Misturar
tipos normalmente causa
problemas
Programming in Alice
© 2006 Dr. Tim Margush
5
Funções embutidas

Cada objeto tem um
conjunto de funções
embutidas que podem ser
acessados na aba de
funções do objeto
– Funções estão
agrupadas por
funcionalidades (Ex:
distância, tamanho,
posição dos eixos, etc..)
Programming in Alice

Uma chamada da função
retorna a resposta para
uma pergunta(ex:
Distância do objeto até o
chão
© 2006 Dr. Tim Margush
6
Funções úteis

object.distanceTo(<alvo
>)
– Distância entre o
objeto 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
Programming in Alice
© 2006 Dr. Tim Margush
7
Evitando colisões
 Para
determinar quando dois objetos
estão próximos você precisa
considerar o volume e a posição do
seu centro (distanceTo x colisão)
A cabeça vai mais
alto que a cauda
Centro perto da
traseira do sapo
perto
distanceTo()
Programming in Alice
© 2006 Dr. Tim Margush
8
Tricks para colisão
Em conjunto com distanceTo, considere…
 x.distanceAbove(y)

– mede a distância vertical entre a base de x xe o
topo de y

x.distanceBelow(y)
y
– Amede a distância vertical entre o topo de x e
a base de y

Veja também
–
–
–
–
distanceToTheLeftOf
distanceToTheRightOf
distanceInFrontOf
distanceBehind
Programming in Alice
© 2006 Dr. Tim Margush
9
Usando o Editor

Para usar uma função como argumento:
– Primeiro crie a instrução com um simples
argumento (ex 1m)
– Arraste a função para o lugar do argumento
para substituí-lo pelo retorno da função

Você pode aplicar também funções
aritméticas ao retorno da função clicando
na seta no final da função
Clique, depois
escolha a operação
Programming in Alice
© 2006 Dr. Tim Margush
10
Dimensões
 Objetos
tem 3 dimensões
 Voce pode determinar o tamanho do
box do objeto utilizando essas
funções:
– obj.getWidth()
– obj.getHeight()
– obj.getDepth()
Programming in Alice
© 2006 Dr. Tim Margush
Dimensões
são alteradas
quando subpartes se
movem
11
Execução condicional

Alice usa a estrutura IF-ELSE
– if (condição é “true”){
 faz isso
– }else{
 faz outra coisa
– }

Perceba esses dois blocos
true
SE
(THEN/IF)
condição
Booleana
false
SENÃO
(ou ELSE)
– SE (também chamado THEN/IF)
– SENÃO (também chamado ELSE)
Programming in Alice
© 2006 Dr. Tim Margush
12
Funções Booleanas
 x.isSmallerThan(y)
 x.isWiderThan(y)
 x.isAbove(y)
 x.isBehind(y)
Se necessário, o
treinador precisa
abaixar o braço
para passar na
porta
ELSE pode ser
deixado em branco
Programming in Alice
© 2006 Dr. Tim Margush
13
Operadores relacionais
 Comparação
entre dois numeros é
algo comum:
– if (x == y){

se x é igual a y
– if (x != y){
 se
x é diferente de y
– if (x > y){
 se
x é maior de y
– if (x >= y){
 se
x é maior ou igual de y
Programming in Alice
© 2006 Dr. Tim Margush
14
Usando comparações
World!

Utilizando
comparações:
– Selecione a aba de
funções do objeto
World
– Arraste a função de
comparação
desejada para o
código
– Escolha os valores
numéricos
Programming in Alice
© 2006 Dr. Tim Margush
15
Usando comparações

Arraste as
propriedades
desejadas para
substituir os
valores numéricos
Programming in Alice
© 2006 Dr. Tim Margush
16
Repetição
 Em
Alice existem quatro estruturas
de repetição
index = 0
for (int index=0; index<times; index++){
bloco de código
}
contador
Programming in Alice
condição
de parada
index < times
false
true
– Loop(FOR) utiliza um
contador para controlar
as repetições
código
index++
incremento
do contador
© 2006 Dr. Tim Margush
17
Ande 5 passos
Programming in Alice
© 2006 Dr. Tim Margush
18
Outras estruturas de repetição
 Alice
também tem o while
 while(condição é “true”){
– Bloco de código
}
Em Alice existe um for all que
repete a ação para cada item em
uma lista. As ações podem ser
feitas sequenciais ou em
paradalelo(todas juntas)
Programming in Alice
© 2006 Dr. Tim Margush
false
true
condição
código
19
Exemplo: Caça ao Coelho
 Lobo

caça o coelho!
http://www.cs.uakron.edu/~margush/289Alice/hunt.a2w
Loop
Programming in Alice
© 2006 Dr. Tim Margush
20
Testando a proximidade
 Quando
o coelho está perto da
cabeça do lobo, ele grita!
– Note o uso da comparação como uma
expressão booleana na condição do IF
abaixo
Programming in Alice
© 2006 Dr. Tim Margush
21
Ficando visível!
A função isFarFrom que diz se o coelho
está longe do centro do chão é utilizada
para fazê-lo voltar ao centro
 (SENÃO/ELSE)Caso contrário ele utiliza a
função Random para escolher uma direção
aleatória (turn left, entre -0.25 e 0.25)

Programming in Alice
© 2006 Dr. Tim Margush
22
Gerando numeros aleatórios

Random.nextDouble() é uma função do
objeto mundo
– Retorna um numero entre um valor minimo e
máximo
A
faixa de valores padrão é entre 0 e 1
 Escolha uma faixa maior e veja o resultado

O Coelho vira pra esquerda algum valor
entre -0.25 e 0.25
– Virar pra esquerda com um valor negativo na
verdade vai fazer o coelho virar para direita
Programming in Alice
© 2006 Dr. Tim Margush
23
A Caça!
O
Lobo sempre vira em direção a
última posição do coelho
– A movimentação do lobo está dentro do
dpTogether, junto com o movimento do
coelho
– O Coelho se move um pouco mais
rapido que o lobo
Programming in Alice
© 2006 Dr. Tim Margush
24
Melhorias?
 Mover
as pernas
– Coelho e lobo
 Virar
a cabeça do coelho para olhar
para o lobo
– Algumas vezes olha pra trás para ver se
o lobo está muito longe
 Movimentar
a boca do lobo
– Só quando chega perto do coelho
Programming in Alice
© 2006 Dr. Tim Margush
25