Ελεγχος#

Εισαγωγή#

Ο έλεγχος περιλαμβάνει συναρτήσεις για χρονισμό, ροή προγράμματος, λογική υπό όρους και τερματισμό έργου. Αυτά τα στοιχεία ελέγχου σάς επιτρέπουν να διακόψετε προσωρινά την εκτέλεση, να δημιουργήσετε βρόχους, να ορίσετε λογικές διαδρομές και να τερματίσετε ένα πρόγραμμα.

Συναρτήσεις και λέξεις-κλειδιά#

Παρακάτω είναι μια λίστα με τα διαθέσιμα στοιχεία ελέγχου, συμπεριλαμβανομένων των συναρτήσεων API και των λέξεων-κλειδιών C++:

  • wait – Διακόπτει προσωρινά το έργο για ένα καθορισμένο χρονικό διάστημα.

  • for – Επαναλαμβάνει ένα μπλοκ κώδικα έναν καθορισμένο αριθμό φορών.

  • if – Εκτελεί ένα μπλοκ κώδικα εάν μια συνθήκη είναι αληθής.

  • if/else – Εκτελεί ένα μπλοκ κώδικα εάν μια συνθήκη είναι αληθής ή ένα διαφορετικό μπλοκ εάν είναι ψευδής.

  • if/else if/else – Ελέγχει πολλαπλές συνθήκες με τη σειρά και εκτελεί το πρώτο μπλοκ του οποίου η συνθήκη είναι αληθής.

  • while – Επαναλαμβάνει ένα μπλοκ κώδικα όσο μια συνθήκη παραμένει αληθής.

  • break – Άμεση έξοδος από τον τρέχοντα βρόχο.

  • programStop – Τερματίζει αμέσως το έργο.

wait#

Διακόπτει προσωρινά το έργο για ένα συγκεκριμένο χρονικό διάστημα πριν από τη μετάβαση στην επόμενη γραμμή κώδικα.

Available Functions
void wait(
  double time,
  timeUnits units );

Parameters

Παράμετρος

Τύπος

Περιγραφή

time

double

Ο χρόνος αναμονής, ως θετικό double.

units

timeUnits

Η μονάδα που αντιπροσωπεύει τον χρόνο: msec (προεπιλογή) – Χιλιοστά του δευτερολέπτου ή seconds

Return Values

Αυτή η συνάρτηση δεν επιστρέφει τιμή.

Examples
// Stop driving after 1 second
Drivetrain.drive(forward);
wait(1, seconds);
Drivetrain.stop();

for#

Επαναλαμβάνει ένα μπλοκ κώδικα. Η φόρμα καταμέτρησης εκτελείται έναν καθορισμένο αριθμό φορών. Η φόρμα που βασίζεται σε εύρος εκτελείται μία φορά για κάθε στοιχείο σε μια συλλογή.

Syntax

1 — Βρόχος μέτρησης — εκτελείται σε καθορισμένο αριθμό φορών.

for (int i = 0; i < count; i++) {
   // code block
}

2 — Βρόχος βάσει εύρους — εκτελείται μία φορά για κάθε στοιχείο σε μια συλλογή.

for (type element : collection) {
   // code block
}

Parameters

Παράμετρος

Τύπος

Περιγραφή

count

int

Ο αριθμός των επαναλήψεων του μπλοκ κώδικα.

type

Όνομα τύπου

Ο τύπος δεδομένων κάθε στοιχείου στη συλλογή (π.χ. int, double).

element

variable

Το όνομα της μεταβλητής που θα περιέχει την τιμή του τρέχοντος στοιχείου του βρόχου.

collection

array

Ο πίνακας (ή το διάνυσμα) που περιέχει τα στοιχεία που θα επαναληφθούν.

Return Values

Αυτή η δομή ελέγχου δεν επιστρέφει τιμή.

Examples
// Drive in a square
for (int i = 0; i < 4; i++) {
  Drivetrain.driveFor(forward, 100, mm);
  Drivetrain.turnFor(right, 90, degrees);
}

// Drive forward different distances
int distances[] = {100, 150, 200};
for (int d : distances) {
  Drivetrain.driveFor(forward, d, mm);
  wait(0.5, seconds);
}

if#

Εκτελεί το εσωκλειόμενο μπλοκ κώδικα εάν η συνθήκη είναι true.

Syntax
if (condition) {
  // code block
}

Parameters

Παράμετρος

Τύπος

Περιγραφή

condition

bool

Μια έκφραση ή μεταβλητή που αξιολογείται όταν εκτελείται η πρόταση. Εάν είναι true, ο κώδικας μέσα στο μπλοκ if εκτελείται. Εάν είναι false, το μπλοκ παραλείπεται.

Return Values

Αυτή η δομή ελέγχου δεν επιστρέφει τιμή.

Examples
while (true) {
  if (Brain.Screen.pressing()) {
    // Display a message once the screen is pressed
    Brain.Screen.clearScreen();
    Brain.Screen.setCursor(1, 1);
    Brain.Screen.print("Screen pressed!");
    break;
  }
  wait(5, msec);
}

if/else#

