Zum Inhalt

Aufgabe 4.6

Variante mit <=

import ozobot
import math

r = ozobot.get_robot()

# Steuervariable, z.B. count mit Initialisierung

count = 1

while count <= 4:

    r.movement.move( 0.04, 0.5 )
    r.movement.rotate( math.radians(90), math.radians(120) )
    count = count + 1

Variante mit >=

import ozobot
import math

r = ozobot.get_robot()

# Steuervariable, z.B. count mit Initialisierung

count = 4
while count >= 1:
    r.movement.move( 0.04, 0.5 )
    r.movement.rotate( math.radians(90), math.radians(120) )
    count = count - 1

Variante, bei welcher man die Anzahl verbleibenden schritte als Countdown macht.

import ozobot
import math

r = ozobot.get_robot()

# Steuervariable, z.B. count mit Initialisierung

count = 4

while count < 4 and > 1 or:
    r.movement.move( 0.04, 0.5 )
    r.movement.rotate( math.radians(90), math.radians(120) )
    count = count - 1

Erklären Sie, was eine Kontrollvariable und eine Abbruchbedingung ist:

Eine Kontrollvariable ist eine Variable in einer Schleife, die den aktuellen Durchlauf der Schleife steuert, z. B. indem sie bei jedem Durchlauf verändert wird.

Eine Abbruchbedingung ist eine Bedingung, die bestimmt, wann eine Schleife beendet wird. Wenn die Abbruchbedingung erfüllt ist, wird die Schleife beendet.

Aufgabe 3.2

r = ozobot.get_robot()

count = 8
zahl = 1
while count >= 1:
    # Countwert vor und nach der Wertzuweisung auf der Entwicklerkonsole (F12) ausgeben
    print("Count= ", count)
    count -= zahl * 2
    print("Count= ", count)
    r.movement.move( 0.04, 0.12 )
    r.movement.rotate( math.radians(90), math.radians(120) )

Aufgabe 3.3

import ozobot
import math

r = ozobot.get_robot()

count = 1

while count <= 4:
    r.light_effects.set_light_color( ozobot.SurfaceColor.RED, ozobot.Lights.ALL_FRONT)
    ozobot.time.sleep(1)
    r.light_effects.set_light_color_rgb( 1.0, 1.0, 1.0, ozobot.Lights.ALL_FRONT )
    ozobot.time.sleep(1)
    r.light_effects.set_light_color_rgb( 0, 0, 0, ozobot.Lights.FRONT_1 | ozobot.Lights.FRONT_5)
    ozobot.time.sleep(0.3)
    r.light_effects.set_light_color_rgb( 0, 0, 0, ozobot.Lights.FRONT_2 | ozobot.Lights.FRONT_4)
    ozobot.time.sleep(0.3)
    r.light_effects.set_light_color_rgb( 0, 0, 0, ozobot.Lights.FRONT_3)
    ozobot.time.sleep(1)

Aufgabe 3.4

Er fährt die linie 2 mal.

import ozobot
import math

r = ozobot.get_robot()

# Steuervariable, z.B. count mit Initialisierung

count = 1

while count <= 4:

    r.movement.move( 0.1, 0.05 )
    r.movement.rotate( math.radians(180), math.radians(180) )
    count = count + 1

Er fährt unendlich lange.

import ozobot
import math

r = ozobot.get_robot()

# Steuervariable, z.B. count mit Initialisierung


while True:
    count = 1
    while count <= 2:
        r.movement.move( 0.1, 0.05 )
        r.movement.rotate( math.radians(180), math.radians(180) )
        count = count + 0

Er fährt 3 mal.

import ozobot
import math

r = ozobot.get_robot()

# Steuervariable, z.B. count mit Initialisierung

count2 = 0

while count2 <= 2:
    count2 += 1
    count = 2
    while count <= 2:
        r.movement.move( 0.1, 0.05 )
        r.movement.rotate( math.radians(180), math.radians(180) )
        count = count + 1
count2 = count2 + 1

Was sind "innere/äussere" Schleifen?

Äußere Schleife bezeichnet eine Schleife, die eine andere Schleife umschließt, also den äußeren Rahmen bildet.

Innere Schleife ist die Schleife, die sich innerhalb der äußeren Schleife befindet und in jedem Durchlauf der äußeren Schleife mehrfach ausgeführt wird.

Solche verschachtelten Schleifen werden oft verwendet, um mehrdimensionale Strukturen, wie Matrizen, zu durchlaufen.

Wo muss die Steuervariable der inneren Schleife platziert sein? Begründen Sie.

Die Steuervariable der inneren Schleife muss innerhalb der inneren Schleife deklariert und initialisiert werden, also typischerweise vor dem Start der inneren Schleife. Der Grund ist, dass diese Variable bei jedem neuen Durchlauf der äußeren Schleife neu gesetzt werden muss, damit die innere Schleife korrekt funktioniert und nicht von vorherigen Durchläufen beeinflusst wird.

Aufgabe 3.5

import ozobot
import math

r = ozobot.get_robot()

for i in range (3):
     r.movement.rotate( math.radians(360), math.radians(120) )
     ozobot.time.sleep(1)

Aufgabe 3.6

Hier berechnet er die Summe der Liste.

import ozobot
import math

# Definiere eine Liste von Zahlen
zahlen = [1, 2, 3, 4, 5]

# Initialisiere die Summe
summe = 0

# Iteriere durch die Liste und addiere jede Zahl zur Summe
for zahl in zahlen:
    summe += zahl

# Gib die berechnete Summe aus
print("Die Summe der Liste ist:", summe)

Hier schreibt er jeden Schritt aus.

import ozobot
import math

# Definiere eine Liste von Zahlen
zahlen = [1, 2, 3, 4, 5]

# Initialisiere die Summe
summe = 0

# Iteriere durch die Liste und addiere jede Zahl zur Summe
for zahl in zahlen:
    summe += zahl
    print("Die Summe der Liste ist:", summe)
# Gib die berechnete Summe aus

Wie können Sie eine for-Schleife in eine while-Schleife überführen (oder umgekehrt)?

Beispiel: For-Schleife zu While-Schleife

For-Schleife:

for i in range(0, 5):
    print(i)

Entsprechende While-Schleife:

i = 0  # Initialisierung
while i < 5:  # Abbruchbedingung
    print(i)
    i += 1  # Inkrementierung

In beiden Fällen führen die Schleifen dieselbe Aufgabe aus: Sie drucken die Zahlen von 0 bis 4 aus.

Wieso benötigt eine for-Schleife keine logische Bedingung?

While-Schleife:

i = 0  # Initialisierung
while i < 5:  # Abbruchbedingung
    print(i)
    i += 1  # Inkrementierung

Entsprechende For-Schleife:

for i in range(0, 5):  # Initialisierung, Abbruchbedingung, Inkrementierung
    print(i)

In beiden Fällen führen die Schleifen dieselbe Aufgabe aus: Sie drucken die Zahlen von 0 bis 4 aus.

Eine for-Schleife benötigt keine explizite logische Bedingung, da sie intern die Bedingung in der Schleifensteuerung integriert. Sie durchläuft eine festgelegte Anzahl von Iterationen basierend auf der Iterator-Liste (wie range()), und stoppt automatisch, wenn diese erschöpft ist.

Beispiel:

for i in range(5):  # Der Iterator 'range(5)' steuert die Schleifenläufe
    print(i)

Hier sorgt range(5) automatisch dafür, dass die Schleife nach 5 Durchläufen endet, ohne dass eine explizite logische Bedingung erforderlich ist.