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.
Sample: A Simple Greatest Common Denominator (GCD) Function (with Euclid Algorithm)
The following sample also exemplifies how it is being used in a simple loop structure.
Without using a user-defined function:
int main() { int remainder = 1; int a1, b1, a2, b2; vexcodeInit(); a1 = a2 = 20; b1 = b2 = 64; while(remainder > 0){ remainder = a1 % b1; a1 = b1; b1 = remainder; } Brain.Screen.printAt(5, 60, "GCD ( %d, %d ) = %d", a2, b2, a1); a1 = a2 = 60; b1 = b2 = 200; while(remainder > 0){ remainder = a1 % b1; a1 = b1; b1 = remainder; } Brain.Screen.printAt(5, 60, "GCD ( %d, %d ) = %d", a2, b2, a1); }
Using a user-defined function:
int getGCD(int a, int b){ int remainder = 1; while(remainder>0){ remainder = a % b; a = b; b = remainder; } return a; } int main() { 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)); }
Here shows the sequence of logic flow from the caller function main():
Sample: Average a Set of Numbers
float doAverage(int n1, int n2, int n3){ float avg = (n1 + n2 + n3)/3; return avg; } int main() { int n1, n2, n3; Brain.Screen.print("average(%d, %d, %d) = %d", 10, 20, 30); doAverage(10, 20, 30); n1=10; n2=20; n3=40; Brain.Screen.print("average(%d, %d, %d) = %d", n1, n2, n3); doAverage(n1, n2, n3); }
Sample: Enable a Robot to go Forward with Variable Encoders Value
void reportMotionValues(){ Brain.Screen.printAt(5,100, "%8.2lf%8.2lf%8.2f", LeftMotor.position(rev), LeftMotor.position(deg)); } void goStraight(float totalEnc, float vel){ LeftMotor.resetPosition(); LeftMotor.setVelocity(50.0, percent);
LeftMotor.spinToPosition(totalEnc, deg, true); return; } int main() { int enc=1000; // >0: forward, <0: backward vexcodeInit(); for(int i=0; i<10; i++){ enc *= -1; goStraight(enc, 100); Brain.Screen.printAt(5,60, "Done"); reportMotionValues(); //this delay is here only for you to view these actions. //You do not have to put a delay here. wait(2000, msec); } }
As you see, it is close to impossible to enable the robot to go forward and backward at a variable number of times; as it can only be determined at run-time.