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 Functions
void wait(
  double time,
  timeUnits units );

Parameters

Parametri

Tyyppi

Kuvaus

time

double

Odotusaika positiivisena double.

units

timeUnits

Ajan yksikkö: msec (oletus) – millisekuntia tai seconds

Return Values

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.

Syntax

1 — Laskentasilmukka — suoritetaan tietyn määrän kertoja.

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

2 — Alueeseen perustuva silmukka — suoritetaan kerran jokaiselle kokoelman alkiolle.

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

Parameters

Parametri

Tyyppi

Kuvaus

count

int

Koodilohkon toistokertojen määrä.

type

Tyypin nimi

Kunkin kokoelman alkion tietotyyppi (esim. int, double).

element

variable

Muuttujan nimi, joka sisältää silmukan nykyisen alkion arvon.

collection

array

Taulukko (tai vektori), joka sisältää silmukassa käytävät alkiot.

Return Values

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.

Syntax
if (condition) {
  // code block
}

Parameters

Parametri

Tyyppi

Kuvaus

condition

bool

Lauseke tai muuttuja, joka arvioidaan lausekkeen suorituksen yhteydessä. Jos se on true, lohkon if sisällä oleva koodi suoritetaan; jos se on false, lohko ohitetaan.

Return Values

Tämä ohjausrakenne ei palauta arvoa.

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#

Määrittää, mikä suljettu koodilohko suoritetaan sen perusteella, onko ehto true vai false.

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

Parameters

Parametri

Tyyppi

Kuvaus

condition

bool

Lauseke tai muuttuja, joka arvioidaan lausekkeen suorituksen yhteydessä. Jos se on true, lohkon if sisällä oleva koodi suoritetaan; jos se on false, lohkon else sisällä oleva koodi suoritetaan sen sijaan.

Return Values

Tämä ohjausrakenne ei palauta arvoa.

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#

Valitsee suoritettavan suljetun koodilohkon useiden ehtojen perusteella.

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

Parametri

Tyyppi

Kuvaus

condition

bool

Lauseke tai muuttuja, joka arvioidaan lausekkeen suorituksen yhteydessä. Ensimmäinen ehto, joka on true määrittää suoritettavan lohkon; jos mikään ehto ei ole true, niin muuten else suoritetaan.

Return Values

Tämä ohjausrakenne ei palauta arvoa.

Notes
  • if suorittaa lohkonsa, jos ehto on tosi true.

  • else if tarkistaa lisäehtoja vain, jos kaikki edelliset ehdot ovat falseVoidaan käyttää useita else if lauseita.

  • else suorittaa lohkonsa vain, jos mikään edellisistä ehdoista ei ole tosi 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#

Suorittaa koodia toistuvasti niin kauan kuin ehto on true.

Syntax
while (condition) {
  // code block
}

Parameters

Parametri

Tyyppi

Kuvaus

condition

bool

Lauseke tai muuttuja, joka arvioidaan ennen jokaista iteraatiota. Jos se on true, silmukka jatkuu; jos se on false, silmukka pysähtyy.

Return Values

Tämä ohjausrakenne ei palauta arvoa.

Notes
  • Sitä voidaan käyttää myös kuten “Odota kunnes” lisäämällä ehdon eteen ! , kuten alla olevissa esimerkeissä on esitetty.

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#

Poistuu nykyisestä silmukasta välittömästi. Jos kyseessä on sisäkkäinen silmukka, break poistuu sisimmästä silmukasta.

Syntax
break;

Parameters

Tämä lauseke ei hyväksy parametreja.

Return Values

Tämä lauseke ei palauta arvoa.

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#

Lopettaa projektin välittömästi.

Syntax
Brain.programStop();

Parameters

Tämä lauseke ei hyväksy parametreja.

Return Values

Tämä lauseke ei palauta arvoa.

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();
  }
}