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 Functionsvoid wait(
double time,
timeUnits units );
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Bekleme süresi, pozitif bir |
|
|
Zamanı temsil eden birim: |
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.
Syntax1 — Sayma döngüsü — sabit sayıda kez çalışır.
for (int i = 0; i < count; i++) { // code block }
Parameters2 — Aralık tabanlı döngü — koleksiyondaki her öğe için bir kez çalışır.
for (type element : collection) { // code block }
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Kod bloğunun tekrarlanma sayısı. |
|
Tür Adı |
Koleksiyondaki her öğenin veri türü (örneğin |
|
|
Döngünün mevcut öğesinin değerini tutacak değişkenin adı. |
|
|
Döngüde kullanılacak öğeleri içeren dizi (veya vektör). |
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.
if (condition) {
// code block
}
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
İfade çalıştırıldığında değerlendirilen bir ifade veya değişken. Eğer değeri |
Bu kontrol yapısı bir değer döndürmez.
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#
Belirtilen koşulun true veya false olmasına bağlı olarak hangi kod bloğunun çalıştırılacağını belirler.
if (condition) {
// code block if true
}
else {
// code block if false
}
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
İfade çalıştırıldığında değerlendirilen bir ifade veya değişken. Eğer değeri |
Bu kontrol yapısı bir değer döndürmez.
Exampleswhile (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.
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
}
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
İfade çalıştırıldığında değerlendirilen bir ifade veya değişken. İlk |
Bu kontrol yapısı bir değer döndürmez.
Notesifkoşul doğruysa bloğunu çalıştırırtrue.else ififadesi, yalnızca önceki tüm koşullar yanlışsa ek koşulları kontrol eder.falseBirden fazlaelse ififadesi kullanılabilir.elsebloğunu yalnızca önceki koşullardan hiçbiri doğru değilse çalıştırırtrue.
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.
while (condition) {
// code block
}
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Her yinelemeden önce değerlendirilen bir ifade veya değişken. Eğer değeri |
Bu kontrol yapısı bir değer döndürmez.
NotesAşağıdaki örneklerde gösterildiği gibi, koşulun önüne
!eklenerek “Bekle” gibi de kullanılabilir.
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.
break;
Bu ifade herhangi bir parametre kabul etmiyor.
Return ValuesBu ifade bir değer döndürmez.
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#
Projeyi anında sonlandırır.
SyntaxBrain.programStop();
Bu ifade herhangi bir parametre kabul etmiyor.
Return ValuesBu ifade bir değer döndürmez.
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();
}
}