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 función

Ahora que hemos visto algunos ejemplos, veamos la forma general de la definición de una función:

void nombre-función() {

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

Una función no devuelve ningún valor especial ni parámetros entrantes.

void nombre-función(variable tipo-datos) {

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

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

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

nombre-función vacío(variable de tipo de datos, variable de tipo de datos, etc.) {

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

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

nombre-función vacío(variable de tipo de datos, variable de tipo de datos, etc.) {

	Declaraciones de variables, etc.
	Expresiones...
	devolver valor-retorno
}

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

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

Las siguientes reglas rigen el tipo de devolución:

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

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

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

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

 VEXcode_V5_Text_xi2kumoPkA.png

En realidad, esto es cierto ya sea desde el bloque de funciones principal ( ) o de otro bloque de funciones de llamada, es decir, el "bloque de funciones llamado" debe preceder al "bloque de funciones de llamada".

Dos posibles soluciones:

int getGCD(int a, int b) {
  int resto = 1;
  mientras (resto > 0) {
    resto = a % b;
    = b;
    = resto;
  }
  devolver a;
}


int main() {
	Brain.Screen.printAt(5,60, “MCD ( %d, %d ) = %d”, getGCD(60, 100) );
}
	

Mueva la "función llamada" 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 resto = 1;
  mientras (resto > 0) {
    resto = a % b;
    a = b;
    = resto;
  }
  devolver a;
}
	

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


¿Qué sucede 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, cree 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 VEXcode Pro V5 "esté al tanto" de la inclusión de este nuevo archivo de encabezado antes de comenzar a construir su proyecto.

Aquí es cómo:

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

Paso 2: cree un archivo cpp independiente, por ejemplo, llamado common.cpp

//este es el archivo common.cpp

int getGCD(int a, int b) {
  int resto = 1;
  mientras (resto > 0) {
    resto = a % b;
    = b;
    = resto;
  }
  devolver a;
}

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

#incluye "vex.h"
#incluye "common.h"
usando el espacio de nombres vex;

int principal() { 
  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:

  • Pasar por valor versus pasar por referencia
  • Pasar en una matriz
  • Pasar en una estructura

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

Last Updated: