Ohjaus#
Johdanto#
Ohjaus sisältää funktioita ajoitukseen, ohjelmakulkuun, ehdolliseen logiikkaan ja projektin lopettamiseen. Näiden ohjainten avulla voit keskeyttää suorituksen, luoda silmukoita, määrittää logiikkapolkuja ja lopettaa ohjelman.
Funktiot ja avainsanat#
Alla on luettelo käytettävissä olevista ohjausobjekteista, mukaan lukien API-funktiot ja C+±avainsanat:
wait– Keskeyttää projektin tietyksi ajaksi.for– Toistaa koodilohkon tietyn määrän kertoja.if– Suorittaa koodilohkon, jos ehto on tosi.if/else– Suorittaa yhden koodilohkon, jos ehto on tosi, tai eri lohkon, jos ehto on epätosi.if/else if/else– Tarkistaa useita ehtoja järjestyksessä ja suorittaa ensimmäisen lohkon, jonka ehto on tosi.while– Toistaa koodilohkoa niin kauan kuin ehto pysyy tosi.break– Poistuu nykyisestä silmukasta välittömästi.programStop– Lopettaa projektin välittömästi.
wait#
Keskeyttää projektin tietyksi ajaksi ennen siirtymistä seuraavalle koodiriville.
Available Functionsvoid wait(
double time,
timeUnits units );
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Odotusaika positiivisena |
|
|
Ajan yksikkö: |
Tämä funktio ei palauta arvoa.
Examples// Stop driving after 1 second
Drivetrain.drive(forward);
wait(1, seconds);
Drivetrain.stop();
for#
Toistaa koodilohkon. Laskentalomake suoritetaan tietyn määrän kertoja; alueeseen perustuva lomake suoritetaan kerran jokaiselle kokoelman alkiolle.
Syntax1 — Laskentasilmukka — suoritetaan tietyn määrän kertoja.
for (int i = 0; i < count; i++) { // code block }
Parameters2 — Alueeseen perustuva silmukka — suoritetaan kerran jokaiselle kokoelman alkiolle.
for (type element : collection) { // code block }
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Koodilohkon toistokertojen määrä. |
|
Tyypin nimi |
Kunkin kokoelman alkion tietotyyppi (esim. |
|
|
Muuttujan nimi, joka sisältää silmukan nykyisen alkion arvon. |
|
|
Taulukko (tai vektori), joka sisältää silmukassa käytävät alkiot. |
Tämä ohjausrakenne ei palauta arvoa.
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#
Suorittaa suljetun koodilohkon, jos ehto on true.
if (condition) {
// code block
}
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Lauseke tai muuttuja, joka arvioidaan lausekkeen suorituksen yhteydessä. Jos se on |
Tämä ohjausrakenne ei palauta arvoa.
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#
Määrittää, mikä suljettu koodilohko suoritetaan sen perusteella, onko ehto true vai false.
if (condition) {
// code block if true
}
else {
// code block if false
}
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Lauseke tai muuttuja, joka arvioidaan lausekkeen suorituksen yhteydessä. Jos se on |
Tämä ohjausrakenne ei palauta arvoa.
Exampleswhile (true) {
if (Brain.Screen.pressing()) {
// Turn the screen green when pressed
Brain.Screen.clearScreen(green);
} else {
Brain.Screen.clearScreen();
}
}
if/else if/else#
Valitsee suoritettavan suljetun koodilohkon useiden ehtojen perusteella.
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
}
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Lauseke tai muuttuja, joka arvioidaan lausekkeen suorituksen yhteydessä. Ensimmäinen ehto, joka on |
Tämä ohjausrakenne ei palauta arvoa.
Notesifsuorittaa lohkonsa, jos ehto on tositrue.else iftarkistaa lisäehtoja vain, jos kaikki edelliset ehdot ovatfalseVoidaan käyttää useitaelse iflauseita.elsesuorittaa lohkonsa vain, jos mikään edellisistä ehdoista ei ole tositrue.
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#
Suorittaa koodia toistuvasti niin kauan kuin ehto on true.
while (condition) {
// code block
}
Parametri |
Tyyppi |
Kuvaus |
|---|---|---|
|
|
Lauseke tai muuttuja, joka arvioidaan ennen jokaista iteraatiota. Jos se on |
Tämä ohjausrakenne ei palauta arvoa.
NotesSitä voidaan käyttää myös kuten “Odota kunnes” lisäämällä ehdon eteen
!, kuten alla olevissa esimerkeissä on esitetty.
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#
Poistuu nykyisestä silmukasta välittömästi. Jos kyseessä on sisäkkäinen silmukka, break poistuu sisimmästä silmukasta.
break;
Tämä lauseke ei hyväksy parametreja.
Return ValuesTämä lauseke ei palauta arvoa.
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#
Lopettaa projektin välittömästi.
SyntaxBrain.programStop();
Tämä lauseke ei hyväksy parametreja.
Return ValuesTämä lauseke ei palauta arvoa.
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();
}
}