Alice

66
PROGRAME EN ALICE 2.2 PEDRO J. FONSECA SOLANO

Transcript of Alice

Page 1: Alice

PROGRAME

EN ALICE 2.2

PEDRO J. FONSECA SOLANO

Page 2: Alice

AGRADECIMIENTO

A la Universidad Nacional, a la Escuela de Filosofía y a la Escuela de

Informática, por la oportunidad de enriquecer mi acervo intelectual.

Al Ministerio de Educación Pública de Costa Rica y a la Fundación Omar

Dengo, por las múltiples oportunidades que brindaron a lo largo de muchos

años en mi labor como docente

A Don Slater y Wanda Dann, de la Universidad de Carnagie Mellon, por su

motivación a programar en Alice y su aporte intelectual a mi persona.

Its time to another hello world !!!

Pedro Fonseca Solano

Page 3: Alice
Page 4: Alice

Ambiente

En Alice, los métodos son usualmente invocados o ejecutados por un evento, aunque no siempre

será así para todo, depende de nuestro estilo de programación y la forma en queramos dar la

solución a un problema.

Cuando, entramos a Alice, y seleccionas un tipo de mundo, así nos aparece el ambiente:

Podemos decir, que en hay 8 áreas fundamentales en Alice:

Mundo y sus propiedades

Pantalla de visualizacón

Área de Eventos

Área de programación (my first method)

Botones: Play, Undo, Redo, Basurero y Portapapeles

Pantalla que

muestra el Mundo

al darle PLAY

Área de

Eventos

Área de

Programación

Estructuras y

sentencias de

programación

El Mundo y

sus partes

Propiedad

es,

métodos y

funciones

del mundo

Portapapeles

Ejecutar, Deshacer Recuperar

Page 5: Alice

PLAY, UNDO y REDO

Play lo utilizamos, para ejecutar el “mundo” que hemos construido en Alice, es decir ponemos a

funcionar todo los que hemos construido o ambientado, y los que hemos programado

Para deshacer, la última acción que realizamos, en caso de que sea algo que no deseamos, por

ejemplo, cuando borramos una objeto, método o funciones y no queremos hacerlo, con este

botón lo recuperamos.

Hace los mismo que los anterior, solo que tiene una memoria, que nos permite ir unos cuantos

pasos atrás, pero cuidado, si saturamos su capacidad, las acciones nuevas las registrara en la

memoria y probablemente, perderemos información, porque le caerá encima a la información que

ya teníamos y usamos indiscriminadamente este botón.

El basurero, nos sirve para borrar o eliminar los elementos de que deseemos de Alice, funciona

cuando arrastramos el objeto o elemento, deseado al basurero, con excepción de los objetos en

él la pantalla del visualización del mundo.

El portapapeles, nos permite colocar elementos de Alice, arrastrándolos hasta él, para copiarlos en

la memoria del computador y luego pegarlos en el lugar que deseemos.

Page 6: Alice

