Robot Karol/Beispiele für Schleifen: Unterschied zwischen den Versionen
main>NadiaM Keine Bearbeitungszusammenfassung |
Markierung: 2017-Quelltext-Bearbeitung |
||
(19 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
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 | * gezählte Wiederholung | ||
*Schleifen mit Eingangsbedingung (Kopfgesteuerte Schleife) | * Wiederholung mit Bedingungen | ||
*Schleifen mit Ausgangsbedingung (fußgesteuerte Schleife) | ** 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. | |||
{{Fortsetzung|vorher=selbstdefinierte Methoden|vorherlink=Robot Karol/selbstdefinierte Methoden| | |||
weiter=Beispiele für Verzweigungen|weiterlink=Robot Karol/Beispiele für Verzweigungen| | |||
übersicht=Robot Karol}} | |||
== 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: | |||
{{3Spalten| | |||
[[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 === | |||
[[Datei:Screenshot Quadrat.jpg|right|248px]]1. Karol soll mit Ziegeln ein Quadrat auslegen. | |||
{{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. | |||
{{Lösung versteckt| | |||
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. | |||
{{Lösung versteckt| | |||
<pre> | |||
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 | |||
</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: | [[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]] | |||
[[Datei: | |||
{{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== | |||
Bei der kopfgesteuerten Schleife wird die Anweisung vor jedem Ablauf überprüft. | |||
Die untenstehende Abbildung zeigt den allgemeinen Aufbau: | |||
[[Datei: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: | |||
[[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]] | [[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
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:
Aufgaben
1. Karol soll mit Ziegeln ein Quadrat auslegen.
wiederhole 4 mal Hinlegen Schritt LinksDrehen *wiederhole
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
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
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
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
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.
Aufgaben
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:
Schleife mit Ausgangsbedingung
Bei der fußgesteuerten Schleife wird die Anweisung nach jedem Ablauf überprüft. Die untenstehende Abbildung zeigt den allgemeinen Aufbau: