Publi

domingo, 3 de junio de 2012

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

Bueno, pues después de ver variables y procedimientos, ... vamos a ver qué son las funciones.
Lo vamos a ver de la forma más sencilla posible: Una función no es más que un procedimiento (es decir, un grupo de sentencias agrupadas que realizan algo concreto y que admite unos argumentos) pero que además devuelve un valor.
Vamos a verlo con un ejemplo en App Inventor

El ejemplo de función va a ser muy sencillo. Vamos a realizar una función que nos devuelva el mayor de 2 números. Partimos de una pantalla como la siguiente:


De aquí, lo que más me interesa que veais es la opción marcada NumbersOnly, que indica que en nuestro smartphone cuando seleccionemos dicho campo, sólo nos mostrará un teclado numérico, evitando así que podamos equivocarnos. Esta propiedad es muy utilizada en las cajas de texto (TextBox).

Primero vamos a pensar qué es lo que va a hacer la función, y después la "convertiremos" al lenguaje de App Inventor.
La función tendrá 2 argumentos (numero 1 y numero 2) y nos devolverá el mayor de los 2. En lenguaje semihumano (llamado en programación pseudocódigo, ya que es una mezcla entre lenguaje de programación y lenguaje humano) sería el siguiente:

funcion fMayor (numero1,numero2)
   variable vmayor
   Si numero1 >= numero 2 entonces 
                    vmayor=numero1
   en otro caso 
                    vmayor=numero2

   devolver vmayor

fin_función
Se entiende, ¿no? Lo único que hace es que se tiene una variable en el que se guarda el mayor de los 2 número y se devuelve. Vamos a verlo en App Inventor:
Primero, para acceder a ello tenemos que ir a:

Como veis, se encuentra en el mismo lugar que los procedimientos y las variables. Su nombre lo dice todo: procedureWithResult ... pues eso, que se trata de un procedimiento que devuelve un valor.

Vamos a ver cómo quedaría el programa completo y lo vamos estudiando por partes:


La primera parte 
es la definición de variable (llamada mayor) que guardará cuál de los 2 número es mayor (la cantidad en sí).

La segunda parte 
es la función, llamada fMayor, que será la que compruebe cuál de los 2 números que le pasemos, será el mayor. Para eso vemos que tiene 2 argumentos (arg) llamados numero1 y numero2. Con el ifelse (como ya os dije, los if..else aparecerá en cualquier aplicación, como tenemos que tomar decisiones en cada momento de nuestro día a día), comprobamos si numero1 es mayor o igual a numero2, y dependiendo del caso, le asignaremos a la variable mayor un valor u otro. Finalmente, devolvemos dicho valor mayor (return)


La tercera parte 
es el evento (btnCalcMayor.Click) que hace uso de la función fMayor. Es aquí donde se "llama" dicha función, y donde se "recibe" el valor de la función fMayor.
¿Alguna duda? Pregúntala sin problemas!

Vamos a probarlo.



Por último, os dejo una ampliación:

  • Mediante FUNCIONES (procedureWithResult), realiza un programa que nos pida 3 números y nos devuelva el mayor de los 3.

  • ¿Sabrías cómo hacer, de una forma lo más fácil posible, otra función que nos devuelva el mayor de 6 números? (Una pista: Dentro de una función se puede utilizar otras funciones, al igual que en un ifelse podían utilizarse otros ifelse, de forma anidadas). Os lo dejo para que penseis y mandarme las dudas o posibles soluciones!
Ya sabes, prueba y pregunta! En un próximo post os iré poniendo enlaces para las aplicaciones que vayamos haciendo. Asi podreis probarlas y modificar lo que querais.
Esto empieza a complicarse ....

Hasta la próxima.

3 comentarios: