Comprender la sintaxis para crear funciones en VEXcode Pro V5

The VEX Visual Studio Code Extension has replaced VEXcode Pro V5, which is now end-of-life.

VEXcode Blocks and VEXcode Text remain actively developed and supported for all VEX platforms.

Definición de la función

Ahora que hemos pasado por algunas muestras, veamos la forma general de una definición de función:

void function-name() {

	Declaraciones de variables, etc.
	Expresiones...
	//no es necesaria ninguna devolución explícita.
}

Una función no devuelve ningún valor especial ni ningún parámetro entrante.

void function-name(variable de tipo de datos) {

	Declaraciones de variables, etc.
	Expresiones...
	//no es necesaria ninguna devolución explícita.
}

Si desea múltiples variables, simplemente use "," como delimitador:

Una función no devuelve ningún valor especial, sino con un parámetro.

void function-name(variable de tipo de datos, variable de tipo de datos, etc.) {

	Declaraciones de variables, etc.
	Expresiones...
	//no es necesaria ninguna devolución explícita.
}

Una función no devuelve ningún valor especial, pero con más de un parámetro.

void function-name(variable de tipo de datos, variable de tipo de datos, etc.) {

	Declaraciones de variables, etc.
	Expresiones...
	return-value
}

Una función devuelve un valor de un tipo de datos específico y con más de un parámetro introducido.

El tipo de retorno de una función debe ser el mismo que el tipo de datos del valor de retorno que devuelve la función. El valor de retorno puede ser un valor constante o una variable. Debe ir precedido de la palabra clave "retorno".

Las siguientes reglas rigen el tipo de devolución:

  • Casi no hay restricciones en el tipo de devolución, excepto la matriz. (La matriz es otro tema más avanzado sobre cómo crear sus datos. Está fuera del alcance de este artículo y no se cubre aquí.
  • Especificar que el tipo de devolución "void" significa que no es necesario ningún valor de devolución. La cláusula "devolución" está implícita. Eso significa que debe indicar explícitamente "return" al final de una función "void".

¿Crear una función antes de main() o después?

El compilador lee su archivo de arriba a abajo. Por lo tanto, el orden sí importa.

Tomemos como ejemplo la función del máximo común denominador (GCD). Obtendrá un error: uso del identificador no declarado 'getGCD'

 Captura de pantalla de la interfaz de programación VEXcode V5 que muestra varios bloques de codificación y opciones para programar sistemas VEX Robotics, ilustrando las características disponibles para los usuarios en la sección de programación.

En realidad, esto es cierto ya sea del bloque de función principal( ) u otro bloque de función de llamada, es decir, el "bloque de función llamado" debe preceder al "bloque de función de llamada".

Dos posibles soluciones:

int getGCD(int a, int b) {
  int restder = 1;
  while (restder > 0) {restder = a % b; a = b;
    b = restder;
  }
  return a;
}


int main() {


	Brain.Screen.printAt(5,60, “GCD ( %d, %d ) = %d”, getGCD(60, 100) );
}
	

Mueva la "función llamada" por encima del "bloque de función de llamada", en el ejemplo "main()".

int getGCD(int, int);

int main() { 
	Brain.Screen.printAt (5,60, "GCD ( %d, %d ) = %d", getGCD (60, 100) );
}

int getGCD (int a, int b) {
  int restore = 1;
  while (restance > 0) {
    restore = a % b;
    a = b;
    b = restore;
  }
  devuelve a;
}
	

Coloque el prototipo (también llamado firma) de la función antes del "bloque de función de llamada".


¿Qué pasa si desea modularizar funciones en diferentes archivos?

Paso 1: Cree un archivo de encabezado y coloque el prototipo de la función en este archivo.

por ejemplo, crear un archivo llamado "myFuncs.h"

Debe "agregar" este archivo de encabezado a su proyecto antes de compilar su código. Esto permite que el IDE de VEXcode Pro V5 "esté al tanto" de la inclusión de este nuevo archivo de encabezado antes de que comience a construir su proyecto.

Así es como:

Captura de pantalla de una interfaz de programación que muestra las características de la categoría V5, incluidos fragmentos de código y herramientas para desarrolladores, que ilustran las funcionalidades disponibles en la sección de programación.

Captura de pantalla del contenido relacionado con la programación en la descripción de la categoría V5, que muestra las características y funcionalidades clave para los desarrolladores.

Captura de pantalla de la descripción de la categoría Programación V5, que muestra las características y funcionalidades clave relacionadas con la programación en la plataforma V5.

En este archivo de encabezado "common.h" (puedes nombrar lo que quieras, siempre y cuando sea alfanumérico sin espacios).

Paso 2: Cree un archivo cpp separado, por ejemplo, llamado common.cpp

Captura de pantalla de una interfaz de programación que muestra varias opciones y características de codificación, ilustrando la funcionalidad y el diseño de la descripción de la categoría V5 en la sección de programación.

//este es el archivo common.cpp

int getGCD(int a, int b) {
  int remainder = 1;
  while (remainder > 0) {
    restder = a % b;
    a = b;
    b = restder;
  }
  devuelve a;
}

Mueva la función getGCD(...) a este archivo

#include "vex.h"
#include "common.h"
using namespace vex;

int main() { 
  vexcodeInit();
	Brain.Screen.printAt(5,60, "GCD ( %d, %d ) = %d", getGCD(60, 100) );
}

Ahora, todo lo que tiene en el archivo cpp principal consistirá en lo siguiente

Referencia: https://api.vexcode.cloud/v5/html/namespacevex.html

Los temas futuros se cubrirán en secciones más avanzadas de la Biblioteca VEX en el futuro:

  • Pase por valor vs. pase por referencia
  • Pasar en una matriz
  • Pase en una estructura

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: