TigerJython | xx für Gymnasien |
Es liegt im Wesen von Robotern, die Anweisungen mehrmals zu wiederholen. Dazu kann man for- oder while-Schleifen verwenden. Beispiel 1: Mit einer for-Schleife Quadrat fahren
# Ro2a.py from simrobot import * #from ev3robot import * #from nxtrobot import * robot = LegoRobot() gear = Gear() robot.addPart(gear) #gear.setSpeed(30) for n in range(4): gear.forward(2000) gear.right(550) robot.exit() |
Erklärungen zum Programmcode:
for n in range(4): Die nachfolgenden eingerückten Befehle werden 4 mal wiederholt. Erklärungen zu Wiederholungsschleifen findet man im Kapitel Turtlegrafik. | |
gear.setSpeed(30): Falls sich der realer Roboter zu schnell bewegt, kann die Geschwindigkeit mit setSpeed() reduziert werden. Default Geschwindigkeit ist 50. Bei dieser Geschwindigkeit ergibt right(550) bei der Simulation ziemlich genau den rechten Winkel. Beim echten Roboter muss je nach Bodenbelag die Geschwindigkeit angepasst werden |
Beispiel 2: Roboter auf Kreisbogen bewegen. Mit den Befehlen rightArc(radius, dauer) bzw. leftArc(radius, dauer) kann man den Roboter auf kreisförmigen Bahnen bewegen.
|
# Ro2b.py from simrobot import * #from ev3robot import * #from nxtrobot import * robot = LegoRobot() gear = Gear() robot.addPart(gear) for n in range(2): gear.rightArc(0.1, 2700) gear.leftArc(0.1, 2700) robot.exit() |
Programmcode markieren
|
Erklärungen zum Programmcode:
rightArc(0.1, 2700) : Der Roboter bewegt sich während 2700 Millisekunden auf einem Kreisbogen mit dem Radius 0.1 m |
Beispiel 3: "Endlose" while-Schleife
|
# Ro2c.py from simrobot import * #from ev3robot import * #from nxtrobot import * robot = LegoRobot() gear = Gear(); robot.addPart(gear); gear.leftArc(0.3) while not robot.isEscapeHit(): pass robot.exit() |
Programmcode markieren
|
Erklärungen zum Programmcode:
leftArc(0.3): der Roboter wird in die Bewegung auf dem Kreibogen mit dem Radius 0.3 versetzt | ||||
while not robot.isEscapeHit(): Endlose while-Schleife. Der Roboter bewegt sich so lange, bis das Programm abgebrochen wird | ||||
pass: So lange die Schleifenbedingung nicht erfüllt ist, passiert nichts - der Roboter bleibt in der Bewegung | ||||
|
Aufgaben: Serie 2 |
1) |
Ein Roboter soll nacheinander 4 Orte erreichen, indem er zuerst vorwärts bis zum ersten Ort fährt, kehrt um 180° und fährt zum Ausgangspunkt zurück. Danach fährt er auf gleiche Weise zu den übrigen drei Stellen, die vom Ausgangspunkt gleich entfernt sind. |
|
|
2) |
Verwende for- oder while-Schleife, um einen Weg, der aus drei Bogen besteht, zu programmieren |
|
|
3) |
Verwende "endlose" while-Schleife und lasse den Roboter auf einer 8er-Bahn fahren | ||
4) |
Der Roboter soll sich auf einer Spiralbahn bewegen. Verwende eine repeat-Schleife und vergrössere nach jedem Schleifendurchlauf den Radius im Befehl rightArc(radius). Löse die Aufgabe zuerst im Simulationsmodus. Mit dem Befehl |