Publi

jueves, 24 de mayo de 2012

Variables, funciones, procedimientos, eventos, objetos, ... !!!PROGRAMACIÓN!!! . Parte 1 - Variables

Estamos viendo, y solo hemos comenzado, que App Inventor es una muy potente herramienta para realizar aplicaciones. Con hacer un diseño de la aplicación e irnos al Block Editor y poner un par de puzzles...¡tenemos una aplicación!!!
¿Qué fácil, no?
Bueno, sí y no. Aunque sea cierto que nos dicen que con App Inventor no hay que saber programar para hacer aplicaciones, no es menos cierto que hay que conocer ciertos conceptos de programación. En el último Post vimos el concepto del Condicional (IF..ELSE), válido para cualquier lenguaje de programación (aquellos que opteis por seguir formandoos en temas relacionados con programación, lo agradecereis y comprobareis que existe en cualquier lenguaje de programación).
Pues vamos a ver algunos conceptos que vamos a ir utilizando en App Inventor, cómo utilizarlo en App Inventor ... y serán conceptos que nos servirán para futuros proyectos en cualquier lenguaje de programación. Así que atentos!!!
Este Post lo dedicamos a LAS VARIABLES
Variables:Bueno, este concepto, de lo sencillo que es, cuesta muchísimo poder explicarlo de forma fácil para que se comprenda.
Podemos acceder a la definición de la Wikipedia o a cualquier página especializada para ver mucha información al respecto. Aquí vamos a verlo desde un punto de vista más visual y útil.
Una variable podríamos verla como una caja que tiene un nombre y a la cual se le puede introducir (asignar) un valor en un momento dado, y en cualquier otro momento, podemos utilizr (leer) dicho valor. El valor de la variable podrá cambiar. Os dejo un dibujo para que veais su significado:
Pues eso, que una variable siempre tiene un nombre, que se le asigna un valor en un momento dado, y que, o se puede leer o utilizar dicho valor, o cambiarlo por otro valor en cualquier momento.

Muy bien, muy bonito eso de las variables y de los dibujitos, pero ... ¿Para qué me sirve eso en una aplicación? ¿Cómo puedo utilizarlo en App Inventor?

Vayamos por parte:
¿Para qué me sirve? Vemos un ejemplo con la aplicación "Hola Ciclo". Pensad que hemos introducido como edad 13 años y cuando comprobemos si es mayor de edad o no, queremos que nos muestre los siguientes mensajes
  • Si es mayor de Edad un mensaje de "Ya eres mayor de Edad"
  • Si no eres mayor de Edad un mensaje de "Te faltan 5 años para tener 18 años".
Bueno, y aunque se puede hacer de muchas otras formas, una de ellas es utilizando una variable que nos guarde la diferencia de años entre los que tenemos y los 18 años. Vamos a ver el código:
Primero, para crear una variable en App Inventor nos tenemos que ir a


Lo arrastraremos al espacio de trabajo y le cambiamos la palabra variable por el nombre que tendrá la variable, en este caso, vDiferenciaEdad:


Como puedes observar, nos aparece un símbolo de Advertencia! que indica que no está completo, que tenemos que darle un valor. Lo que estamos haciendo es "definiéndolo", es decir, le estamos diciendo a App Inventor que tenemos un elemento, en este caso llamado vDiferenciaEdad, que vamos a utilizar en nuestra aplicación. Pero que le tenemos que dar un valor en su definición, que en este caso será 0

Sería el equivalente a (según el dibujo expuesto al principio del post para explicar lo que es una variable)




Una vez "definida" la variable, podremos utilizarla en el botón btnMayorEdad, en su evento .Click. Pero...¿dónde está esa variable que hemos definido? ¿Cómo la utilizamos? Cuando poníamos un control en el Diseño aparecía directamente en My Blocks, pero una variable...¿dónde?. Para acceder a las variables que definamos (o cualquier elemento que definamos como procedimientos, funciones, ...), tendremos que acceder a :



