Escribir una función para devolver un valor 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.

Ejemplo: una función simple de máximo común denominador (MCD) (con algoritmo de Euclides)

El siguiente ejemplo también ejemplifica cómo se utiliza en una estructura de bucle simple.

Sin utilizar una función definida por el usuario:

int principal() { 
  int resto = 1;
  entero a1, b1, a2, b2;
  vexcodeInit();
  a1 = a2 = 20;
  b1 = b2 = 64;
  mientras(resto > 0){
    resto = a1 % b1;
    a1 = b1;
    b1 = resto;
  }
  Brain.Screen.printAt(5, 60, "MCD ( %d, %d ) = %d", a2, b2, a1);

  a1 = a2 = 60;
  b1 = b2 = 200;
  mientras(resto > 0){
    resto = a1 % b1;
    a1 = b1;
    b1 = resto;
  }
  Brain.Screen.printAt(5, 60, "MCD ( %d, %d ) = %d", a2, b2, a1);
}

Usando una función definida por el usuario:

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

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

Aquí se muestra la secuencia del flujo lógico de la función de llamada main():

Ejemplo: promediar un conjunto de números

float doAverage(int n1, int n2, int n3){
  float promedio = (n1 + n2 + n3)/3;
  retorno promedio;
}

int principal() { 
  int n1, n2, n3;
  Brain.Screen.print ("promedio (%d, %d, %d) = %d", 10, 20, 30); 
  hacerPromedio(10, 20, 30);

  =10; n2=20; n3=40;
  Brain.Screen.print("promedio(%d, %d, %d) = %d", n1, n2, n3);
  hacerPromedio(n1, n2, n3);
}

Ejemplo: permitir que un robot avance con valor de codificadores variables

void reportMotionValues(){
  Brain.Screen.printAt(5,100, "%8.2lf%8.2lf%8.2f",
    LeftMotor.position(rev),
    LeftMotor.position(grados));
}

void goStraight(float totalEnc, float vel){
  LeftMotor.resetPosition();
  LeftMotor.setVelocity(50,0, porcentaje);
LeftMotor.spinToPosition(totalEnc, grados, verdadero); regreso; } int principal() { int enc=1000; // >0: adelante, <0: atrás vexcodeInit(); for(int i=0; i<10; i++){ enc *= -1; ir recto(enc, 100); Brain.Screen.printAt(5,60, "Listo"); reportMotionValues(); //este retraso está aquí solo para que puedas ver estas acciones. //No es necesario poner un retraso aquí. esperar(2000, mseg); } }

Como puede ver, es casi imposible permitir que el robot avance y retroceda un número variable de veces; ya que sólo se puede determinar en tiempo de ejecución.

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

Last Updated: