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-de-la-función() {
Declaraciones de variables, etc.
Expresiones...
//No es necesario devolver ningún valor explícito.
}
Una función no devuelve ningún valor especial ni parámetros entrantes.
void nombre-de-la-función(variable-de-tipo-de-dato) {
Declaraciones de variables, etc.
Expresiones...
//No es necesario devolver ningún valor explícito.
}
Si desea varias variables, simplemente utilice "," como delimitador:
Una función no devuelve ningún valor especial, pero sí con un parámetro.
void nombre-de-la-función(variable de tipo de dato, variable de tipo de dato, etc.) {
Declaraciones de variables, etc.
Expresiones...
//No es necesario devolver ningún valor explícito.
}
Una función no devuelve ningún valor especial, pero sí con más de un parámetro.
void nombre-de-la-función(variable de tipo de dato, variable de tipo de dato, etc.) {
Declaraciones de variables, etc.
Expresiones...
devolver valor de 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 tiporetornode una función debe ser el mismo que el tipo de datos del valor de retorno que devuelve dicha 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".
¿Se crea una función antes o después de main()?
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ás un error:uso de identificador no declarado 'getGCD'
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 remainder = 1;
while (remainder > 0) {
remainder = a % b;
a = b;
b = remainder;
}
return a;
}
int main() {
Brain.Screen.printAt(5,60, “GCD ( %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, "MCD ( %d, %d ) = %d", getGCD(60, 100) );
}
int getGCD(int a, int b) {
int remainder = 1;
while (remainder > 0) {
remainder = a % b;
a = b;
b = remainder;
}
return a;
}
Coloque el prototipo (también llamado firma) de la función antes del "bloque de función de llamada".
¿Qué ocurre si deseas modularizar las funciones en archivos diferentes?
Paso 1: Crea un archivo de encabezado e introduce 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: Crea un archivo .cpp independiente, por ejemplo, llamado common.cpp.

//Este es el archivo common.cpp
int getGCD(int a, int b) {
int remainder = 1;
while (remainder > 0) {
remainder = a % b;
a = b;
b = remainder;
}
return 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, "MCD ( %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