AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

¡Nueva funcionalidad de WINDEV 2024!
Ayuda / Tutorial WINDEV / Tutorial - Fundamentos de WLanguage
  • Lección 6 - Procedimientos
  • Presentación
  • Crear un procedimiento
  • Parámetros de un procedimiento
  • ¿Qué es un parámetro?
  • Gestión de parámetros: pasar por referencia o por valor
  • Devolver un valor
  • ¿Parámetros obligatorios u opcionales?
  • En resumen

Tutorial - Fundamentos de WLanguage

Lección 6 - Procedimientos
Abordaremos los siguientes temas:
  • Crear y llamar a un procedimiento.
  • Parámetros de un procedimiento.
  • Resultado de un procedimiento.
Durée de la leçon 20 min
Presentación
Un procedimiento permite asociar un identificador (nombre) a una sección de código para reutilizarla.
En esta lección, vamos a ver los tipos de procedimientos disponibles en WLanguage, cómo crearlos y llamarlos, y cómo pasarles parámetros y obtener un resultado.
Si es necesario, abra el proyecto "WLanguage" que creó en la primera lección de este tutorial (consulte el párrafo Un proyecto para descubrir WLanguage de la lección 1).
Para ver los eventos WLanguage del proyecto:
  1. Haga clic derecho en la "P" que se encuentra junto a las pestañas de elementos abiertos. El menú contextual se abre.
  2. Seleccione "Código del elemento".
  3. El editor de código muestra los diferentes eventos asociados al proyecto.
  4. Si completó las lecciones anteriores, elimine el código del evento "Inicialización" del proyecto (pulse Ctrl + A para seleccionar todo y luego presione la tecla "Supr").
Crear un procedimiento
Un procedimiento es un conjunto de instrucciones que lleva un nombre.
Por ejemplo, escribiremos un procedimiento que muestre un mensaje.
Crear un procedimiento
Vamos a crear un procedimiento global en el conjunto de procedimientos del proyecto "WLanguage".
Importante
Un conjunto de procedimientos permite agrupar todos los procedimientos globales de un proyecto. Se puede llamar a estos procedimientos desde cualquier código del proyecto.
  1. En la pestaña "Código", en el grupo "Procedimientos", despliegue "Nuevo" y seleccione "Nuevo procedimiento global".
    Nuevo procedimiento global
  2. En la ventana que aparece, se muestra un nombre predeterminado para el conjunto de procedimientos globales.
    Nuevo procedimiento global
    Conserve este nombre y valide (haga clic en "OK").
  3. Aparece una nueva ventana que permite introducir el nombre del procedimiento y sus características:
    Nuevo procedimiento global
    Veamos esta ventana en detalle. Puede:
    • indicar el nombre del procedimiento. Se muestra un nombre predeterminado, pero se puede modificar.
    • generar un comentario de encabezado. Este comentario contiene las diferentes características del procedimiento. De forma predeterminada, el contenido de este comentario se genera al escribir el código del procedimiento. Además, se puede modificar directamente.
    • definir el "alcance" del procedimiento. De forma predeterminada, un procedimiento global es público: se puede acceder a él desde cualquier parte del código. En algunos casos, es necesario restringir el acceso a un procedimiento global. Puede ser:
      • "Restringido". En este caso, es posible acceder al procedimiento global desde otro procedimiento global en el mismo conjunto de procedimientos o en un conjunto distinto.
      • "Privado". En este caso, solo se puede acceder al procedimiento global mediante otro procedimiento global del conjunto de procedimientos.
    • indicar el rol del procedimiento. Este rol es necesario para desarrollar aplicaciones que distinguen entre la lógica de negocio y la interfaz de usuario (por ejemplo, con un método de desarrollo MV o MVP). Para obtener más información sobre este tema, consulte Dividir lógica de negocio / UI. De forma predeterminada, este rol se establece como "No definido".
  4. Para nuestro ejemplo, solo cambiaremos el nombre del procedimiento y conservaremos las opciones predeterminadas. Introduzca "Welcome" para el nombre del procedimiento y valide.
  5. El procedimiento global "Welcome" aparece en el editor de código.
    Nuevo procedimiento global
    Este procedimiento está compuesto por:
    • comentarios generados automáticamente.
    • el siguiente código:
      PROCEDURE Welcome()

      Este código corresponde al prototipo del procedimiento.
      Importante
      Los elementos clave de un procedimiento son la palabra clave PROCEDURE seguida del nombre del procedimiento y los paréntesis.
  6. Ahora podemos escribir el contenido de nuestro procedimiento. Simplemente mostraremos un mensaje. Introduzca la siguiente línea de código:
    Info("Welcome to my program written in WLanguage")
  7. Hemos terminado nuestro procedimiento. Pero para ver el resultado de esta función, tenemos que llamarla. Ese es nuestro siguiente paso.
