Kontrol#

giriiş#

Kontrol, zamanlama, program akışı, koşullu mantık ve proje sonlandırma işlevlerini içerir. Bu kontroller, yürütmeyi duraklatmanıza, döngüler oluşturmanıza, mantık yolları tanımlamanıza ve bir programı sonlandırmanıza olanak tanır.

Fonksiyonlar ve Anahtar Kelimeler#

Aşağıda, API fonksiyonları ve C++ anahtar kelimeleri de dahil olmak üzere mevcut kontrollerin bir listesi bulunmaktadır:

  • wait – Projeyi belirli bir süre için duraklatır.

  • for – Bir kod bloğunu belirli sayıda tekrarlar.

  • if – Bir koşul doğruysa bir kod bloğu çalıştırır.

  • if/else – Bir koşul doğruysa bir kod bloğunu, yanlışsa farklı bir kod bloğunu çalıştırır.

  • if/else if/else – Birden fazla koşulu sırayla kontrol eder ve koşulu doğru olan ilk bloğu çalıştırır.

  • while – Bir koşul doğru kaldığı sürece bir kod bloğunu tekrarlar.

  • break – Mevcut döngüyü hemen sonlandırır.

  • programStop – Projeyi hemen sonlandırır.

wait#

Bir sonraki kod satırına geçmeden önce projeyi belirli bir süre duraklatır.

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

Parameters

Parametre

Tip

Tanım

time

double

Bekleme süresi, pozitif bir double olarak ifade edilir.

units

timeUnits

Zamanı temsil eden birim: msec (varsayılan) – Milisaniye veya seconds

Return Values

Bu fonksiyon bir değer döndürmez.

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

for#

Bir kod bloğunu tekrarlar. Sayma yöntemi belirli sayıda çalışır; aralık tabanlı yöntem ise koleksiyondaki her öğe için bir kez çalışır.

Syntax

1 — Sayma döngüsü — sabit sayıda kez çalışır.

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

2 — Aralık tabanlı döngü — koleksiyondaki her öğe için bir kez çalışır.

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

Parameters

Parametre

Tip

Tanım

count

int

Kod bloğunun tekrarlanma sayısı.

type

Tür Adı

Koleksiyondaki her öğenin veri türü (örneğin int, double).

element

variable

Döngünün mevcut öğesinin değerini tutacak değişkenin adı.

collection

array

Döngüde kullanılacak öğeleri içeren dizi (veya vektör).

Return Values

Bu kontrol yapısı bir değer döndürmez.

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#

Koşul true ise, içerideki kod bloğunu çalıştırır.

Syntax
if (condition) {
  // code block
}

Parameters

Parametre

Tip

Tanım

condition

bool

İfade çalıştırıldığında değerlendirilen bir ifade veya değişken. Eğer değeri trueise, if bloğunun içindeki kod çalışır; eğer değeri falseise, blok atlanır.

Return Values

Bu kontrol yapısı bir değer döndürmez.

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#

Belirtilen koşulun true veya false olmasına bağlı olarak hangi kod bloğunun çalıştırılacağını belirler.

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

Parameters

Parametre

Tip

Tanım

condition

bool

İfade çalıştırıldığında değerlendirilen bir ifade veya değişken. Eğer değeri trueise, if bloğunun içindeki kod çalışır; eğer değeri falseise, bunun yerine else bloğunun içindeki kod çalışır.

Return Values

Bu kontrol yapısı bir değer döndürmez.

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#

Birden fazla koşula bağlı olarak hangi kod bloğunun çalıştırılacağını seçer.

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

Parametre

Tip

Tanım

condition

bool

İfade çalıştırıldığında değerlendirilen bir ifade veya değişken. İlk true hangi bloğun çalıştırılacağını belirler; eğer true, else blok çalışır.

Return Values

Bu kontrol yapısı bir değer döndürmez.

Notes
  • if koşul doğruysa bloğunu çalıştırır true.

  • else if ifadesi, yalnızca önceki tüm koşullar yanlışsa ek koşulları kontrol eder. falseBirden fazla else if ifadesi kullanılabilir.

  • else bloğunu yalnızca önceki koşullardan hiçbiri doğru değilse çalıştırır 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#

Koşul true olduğu sürece kodu tekrar tekrar çalıştırır.

Syntax
while (condition) {
  // code block
}

Parameters

Parametre

Tip

Tanım

condition

bool

Her yinelemeden önce değerlendirilen bir ifade veya değişken. Eğer değeri trueise döngü devam eder; eğer değeri falseise döngü durur.

Return Values

Bu kontrol yapısı bir değer döndürmez.

Notes
  • Aşağıdaki örneklerde gösterildiği gibi, koşulun önüne ! eklenerek “Bekle” gibi de kullanılabilir.

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#

Geçerli döngüyü hemen sonlandırır. İç içe döngülerde, break en içteki döngüyü sonlandırır.

Syntax
break;

Parameters

Bu ifade herhangi bir parametre kabul etmiyor.

Return Values

Bu ifade bir değer döndürmez.

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#

Projeyi anında sonlandırır.

Syntax
Brain.programStop();

Parameters

Bu ifade herhangi bir parametre kabul etmiyor.

Return Values

Bu ifade bir değer döndürmez.

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