Aus Das deutschsprachige Scratch-Wiki
wiederhole für jedes [i v] in () { } :: control
Kategorie: | Steuerung |
Typ: | Klammerblock |
Eingeführt in: | unbekannt |
Eingaben: | Variable, Zahl |
Plugin-Code (Wiki): | wiederhole für jedes [ v] in () {} :: control
|
Der wiederhole für jedes () in ()-Block ist ein Steuerungs-Block in Klammer-Block-Form.
Er führt den Inhalt sooft aus, wie im zweiten Feld angegeben. Die Variable des ersten Felds startet bei 1 und wird jeden Durchlauf um 1 erhöht.
Wenn im zweiten Feld eine Zahl mit Nachkommastellen (z.B. 3.14159) angegeben ist, wird der aufgerundete Wert genommen (hier 4), anders als beim Wiederhole () mal-Block, bei dem gerundet wird.
Besonderheit
lösche alles aus [Liste v] wiederhole für jedes [i v] in (5) { füge (i) zu [Liste v] hinzu ändere [i v] um (2) } :: control
Die Liste im obigen Beispiel sieht so aus: 1, 2, 3, 4, 5.
Das liegt daran, dass die Variable (hier i) bei jedem Durchlauf neu gesetzt wird und ihr ursprünglicher Wert nicht von Bedeutung ist. Der wiederhole für jedes () in ()-Block besitzt einen eigenen Zähler, der bei jedem Durchlauf erhöht wird und die Variable setzt.
Innerhalb eines Durchlaufs kann die Variable allerdings beliebig verändert werden. Auch verschachtelte Schleifen sind möglich.
Block bekommen
Der Block taucht nicht in der Blockpalette links auf. Am einfachsten ist es, auf Turbowarp zu gehen und den Block dort aus der Blockpalette zu holen. Anschließend kann das Projekt exportiert und in Scratch wieder hochgeladen werden. Jetzt kann man den Block ins Lager ziehen und damit in allen Projekten verwenden.
Der Block funktioniert auch auf Scratch!
Anwendung
Der Block kann vielfältig eingesetzt werden:
Durchlaufen einer Liste:
wiederhole für jedes [i v] in (Länge von [Liste v]) { sage (Element (i) von [Liste v]) } :: control
Durchlaufen eines Texts:
wiederhole für jedes [i v] in (Länge von [Text]) { sage (Zeichen (i) von [Text]) } :: control
Durchlaufen eines mehrdimensionalen Raums:
wiederhole für jedes [x v] in (10) { wiederhole für jedes [y v] in (10) { wiederhole für jedes [z v] in (10) { sage(verbinde (verbinde (x) und [/]) und (verbinde (y) und (verbinde [/] und (z)))) } :: control } :: control } :: control
Vergleichen von zwei Listen
wiederhole für jedes [i v] in (Länge von [Liste 1 v]) { wiederhole für jedes [j v] in (Länge von [Liste 2 v]) { sage <(Element (i) von [Liste 1 v])=(Element (j) von [Liste 2 v])> } :: control } :: control
Ersetzen des Blocks
Man kann den Block teilweise umgehen, aber wenn die Zähler-Variable geändert wird, wirkt sich das auch auf die nächsten Durchläufe aus.
setze [i v] auf (0) wiederhole (5) mal ändere [i v] um (1) ... end
Siehe auch
[wiki=de:Wiederhole für jedes () in () (Block)]Wiederhole für jedes () in () (Block)[/wiki]