Llamar a un procedimiento
Para llamar a un procedimiento, simplemente escriba el nombre de dicho procedimiento directamente en el código. Vamos a llamar al procedimiento desde el código de inicialización del proyecto:
  1. Haga clic derecho en la "P" que se encuentra junto a las pestañas de elementos abiertos. El menú contextual se abre.
  2. Seleccione "Código del elemento".
  3. El editor de código muestra los diferentes eventos asociados al proyecto.
  4. Borre el código de inicialización y escriba el siguiente código:
    Welcome()
  5. Probemos este código: haga clic en Probar proyecto en los botones de acceso rápido.
  6. Enseguida, aparece una ventana de información.
    Nuevo procedimiento global
    Nuestro procedimiento se ejecutó correctamente. Puede validar la ventana de información.
En este ejemplo creamos un procedimiento global. WLanguage admite 3 tipos de procedimientos:
  • Procedimiento global: este tipo de procedimiento se puede llamar desde todos los eventos y procesos del proyecto (procedimiento declarado en un conjunto de procedimientos). Para obtener más información, consulte Procedimiento global.
  • Procedimiento local a una ventana, página o ventana móvil: este tipo de procedimiento se puede llamar desde todos los eventos y procesos, dependiendo del objeto en el que se declaró. Para obtener más información, consulte Procedimiento local.
    También es posible crear procedimientos locales a un control. Estos procedimientos se pueden utilizar en todos los eventos WLanguage asociados al control.
  • Procedimiento interno de un proceso o evento: este tipo de procedimiento solo se puede llamar dentro del proceso o evento en el que se declaró. Para obtener más información, consulte Procedimiento interno.
Parámetros de un procedimiento

¿Qué es un parámetro?

Un parámetro es un valor que se envía a un procedimiento cuando éste es llamado.

Ejemplo práctico
Para entender cómo funciona un procedimiento con parámetros, crearemos un nuevo procedimiento para eliminar espacios de una cadena.
Para crear el nuevo procedimiento:
  1. En la pestaña "Código", en el grupo "Procedimientos", despliegue "Nuevo" y seleccione "Nuevo procedimiento global".
  2. Si es necesario, seleccione el conjunto de procedimientos "GlobalProcedures" y valide.
  3. En la ventana que aparece, asigne un nombre al procedimiento que se va a crear. Para este ejemplo, indique el nombre "RemoveSpaces".
  4. Valide. El procedimiento global "RemoveSpaces" aparece en el editor de código.
  5. Escriba el siguiente código:
    PROCEDURE RemoveSpaces(StringToProcess is string)
    StringToProcess = StringToProcess.Replace(" ", "")
    Trace("The string without spaces is: [%StringToProcess%]")

    En este código, el procedimiento manipula la cadena pasada como parámetro. Los espacios se eliminan (se reemplazan por una cadena vacía). Analicemos varios puntos:
    • Este procedimiento toma el parámetro StringToProcess. Puede pasar varios valores como parámetros a un procedimiento, o no pasar ningún valor. Estos valores pueden ser de cualquier tipo (como con las variables).
    • StringToProcess es un parámetro tipado. En la declaración del procedimiento, especificamos "StringToProcess is string": no se podrán pasar valores numéricos como parámetros en este procedimiento, por ejemplo.
  6. En el código de inicialización del proyecto, reemplace el código con la llamada al procedimiento:
    MyString is string
    MyString = "Welcome to my program written in WLanguage"
    RemoveSpaces(MyString)
  7. Probemos este código: haga clic en Probar proyecto en los botones de acceso rápido.
  8. Si es necesario, abra el panel "Traza del depurador" para ver el resultado: en la pestaña "Inicio", en el grupo "Entorno", despliegue "Paneles", seleccione "Paneles" y, a continuación, haga clic en "Traza del depurador".
  9. En la ventana de salida aparecerá el siguiente resultado:
    The string without spaces is: WelcometomyprogramwritteninWLanguage

Gestión de parámetros: pasar por referencia o por valor

En WLanguage, los parámetros se pasan por referencia (o por dirección). El parámetro en el procedimiento hace referencia directamente a la variable pasada durante la llamada.
Por lo tanto, cuando una instrucción del procedimiento modifica el valor del parámetro, el valor de la variable correspondiente se modifica en el código en el que se realiza la llamada.
Volvamos a nuestro ejemplo:
  • En nuestro ejemplo, la variable MyString se modifica. Para comprobarlo, basta con añadir la siguiente línea de código después de la llamada al procedimiento:
    Trace("MyString: " + MyString)
  • Después de la prueba, el panel "Traza del depurador" mostrará:
    The string without spaces is WelcometomyprogramwritteninWLanguage
    MyString: WelcometomyprogramwritteninWLanguage