Chan Chan !!! Aquí se irán "guardando" todos los elementos que vayamos definiendo en nuestro programa, pero ¿Por qué hay 2 vDiferenciaEdad? Bueno, pues muy sencillo: Al igual que cuando utilizábamos lblMensaje.Text observábamos que había 2 elementos, para las variables pasa lo mismo:


El bloque global de bloque contiene el valor de la variable. Hace referencia al valor que ya tiene la variable. Cuando queremos utilizar el valor que tiene guardada dicha variable, utilizaremos este bloque.
El bloque set global que sirve para establecer un valor para la variable. Este bloque es el que sirve para darle un valor a la variable. Cuando queremos cambiar el valor de la variable (lo que se guarde dentro de la caja) utilizaremos este bloque

Vamos a verlo en el ejemplo:

Explicaremos lo que aparece en el recuadro rojo, porque el resto lo vimos en el post anterior (muy importante, como comenté, el controlar el bloque ifesle)

Si no es mayor de edad (si no es mayor o igual a 18, es decir, si es menor a 18), lo primero que haremos será guardar en la variable creada cuántos años faltan para que tenga 18 (es la resta de 18 con la edad actual. Por ejemplo, si tienes 13 años, pues 18-13=5, que serán los años que te quedan para cumplir los 18). Lo realizamos así:




sería al equivalente a (según el dibujo expuesto al principio del post para explicar lo que es una variable)


A continuación tenemos el bloque




que lo que nos interesa de aquí realmente es


que sería utilizar el valor que hay dentro de "la caja" vDiferenciaEdad, en el ejemplo, un 5.

El código completo (Editor de Bloques) de este apartado sería:



Y su funcionamiento nos mostraría algo así:




Pues hasta aquí el concepto de variable. En un principio puede parecer complejo, pero no es para tanto. Sin embargo, si entráramos en sus ámbitos y demás (cosa que excede de lo que se pretende con este blog), sí veríamos que la cosa se complicaría mucho ... pero eso lo dejamos para cuando os decidais a programar en un lenguaje "real" de programación.

Pues como siempre, os dejo alguna propuesta de ampliación:
  • Una facilita. Sobre esta misma aplicación, que cuando nos pida la edad y pulsemos al botón Mayor Edad?, por ejemplo, si insertamos un 13, nos muestre un mensaje como el siguiente:
"Tienes 13 años. En tu próximo cumple llegarás a los 14 años y te quedan 5 para cumplir los 18".
Lógicamente, si se introduce otra edad, hará los cálculos sobre dicha edad introducida.
Ya sabes, cualquier duda ... pregúntala aquí en el blog!
Hasta la próxima!






3 comentarios:

  1. Hola, mi nombre es Luis y llevo 3 día aprendiendo app inventor, gracias a tu blog he aprendido varias cosas,pero me gustaría que me ayudaras con lo siguiente, mi app que estoy haciendo consiste en 2 screen en la 1 hay 2 textbox y 1 boton, en la 2 screen ha 1 label, mi idea es que en la screen 1 el usuario ingrese 2 números en cada uno de los textbox y luego con estos 2 números se realice una resta y al oprimir el botón se cambie a la screen 2 y me arroje el resultado de la resta en el label que esta en esta screen. no lo puedo hacer te agradecería de todo corazón que me orientaras, ya que no sé como conectar los componente de una y otra screen, desde ya muchas gracias Adiós.

    ResponderEliminar
  2. Buenas Luis,

    Me imagino que ya habrás solucionado tu problema, aún así te animo a que visites mi Blog donde explico en varios pasos como crear una aplicación con varias screen usando appinventor.

    http://blogromerojacfsmr.blogspot.com.es/2013/04/crear-una-aplicacion-con-dos-screen.html

    Espero que te sea de ayuda, Un cordial saludo.

    ResponderEliminar
  3. Pues como dices parece muy sencillo...
    ¿cuándo es necesario definirlas?
    ¿Por qué local o global?

    Gracias

    ResponderEliminar