Este es el estado del mundo inicial en Alice, compuesto World (Mundo), Camera (cámara, light (ilumimación)y Ground (piso o ambiente). Al parecer estas dos ventanas están separadas pero son una misma, cada vez que usted selecciona la cámara, iluminación, piso o mundo, se mostraran las propiedades del mismo. Esto quiere decir, que en el caso de mundo, que esta seleccionado en este momento, este mundo tiene: Propiedades, métodos y funciones, lo mismo ocurre con cámara, la iluminación y el piso. Además, cuando agreguemos un objeto al mundo, este también aparecerá en la ventana de World y tendrá también, propiedades, métodos y funciones, que para darles “vida”, debemos manipularlos y llamarlos por medio de métodos o eventos. El mundo siempre tendrá un primero programa o método, que se llama my first method, es como el programa principal, donde pondremos, en orden los programas que usaremos para resolver los problemas, que nos planteamos en cada mundo, que construyamos en Alice.

Pantalla de visualización del mundo, cada vez que

hacemos un clic a ejecutar , se mostrará el mundo, tal cual lo hayamos trabajado y aquí veremos el resultado de nuestra programación, es decir veremos en funcionamiento, todos los objetos, las funciones y los métodos que hayamos creado, los cuales los accionaremos por medio de los eventos que hallamos definido y creado.

Page 7: Alice

Área de Eventos:

Los eventos en Alice, son muy importantes, porque nos permite hacer muchas cosas, Alice ya trae una serie de eventos definidos, entre ellos: Cuando el mundo empieza, cuando una tecla es tocada, cundo hacemos clic con el ratón en algo, Mientras que algo sea verdadera, Cuando una variable cambia, Permitir que las fechas direccionales muevan, entre otros, que nos ayudan a potenciar nuestra programación. En otras palabras nos permite, asociar métodos o comportamientos a eventos. Por ejemplo, si deseo que

un helicóptero suba, pues asocio el evento al método heliSube, obviamente el método debe crearse antes, para que pueda ser usado con la fecha arriba, que sería el evento. (Vea la sección Eventos en Alice)

Mi primer método:

Este es el programa principal de Alice, donde haremos los llamados a los diferentes métodos, que

su vez llamaran a funciones, para lograr los efectos deseados en nuestro mundo. Tenemos

también, estructuras y elementos de programación, como cualquier otro lenguaje, para que

podamos representar y resolver problemas.

Page 8: Alice

Estructuras:

Ejecutar en orden, este es el principio FIFO, primero en entrar primero en salir, lo cual significa que

las sentencias de programación se ejecutaran en el orden establecido: Por ejemplo:

Hacerlo juntos, se utiliza para procesos paralelos, por ejemplo cuando queremos que un

humanoide camine, al menos debe existir un método que servirá para mover los pies y otro para

que el humanoide avance, si ejecutásemos estos eventos uno después del otro, no tendríamos

una animación o simulación (dependiendo de la complejidad del movimiento) adecuada, haría

primero una cosa y después la otra, en el caso de Alice, se puede trabajar en paralelo y ejecutar los

dos métodos a la misma vez usando la sentencia Do together.

La sentencia if then else, en el caso de Alice, se presenta como If/Else, que se utiliza para evaluar

condiciones, ya sea que sea falsa o verdadera y asi tomar un decisión.

Cuando, necesitamos repetir varias veces un proceso, usamos la sentencia LOOP o CICLO,

recordemos que los ciclos tienen un valor inicial y un valor final, en Alice, podemos hacer un ciclo

infinito (infinity times), que obviamente puede ser detenido por un condición. Esto significa, que

podemos controlar el ciclo como nos guste, ya que podemos usar variables para inicio, incremento

en la veces y el tope del mismo.

While, es también un ciclo, se funcionara mientras un condición sea verdadera o falsa, por

ejemplo: si tenemos un auto y cada vez que le damos ignición, queremos escuchar el sonido del

motor, podemos repetir este sonido, mientras que la variable encendido sea verdadera.

Estas estructuras, se usan para el trabajo con listas o arreglos, la idea es que todos los elementos

de una lista hagan en orden algo, por ejemplo, si tenemos 5 bailarinas egipcias, y deseamos

simular una danza sincronizada, debemos tener métodos para simular el movimiento de la danza,

entonces esta instrucción nos permitirá ejecutar en orden para todas las bailarinas los métodos

deseados.

Page 9: Alice

Estas estructuras, se usan para el trabajo con listas o arreglos, por ejemplo, tenemos un grupo de

personas o humanoides y deseamos que caminen al mismo tiempo, la instrucción hará que todos

ejecuten en paralelo el método, por caminar, esto nos permite optimizar recursos, ya que usamos

un solo método para todos.

Esta sentencia, nos permite detener por un tiempo la ejecución del programa, por ejemplo, si

deseamos mostrar un rotulo de texto, podemos usar el espera, para que el usuario tenga tiempo

de leer la información. Obviamente, no conviene abusar de esta sentencia, ya que puede provocar

resultados no deseados, o demoras mayores de lo adecuado.

Muy importante, para envió de mensajes, y para ver el valor de variables o banderas que usemos y

así conocer los valores de las variables en momentos precisos.

Esta, sentencia, se usa para documentar los programas, muchas veces después de un tiempo, no

recordamos para usamos una variable en un programa, y un comentario nos ayuda para ello.

Page 10: Alice

Captura de datos en Alice 2.2, desde el teclado usando tipo numérico

Recomendaciones & Agradecimientos:

Alice en un ambiente de programación 3D, que nos permite crear animaciones, que podemos

programar mediante su lenguaje de programación al estilo drag and drop, arrastre y suelte. Al

principio como con cualquier otro ambiente, hay un proceso de acomodamiento, que solo con la

práctica vamos superando, hasta sentirnos cómodos con el lenguaje y poder plasmar nuestras

ideas y representarlas en este ambiente.

Place Holder, contenedores, espacios de memoria o campos, este es un concepto muy importante

de Alice, ya que es la forma en que se construyen la mayoría por no decir todas las expresiones.

Desde el punto de vista de la programación, nos enfrentamos a un ambiente gráfico y es una

buena forma de cambiar el concepto del “hello world”, quizás enfrentarse a un ambiente más

amigable, permita que muchas personas tengan mayores oportunidades de aprender a programar,

o al menos tener la oportunidad de probar, pero debemos recordar, que la programación se

aprende programando y que lo lógica se desarrolla con el entrenamiento y la práctica.

La funciones, son otro aspecto muy interesante en Alice, ya que mucho del código que podemos

desarrollar utiliza funciones del lenguaje y las otras definidas por el usuario, por ejemplo, en el

caso de la captura de datos, los inputs son funciones denominadas preguntas al usuario y

tenemosr (ask user for a number, ask user for yes or no, ask user for a string) básicamente.

El uso de parámetros, me parece que es más simple de comprender e implementar en Alice , al

tratarse de un mundo 3D, podemos tener a un personaje que realice alguna función sobre otro y si

la hace para uno, por medio de parámetros podría utilizarse para otros.

Finalmente, debo agraceder a la Fundación Omar Dengo, Andrea Anfossi, a Zeidy Estrada por la

invitación al execelente Taller de programación en Alice 2.2, impartido magistralmente, por Don

Slater y Wanda Dann, profesor de la Universidad de Carnagie Mellon, quienes nos estimularon a

mi a mis compañeros a trabajar con este ambiente de programación y buscar nuevas formas y

oportunidades para que la gente se adentre el mundo de la programación.

Page 11: Alice

Quiero iniciar, diciendo que se trata de una captura de datos, cuando se ejecute el programa en el

ambiente Alice, aparecerá una caja de dialogo, solicitando el número de cédula del usuario, y se

guardara el resultado en un texto 3D, como se muestra:

1: Queremos hacer la lectura de una variable

tipo numero e imprimir su resultado en texto 3D, para ello debemos crear una variable global que se llamará cedula, hacemos un clic en World

, y vamos a la viñeta de propiedades y hacemos un clic en crear una nueva variable

y aparecerá la caja de dialogo de la derecha, donde nos pregunta el nombre (name:), en este caso le pondremos cedula, el tipo Type, es numérico y el valor por omisión es 1 y finalmente, hacemos clic en OK

2:

3:

Como puedes observar, vemos la variable creada

4: Alice no puede imprimir directamente una

variable numérica en un texto, debe utilizarse

la función , para convertir el valor de numérico a un string (cadena de caracteres), what es el tipo de dato que se convertirá a string.

Page 12: Alice

Vaya a opción archivo de Alice,

File y seleccione agregar

Texto 3D y de inmediato aparecerá la caja de dialogo de la derecha: The quick Brown fox, este valor es el que podemos cambiar, aquí enviaremos el dato que capturemos desde el teclado con la función Ask for number

Al hacer clic en el botón aceptar, volvemos al mundo y veremos los siguiente:

1. Aparece 3D TEXT 2. Y en la pantalla aparece the quick

brown…, depende del tamaño de la pantalla podremos ver el texto completo, si lo desea haga clic en play para verlo completamente.

Ahora le cambiaremos el nombre al texto 3D y le pondremos campo1

Clic derecho y seleccionamos la opción renombrar, rename, y editamos el texto y le ponemos campo1. Asi debe quedar este objeto tipo texto3D:

Detalle, note que el contenido de objeto texto 3D, es siempre el valor por omisión, la idea es capturar desde el teclado un valor numérico y traspasarlo al campo1.

Page 13: Alice

Para hacer la captura de datos del teclado o input desde Alice, es un poco particular, la variable que creamos llamada cedula, la debemos arrastrar hasta el área de programación en World.my first method

Observe, que el contorno de la variable es rojo, lo indica que no está en la posición correcta.

, esto ocurre al soltar la variable, donde nos solicita configurar o asignar el valor que tendrá. Vaya a set value, y vera las opciones que Alice ofrece para asignar la variable. Debemos hacer un alto aquí y explicar el concepto de “place holder”.

Arrástrela dentro del área de programación y observe, que el contorno cambia a verde, lo que indica que esta en el lugar correcto.

Recuerde que para arrastrar, hacemos clic izquierdo en el mouse sin soltarlo, cuando llegamos al lugar deseado solo soltamos el clic izquierdo del mouse y quedará aquí la variable.

Cuando queremos, asignar el valor inicial, debemos primero crear el espacio o campos contenedor “Place Holder”

Page 14: Alice

La traducción litera, no es muy adecuada en nuestro caso, pero la idea es como un campo, deposito o contenedor. Se utiliza para poner abrir campos para que posteriormente podamos colocar los valores deseados. En nuestro caso usamos set value, value, expression, world.cedula. Porque así lo quisimos, pero pude haber seleccionado, 0,25 y otro valor.

Asi queda cuando agregamos nuestra variable.

Ahora procederemos a asignar una función para el input o entrada de datos por el teclado.

Vaya a funciones, siempre recuerde que debe estar seleccionado el mundo y arrastre

la función ask user for a number, hasta el campo set value to

Note que se pone en verde, lo cual indica que podemos realizar esta asignación con dicha función,

y es que la captura desde el teclado de realiza de esta manera en Alice.

No podemos obviar el tipo de dato, debemos utilizar la función correspondiente a cada tipo de

dato y recuerde que alice, básicamente tiene:

Ahora debemos seleccionar la opción, Otros (other…) y escribir el mensaje para la lectura del dato

cedula

Page 15: Alice

En este caso el mensaje es “Digite su número de cédula:”

Al hacer clic, en el botón aceptar el programara se mostrará como sigue:

Al darle clic al botón play esto sucederá:

Escriba su el número de cédula que aparece en la caja de dilogo, y haga clic en el botón aceptar:

Page 16: Alice

Que ocurrió? Busque el valor de la variable cedula, dependiendo del tamaño que tenga la

pantalla, cuando Ud. Hace clic en play, puede ser que vea la parte de propiedades del mundo y

observe la variable:

Cuando termina haga clic en el botón , observe que la variable vuelve a su estado incial:

Pero lo que realmente queremos, es pasar el valor de la variable al texto 3D,

que nombramos como campo1 y parea ello hacemos lo siguiente:

1.Vaya al objeto

campo1, que es

un texto 3D 2.Haga clic en

la viñeta de

propiedades

3.Arrastre la

propiedad text,

hasta el área de

programación

4.Vaya a value y escoja

la opción world.cedula

Page 17: Alice

Asi quedara el programa, hasta aquí.

Ahora debemos hacer la conversión de número a string,

Ahora debemos, seleccionar la opción What, expression y finalmente world.cedula

La sentencia completa la podemos interpretar como:

Escriba en campo1, que es un texto 3D, el valor de la variable cedula y conviértalo en una palabra,

cadena o string.

1.Seleccione World

2.Haga clic la

viñeta funciones

3.Arrastre la función What as a

string y suéltela sobre el campo

set text to

Page 18: Alice

Ya tenemos la función lista, ahora podemos hacer un clic en el botón play, para probar lo que

hemos hecho hasta aquí. Si escribes el mismo número,

El resultado será siguiente:

Page 19: Alice

Lo que queda ahora, es convertir el valor de la variable en un entero, para eliminar el .0

Ahora ya terminamos, nuestro trabajo por esta lección, podemos hacer un clic en el botón play,

veremos que el la función int, nos deja el entero del valor, como se muestra en la siguiente figura.

1.Seleccione world

2.Vaya la

viñeta

funciones

3.Arrastre la

función Int a as a

String, hasta

world.cedula

Page 20: Alice

Como crear un trivia, con las capitales de Centroamérica

Necesitamos la lista de las capitales, y podemos usar esta

Belmopán-Belice, Guatemala-Guatemala, Managua- Nicaragua, Panamá-Panamá, San José-

Costa Rica, San Salvador- El Salvador, Tegucigalpa-Honduras.

Vamos a crear las variables para almacenar los países y sus capitales 2 dos variables, como se

muestra a continuación:

Vamos a propiedades del World y hacemos clic en , recuerde que son d

listas.

Ahora debemos crear la lista de nuestros países y debería quedar así:

Escriba el

nombre de

la variable

Haz clic

Por cada clic, agregamos

un nuevo ítem.

Tipo Otros, y

será String

Seleccione

crear lista

Page 21: Alice

Utilizando la misma metodología, Ud. Deberá crear la lista capitales y el resultado final deberá ser

como el que se muestra en la lista capitales.

La variable azar tomara un valor entre 1, hasta 7, ya que ítem no puede recuperar el elemento

1.33, la función toma la parte entera, por ejemplo, 0,33 = 0, 9,99 0 0, 1.77 = 1 y asi

suscesivamente. Por ejemplo si azar vale 5, entonces el elemento 5 de países es Costa Rica y el

elemento 5 de capitales es Costa Rica.

Aquí le asignamos al texto 3D textopaises un valor entre 0 y 7 de la lista países

Page 22: Alice

Recordemos que Belice es 0, Guatemala 1, Mangua2 y así sucesivamente, y se carga el objeto

textopaises aleatoriamente.

Si haces clic en y si el valor aleatorio es de 5, veras algo como esto,

La siguiente línea de código, es idéntica a la anterior, solo que usamos la variable capitales,

obviamente si la variable azar vale 1, la capital será Belmopán y así sucesivamente.

Haz clic en y si el valor aleatorio es de 5, veras algo como esto,

Para mejorar la presentación en la pantalla, por la duración, la podemos dejar en 0.

Estamos pensando en lo mismo?, podemos a partir de aquí crear un trivia sobre las capitales de

Centroamérica, podemos preguntarle a los usuarios, cuales la capital del azar de las lista países y la

respuesta correcta será el zar de la lista capitales. Veamos como lo hacemos.

Prueba haciendo clic en Restart, y

verás los nombres de los diferentes

países centroamericanos y su

capitales

Page 23: Alice

Vamos a crear 2 nuevas variables, para almacenar lo ya conocemos, nombres de los países y

nombre de las capitales, pregunta guarda el nombre del países y respuesta almacenará la

respuesta que el usuario escribirá a la pregunta, cual es la capital de:

Asignáremos a estas variables una función para captura de datos desde el teclado de tipo string o

cadena, como se puesta a continuación.

Ya está funcionando, ahora lo que tenemos que hacer es la evaluación de la respuesta, si la

respuesta que da el usuario es igual al azar de lista de capitales, la respuesta es correcta.

Recordemos, que cuando hacemos una pregunta ask, lo hacemos por medio de una función y para

invocarla, debemos asignar a una variable la pregunta, el resultado de la pregunta, quedara en la

variable a la que le asignamos la pregunta. Por lo tanto, el valor final de world.Pregunta, será lo

que el usuario haya escrito como respuesta.

Page 24: Alice

Esta evaluación plantea, si world.Pregunta es igual al número aleatorio que contiene azar de la

lista capitales, lo tenemos, es correcto.

Por ejemplo, el azar vale 5, por eso la pregunta es sobre Costa Rica, obviamente la respuesta

correctas es el elemento no. 5 de la lista capitales, que es San José.

Cuando hacemos debería aparecer lo siguiente (asumiendo que azar es una valor

de = 5.. hsta 5.99), esto muestra lo siguiente:

Entonces, si world.Pregunta = San José y world.Respuesta = San José

Entonces, la respuesta es correcta, se viene a ejecutar la instrucción que esta inmediatamente

después del If

Page 25: Alice

De otra manera, si respondo otra cosa, por ejemplo San Pedro

Bien ahora, si world.Pregunta = San José y world.Respuesta = San Pedro

Significa que la respuesta es incorrecta, y se viene por el lado del Else (sino), no toca nunca la

instrucción después del If.

Page 26: Alice

Este ejemplo, muestra como programar un juego en Alice, donde un helicóptero se podrá

desplazar el “mundo”, utilizando las fechas de navegación

Ingrese en Alice:

Haga un clic al botón verde de ADD OBJECTS

Busque la galería de imágenes de vehículos, hacia la derecha

Page 27: Alice

Esta es la galería que tiene el helicóptero que necesitamos.

, haga un clic y veras las figuras de esta galería de imágenes:

Este es el helicóptero que queremos (fondo amarillo), haga un clic en él.

Page 28: Alice

Haga clic en ADD instance to world

Y le aparecerá en el mundo (World) lo que sigue:

Ya tenemos el Helicóptero, y démosle clic en .

Ahora haga un clic en , crear un nuevo evento, elija la opción let

the arrow key move <subject>, Deje que la fechas muevan al sujeto.

Page 29: Alice

Le aparecerán la flechas direccionales para mover, y observe que dice camera, debemos cambiar

la camera por el helicopter.

Haga un clic en , y seleccione helicopter, the entire helicopter.

Así deberá quedar( deje que las flechas muevan al helicóptero)

Ahora, ya podemos probar el helicóptero y desplazarlo por el mundo, vaya a la opción

(Jugar o ejecutar), utiliza la flechas direccionales y veras…

Page 30: Alice

Para terminar, solo haz un clic en , divierte un rato y trata de hacer que el helicóptero de

vueltas, sin perderlo de vista.

Ahora debemos crear otros métodos, para que el helicóptero parezca más controlable.

Page 31: Alice

El mundo del helicóptero, se muestra en la figura anterior, es muy importante, que cuando

usemos un método que ya existe o cuando construyamos uno, debe estar asociado siempre a un

objeto del mundo.

Observe, que el objeto helicóptero, esta seleccionado , y en la ventana inferior

(helicopter´s details = Detalles del helicóptero), aparecen las opciones properties, methods y

functions (propiedades, métodos y funciones). Si tuviésemos más objetos, el que este seccionado

va presentar los detalles del mismo. En este caso observe que en métodos, el helicóptero tiene un

método que se llama heli blade. Que nos va a servir para hacer funcionar el rotor del helicóptero y

así las hélices.

Nombre

Evento

Evento Método Tipo

heli on Tecla E heli

blade

local

Heli off Tecla A DPU

Heli sube Tecla S DPU

Heli baja Tecla B DPU

Detalles del helicóptero Tabla de eventos

Tabla de Eventos y métodos, los métodos “locales”, ya vienen con el objeto, y los métodos DPU

(Definidos por el usuario), son los que tenemos que hacer nosotros.

Construyamos el método heli on, vaya a crear nuevo evento: y seleccione When a key is typed

(cuando una tecla es digitada o tocada).

Page 32: Alice

Esta opción genera al final del área de eventos lo siguiente,

recuerde que cuando tenemos varios eventos, algunas veces no los vemos y debemos utilizar el

ascensor hacia abajo para ubicarlos.

Haz clic en any key selecciona las opciones letters y E.

Page 33: Alice

Haz clic, en la opción y selecciona la

opción letters, y luego seleccionamos la letra E,

para asociar el método heli blade, a la letra E.

El evento completo debe de quedar así:

Cuando la letra E, sea digitada, se ejecutará el

método heli blade, que hará que las hélices del

helicóptero se muevan.

Ud. puede ver este método, si lo desea,

seleccionándolo y haciendo clic, en la opción Edit.

Programación de tecla E Explicación del método y evento

Ahora vamos a crear el método definido por el usuario, heli Sube, para que el helicóptero puede

subir, Recuerde que el helicóptero debe estar seleccionado , pues en caso

contrario, nunca podríamos encontrar el método, en el objeto helicopter.

Page 34: Alice

Ahora haga clic en la el botón (Crear nuevo método)

Creación del método Nombrado del método

Aquí se muestra el área de programación, debemos arrastrar hasta donde dice Do Nothing, las

diferentes comandos de programación, de acuerdo con las acciones que deseamos haga nuestro

método.

Arrastre la instrucción , hasta el área del programa la instrucción para hacer

que el helicóptero suba un metro hacia arriba:

Page 35: Alice

Note que la opción se pone con el contorno en color verde, eso significa que si lo puedes poner en

el área de programación, si esta en rojo, indica que esa no es el área de programación,

Así debe quedar el método heli Sube

Ahora vamos a crear el evento asociado a la tecla S, para que cada vez que se toque la tecla S, el

helicóptero suba.

Vaya a crear nuevo evento y seleccione When a key is typed, cuando una tecla es tocada

Page 36: Alice

Haz un cli en la opción any key, seleccionemos letters y escojamos la letra S, para asociar el

método heli Sube . Cada vez que presiones la tecla S, el helicóptero subirá 1 metro hacia arriba.

Bien, así debe aparecer ya la tecla S, asociada, ahora

lo que sigue es la opción do (hacer o ejecutar).

Haz clic en Nothing, luego en helicopter y finalmente

el método heli Sube.

Así se completa el evento, S que llama al método heli

Sube.

Haz clic en y ve a volar el helicóptero.

Asignación del evento a la tecla S. Opción do Nothing

Page 37: Alice

Creación del método, para controlar el helicóptero, haciendo que este baje cuando tocamos la

tecla B. Bueno es exactamente el mismo procedimiento para el método heli Sube, solo que la

instrucción será:

Y la asignación del evento a la tecla B, será como sigue:

Bien, así debe aparecer ya la tecla B, asociada, ahora

lo que sigue es la opción do (hacer o ejecutar).

Haz clic en Nothing, luego en helicopter y finalmente

el método heli Baja.

Así se completa el evento, S que llama al método heli

Page 38: Alice

Sube.

Haz clic en y ve a volar el helicóptero.

Asignación del evento a la tecla S. Opción do Nothing

Sonido, ahora vamos a agregar el sonido de un helicóptero, busque en internet y descárguelo,

guárdelo en una careta que usted decida, para que a la hora de utilizarlo, lo podamos hacer sin

problemas.

¿Cuál será el evento que active el sonido del helicóptero?, Bueno como nunca he manejado un

helicóptero, imagino que cuando se le da ignición o se enciende, el motor inicia su sonido, esto

significa que de los eventos que tenemos, el evento más adecuado es E, que en realidad llama al

método heli blade (este método hace que las hélices se muevan), por lo tanto vamos a analizar

este procedimiento, para poder determinar cual es el mejor lugar para llamar al sonido. Recuerde,

que cuando la nave enciende, el sonido deberá sonar hasta que se apague.

Veamos el como esta hecho el método heli blade, dirijase a y haz un clic en

edit, y aparecerá los detalles del método, normalmente aparecen cerrado y haz un clic en el ,

para abrirlo.

Page 39: Alice

Vamos a introducir la instrucción de play sound, debajo del primer ciclo Loop, arratre el icono que

representa la instrucción:

hasta que llegue debajo de la primera instrucción helicopter.motorwing, como se muestra en la

siguiente figura:

Page 40: Alice

De inmediato aparecerá la siguiente ventana, seleccione la

opción import sound file, la cual le mostrara un ventana de

exploración para que usted busque el archivo de sonido, con el

sonido del motor del helicóptero.

Acerque el curso al extremo derecho de esta ventana y cuando

aparece la flecha con puntas en los extremos, haga clic sin

soltarlo y amplíe el tamaño de la ventana, para que pueda ver

el botón de import y cancelar.

Busque la carpeta donde se

encuentra el archivo .wav,

con el sonido, haga un clic

en el archivo paea

seleccionarlo, en nuestro

caso el archivo se llama

helicoptar.wav, y luego haga

clic en importar.

Page 41: Alice

Después de este proceso, aparecerá

Ya se agrego al método, la instrucción para que cada vez que se encienda el helicóptero, suene el

motor, ahora vaya a probarlo, verifique que tenga los parlantes conectados al computador y que el

volumen no esté pausado, buen viaje.

Mis eventos hasta el momento:

Page 42: Alice

La sentencia if then else, en el caso de Alice, se presenta como If/Else, que se utiliza para evaluar

condiciones, ya sea que sea verdadera o falsa y así tomar un decisión. Por ejemplo, queremos

hacer una adivinanza, con colores, entonces vamos a seleccionar un color y le vamos a preguntar a

algún amigo (a), para ver, si adivina el color. Por tanto, necesitamos 2 variables, miColor y

amigoColor, para poder comparar una variable con la otra.

Creamos una variable, y ponemos el nombre miCcolor

Aquí aparece, nuestra primer variable creada, como podemos ver, identificamos su nombre:________________________ y su contenido:______________________. Que tipo de datos es? ____________________

1.Damos el

nombre de

la variable

2.Tipo es

Other,

String

3. Y el valor

será

morado

1. Clic en World

2.Clic en Properties

3.Clic en crear una

nueva variable

Page 43: Alice

Ahora crearemos la segunda variable, y su contenido lo dejaremos en blanco., porque no sabemos que color va decirnos nuestra amiga (o), cuando le preguntaremos. Modifiquemos, la opción value de la variable, y seleccionamos other y sustituimos default string por un espacio en blanco y hacemos clic en aceptar.

Ahora vamos a necesitar una función, para solicitarle a usuario que nos conteste una pregunta, en

este caso le interrogaremos con: Adivina en que color estoy pensando?, para ello usamos la

funciones ASK USER, preguntarle al usuario y seleccionamos. Pero primero debemos arrastrar la

variable amigoColor al área de programación

Al saltarla, nos pedirá que le asignemos el valor y este caso, usamos el “place holder” (modo

contenedor) y le asignamos default string (cadena o palabra por omisión), como se muestra en la

siguiente figura:

Page 44: Alice

Asignación de espacio para el contenedor, en este caso, seleccionemos default string.

Ahora debemo agregar o insertar la función en el lugar donde esta default string, o lo que es lo mismo, dar el valor a set value to.

Esta función , nos permitirá, hacer la pregunta al usuario, para que adivine el color que seleccionamos, obviamente se supone que el usuario no sabe que nosotros, escogimos el color morado. Y es de esta manera por medio de la instrucción IF/THEN, hacemos la evaluación

Arrastramos, la función hasta el set value to:

Clic en funciones

Buscamos

las funciones

ASK USER, y

escogemos:

Page 45: Alice

Al soltar la función, nos da varias opciones, en este caso vamos a seleccionar Enter a String:

Bien, lo que sigue es, hacer un clic en Enter a String y nos dejara entrar no modo edición, para

escribir nuestra pregunta: Adivina en que color estoy pensando?

Así deberá quedar, después de dar enter, para insertar la pregunta:

Excelente, ya tenemos la captura de datos, si quieres puedes hacer un clic en play, para que veas

la pregunta, deberá aparecer algo como lo que sigue:

Claro esta, que aún, no evaluamos nada aún, nos hace falta usar la instrucción , recuerda

que esta función, nos permitirá comparar el valor de la variable amigoColor, con nuestra variable

miColor, que le asignamos el valor morado.

Entonces vamos a hacer la evaluación, para ello debemos arrastrar la sentencia , al área

de programación, como se muestra en la siguiente figura:

Page 46: Alice

Arrastre de la parte inferior el world.my first method, la instrucción If/Else

La instrucción, le solicitara si va a evaluar falso o verdadero, en nuestro caso, lo haremos con el verdadero

Seleccionemos entonces, la opción true como se muestra en la figura de la izquierda. Y nos deberá aparecer, en el área de programación la sentencia If/Else, lista para que podamos realizar la comparación de variables

OK, Ahora debemos arrastrar la variable amigoColor hasta el área de true del If/Else

Page 47: Alice

Al soltarlo, nos preguntara sobre el tipo de comparación, en este caso queremos comparar que amigoColor, sea igual a miColor

El operador igual es, representando por un doble igual, ==. Selecciónalo y ve a expresiones (expressions), para poder seleccionar la variable con que vamos a comparar amigoColor. Recuerda que, una expresión es una forma valida en el lenguaje de programación para plantear operaciones.

Aquí construimos la expresión, que leemos:

Si amigoColor es igual a

miColor, entonces,

sino

Asi queda la expresión completa en la estructura If/Else, lo que sigue, es enviar un mensaje, para el caso en que colorAmigo sea igual a miColor, que sería Correcto, adivinaste y en el Else, el caso contrario.

Page 48: Alice

Al dar , podrás evaluar la pregunta,

si contestas morado, deberá aparecerá mensaje , en caso contrario, el

mensaje será:

Prueba, cambiando este programa, y pregunta por un número, en vez de un color, para que te

familiarices con la sentencia If/Else.

Page 49: Alice

Hacerlo juntos, se utiliza para procesos paralelos, por ejemplo cuando queremos que un

humanoide mueva los brazos a la misma vez, al menos debe existir un método que servirá para

mover los brazos derecho e izquierdo, si ejecutásemos este método, se moverá, primero un brazo

y después el otro, por lo tanto, se trata de un proceso en paralelo, y lo hacemos con la sentencia

Do together, veamos el siguiente ejemplo:

Coloquemos 3 figuras iguales, vamos a la opción ,

Luego, vamos a la galería de imágenes llamada PEOPLE, es la que se muestra en Figura 2. Si Ud. Lo desea puede escoger cualquier figura, pero recuerde que queremos mover los brazos y debe constatar que la figura que seleccione lo permita.

Seleccionamos a la clase Alicia, como se muestra en la Figura 3. y la insertamos en el mundo, como lo muestra la figura 4.

Luego vamos renombrarla, yo le pondré Alicia, como se muestra en la Figura 4.

Figura 1

Figura 2

Figura 3

Figura 4

Bien ahora queremos, crear un método en Alicia para mover las manos, para ello hacemos un clic

en Alicia y nos vamos a la propiedad Métodos y creamos un nuevo método y lo llamamos,

moverBrazos, como se muestra en la figura 5.

Page 50: Alice

Figura 5

Figura 6

Selecciona a Alicia, y haz un Clic en la opción create a new method.

Además debemos seleccionar el brazo derecho de Alice, como se muestra en la figura 6.

Recuerde que debemos usar la estructura Do Together, entonces la insertamos en al área de

programación, como se muestra en la figura 7.

Figura 7

Ahora debemos arrastrar la instrucción rightArm roll, hasta el do together, como se muestra en la

figura 8, y soltarlo.

Figura 8

Figura 9

Seleccionamos el movimiento hacia la izquierda del brazo derecho y la cantidad será de un ¼ de revolución, como se indica en la figura 9. Ahora debes seleccionar, el brazo izquierdo y hacer los mismo

Page 51: Alice

Así debería quedar nuestro método de moverBrazos

Ahora, asignémoslo al evento principal, llamado: when the world start

Haz un clic en el triangulo del y selecciona Alicia y luego el método que acabamos de crear moverBrazos

Así, queda ya el método asignado al evento, dale play y veras a Alicia moviendo los brazos.

Ahora puedes agregar al método, el procedimiento inverso, para los brazos vuelvan a la posición inicial, y entonces le habras enseñado a Alice a mover los brazos, prueba este código:

Page 52: Alice

CONCEPTO DE FUNCION

Pedro J. Fonseca Solano

Una función es una expresión compuesta por varias expresiones, que nos permite resolver el

problema de realizar un cálculo o cómputo de un fenómeno medible. Desde el punto de vista

computacional, las funciones en algunos casos vienen ya preestablecidas dentro de los lenguajes

computacionales, como extensiones del mismo, para hacer más fácil la labor de programación de

soluciones a problemas, por ejemplo: en la mayoría de lenguajes existe la función Square root, sqr

o raíz cuadrada, sin embargo los lenguajes serian sumamente extensos, si incluyeran todas las

funciones. Por ello existen las funciones definidas por el usuario, para que los usuarios puedan

crear sus propias funciones, para resolver problemas.

En el caso de Alice 2.2, existen propiedades, métodos y funciones, para el mundo y para cada

elemento de insertemos en el mundo.

Las porpiedades, nos muestras los diferentes valore o estados, de las variables dem ambiente, dependiendo de donde nos situemos, en el caso del World, como se puede observar, tenemos el color de la atmosfera, que es azul, pero que podemos cambiar de acuerdo a nuestras necesidades. En el caso de los métodos, world presenta:

Las funciones del Mundo, son todas aquellas disponibles en Alice, desde que iniciamos el programa, aquí se presentan las 9 categorías principales, entendiendo cada categoría tiene varias funciones.

Page 53: Alice

En el caso de la funciones definidas por el usuario, prácticamente cualquier expresión matemática

puede ser escrita en dicho lenguaje y construida paso a paso como una función, por ejemplo, la

suma resta y multiplicación, pueden convertirse en funciones. Si deseo crear una suma,

obviamente, debo conocer cuántos son los valores que quiero sumar y a partir de aquí, puedo

construir un método que describa paso a paso la sumatoria de N valores y una vez, 𝑖 = 𝑖 + 1𝑖=1𝑛 .

Para que sea más representativo, usaremos 5 valores y los sumaremos 12 + 3 + 6 + 14.5 + 10.

Dichosamente, en el computador, podemos crear un programa para que sume cualquier cantidad

de valores.

En Alice, iniciamos creando las variables y declarándolas con el valor de cero. Eto lo hacemos en

World.

La variable cantidadNumeros, se utilizara para determinar cuantos valores vamos a sumar, en

nuestro ejemplo, le daremos el valor de 5.

n el caso de la variable Resultado, la utilizaremos para acumular la suma de los valores leídos (12,+

3, 6, 14.5 y 10).

La variable valor, la usaremos dentro de un ciclo, para ir introduciendo en el programa los 5

valores

La función completa, que hace dicha sumatoria, se presenta a continuación, y procederemos a

explicar detalladamente sus partes.

Ahora bien, para escribir la función debemos primero que nada, hay que ir a World y seleccionar functions y

luego crate a new functions

Page 54: Alice

Le asignamos el nombre sumatoriaN y es de tipo numérico, como se muestra en el cuadro de derecha. Haz un clic en OK, y estaremos listos para iniciar con la creación de nuestra función.

Este es el área para escribir nuestra función, note que toda función siempre al final tiene un valor

de retorno, aquí podemos retornar el valor o resultado de nuestra función, no importa lo compleja

que sea nuestra función, al final nos dará un único valor, aunque podamos usar otros valores si

fuese necesario, en el caso de la sumatoria, lo que nos interesa de momento es el resultado final.

Page 55: Alice

Como se muestra en la primera línea de código de la función, a la variable cantidadNumeros,

solicitará al usuario que digite la cantidad de números que queremos sumar, es el usuario el que

dará este valor, se utiliza la función ask user for a number, que al final dejará en la variable el valor

que el usario digite, como se muestra en la siguiente figura:

Aquí, se nos pregunta sobre cuantos valores deseamos sumar, pues el programa suma N valores,

lo que ocurre es que si deseamos sumar 1000 o más, tardaremos mucho digitando los mil números

o más, por lo que probaremos el programa con 5 valores.

1

2 3

4

5

6

Page 56: Alice

Observe, que los valores de las variables, se muestran con la idea de seguir el programa y ver los

cambios conforme se va ejecutando dicho programa.

A la interrogante, Digite el valor No:0, digitamos el valor 12 y hacemos clic en aceptar

Page 57: Alice

Observe, que la variable resultado ahora tiene el primer valor que fue el número 12 y ahora

debemos escribir el segundo valor, el número 3 y hacer clic en aceptar.

Note, ahora como los valores cambian, pues la variable valor, tendrá siempre el último valor

digitado de los N valores, que decidimos sumar, además el resultado va acumulando la suma de lo

que tiene la variable resultado más lo que tienen la variable valor, es decir 12 + 3 = 15.

Ahora escribimos el tercer valor, y digitamos el número 6, después de hacer clic en aceptar,

tendremos las variaciones del caso, es decir, resultado será igual a _____ y valor será igual a ____.

Page 58: Alice

Puedes, verificar los valores de las variables, que pusiste en los espacios anteriores, donde te

solicitamos los valores y verificar que todo va bien.

Excelente, el cuarto valor será 14.5

Y finalmente, el último valor será el número 10, pues hemos sumado 5 números y el resultado

final es:

Page 59: Alice

Pues tenemos; 12 + 3 + 6 + 14.5 + 10 = 45.5, como se muestra en la pantalla final

Page 60: Alice

Función Random number en Alice

El uso de números aleatorios o al azar, en cualquier lenguaje de programación es importante, para

crear variables, que no sabemos qué valor van a tomar en un momento determinado. Sabemos

cuál es su valor mínimo y máximo, pero cuando invocamos la función random no sabemos cual

valor se va a producir.

Ejemplo: Primero aprenderemos como carear una variable en Alice

Seleccionamos el mundo , haciendo un clic y nos vamos a properties y hacemos un clic

en crear una nueva variable

Le damos el nombre azar a la variable, aue sea de tipo numérico y con valor inicial de 1, como se

muestra en la siguiente figura.

Si observamos los detalles el mundo, notamos que ya la variable azar esta creada como se muestra

en la siguiente figura.

Clic

Nombre

Tipo

Valor

Clic en

OK para

crearla

Page 61: Alice

Para ver dicha variable los podemos hacer de varias formas, la primera, que personalmente me

parece mas simple es: hacer un clic derecho en la variable y seleccionar la

opción watch this variable, mostrar esta variable.

y al darle play, se mostrara dicha variable con el valor de 1, que fue

el valor que inicialmente se le asigno.

La otra forma es utilizando la instrucción (imprimir), en el área de programación

world.my first method.

Arrastre la instrucción , hasta el área de programación y suéltela cuando el color de su

contorno esta en verde.

al soltarlo aparecerá: donde

debemos seleccionar objetos y buscamos nuestra variable, como se muestra en la siguiente figura:

Page 62: Alice

y a hacer clic en world.azar, aparecerá los siguiente:

Al darle , se mostrara al final de la pantalla lo siguiente

Cuánto vale la variable azar?, 1 o 1.0, parece algo sin importancia, pero en los lenguajes y

ambientes de programación, esas representaciones hacen referencia a dos tipo de valores,

enteros y fracciones, donde 1 es un entero (integer) y 1.0 es una fracción (real), en el caso de Alice

los números enteros los trata como reales, por esa razón, existe la función int ,

que tomo el valor numérico y lo convierte en entero (int) y finalmente lo convierte o pasa como un

string, o cadena para imprimirlo. Probémoslo: Vaya a , seleccione la pestaña de

, vaya hasta el final de las funciones de matemática avanzada (advanced math) y

seleccione la función y arrástrela hasta , la siguiente

figura se lo muestra:

Page 63: Alice

Ahora, debemos seleccionar expresión y luego world.azar

Excelente !!!, ahora ya tenemos la variable azar con la función int, como se muestra en la siguiente

figura:

Haga clic en el botón y vea lo que ocurre:

, de lo anterior,

deducimos que la instrucción , para los números, los toma como reales y en el caso del

clic derecho a la variable con la opción , muestra al darle play el valor como

entero, sin embargo cuando afectamos la variable con cualquier valor, también lo muestra como

un real, parece que solo lo hace cuando la variable se declara en 1, al inicio y esta no toma ningún

otro valor.

Reto, que hace entonces la función , pruébalo.

Haga un Clic

Haga un Clic

Lo importante es que Ud., recuerde

que si quiere la parte entera de una

variable usa la función:

Page 64: Alice

Para continuar y utilizar la instrucción RANDOM, borremos el área de programación, haz un clic

derecho en la parte anaranjada de la instrucción print y seleccione borrar (delete). Y el área de

programación world.my first method, nos queda limpia.

Ahora vamos a arrastrar hasta el área de programación, la variable azar, para asignarle su valor,

arrastre la variable, como se muestra en la siguiente figura:

Una realizado, las instrucciones anteriores, nos quedará la siguiente expresión:

Ahora vamos a arrastrar la función random hasta el set value to

1. Arrastre

AZAR

2. Seleccione VALUE

(Valor)

3. Seleccione EXPRESSIONS y escoja world.azar

Page 65: Alice

Bien, y insertamos la función, y se interpreta de la siguiente manera, la variable azar tiene

asignado el valor de un número aleatorio.

Pero ahora debemos, establecer el rango de los valores aleatorios que queremos, en este caso

vamos a fija el mínimo como 1 y el máximo como 5:

1. Haga clic en

, note que es

el triangulo del

random.

2. Haga clic en,

minimun e

introduzca el valor

de 1

3. Seleccione

máximum e

introduzca el valor

de 5

4. Finalmente,

seleccione solo enteros

y los fija como true, o

sea verdadero

Page 66: Alice

El resultado será la siguiente expresión:

La variable azar, se le asigna como valor el rango de 1 a 5, de número enteros, por lo tanto la

salida será siempre un número entre 1 y 4, porque al máximo valor del rango, se le resta 1.

, .. y así sucesivamente las veces que hagamos clic en

Restart, obviamente sólo los valores de 1 a 4, nunca saldrá el valor máximo 5.

Si deseamos generar los números al azar del 1 al 5, debemos establecer el rango del mínimo 1 y

máximo 6., por ejemplo:

Si hacemos clic en el botón , anote, cual es el valor de azar, y luego haga clic 4

veces en el botón , anote el valor de azar en , cada vez que hace clic en restart,

compare los valores con sus compañeros.

Veces: 1 2 3 4 5

1. Explique que es un numero al azar o aleatorio?

2. Cuál es la diferencia entre usar el IntegerOnly como True (Verdadero) o False (Falso) en la

función que sigue:

3. , esta función sirve para?

Amigas y Amigos, espero que sea de utilidad para ustedes, como lo ha sido para mí, comentarios y

sugerencias a: