JF 2 7 SG Esp
JF 2 7 SG Esp
2-7
Funciones
Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados.
Objetivos
En esta lección se abordan los siguientes objetivos:
• Utilizar funciones para controlar el movimiento en
función de un valor de retorno
JF 2-7 Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 3
Funciones
3
Funciones
• Funciones:
– Se utilizan para realizar preguntas acerca de las propiedades de
un objeto.
– Son similares a los procedimientos salvo que devuelven un
valor de un tipo determinado.
– Se puede utilizar para calcular un valor.
JF 2-7 Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 4
Funciones
Las funciones son importantes ya que pueden proporcionarle información sobre el objeto en cualquier
punto de la animación. La información se puede utilizar para realizar animaciones precisas.
4
Las funciones responde preguntas de forma
precisa
• Las funciones proporcionan respuestas precisas a
preguntas, tales como:
– ¿Cuál es la distancia entre los objetos Dalmatian y bunny?
– ¿Cuál es la altura de playingCard?
– ¿Cuál es el ancho de pocketWatch?
• Una función booleana devuelve un valor true o false.
• Por ejemplo, si se llama la función isFacing para
determinar si el objeto Alice está orientado hacia el
objeto bunny, se devolverá un valor true o false.
JF 2-7 Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 5
Funciones
5
Separador Functions
• El separador Functions se encuentra en el panel de
métodos. Seleccionar el objeto en el menú Instance y, a
continuación, ver sus funciones.
• Aquí puede encontrar información sobre las
articulaciones específicas del tipo de objeto que se han
agregado a la animación
JF 2-7 Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 6
Funciones
El separador Functions contiene todas las funciones generales que hereda un objeto, así como el acceso a
las articulaciones específicas disponibles únicamente para esa clase. Un ejemplo serían las orejas de un
conejo o las alas de un dragón.
6
Las funciones solucionan problemas de
distancia
• Supongamos que deseamos mover el objeto Dalmatian
directamente hacia el objeto bunny sin tener que
determinar manualmente, mediante un proceso de
prueba y error, la distancia entre ambos objetos.
• Se puede averiguar la distancia si se especifica un valor
de marcador de posición y se prueba el movimiento
hasta que nos acerquemos al resultado final deseado,
pero una forma más eficiente es utilizar una
función para determinar la
distancia exacta que debe
recorrer el movimiento.
JF 2-7 Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 7
Funciones
El uso de funciones para crear animaciones dinámicas que se ejecutan de forma diferente en cada
ejecución es una de las principales ventajas de Alice 3.
7
Uso de funciones getDistanceTo
• Utilizar la función getDistanceTo como parte de un
procedimiento move para solucionar este problema de
distancia.
JF 2-7 Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 8
Funciones
8
Pasos para utilizar la función getDistanceTo
• Determinar el objeto en movimiento y el objeto de
destino.
• En el editor de códigos, seleccionar el objeto en
movimiento en el menú Instance.
• Arrastrar el procedimiento move al editor de códigos.
• Seleccionar la dirección y un argumento de marcador de
posición para la distancia (el argumento de distancia se
modificará en el paso siguiente).
JF 2-7 Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 9
Funciones
9
Pasos para utilizar la función getDistanceTo
• Desde el separador Functions, arrastrar el mosaico getDistanceTo
hasta el valor de distancia resaltado.
JF 2-7 Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 10
Funciones
10
Prueba de la función
• En el siguiente ejemplo, el objeto Dalmatian se desplaza al centro
del objeto Bunny en tiempo de ejecución.
• Esto se puede leer en voz alta como "determinar la distancia
desde el centro del objeto Dalmatian hasta el centro del objeto
Bunny y, a continuación, mover el objeto Dalmatian hacia delante
la distancia especificada".
JF 2-7 Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 11
Funciones
Se recomienda leer el código Alice en voz alta. Permite comprender de forma más clara lo que hace el
código y es útil cuando se pasa a otros entornos de desarrollo integrado (IDE) que no se basan en la
operación de arrastrar y soltar.
11
Prueba de la función
• El objeto Dalmatian se desplaza hasta el centro del
objeto Bunny.
• Esto se debe a que la función getDistanceTo calcula la
distancia entre los centros de ambos objetos.
• La función calcula la distancia desde el centro del objeto
Dalmatian hasta el centro del objeto bunny y mueve el
objeto según ese valor.
JF 2-7 Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 12
Funciones
A veces, el uso de funciones tiene resultados imprevistos. Esto suele ocurrir debido a la inexperiencia,
conforme las vaya utilizando estará más familiarizado con la información exacta que deben devolver.
12
Evitar colisiones
• Puede mejorar las llamadas de funciones mediante los
operadores matemáticos (+) suma, (-) resta, (*)
multiplicación y (/) división.
• Por ejemplo, puede reducir la distancia de movimiento
de un objeto para evitar una colisión.
JF 2-7 Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 13
Funciones
Los operadores matemáticos se utilizan en Alice exactamente igual que en cualquier otro lugar.
13
Uso de operadores matemáticos
• La función determina la distancia entre los objetos
Dalmatian y Bunny.
• Para reducir el valor devuelto por la función
getDistance, el operador de resta un valor especificado.
• Para determinar el valor especificado, se llama a la
función getWidth y se divide ese valor por la mitad.
Dalmatian Bunny
X = Obtener la distancia de Dalmatian a Bunny
JF 2-7 Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 14
Funciones
Recuerde que las coordenadas de un objeto especifican el punto central del objeto. Por este motivo, debe
tener en cuenta también el ancho de los objetos.
14
Examen del cálculo matemático
• Examinemos el cálculo matemático Z = X - (Y/2):
– Z representa la distancia total que se desplazará el objeto
Dalmatian.
– X representa la distancia entre los objetos Dalmatian y Bunny.
– Y representa el ancho de Bunny.
– Y/2 representa el ancho de Bunny dividido por 2.
– ( ) Representan el orden de prioridad.
Dalmatian Bunny
X = Obtener la distancia de Dalmatian a Bunny
JF 2-7 Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 15
Funciones
15
Consejo sobre operadores matemáticos
• ¿Por qué dividir el ancho del objeto Bunny en nuestro
cálculo?
• Porque deseamos que en la animación el objeto
Dalmatian se mueva hasta el mismo borde del objeto
Bunny.
• Si se utiliza todo el ancho de Bunny, el objeto Dalmatian
se parará más lejos del objeto Bunny de lo deseado.
Dalmatian Bunny
X = Obtener la distancia de Dalmatian a Bunny
JF 2-7 Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 16
Funciones
16
Pasos para utilizar operadores matemáticos
para evitar la colisión
• Hacer clic en el nombre de la función entre los dos
objetos.
• Seleccionar Math.
• Seleccionar la opción de resta getDistanceTo.
• Seleccionar una distancia fija.
JF 2-7 Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 17
Funciones
Puede parecer bastante complicado cuando se empiezan a construir sentencias que contienen operadores
matemáticos. Como siempre, será más fácil con la práctica.
17
Pasos para utilizar operadores matemáticos
para evitar la colisión
• Ejecutar la animación para
probar cómo se mueve el
objeto en tiempo de ejecución.
JF 2-7 Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 18
Funciones
Una vez más, probar la animación es fundamental. Utilice el valor de distancia necesario y pruebe el
programa. Ajuste el valor según sea necesario y vuelva a realizar la prueba. Debe repetir este proceso hasta
que esté satisfecho con los resultados.
18
Ejemplo 1 de descripción de los menús
matemáticos
• La siguiente imagen muestra los operadores
matemáticos
(+ - * /) que necesitan uno o dos argumentos.
• Cada opción proporcionará uno o dos menús en
cascada para especificar los valores de los
argumentos.
JF 2-7 Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 19
Funciones
Las cuatro opciones de menú principales permiten elegir un único valor que se utilizará como parte de la
ecuación en el valor de la función. Los próximos cuatro permitirán elegir el valor de ambas partes de la
ecuación.
19
Ejemplo 2 de descripción de los menús
matemáticos
• La siguiente imagen muestra un operador de suma (+) que
necesita un único argumento.
• La siguiente imagen muestra operadores matemáticos que
necesitan dos argumentos.
• Recuerde que puede seleccionar valores de
marcador de posición para los argumentos.
• Los valores de marcador de posición se pueden editar siempre.
JF 2-7 Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 20
Funciones
20
Eliminación de la profundidad del objeto de
la función
• Otra forma precisa de evitar colisiones es eliminar la
profundidad (longitud) del objeto en movimiento de la
función.
• En el ejemplo siguiente, el objeto Dalmatian recorrerá la
distancia hasta el objeto Bunny, menos la profundidad
de Dalmatian.
Dalmatian Bunny
JF 2-7 Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 21
Funciones
Recuerde que no debe utilizar el ancho de los objetos en esta ecuación. Se trata de un error común y
genera resultados incorrectos al ejecutar el código.
21
La profundidad se mide desde el centro del
objeto
• Cuando se calcula un valor de distancia, se mide desde
un centro del objeto hasta el centro de otro objeto.
• Lo mismo ocurre con los cálculos matemáticos.
• Al restar la profundidad del objeto Dalmatian al objeto
Bunny, en realidad se resta del centro del objeto Bunny.
Dalmatian Bunny
JF 2-7 Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 22
Funciones
22
Pasos para eliminar la profundidad de la
función
• En el separador Functions, arrastrar el mosaico
getDepth del objeto en movimiento hasta el valor de
distancia resaltado.
JF 2-7 Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 23
Funciones
Al hacer clic en el operador matemático, puede editar la sentencia para que se ajuste a sus necesidades.
23
Terminología
Términos clave que se han utilizado en esta lección:
• Funciones
• Operadores matemáticos
JF 2-7 Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 24
Funciones
24
Resumen
En esta lección, debe haber aprendido a:
• Utilizar funciones para controlar el movimiento en
función de un valor de retorno
JF 2-7 Copyright © 2019, Oracle y/o sus filiales. Todos los derechos reservados. 25
Funciones
25