Publi

viernes, 25 de mayo de 2012

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

Ya "sabemos" cómo funciona y para qué sirve una variable. Pero hay más ...
En este caso vamos a ver para qué sirve un procedimiento.
Al igual que en las variables, vamos a referenciaros a una explicación más o menos formal en http://www.babylon.com/definition/Procedimientos%20%28Programaci%C3%B3n%29/
Aquí diremos que se trata de un bloque, que tiene un nombre único, que realiza una operación concreta y que se puede utilizar todas las veces que queramos. Esto último es por lo que tiene más sentido el uso de procedimientos.
Imaginaos que tenemos que repetir una operación varias veces en el mismo programa. Lo vamos a ver con un ejemplo muy sencillo pero instructivo. Empezamos teniendo una aplicación con el siguiente diseño:



Vemos que tenemos 3 botones que básicamente van a hacer lo mismo: Formar un mensaje con el Nombre del botón que le damos.
El mensaje será el siguiente:
"Hola Jorge. Bienvenido al ciclo de SMR del IES Jorge Guillen"
donde Jorge se sustituirá por el nombre de cada uno de los botones según le pulsemos.

Una opción, la más sencilla a primera vista sería realizar un texto (con make text) para cada uno de los botones. No sería muy complicado porque tenemos 3 botones, pero si tuviésemos 30...¿sería "rentable"?

Bueno, pues nos vamos a los bloques y vemos cómo lo haremos. Primero os pongo la solución final y la vamos explicando poco a poco:
Ostras !!! Qué difícil !!! Es lo primero que dice uno cuando ve esto. Pero cuando lo veamos paso a paso no nos parecerá tan difícil

Lo complicado está en el crear_mensaje ... que efectivamente es el procedimiento:
Esto es muy similar a las variables. Se encuentra en la misma opción que las variables:



Cogemos el procedimiento (procedure ) y lo insertamos en el Block Editor y comprobamos que el control nos ofrece un arg. Esto es fundamental para los procedimientos, y es algo que le da una potencia muy importante: Podemos "pasarle" valores al procedimiento para que realice alguna operación con ellos. Para ello se definen componentes name . Veamoslo en en ejemplo
Primero insertamos el procedimiento

y a continuación el elemento name


¿Y dónde se encuentran ambos elementos? Pues sí, todo lo que definimos aparece en MyDefinitions


 Ahora sólo nos falta crear el procedimiento llamado crear_mensaje, que tiene un argumento llamado nombreAlumno

Sólo diferenciar lo que es la definición de un argumento (name (1)) con lo que es la utilización del argumento (value (2))

Una vez tenemos el procedimiento, sólo hay que "llamarlo" cuando nos haga falta, en este caso, cada vez que pulsemos sobre un botón


 Vemos que le pasamos como argumento el texto del botón, es decir, lo que nos muestra el botón en su propiedad Text.

Como vimos antes, todo junto queda:





y probándolo:



Vemos que tenemos que hacer 3 veces lo mismo, pero dependiendo del botón que pulsemos sólo cambia una cosa, el nombre. ¿no nos facilita el uso de procedimientos esta labor? Pensad que hemos utilizado un ejemplo muy sencillo y con poca utilidad, pero que en procesos empresariales esto se da muchísimo. Imaginaos a Telefónica y su generación de facturas. ¿Pensais que sería viable no utilizar funciones para una labor así?

Bueno, como siempre os dejo alguna cosita a modo de ampliación:
  • Sobre el ejercicio expuesto en este post, introducir 2 cajas de textos, de forma que en una se pida el nombre del ciclo (txtNombreCiclo) y otra el nombre del instituto (txtNombreIES). Cuando pulsemos sobre cada uno de los botones (Jorge, Rafael o Antonio), utilizando el procedimiento anterior con las modificaciones indicadas, que nos genere el mensaje dependiendo de los datos introducidos por el usuario. A modo de ayuda os diré que el procedimiento tendrá 3 argumentos (arg): El texto del botón pulsado, el texto de la caja de texto txtNombreCiclo y el texto de la caja de texto txtNombreIES).
Espero vuestras dudas y resultados!

Hasta la próxima!

3 comentarios:

  1. Hola Fran,
    Como te comenté tengo un proyecto entre manos, eso de poder asistir a las clases me ha impedido comentártelo, el caso es que el proyecto de momento se aparta pero, me han pedido una aplicación que consista en visualizar mapas de careteras de medio mundo.
    Me explicaré, sé que ya hay una, o varias, que hacen esto mismo, pero dependen del un navegador gps, lo que me han pedido sería algo así como escanear mapas y poder visualizarlos en un tablet.
    Me lo ha pedido un aventurero motero que se dedica a recorrer el mundo en moto, y me comento que es una molestia el ir cargado de mapas que según por donde va pasando el va visualizando apoyandose en el depósito de la moto.
    Así que me pidió un mapa que vaya en un tablet y que el pueda pasar la mano por la pantalla para ir avanzando.
    No sé si será muy complicado, con la ayuda del libro y lo visto en clase espero sacarlo adelante.
    Ya tengo curro para este verano, iré informando.
    Un abrazo, Manuel Cortés.
    P.D. Los avances te los iré enviando por si los quieres colgar en el blog.

    ResponderEliminar
  2. Por cierto, Por qué no puedo ver algunas imágenes?

    ResponderEliminar
    Respuestas
    1. Buenas, Manuel.
      Lo de que no puedes ver algunas imágenes, ¿es en algún Post concreto o en todos?
      Con respecto a tu aplicación, a ver si lo podemos ver uno de estos días en el Instituto, vale? Yo te avisaré el día que esté por allí y pueda venir bien que lo veamos, de acuerdo?

      Un saludo,
      Fran

      Eliminar