Skip to main content

Lektion 2: Zusammenfassung nach dem Projekt

Der [If then else] -Block wird verwendet, damit der VR-Roboter eine Entscheidung treffen kann. Wenn die boolesche Bedingung WAHR ist, werden die Blöcke innerhalb des Zweigs "Wenn dann" ausgeführt. Wenn die boolesche Bedingung FALSCH ist, werden die Blöcke innerhalb des Zweigs ‘Else’ ausgeführt.

Ein Diagramm, das den Projektfluss des if then else-Blocks innerhalb der Forever-Schleife anzeigt. Wenn das Projekt gestartet wird, wird der Zustand des Abstandssensors überprüft. Wenn ein Objekt gefunden wird, ist diese Bedingung wahr, dann wird der Drive-Forward-Block ausgeführt. Wenn kein Objekt gefunden wird, meldet diese Bedingung false, andernfalls wird der Block nach rechts abbiegen ausgeführt. All dies wiederholt sich kontinuierlich innerhalb der Forever-Schleife.

In diesem Projekt fuhr der VR-Roboter auf ein Gebäude zu, als der Abstandssensor ein Objekt erkannte und der <Distance found object> Block als WAHR gemeldet wurde. Dies wies den Zweig "Wenn dann" des Projekts an, zu laufen. Dieser Zweig enthält den Block [Antrieb]. Der VR-Roboter überspringt dann den Zweig "Else" des Projekts.

Das Projekt befindet sich auf der linken Seite mit einer grünen Markierung, die den Projektfluss der ausgeführten if then-Zweigstelle anzeigt. Rechts wird die Ansicht des Spielplatzes von oben nach unten angezeigt, wobei ein Pfeil und ein rotes Kästchen die Burg oder das Objekt hervorheben, das in diesem Fall vom Abstandssensor erkannt wird.

Da der [If then else] -Block innerhalb eines [Forever] -Blocks platziert wird, kehrt das Projekt an die Spitze des [Forever] -Blocks zurück, um den Zustand des [If then else] -Blocks zu überprüfen. Diese Schleife wird für immer andauern und den VR-Roboter anweisen, den Zustand [Wenn dann] hunderte Male pro Sekunde kontinuierlich zu überprüfen.

Beachten Sie, dass die Blöcke [Drive] und [Turn] innerhalb des Blocks [If then else] nicht wartende Blöcke sind. Nicht wartende Blöcke stoppen den Fluss eines Projekts nicht, während sie ausgeführt werden.  Ein Nicht-Warten-Verhalten, das in einem [Wenn sonst] -Block ausgeführt wird (z. B. Vorwärtsfahren, wenn Objekt erkannt wird), wird fortgesetzt, während die Bedingung überprüft wird, und ändert sich nur, wenn sich die Bedingung ändert.

Das gleiche VEXcode VR-Projekt mit Pfeilen, die sich vom unteren Rand des Forever-Blocks zurück nach oben bewegen, um den Projektfluss zurück zum oberen Rand der Forever-Schleife anzuzeigen, um alle darin enthaltenen Befehle zu wiederholen.

Wenn der <Distance found object> Block als FALSCH meldet, wird der Zweig ‘Else’ des Projekts ausgeführt. Der Zweig ‘Else’ enthält den Block [Turn].

Das Projekt befindet sich links mit einer roten Markierung, die den Projektablauf des ausgeführten Else Branches zeigt. Rechts wird die Ansicht von oben nach unten des Spielplatzes gezeigt, wobei gekrümmte Pfeile um den VR-Roboter das Drehen anzeigen, um ein Objekt zu erkennen, da sich keines direkt vor dem Abstandssensor befindet.

Zur Kenntnisnahme

[If then else] -Blöcke werden verwendet, um sicherzustellen, dass nur eine Zweigstelle im Projekt ausgeführt wird, wenn die Bedingung überprüft wird. Nur eine Instanz oder Bedingung kann jederzeit wahr sein. Das macht das Projekt effizienter.

Ein Diagramm, das den Projektfluss des if then else-Blocks innerhalb der Forever-Schleife anzeigt. Wenn das Projekt gestartet wird, wird der Zustand des Abstandssensors überprüft. Wenn ein Objekt gefunden wird, ist diese Bedingung wahr, dann wird der Drive-Forward-Block ausgeführt. Wenn kein Objekt gefunden wird, meldet diese Bedingung false, andernfalls wird der Block nach rechts abbiegen ausgeführt. All dies wiederholt sich kontinuierlich innerhalb der Forever-Schleife.

Vergleichen Sie das aktuelle Projekt mit dem in Einheit 7 erstellten Projekt.  Das Projekt Unit 7 verwendet vier [If then] -Blöcke.

Ein Diagramm des Projektablaufs eines Beispielprojekts aus Einheit 7 mit vier If-Blöcken nacheinander. In jedem Fall verwendet der Parameter If den Front Eye Sensor, um eine bestimmte Farbe zu erkennen und ein Verhalten basierend auf der erkannten Farbe auszuführen. Wenn die Farbe erkannt wird, ist das Wenn dann wahr, und der darin enthaltene Block wird ausgeführt, und dies geschieht wiederholt für jeden Abschnitt des Codes.

Wenn ein Projekt mit mehreren [If then] -Blöcken durchlaufen wird, könnte es möglich sein, dass mehrere Bedingungen als WAHR gemeldet werden und das Projekt die Befehle im [Forever] -Block durchläuft. In diesem Projekt können beide Bedingungen während derselben [Forever] -Schleife als WAHR gemeldet werden. Konflikte wie diese könnten dazu führen, dass das Projekt nicht mehr oder langsamer läuft.

Ein Diagramm des Projektablaufs von zwei sequenzierten If-Blöcken innerhalb einer Endlosschleife. Beim Start prüft das Projekt zunächst die Bedingung 1, den Parameter des ersten wenn dann Blocks. Wenn dies der Fall ist, wird die Abzweigung nach rechts für 90 Block darin ausgeführt. Wenn diese Bedingung falsch ist, wechselt das Projekt zur nächsten, wenn dann blockieren, um Bedingung 2 zu überprüfen. Wenn Bedingung 2 wahr ist, läuft der Vorwärtslauf für 200-mm-Block darin. Wenn es falsch ist, kehrt das Projekt an die Spitze der Forever-Schleife zurück, um den Vorgang erneut zu wiederholen.

Die Verwendung eines [If then else] -Blocks würde solche Fehler vermeiden, da mit diesem Block zu einem bestimmten Zeitpunkt nur eine Bedingung ERFÜLLT sein kann.

Ein Diagramm des Projektablaufs mit einem Wenn-dann-Block innerhalb einer Endlosschleife. Beim Start wird der Zustand des if then-Zweigs überprüft. Wenn dies der Fall ist und sich der Antrieb bewegt, läuft der Block innerhalb des Zweigs Wenn, und der Roboter dreht sich um 90 Grad nach links. Andernfalls fährt der Roboter 200 mm vorwärts. Diese Entscheidung, eine Bedingung zu überprüfen, wird kontinuierlich getroffen, da sich das Projekt in einer Endlosschleife befindet.

Fragen

Bitte wählen Sie unten einen Link aus, um auf das Lektionsquiz zuzugreifen.

Google Doc / .docx / .pdf