Ελεγχος#
Εισαγωγή#
Ο έλεγχος περιλαμβάνει συναρτήσεις για χρονισμό, ροή προγράμματος, λογική υπό όρους και τερματισμό έργου. Αυτά τα στοιχεία ελέγχου σάς επιτρέπουν να διακόψετε προσωρινά την εκτέλεση, να δημιουργήσετε βρόχους, να ορίσετε λογικές διαδρομές και να τερματίσετε ένα πρόγραμμα.
Συναρτήσεις και λέξεις-κλειδιά#
Παρακάτω είναι μια λίστα με τα διαθέσιμα στοιχεία ελέγχου, συμπεριλαμβανομένων των συναρτήσεων API και των λέξεων-κλειδιών C++:
wait– Διακόπτει προσωρινά το έργο για ένα καθορισμένο χρονικό διάστημα.for– Επαναλαμβάνει ένα μπλοκ κώδικα έναν καθορισμένο αριθμό φορών.if– Εκτελεί ένα μπλοκ κώδικα εάν μια συνθήκη είναι αληθής.if/else– Εκτελεί ένα μπλοκ κώδικα εάν μια συνθήκη είναι αληθής ή ένα διαφορετικό μπλοκ εάν είναι ψευδής.if/else if/else– Ελέγχει πολλαπλές συνθήκες με τη σειρά και εκτελεί το πρώτο μπλοκ του οποίου η συνθήκη είναι αληθής.while– Επαναλαμβάνει ένα μπλοκ κώδικα όσο μια συνθήκη παραμένει αληθής.break– Άμεση έξοδος από τον τρέχοντα βρόχο.programStop– Τερματίζει αμέσως το έργο.
wait#
Διακόπτει προσωρινά το έργο για ένα συγκεκριμένο χρονικό διάστημα πριν από τη μετάβαση στην επόμενη γραμμή κώδικα.
Available Functionsvoid wait(
double time,
timeUnits units );
Παράμετρος |
Τύπος |
Περιγραφή |
|---|---|---|
|
|
Ο χρόνος αναμονής, ως θετικό |
|
|
Η μονάδα που αντιπροσωπεύει τον χρόνο: |
Αυτή η συνάρτηση δεν επιστρέφει τιμή.
Examples// Stop driving after 1 second
Drivetrain.drive(forward);
wait(1, seconds);
Drivetrain.stop();
for#
Επαναλαμβάνει ένα μπλοκ κώδικα. Η φόρμα καταμέτρησης εκτελείται έναν καθορισμένο αριθμό φορών. Η φόρμα που βασίζεται σε εύρος εκτελείται μία φορά για κάθε στοιχείο σε μια συλλογή.
Syntax1 — Βρόχος μέτρησης — εκτελείται σε καθορισμένο αριθμό φορών.
for (int i = 0; i < count; i++) { // code block }
Parameters2 — Βρόχος βάσει εύρους — εκτελείται μία φορά για κάθε στοιχείο σε μια συλλογή.
for (type element : collection) { // code block }
Παράμετρος |
Τύπος |
Περιγραφή |
|---|---|---|
|
|
Ο αριθμός των επαναλήψεων του μπλοκ κώδικα. |
|
Όνομα τύπου |
Ο τύπος δεδομένων κάθε στοιχείου στη συλλογή (π.χ. |
|
|
Το όνομα της μεταβλητής που θα περιέχει την τιμή του τρέχοντος στοιχείου του βρόχου. |
|
|
Ο πίνακας (ή το διάνυσμα) που περιέχει τα στοιχεία που θα επαναληφθούν. |
Αυτή η δομή ελέγχου δεν επιστρέφει τιμή.
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.
if (condition) {
// code block
}
Παράμετρος |
Τύπος |
Περιγραφή |
|---|---|---|
|
|
Μια έκφραση ή μεταβλητή που αξιολογείται όταν εκτελείται η πρόταση. Εάν είναι |
Αυτή η δομή ελέγχου δεν επιστρέφει τιμή.
Exampleswhile (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.
if (condition) {
// code block if true
}
else {
// code block if false
}
Παράμετρος |
Τύπος |
Περιγραφή |
|---|---|---|
|
|
Μια έκφραση ή μεταβλητή που αξιολογείται όταν εκτελείται η πρόταση. Εάν είναι |
Αυτή η δομή ελέγχου δεν επιστρέφει τιμή.
Exampleswhile (true) {
if (Brain.Screen.pressing()) {
// Turn the screen green when pressed
Brain.Screen.clearScreen(green);
} else {
Brain.Screen.clearScreen();
}
}
if/else if/else#
Επιλέγει ποιο κλειστό μπλοκ κώδικα θα εκτελεστεί με βάση πολλαπλές συνθήκες.
Syntaxif (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
}
Παράμετρος |
Τύπος |
Περιγραφή |
|---|---|---|
|
|
Μια έκφραση ή μεταβλητή που αξιολογείται όταν εκτελείται η πρόταση. Η πρώτη συνθήκη που είναι |
Αυτή η δομή ελέγχου δεν επιστρέφει τιμή.
Notesifεκτελεί το μπλοκ του αν η συνθήκη είναι αληθήςtrue.else ifελέγχει πρόσθετες συνθήκες μόνο αν όλες οι προηγούμενες συνθήκες είναιelse ifΠολλαπλάσιοfalseδηλώσεις.elseεκτελεί το μπλοκ του μόνο εάν καμία από τις προηγούμενες συνθήκες δεν είναι αληθήςtrue.
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.
while (condition) {
// code block
}
Παράμετρος |
Τύπος |
Περιγραφή |
|---|---|---|
|
|
Μια έκφραση ή μεταβλητή που αξιολογείται πριν από κάθε επανάληψη. Εάν είναι |
Αυτή η δομή ελέγχου δεν επιστρέφει τιμή.
NotesΜπορεί επίσης να χρησιμοποιηθεί όπως η φράση “Περιμένετε μέχρι” προσθέτοντας
!πριν από τη συνθήκη, όπως φαίνεται στα παρακάτω παραδείγματα.
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 τερματίζει τον εσώτατο βρόχο.
break;
Αυτή η δήλωση δεν δέχεται καμία παράμετρο.
Return ValuesΑυτή η εντολή δεν επιστρέφει τιμή.
Exampleswhile (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#
Τερματίζει ένα έργο αμέσως.
SyntaxBrain.programStop();
Αυτή η δήλωση δεν δέχεται καμία παράμετρο.
Return ValuesΑυτή η εντολή δεν επιστρέφει τιμή.
Exampleswhile (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();
}
}