Καθορίζει ποιο κλειστό μπλοκ κώδικα εκτελείται με βάση το αν η συνθήκη είναι true ή false.

Syntax
if (condition) {
  // code block if true
}
else {
  // code block if false
}

Parameters

Παράμετρος

Τύπος

Περιγραφή

condition

bool

Μια έκφραση ή μεταβλητή που αξιολογείται όταν εκτελείται η πρόταση. Εάν είναι true, εκτελείται ο κώδικας μέσα στο μπλοκ if Εάν είναι false, εκτελείται ο κώδικας μέσα στο μπλοκ else.

Return Values

Αυτή η δομή ελέγχου δεν επιστρέφει τιμή.

Examples
while (true) {
  if (Brain.Screen.pressing()) {
    // Turn the screen green when pressed
    Brain.Screen.clearScreen(green);
  } else {
    Brain.Screen.clearScreen();
  }
}

if/else if/else#

Επιλέγει ποιο κλειστό μπλοκ κώδικα θα εκτελεστεί με βάση πολλαπλές συνθήκες.

Syntax
if (condition) {
  // code block if first condition is true
}
else if (condition) {
  // code block if second condition is true
}
else {
  // code block if no conditions are true
}

Parameters

Παράμετρος

Τύπος

Περιγραφή

condition

bool

Μια έκφραση ή μεταβλητή που αξιολογείται όταν εκτελείται η πρόταση. Η πρώτη συνθήκη που είναι true καθορίζει ποιο μπλοκ θα εκτελεστεί. Εάν κανένα δεν είναι αληθές true, τότε το μπλοκ θα εκτελεστεί else.

Return Values

Αυτή η δομή ελέγχου δεν επιστρέφει τιμή.

Notes
  • if εκτελεί το μπλοκ του αν η συνθήκη είναι αληθής true.

  • else if ελέγχει πρόσθετες συνθήκες μόνο αν όλες οι προηγούμενες συνθήκες είναι else ifΠολλαπλάσιο false δηλώσεις.

  • else εκτελεί το μπλοκ του μόνο εάν καμία από τις προηγούμενες συνθήκες δεν είναι αληθής true.

Examples
while (true) {
  // Turn screen blue if pressed on the left half
  if (Brain.Screen.pressing() && Brain.Screen.xPosition() < 240) {
    Brain.Screen.clearScreen(blue);

  // Turn screen green if pressed on the right half
  } else if (Brain.Screen.pressing() && Brain.Screen.xPosition() > 240) {
    Brain.Screen.clearScreen(green);

  } else {
    Brain.Screen.clearScreen();
  }

  wait(20, msec);
}

while#

Εκτελεί επανειλημμένα τον κώδικα εφόσον η συνθήκη είναι true.

Syntax
while (condition) {
  // code block
}

Parameters

Παράμετρος

Τύπος

Περιγραφή

condition

bool

Μια έκφραση ή μεταβλητή που αξιολογείται πριν από κάθε επανάληψη. Εάν είναι true, ο βρόχος συνεχίζεται. εάν είναι false, ο βρόχος σταματά.

Return Values

Αυτή η δομή ελέγχου δεν επιστρέφει τιμή.

Notes
  • Μπορεί επίσης να χρησιμοποιηθεί όπως η φράση “Περιμένετε μέχρι” προσθέτοντας ! πριν από τη συνθήκη, όπως φαίνεται στα παρακάτω παραδείγματα.

Examples
while (true) {
  if (Brain.Screen.pressing()) {
    // Turn the screen green whenever it's pressed
    Brain.Screen.clearScreen(green);
  } else {
    Brain.Screen.clearScreen();
  }
}

// Wait until the screen is pressed to turn it green
while (!Brain.Screen.pressing()) {
  wait(20, msec);
}

Brain.Screen.clearScreen(green);

break#

Άμεση έξοδος από τον τρέχοντα βρόχο. Εάν βρίσκεστε σε ένθετο βρόχο, η τιμή break τερματίζει τον εσώτατο βρόχο.

Syntax
break;

Parameters

Αυτή η δήλωση δεν δέχεται καμία παράμετρο.

Return Values

Αυτή η εντολή δεν επιστρέφει τιμή.

Examples
while (true) {

  // Press the screen to pause on a color
  Brain.Screen.clearScreen(red);
  wait(500, msec);

  if (Brain.Screen.pressing()) {
    break;
  }

  Brain.Screen.clearScreen(green);
  wait(500, msec);

  if (Brain.Screen.pressing()) {
    break;
  }
}

programStop#

Τερματίζει ένα έργο αμέσως.

Syntax
Brain.programStop();

Parameters

Αυτή η δήλωση δεν δέχεται καμία παράμετρο.

Return Values

Αυτή η εντολή δεν επιστρέφει τιμή.

Examples
while (true) {

  // Press the screen to end the project
  Brain.Screen.clearScreen(red);
  wait(500, msec);

  if (Brain.Screen.pressing()) {
    Brain.programStop();
  }

  Brain.Screen.clearScreen(green);
  wait(500, msec);

  if (Brain.Screen.pressing()) {
    Brain.programStop();
  }
}