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