Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Da 4
Introducci
on
Hola! Bienvenido al cuarto da del taller Programa Tus Ideas :)
Hoy aprenderas a desarrollar aplicaciones que envan mensajes de texto (SMS) y que
pueden procesar mensajes de texto recibidos. Desarrollaremos la aplicacion No SMS al
Volante, que responde automaticamente a los mensajes recibidos con una respuesta predeterminada. Tamben aprenderas a manejar una nueva manera de almacenar datos en variables, usando listas. Las listas te permiten tener en un mismo lugar una coleccion de valores,
y realizar operaciones sobre estos valores de manera generales decir, que no importara si
la lista tiene 1, 3 o 100 elementos, tu codigo sera el mismo!
1.
Qu
e Aprender
as
Es una aplicacion mas compleja que las de las actividades previas. Entonces, la vas a
construir paso por paso, una funcionalidad a la vez, empezando con el mensaje de respuesta
automatica. Aprenderas sobre:
El componente EnviarTexto para enviar mensajes de textos y procesar los mensajes
recibidos.
Un formulario de entrada para someter el mensaje de respuesta personalizada.
El componente de base de datos TinyDB para guardar o preservar el mensaje personalizado despues del cierre de la aplicacion.
El evento Screen.Inicializar para cargar la respuesta personalizada cuando la aplicacion se comienza a ejecutar.
El componente TextoAVoz para escuchar el texto de los mensajes recibidos en voz
alta.
3
Dise
nar los componentes
La interfaz de usuario para esta aplicacion es bastante simple: tiene una etiqueta que
muestra la respuesta automatica, con una caja de texto y un boton para agregar un cambio.
Tambien tendras que seleccionar un componente EnviarTexto, un componente TinyDB,
y un componente TextoAVoz, y un componente SensorDeUbicaci
on.Todos apareceran
en la zona de componentes no visibles. Los componentes de tu proyecto debieran verse como
en la Figura 1.2.
Nombre
Etiqueta
EtiquetaAviso
Etiqueta
EtiquetaRespuesta
CampoDeTexto
CampoDeTextoNuevaRespuesta
Bot
on
Bot
onCambiarRespuesta
EnviarTexto
EnviarTexto1
TinyDB
TinyDB1
TextoAVoz
TextoAVoz1
Proposito
Dice al usuario como funciona la aplicacion
La respuesta que se enviara al remitente del
mensaje de texto recibido
El usuario ingresara una
respuesta personalizada
aqu
El usuario presiona el
boton para cambiar la respuesta
Procesa los mensajes de
texto
Almacena la respuesta en
una base de datos
Lee en voz alta los mensajes recibidos
Proposito
El controlador de evento que se gatilla cuando
el telefono recibe un mensaje de texto.
Configurar el n
umero de telefono al cual se
enviara el mensaje.
El n
umero de telefono de la persona que envio el mensaje recibido.
Configurar el mensaje que sera enviado.
El mensaje que el usuario configuro para ser
enviado.
Enviar el mensaje.
Proposito
El usuario presiona el boton para configurar
la nueva respuesta.
Cambia el texto de la etiqueta por la nueva
respuesta.
El usuario ingresa aqu el texto de la nueva
respuesta.
Proposito
Almacena la respuesta personalizada en la base de datos del telefono.
Nombre o etiqueta para identificar el mensaje
de respuesta en la base de datos.
Aqu se muestra el mensaje de respuesta.
Proposito
Una variable temporal para almacenar los datos obtenidos.
El valor inicial para la variable, puede ser cualquier cosa.
Obtiene el valor almacenado en la base de datos.
Argumento para el parametro etiqueta de la
funcion TinyDB1.ObtenerValor. Aseg
urate que la etiqueta es la misma que la usada
para guardar los datos anteriormente.
Para chequear si el texto obtenido de la base
de datos tiene largo mayor que 0 (o sea, si
esta vaco o no).
Tabla 1.5: Bloques para cargar los datos de vuelta al abrir la aplicacion
11
12
Proposito
Pronuncia en voz alta el mensaje de texto recibido.
Construye el texto completo que sera ledo en
voz alta.
Las primeras palabras que se diran.
El n
umero del remitente del mensaje recibido.
Poner un punto despues del n
umero de
telefono ,y luego decir El mensaje es.
El mensaje recibido.
13
2. material de apoyo
Prueba tu Aplicaci
on! Necesitaras que alguien te enve un mensaje de texto mientras
ejecutas la aplicacion. Lee en voz alta el mensaje tu telefono? Recibe el otro telefono la
respuesta automatica correcta?
Resumen
En este tutorial has desarrollado los siguientes conceptos:
El componente EnviarTexto puede ser utilizado para mandar mensajes de texto y para procesar los mensajes de texto recibidos. Antes de llamar a EnviarTexto.EnviarMensaje
debes ajustar las propiedades de N
umeroDeTel
efono y Mensaje. Para contestar
a un texto recibido, tienes que programar el controlador de eventos EnviarTexto.MensajeRecibido.
El componente TinyDB se utiliza para almacenar informacion de manera persistente
en la base de datos del telefonopara que los datos puedan ser cargados cada vez que
la aplicacion se abre.
El componente TextoAVoz toma cualquier objeto de texto y lo habla en voz alta.
El bloque unir se usa para juntar (concatenar ) distintos textos separados en un solo
objeto de texto.
2.
Material de Apoyo
Listas
Las listas son un tipo de objeto que permite almacenar varios valores al mismo tiempo.
Tambien la idea de las listas es poder ejecutar tareas repetitivas sobre cada uno de los
elementos de una lista. Por ejemplo, podemos usar una lista para enviar un mensaje de texto
a 3 compa
neros.
Soluci
on sin Usar Listas
Consideremos una aplicacion con un boton Bot
onEnviarMensajes. La Figura 2.1 muestra como enviar 3 mensajes de texto usando el componente EnviarTexto.
14
2. material de apoyo
15
2. material de apoyo
El codigo de la aplicacion usando listas se muestra en la Figura 2.2.
16
2. material de apoyo
Figura 2.3: Aplicacion que suma los kilometros diarios recorridos por el usuario.
En este ejemplo podemos observar lo siguiente:
El bloque por cada se usa para iterar sobre los n
umeros de la lista.
La variable total se usa para calcular el resultado total de la suma. Se inicializa con
su valor en 0.
El parametro elemento primero tiene valor 7, luego 3, luego 11, y finalmente 5.
En la primera iteracion, total tiene su valor previo (0) mas el valor de elemento (7),
entonces se ajusta el total a 0 + 7 = 7.
En la segunda iteracion, total tiene su valor previo (7) mas el valor de elemento (3),
entonces se ajusta el total a 7 + 3 = 10.
Despues de la tercera iteracion total vale 21, y despues de la cuarta iteracion total
vale 26, y se termina la ejecucion del bloque por cada.
Luego de la iteracion, se escribe el total en una etiqueta para mostrarlo al usuario.
Datos Persistentes
Cuando ingresas informacion en tu pagina de Facebook o en otras aplicacines, t
u esperas
que esta informacion este guardada para que la proxima vez que visites la pagina, lo que
17
2. material de apoyo
pusiste siga ah! Lo mismo pasa con AppInventor: a medida que trabajas en tus proyectos,
puedes cerrar la pagina para luego volver y continuar con el trabajo en el lugar en que te
quedaste. Cuando la informacion se guarda y aparece la proxima vez que visitas una pagina
o abres una aplicacion, se dice que los datos son persistentes. En contraste, los datos que
solo duran mientras la pagina o aplicacion estan abiertos se conoce como datos transitorios.
Puedes pensarlo tambien como la memoria a largo plazo y la memoria a corto plazo de las
aplicaciones.
En AppInventor, la memoria a corto plazo o transitoria se expresa en las propiedades de
los componentes y en las variables que uses en tus aplicaciones. Para los datos persistentes
debes usar el component TinyDB, que provee dos funciones esenciales:
TinyDB.GuardarValor que recibe una etiqueta que identifica los datos almacenados,
y el valor que quieres almacenar en la base de datos.
ObtenerValor, que busca en la base de datos si hay informacion asociada a una
etiqueta especfica. Si hay datos, los devuelve, y si no los hay te entrega un valor por
defecto que t
u debes configurar.
Cuando creas aplicaciones con datos persistentes debes preocuparte primero de guardar
los datos! Pero ademas, debes considerar lo siguiente:
Cuando es necesario recuperar los valores desde la base de datos? En general, es buena
practica recuperarlos justo antes de que sean necesarios. En el tutorial era necesario
cargar los datos cuando la aplicacion se inicializa, pero no necesariamente debe ser
siempre as.
Que pasa si no hay datos almacenados? Tu aplicacion debe considerar el uso de valores
por defecto mientras no haya informacion almacenada en la base de datos.
Preguntas y Discusi
on
Considera las soluciones siguientes para mandar un mensaje de texto a una serie de
n
umeros de telefono, que se mostraron anteriormente en la Figura 2.1 y la Figura 2.2.
1. Si tienes que a
nadir un elemento a la lista de n
umeros de telefono, para que solucion
sera mas facil realizar el cambio?
18
2. material de apoyo
2. Cuantas funciones (llamadas y ajustes de configuracion) se ejecutan en la primera
solucion? Sin contar el bloque por cada y el controlador de evento.
3. Cuantas funciones se ejecutaran si en la lista hubiera n elementos?
4. El codigo de la primera solucion podra ser mas eficiente, es decir, que podran ejecutarse menos bloques si cambiaras algunas cosas. Que bloques moveras y por que?
5. Las aplicaciones anteriores estan dise
nadas para un usuario en especfico. Es decir, una
sola lista de telefonos para un usuario del telefono. Si quisieras que la aplicacion fuera
mas general, como la cambiaras?
6. Si quieres hacer que la lista de n
umeros de telefono sea dinamica, es decir que quieres
permitir al usuario ingresar y cambiar los n
umeros de telefono que van a recibir un
mensaje, cual solucion sera mejor? Por que?
Ejercicios de Personalizaci
on
Te invitamos a realizar los siguientes desafos de programacion! Tambien puedes personalizar la aplicacion a tu gusto!
1. Escribe una version de No SMS al Volante que deja al usuario definir respuestas
personalizadas para ciertos n
umeros de telefono. Por ejemplo: tu mejor amigo te manda
un mensaje de texto, contestas con un mensaje, pero para cualquier otra persona
contestas con otro mensaje. Necesitaras a
nadir bloques condicionales para distinguir
los n
umeros de telefono de los remitentes.
2. Escribe una version de la aplicacion que emite una una alarma cuando un mensaje de
texto es recibido desde un n
umero que se encuentra dentro de una lista especial de
notificacion.
3. Escribe una aplicacion que manda mensajes de texto a todos los usuarios de una lista,
pero permite al usuario entrar y cambiar los n
umeros de la lista y cambiar el mensaje
a enviar. Los datos deben ser persistentes.
19
2. material de apoyo
4. Escribe una aplicacion que guarda notas escritas por el usuario. Las notas deben poder
editarse, y los datos deben ser persistentes. Como implementaras que las notas puedan
ser borradas?
20