Para no modificar el valor de la variable que corresponde al parámetro, los parámetros deben pasarse por valor. El paso de parámetros por valor permite manipular una copia del valor del parámetro real. Si el código del procedimiento modifica el valor de la variable, el valor de la variable que corresponde al parámetro no se modifica.
Para pasar un parámetro a un procedimiento por valor, se debe utilizar la palabra clave LOCAL antes del nombre del parámetro en la declaración del procedimiento. Esta palabra clave indica que el siguiente parámetro no será modificado por el procedimiento.
Probemos esta funcionalidad en nuestro ejemplo:
  1. Mueva el cursor al nombre del procedimiento "RemoveSpaces".
  2. Presione F2. El código WLanguage del procedimiento "RemoveSpaces" se abre.
  3. Haga la siguiente modificación en el código de declaración del procedimiento:
    PROCEDURE RemoveSpaces(LOCAL StringToProcess is string)
  4. Probemos este código: haga clic en Probar proyecto en los botones de acceso rápido.
  5. Después de la prueba, el panel "Traza del depurador" mostrará:
    The string without spaces is WelcometomyprogramwritteninWLanguage
    MyString: Welcome to my program written in WLanguage
    La variable MyString ya no se modifica.
En el mismo procedimiento, algunos parámetros se pueden pasar por referencia y otros por valor.. Simplemente utilice la palabra clave LOCAL antes de cada parámetro pasado por valor.

Devolver un valor

Un procedimiento puede devolver un valor. Por ejemplo:
  • Un procedimiento puede devolver un booleano (True/False) dependiendo de si el proceso se ejecutó correctamente,
  • Un procedimiento puede devolver el resultado de un cálculo, etc.
Para probar esta funcionalidad, crearemos un nuevo procedimiento para calcular el total de una compra con impuestos incluidos.
  1. En el editor de código, pulse Shift + F4.
  2. Enseguida, se abre la ventana de creación de procedimientos.
    • Introduzca el nombre del procedimiento: CalculateInclTax
    • Valide.
    • Escriba el código del procedimiento:
      PROCEDURE CalculateInclTax(LOCAL AmountExclTax is currency, LOCAL VATRate is real): currency
      InclTax is currency
      InclTax = AmountExclTax * (1 + VATRate/100)
      RETURN InclTax

      Veamos con más detalle el código de este procedimiento:
      • En el código de declaración del procedimiento (también llamado "prototipo del procedimiento"), vemos que este procedimiento espera 2 parámetros (el precio sin impuestos y el IVA).
      • Hay dos características particulares en este código:
        • El tipo ": currency" al final indica que el valor devuelto es una moneda.
        • El procedimiento calcula el precio con impuestos incluidos y lo devuelve mediante la palabra clave RETURN.
  3. Modifique el código de inicialización del proyecto para llamar al procedimiento:
    AmountInclTax is currency
    AmountInclTax = CalculateInclTax(500, 20)
    Trace("Amount incl. tax: " + AmountInclTax)
  4. Probemos este código: haga clic en Probar proyecto en los botones de acceso rápido.
  5. Después de la prueba, el panel "Traza del depurador" mostrará:
    Amount incl. tax: 600

¿Parámetros obligatorios u opcionales?

Los parámetros recibidos en el procedimiento pueden ser obligatorios u opcionales. Un parámetro obligatorio se debe especificar al llamar al procedimiento, mientras que un parámetro opcional se puede omitir: en este caso, el parámetro opcional tomará el valor definido al declarar los parámetros del procedimiento.
Importante
Al declarar un procedimiento, los parámetros opcionales siempre se especifican al final (después de los parámetros obligatorios).
Para probar esta funcionalidad, volvamos al procedimiento de cálculo del total de una compra con impuestos incluidos.
Haremos que el segundo parámetro sea opcional. De forma predeterminada, el IVA puede corresponder a 20 (otras tasas posibles son 10, 5,5 o 2,1).
  1. Mueva el cursor al nombre del procedimiento "CalculateInclTax".
  2. Presione F2. El código WLanguage del procedimiento "CalculateInclTax" se abre.
  3. Haga la siguiente modificación en el código de declaración del procedimiento:
    PROCEDURE CalculateInclTax(LOCAL AmountExclTax is currency, LOCAL VATRate is real=20): currency
  4. Pulse Ctrl + F2 para volver al código de llamada (el código de inicialización del proyecto).
  5. Modifique la llamada al procedimiento eliminando el segundo parámetro:
    AmountInclTax is currency
    AmountInclTax = CalculateInclTax(500)
    Trace("Amount incl. tax: " + AmountInclTax)
  6. Probemos este código: haga clic en Probar proyecto en los botones de acceso rápido.
  7. Después de la prueba, el panel "Traza del depurador" mostrará:
    Amount incl. tax: 600
    El resultado no cambió porque utilizamos el valor predeterminado.
En resumen
En esta lección vimos:
  • Cómo crear y llamar a un procedimiento WLanguage,
  • Cómo pasar parámetros a un procedimiento WLanguage,
  • Cómo devolver un valor, etc.
En la siguiente lección, veremos cómo utilizar el depurador para comprobar el funcionamiento del código que se ejecuta.
Lección anteriorTabla de contenidoSiguiente lección
Versión mínima requerida
  • Versión 2024
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 11/12/2023

Señalar un error o enviar una sugerencia | Ayuda local