Publi

miércoles, 23 de mayo de 2012

¿Si llueve qué hacemos?. ¿Y si no?. SENTENCIAS CONDICIONALES



En nuestra vida normal estamos contínuamente preguntandonos cosas y actuando según sus respuestas:
  • ¿Aprobaré el examen? Si saco al menos un 5 estaré aprobado, en otro caso estaré suspenso 
  • ¿Iré al cine esta noche? Si tengo al menos 7 Euros podré ir, en otro caso tendré que quedarme en casa viendo una peli.
  • ¿Aprenderé a realizar aplicaciones con App Inventor? Si me lo propongo y trabajo en ello, seguro que sí. En otro caso, será imposible que genere mis propias aplicaciones móviles
Como ves, siempre estamos decidiendo cosas según unas condiciones. Pues esto también será necesario en cualquier aplicación que realicemos. Tendrá que realizar una cosa u otra dependiendo de una serie de condiciones...y vamos a ver cómo podemos "elegir o decidir" en App Inventor

Lo vamos a ir viendo con el ejemplo de "Hola Ciclo".
Vemos que tenemos un campo para Introduce Edad (txtEdad) y un botón Mayor Edad? de (btnMayorEdad)
 Lo que vamos a hacer es que cuando insertemos una Edad en la caja de texto y al pulsar sobre el botón, vamos a mostrar un mensaje de si es mayor de Edad o no.

Bueno, pues todo esto ... en el "Block Editor". Lo abrimos y nos vamos al Evento btnMayorEdad.Click
 


Ahora nos encontramos con EL problema. Queremos que muestre un mensaje SI ES MAYOR O IGUAL a 18 y otro mensaje SI ES MENOR a 18. ¿Cómo hacemos esto de "decidir" entre una cosa un otra?. Para ello existe (aquí y en cualquier lenguaje de programación) la sentencia o bloque IF .. ELSE. ¿Dónde viene esto? Pues en
Vamos a explicar brevemente qué hace esta sentencia ifelse que se compone de los siguientes elementos:
  • test: Aquí indicamos la comparación o condición que queremos ver si se cumple o no. En nuestro ejemplo, aquí será donde "preguntemos" si lo que está escrito en la caja de texto de Edad (txtEdad.Text) en un número mayor o igual a 18.
  • then-do:Equivale a ENTONCES. Esto es lo que hará el programa si se cumple la condición que le hemos preguntado en el test
  • else-do: Equivale a EN OTRO CASO. Si no cumple la condición que le hemos preguntado en el test, se realizará lo que aquí le indiquemos.
Por tanto, para nuestro ejemplo, nos preguntaríamos, sin entrar en la programación, lo siguiente:
SI Edad >= 18
ENTONCES Muestra el mensaje "Eres mayor de Edad"
EN OTRO CASO Muestra el mensaje "Aún no eres Mayor de Edad"

Esto nos preguntaríamos en "castellano", ¿no?. Pues convertirlo a App Inventor sería tan fácil como lo siguiente:

¿Sencillo, no? Bueno, de todas formas vamos a ver lo más importante: la condición:
 
Lo primero a destacar es la comparación >= . Esto nos lo encontramos en 
Nos devuelve Verdadero si lo que ponemos en la izquierda es Mayor o Igual a lo que ponemos en la derecha, y Falso en otros casos (es decir, Falso si lo de la izquierda en Menor a lo de la derecha)

En nuestro ejemplo, SI txtEdad.Text >= 18, nos mostrará el mensaje "Eres Mayor de Edad", y en otro caso, "Aún no eres Mayor de Edad"

Lo Segundo que nos puede llamar la atención es lo del número 18. Funciona muy similar al componente Text, pero para números. Para acceder a ello es tan sencillo como ir a 

Ya sólo nos queda probarlo:


¿Fácil no?. Bueno, lo iremos complicando un poco más adelante. Ahora, os dejo alguna ampliación, como en el Post anterior y como pretendo ir haciendo en los siguientes:
  • Añade, en el mensaje de si es Mayor o menor de Edad, el Nombre  que se haya introducido en la caja del Nombre (txtNombre)
  • Podrías hacer que si es mayor de 16 años nos muestre un mensaje como "Ya no tienes obligación de estudiar", pero si es menor de 16 años que compruebe que si eres menor de 12 años nos muestre "No estás ni en la ESO" y en otro caso (siempre menor de 16 años, es decir, entre 12 y 16) "Deberías estar en la ESO, al menos por tu Edad!!). Sólo decirte que puedes utilizar un ifelse dentro de otro ifelse (lo que se denomina en programación "los if anidados"). Este punto lo veremos más en profundidad en siguientes Post.
Bueno, ¿por hoy está bien, no?. Y ya sabeis, si teneis alguna consulta podeis indicarmela respondiendome en el Post correspondiente.
Hasta el próximo Post!



No hay comentarios:

Publicar un comentario