Benutzer-Werkzeuge

Webseiten-Werkzeuge


einstieg:geschachtelt:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
einstieg:geschachtelt:start [2020/06/26 10:30] – [Beispiel 2: Stern-Dreieck] Martin Pabsteinstieg:geschachtelt:start [2021/12/29 11:29] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
-====== Ineinandergeschachtelte Schleifen ======+====== Ineinandergeschachtelte Wiederholungen ("Schleifen"/"Loops"======
  
-Es kommt häufig vor, dass ein Programmteil wiederholt werden muss, in dem selbst schon eine Schleife steckt. Das ist kein Problem, denn Schleifen kann man beliebig ineinander schachteln. Wofür das gut ist und wie es geht, zeige ich Dir am besten an ein paar Beispielen.+Es kommt häufig vor, dass ein Programmteil wiederholt werden muss, in dem selbst schon eine Wiederholung steckt. Wofür das gut ist und wie es geht, zeige ich Dir am besten an ein paar Beispielen.
  
 ===== Beispiel 1: Einmaleinstabelle ===== ===== Beispiel 1: Einmaleinstabelle =====
Zeile 116: Zeile 116:
 <WRAP center round todo 80%> <WRAP center round todo 80%>
 **War's das schon?** \\ \\ **War's das schon?** \\ \\
-Eigentlich ist die Aufgabe jetzt schon gelöst: Die Einmaleinstabelle wird korrekt ausgegeben. Trotzdem hoffe ich, dass Ihr mit der gefundenen Lösung genauso unzufrieden seid wie ich:+Eigentlich ist die Aufgabe jetzt schon gelöst: Die Einmaleinstabelle wird korrekt ausgegeben. Trotzdem hoffe ich, dass Ihr mit der gefundenen Lösung **genauso unzufrieden seid wie ich**:
   * Der Code ist hochgradig **[[https://de.wikipedia.org/wiki/Redundanz_(Kommunikationstheorie)|redundant]]**.    * Der Code ist hochgradig **[[https://de.wikipedia.org/wiki/Redundanz_(Kommunikationstheorie)|redundant]]**. 
-  * Wenn wir später in der for-Schleife etwas ändern wollen (z.B. weil wir einen Fehler entdeckt haben), dann müssen wir es **10-Mal ausbessern**.+  * Wenn wir später in der for-loop etwas ändern wollen (z.B. weil wir einen Fehler entdeckt haben), dann müssen wir es **10-Mal ausbessern**.
   * Das Programm **belegt sehr viel Speicherplatz**.    * Das Programm **belegt sehr viel Speicherplatz**. 
  \\ \\   \\ \\ 
Zeile 124: Zeile 124:
 </WRAP> </WRAP>
  
-== Bessere Lösung: zwei ineinandergeschachtelte Schleifen ==+===== Saubere Lösung: zwei ineinandergeschachtelte for-loops =====
 <HTML> <HTML>
  
Zeile 147: Zeile 147:
 </WRAP> </WRAP>
  
 +<WRAP center round todo 60%>
 +Die Tabelle sieht noch nicht perfekt aus, weil die Zahlen unterschiedlich breit sind:
 +<code>
 +1 2 3 4 5 6 7 8 9 10 ​
 +2 4 6 8 10 12 14 16 18 20
 +3 6 9 12 15 18 21 24 27 30
 +4 8 12 16 20 24 28 32 36 40
 +5 10 15 20 25 30 35 40 45 50
 +6 12 18 24 30 36 42 48 54 60
 +7 14 21 28 35 42 49 56 63 70
 +8 16 24 32 40 48 56 64 72 80
 +9 18 27 36 45 54 63 72 81 90
 +10 20 30 40 50 60 70 80 90 100
 +</code>
 +Im Kapitel zur Wenn-Dann-Anweisung werden wir [[wenndann:if:start#beispiel_2verbesserung_der_einmaleinstabelle|das Programm noch verbessern.]]
 +</WRAP>
  
  
Zeile 182: Zeile 198:
 </HTML> </HTML>
  
-== Aufgabe: ==+===== Aufgaben zum Stern-Dreieck=====
 1. Ändere das Programm so ab, dass die Pyramide auf dem Kopf steht, also so: 1. Ändere das Programm so ab, dass die Pyramide auf dem Kopf steht, also so:
 <code> <code>
Zeile 198: Zeile 214:
 * *
 </code> </code>
-<hidden Lösung+ 
-<code learnj> +[[.loesungen:aufgabe1:start|Hier geht's zur Lösung!]] 
-for(int reihe = 1; reihe <= 12; reihe++){ +
-   for(int spalte = 1; spalte <= 13 - reihe; spalte++){ +
-      print("*"); +
-   } +
-   println(); +
-+
-</code> +
-</hidden>+
  \\   \\ 
 2. Ändere das Programm so ab, dass die Pyramide zentriert erscheint, also so: 2. Ändere das Programm so ab, dass die Pyramide zentriert erscheint, also so:
Zeile 228: Zeile 237:
 ... ...
  
-<hidden Lösung+ \\  
-<code learnj> +[[.pyramidezentriert:start|Hier geht's zur Lösung!]]
-for(int reihe = 1; reihe <= 12; reihe += 2) {+
  
-   for(int spalte 1; spalte <= (13 - reihe)/2spalte++) { +===== Beispiel 3: Grafik ===== 
-      print(" ")+Die Erzeugung von Grafikobjekten lernen wir [[klassen1:anwenden:start|erst etwas später]], trotzdem glaube ich, dass Du das folgende Beispiel bestimmt schon verstehen kannst. Nur so viel: 
-   }+<code myjava> 
 +new Circle(300, 200, 100); 
 +</code> 
 +erzeugt ein Kreis-Objekt mit Mittelpunkt $(300,200)$ und Radius 100.
  
-   for(int spalte = 1; spalte <= reihe; spalte++) { +<HTML> 
-      print("*");+ 
 +<div class="java-online" style="height: 250px; width: 100%" data-java-online="{'withBottomPanel': false, 'id': 'Schachteln2'}"> 
 + 
 +<script type="text/plain" title="Main.java"> 
 +for(int zeile = 1; zeile <= 15; zeile++){ 
 +   for(int spalte = 1; spalte <= 16 - zeile; spalte++){ 
 +      new Circle(30*spalte, 30*zeile, (spalte + zeile)*1.2); 
 +      new Circle(30*(16-spalte), 30*(16-zeile), (spalte + zeile)*1.2);
    }    }
-   println(); 
 } }
-</code+</script
-</hidden>+</div> 
 + 
 +</HTML> 
 + \\  
 + 
  
  
 +===== Weitere Aufgaben =====
 +[[.geschachteltewh:weitereaufgaben:start|Weitere Aufgaben zu geschachtelten Wiederholungen findest Du hier.]]
einstieg/geschachtelt/start.1593160247.txt.gz · Zuletzt geändert: 2021/12/29 11:29 (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki