Robot Karol/Beispiele für Schleifen: Unterschied zwischen den Versionen

Aus ZUM-Unterrichten
K (32 Versionen importiert)
Markierung: 2017-Quelltext-Bearbeitung
 
(6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
==Definition Schleifen==
Eine '''Schleife''' ist eine endliche '''Wiederholung von Anweisungen''' bis zu einen bestimmten Ereignis.
Eine Schleife ist eine endliche Wiederholung von Anweisungen bis zu einen bestimmten Ereignis.
Dabei gibt es drei Darstellungsformen:  
Dabei gibt es drei Darstellungsformen:  
*gezählte Wiederholung
* gezählte Wiederholung
*Wiederholung mit Bedingungen
* Wiederholung mit Bedingungen
**Schleifen mit Eingangsbedingung (Kopfgesteuerte Schleife)
** Schleifen mit Eingangsbedingung (Kopfgesteuerte Schleife)
**Schleifen mit Ausgangsbedingung (fußgesteuerte Schleife)
** Schleifen mit Ausgangsbedingung (fußgesteuerte Schleife)


Solange die Bedinung ausführbar ist, wird diese abgearbeitet. Ist sie nicht ausführbar wird zur nächsten Anweisung übergegangen.
Solange die Bedingung ausführbar ist, wird diese abgearbeitet. Ist sie nicht ausführbar wird zur nächsten Anweisung übergegangen.


==Gezählte Wiederholung==
Ist die Anzahl der Wiederholung von Anweisung im vorn herein bekannt, nutzt man die gezählte Wiederholung. Sie wird auch Zählschleife genannt.


{{Fortsetzung|vorher=selbstdefinierte Methoden|vorherlink=Robot Karol/selbstdefinierte Methoden|
weiter=Beispiele für Verzweigungen|weiterlink=Robot Karol/Beispiele für Verzweigungen|
übersicht=Robot Karol}}


===Beispiel - gezählte Wiederholung===
== Gezählte Wiederholung ==
Ist die Anzahl der Wiederholungen der Anweisungen im vornherein bekannt, nutzt man die gezählte Wiederholung. Sie wird auch Zählschleife genannt.


===Beispiel ===
'''Problem:''' Karol soll neun Ziegel in einer Reihe hintereinander legen.
Erste Lösung durch sequentielles Anschreiben der Anweisungen:
Hinlegen
Schritt
Hinlegen
Schritt
Hinlegen
Schritt
Hinlegen
Schritt
Hinlegen
Schritt
Hinlegen
Schritt
Hinlegen
Schritt
Hinlegen
Schritt
Bei größerer Zahl von Wiederholungen erweist sich das Ganze als ungünstig.
'''Bessere Lösung:''' Wiederholung mit fester Anzahl
'''Wiederholung mit fester Anzahl'''
[[Datei:4.jpeg|thumb|[[Algorithmus#Struktogramm|Struktogramm]] zur Lösung der Aufgabe für Karol]]
Die Anweisungen im Wiederholungsteil werden nacheinander mehrfach ausgeführt (entsprechend der angegebenen Anzahl).
Sprache Karol:
wiederhole n mal
    Anweisungen
*wiederhole
Die günstigere Lösung für unsere Aufgabe sieht dann wie folgt aus:
wiederhole 9 mal
    hinlegen
    schritt
*wiederhole


Karol soll die Reihe Steine aufheben:
Karol soll die Reihe Steine aufheben:


Rechts sieht man das Struktoramm zur Lösung der Aufgabe für Karol.
{{3Spalten|
[[Datei:4.jpeg]]
[[Datei:1.jpeg|thumb|center|Diese Reihe Steine soll Karol mit Hilfe gezählter Wiederholungen aufheben.]]
|
[[Datei:2.jpeg|thumb|center|Karol hat schon die Hälfte geschafft.]]
|
[[Datei:3.jpeg|thumb|center|Karol hat alles aufgehoben und wird auch nicht weitermachen, da es gezählte Wiederholungen sind und er dies nur 9 mal machen sollte.]]
}} 




=== Aufgaben ===


Diese Reihe Steine soll Karol mit Hilfe gezählter Wiederholungen aufheben.
[[Datei:Screenshot Quadrat.jpg|right|248px]]1. Karol soll mit Ziegeln ein Quadrat auslegen.
[[Datei:1.jpeg]]






{{Lösung versteckt|
wiederhole 4 mal
  Hinlegen
  Schritt
  LinksDrehen
*wiederhole
}}
{{clear}}
[[Datei:Screenshot ZiegelNebeneinander.jpg|right]]
2. Die bereits bekannte Aufgabe ''Karol soll vier Ziegel nebeneinander legen.'' soll mit einer Wiederholungsanweisung gelöst werden.


Karol hat schon die Hälfte geschafft.
{{Lösung versteckt|
[[Datei:2.jpeg]]
wiederhole 4 mal
  Hinlegen
  LinksDrehen
  Schritt
  RechtsDrehen
*wiederhole
}}
{{clear}}


[[Datei:Screenshot_Diagonale.jpg|right]]
3.In einer Welt der Größe 6x6 soll Karol mit Marken eine Diagonale erzeugen.


{{Lösung versteckt|
wiederhole 5 mal
  MarkeSetzen
  Schritt
  Linksdrehen
  Schritt
  RechtsDrehen
*wiederhole
MarkeSetzen
}}


{{clear}}
[[Datei:Screenshot kreuz.jpg|right]]
4. In einer Welt der Größe 9x9 erzeugt Karol ein Kreuz aus Marken.






Karol hat alles aufgehoben und wird auch nicht weitermachen, da es gezählte Wiederholungen sind und er dies nur 9 mal machen sollte.
{{Lösung versteckt|
[[Datei:3.jpeg]]
<pre>
wiederhole 8 mal
  MarkeSetzen
  Schritt
  Linksdrehen
  Schritt
  RechtsDrehen
*wiederhole


MarkeSetzen
LinksDrehen
LinksDrehen


wiederhole 8 mal
  Schritt
*wiederhole


[[Kategorie:Robot Karol]]
LinksDrehen
LinksDrehen
 
wiederhole 8 mal
  MarkeSetzen
  Schritt
  Rechtsdrehen
  Schritt
  LinksDrehen
*wiederhole
 
MarkeSetzen
</pre>
 
Noch etwas eleganter ist folgende Lösung. Sie berücksichtigt, dass man die Lösung für die erste Diagonale wiederverwenden kann.
 
<pre>
Anweisung Diagonale
  wiederhole 8 mal
      MarkeSetzen
      Schritt
      Linksdrehen
      Schritt
      RechtsDrehen
  *wiederhole
*Anweisung
 
 
Anweisung Bahn
  wiederhole 8 mal
      Schritt
  *wiederhole
*Anweisung
 
 
Programm
  Diagonale
  MarkeSetzen
  LinksDrehen
  LinksDrehen
  Bahn
  LinksDrehen
  Diagonale
  MarkeSetzen
  LinksDrehen
*Programm
</pre>
}}
 
{{clear}}
[[Datei:KarolStufe.jpg|right]]
5. In einer Welt der Größe 11x11 soll Karol folgendes Muster erzeugen. Verwende dabei eine selbstdefinierte Anweisung und eine Wiederholungsanweisung.
 
 
{{Lösung versteckt|
<pre>
Anweisung Stufe
MarkeSetzen
Schritt
MarkeSetzen
Schritt
*Anweisung
 
wiederhole 5 mal
LinksDrehen
Stufe
RechtsDrehen
Stufe
*wiederhole
 
MarkeSetzen
</pre>
}}
 
{{clear}}
=== Geschachtelte Wiederholung ===
[[Bild:Screenshot_Quadratrand.jpg|right]]
'''Problem:''' Karol soll einen Quadratrand auslegen.
 
 
 
'''Lösung'''
 
Der Quadratrand besteht aus vier Seiten (äußere Schleife). Jede Seite besteht wiederum aus drei Ziegeln (innere Schleife). Nach jeder Seite muss sich Karol links drehen.
 
 
[[Datei:Karol Quadratrand lsg.jpg]]
 
 
 
{{clear}}
'''Aufgaben'''
[[Datei:Karol Gartenmauer.jpg|right]]
1. Karol soll in einer Welt der Größe 9x9 eine hübsche Gartenmauer bauen.
 
 
{{Lösung versteckt|
<pre>
wiederhole 4 mal
  wiederhole 4 mal
      Hinlegen
      Schritt
      MarkeSetzen
      Schritt
      MarkeSetzen
  *wiederhole
  LinksDrehen
*wiederhole
 
</pre>
}}>
 
2. Die Aufgabe 1 im Kapitel "Parameter" (''Säulenhalle'') soll allein mit Wiederholungsanweisungen gelöst werden.


{{Lösung versteckt|
<pre>
wiederhole 4 mal
  wiederhole 2 mal
      Schritt
      LinksDrehen
      wiederhole 6 mal
        Hinlegen
      *wiederhole
      rechtsdrehen
      Schritt
  *wiederhole
  Schritt
  Schritt
  LinksDrehen
*wiederhole
</pre>
}}


==Schleife mit Eingangsbedingung==
==Schleife mit Eingangsbedingung==
Zeile 58: Zeile 283:


[[Datei:fußgesteuert.jpg]]
[[Datei:fußgesteuert.jpg]]
{{Fortsetzung|vorher=selbstdefinierte Methoden|vorherlink=Robot Karol/selbstdefinierte Methoden|
weiter=Beispiele für Verzweigungen|weiterlink=Robot Karol/Beispiele für Verzweigungen|
übersicht=Robot Karol}}
[[Kategorie:Robot Karol]]

Aktuelle Version vom 21. August 2019, 04:55 Uhr

Eine Schleife ist eine endliche Wiederholung von Anweisungen bis zu einen bestimmten Ereignis. Dabei gibt es drei Darstellungsformen:

  • gezählte Wiederholung
  • Wiederholung mit Bedingungen
    • Schleifen mit Eingangsbedingung (Kopfgesteuerte Schleife)
    • Schleifen mit Ausgangsbedingung (fußgesteuerte Schleife)

Solange die Bedingung ausführbar ist, wird diese abgearbeitet. Ist sie nicht ausführbar wird zur nächsten Anweisung übergegangen.


Gezählte Wiederholung

Ist die Anzahl der Wiederholungen der Anweisungen im vornherein bekannt, nutzt man die gezählte Wiederholung. Sie wird auch Zählschleife genannt.


Beispiel

Problem: Karol soll neun Ziegel in einer Reihe hintereinander legen.

Erste Lösung durch sequentielles Anschreiben der Anweisungen:

Hinlegen
Schritt
Hinlegen
Schritt
Hinlegen
Schritt
Hinlegen
Schritt
Hinlegen
Schritt
Hinlegen
Schritt
Hinlegen
Schritt
Hinlegen
Schritt

Bei größerer Zahl von Wiederholungen erweist sich das Ganze als ungünstig.

Bessere Lösung: Wiederholung mit fester Anzahl

Wiederholung mit fester Anzahl

Struktogramm zur Lösung der Aufgabe für Karol

Die Anweisungen im Wiederholungsteil werden nacheinander mehrfach ausgeführt (entsprechend der angegebenen Anzahl).

Sprache Karol:

wiederhole n mal 
   Anweisungen 
*wiederhole

Die günstigere Lösung für unsere Aufgabe sieht dann wie folgt aus:

wiederhole 9 mal
   hinlegen
   schritt
*wiederhole

Karol soll die Reihe Steine aufheben:

Diese Reihe Steine soll Karol mit Hilfe gezählter Wiederholungen aufheben.
Karol hat schon die Hälfte geschafft.
Karol hat alles aufgehoben und wird auch nicht weitermachen, da es gezählte Wiederholungen sind und er dies nur 9 mal machen sollte.


Aufgaben

Screenshot Quadrat.jpg

1. Karol soll mit Ziegeln ein Quadrat auslegen.


wiederhole 4 mal
  Hinlegen
  Schritt
  LinksDrehen
*wiederhole


Screenshot ZiegelNebeneinander.jpg

2. Die bereits bekannte Aufgabe Karol soll vier Ziegel nebeneinander legen. soll mit einer Wiederholungsanweisung gelöst werden.

wiederhole 4 mal
  Hinlegen
  LinksDrehen
  Schritt
  RechtsDrehen
*wiederhole



Screenshot Diagonale.jpg

3.In einer Welt der Größe 6x6 soll Karol mit Marken eine Diagonale erzeugen.

wiederhole 5 mal

  MarkeSetzen
  Schritt
  Linksdrehen
  Schritt
  RechtsDrehen
  • wiederhole

MarkeSetzen


Screenshot kreuz.jpg

4. In einer Welt der Größe 9x9 erzeugt Karol ein Kreuz aus Marken.


wiederhole 8 mal
   MarkeSetzen
   Schritt
   Linksdrehen
   Schritt
   RechtsDrehen
*wiederhole

MarkeSetzen
LinksDrehen
LinksDrehen

wiederhole 8 mal
   Schritt
*wiederhole

LinksDrehen
LinksDrehen

wiederhole 8 mal
   MarkeSetzen
   Schritt
   Rechtsdrehen
   Schritt
   LinksDrehen
*wiederhole

MarkeSetzen

Noch etwas eleganter ist folgende Lösung. Sie berücksichtigt, dass man die Lösung für die erste Diagonale wiederverwenden kann.

Anweisung Diagonale
   wiederhole 8 mal
      MarkeSetzen
      Schritt
      Linksdrehen
      Schritt
      RechtsDrehen
   *wiederhole
*Anweisung


Anweisung Bahn
   wiederhole 8 mal
      Schritt
   *wiederhole
*Anweisung


Programm
   Diagonale
   MarkeSetzen
   LinksDrehen
   LinksDrehen
   Bahn
   LinksDrehen
   Diagonale
   MarkeSetzen
   LinksDrehen
*Programm


KarolStufe.jpg

5. In einer Welt der Größe 11x11 soll Karol folgendes Muster erzeugen. Verwende dabei eine selbstdefinierte Anweisung und eine Wiederholungsanweisung.


Anweisung Stufe
MarkeSetzen
Schritt
MarkeSetzen
Schritt
*Anweisung

wiederhole 5 mal
LinksDrehen
Stufe
RechtsDrehen
Stufe
*wiederhole

MarkeSetzen


Geschachtelte Wiederholung

Screenshot Quadratrand.jpg

Problem: Karol soll einen Quadratrand auslegen.


Lösung

Der Quadratrand besteht aus vier Seiten (äußere Schleife). Jede Seite besteht wiederum aus drei Ziegeln (innere Schleife). Nach jeder Seite muss sich Karol links drehen.


Karol Quadratrand lsg.jpg



Aufgaben

Karol Gartenmauer.jpg

1. Karol soll in einer Welt der Größe 9x9 eine hübsche Gartenmauer bauen.


wiederhole 4 mal
   wiederhole 4 mal
      Hinlegen
      Schritt
      MarkeSetzen
      Schritt
      MarkeSetzen
   *wiederhole
   LinksDrehen
*wiederhole
  

>

2. Die Aufgabe 1 im Kapitel "Parameter" (Säulenhalle) soll allein mit Wiederholungsanweisungen gelöst werden.

wiederhole 4 mal
   wiederhole 2 mal
      Schritt
      LinksDrehen
      wiederhole 6 mal
         Hinlegen
      *wiederhole
      rechtsdrehen
      Schritt
   *wiederhole
   Schritt
   Schritt
   LinksDrehen
*wiederhole

Schleife mit Eingangsbedingung

Bei der kopfgesteuerten Schleife wird die Anweisung vor jedem Ablauf überprüft. Die untenstehende Abbildung zeigt den allgemeinen Aufbau:


Eingangsbedingung.jpg

Schleife mit Ausgangsbedingung

Bei der fußgesteuerten Schleife wird die Anweisung nach jedem Ablauf überprüft. Die untenstehende Abbildung zeigt den allgemeinen Aufbau:


Fußgesteuert.jpg