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
Nächste ÜberarbeitungBeide Seiten der Revision
einstieg:geschachtelt:start [2020/06/26 10:14] – [Beispiel 2: Stern-Dreieck] Martin Pabsteinstieg:geschachtelt:start [2020/07/08 16:19] Martin Pabst
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 152: Zeile 168:
 Bisher können wir zwar nur Zeichen auf dem Bildschirm ausgeben (Computergrafik und Spieleprogrammierung kommt auch noch, versprochen!), damit lassen sich aber auch richtig schöne Bilder zeichnen [[https://www.asciiart.eu/|(Stichwort "ASCII-Art", siehe hier)]]. Wir beginnen mit einem einfachen Dreieck. Bisher können wir zwar nur Zeichen auf dem Bildschirm ausgeben (Computergrafik und Spieleprogrammierung kommt auch noch, versprochen!), damit lassen sich aber auch richtig schöne Bilder zeichnen [[https://www.asciiart.eu/|(Stichwort "ASCII-Art", siehe hier)]]. Wir beginnen mit einem einfachen Dreieck.
 <code> <code>
-+* 
-** +** 
-*** +*** 
-****+****
 ***** *****
 ****** ******
 +*******
 ******** ********
 +*********
 +**********
 +***********​
 +************
 </code> </code>
  
Zeile 166: Zeile 187:
  
 <script type="text/plain" title="Main.java"> <script type="text/plain" title="Main.java">
-for(int zeile = 1; zeile <= 12; zeile++){ +for(int reihe = 1; reihe <= 12; reihe++){ 
-   for(int spalte = 1; spalte <= zeile; spalte++){+   for(int spalte = 1; spalte <= reihe; spalte++){
       print("*");       print("*");
    }    }
Zeile 177: Zeile 198:
 </HTML> </HTML>
  
-<WRAP center round tip 80%> +===== Aufgaben: ===== 
-Der Wert der Variable 'e' bestimmt die Einmaleinsreihe, die ausgegeben wird. \\ \\  +1. Ändere das Programm so abdass die Pyramide auf dem Kopf steht, also so: 
-**Probiere es aus,** indem Du die ''6'' in Zeile 1 abänderst und das Programm neu startest! Führe das Programm auch mal in Einzelschritten aus ("Step over": {{:klassen1:anwenden:step_over.png?nolink|}}) und sieh' Dir im Variablen-Tab an, welche Werte die Variablen ''e'' und ''i'' während des Programmablaufs annehmen! +<code> 
-</WRAP>+************​ 
 +***********​ 
 +********** 
 +********* 
 +******** 
 +******* 
 +****** 
 +***** 
 +**** 
 +*** 
 +** 
 +* 
 +</code>
  
-Um die komplette Einmaleinstabelle auszugeben, müssen wir den obigen Programmteil zuerst für ''e == 1'' ausführen, dann für ''e == 2'', usw.:+[[.loesungen:aufgabe1:start|Hier geht's zur Lösung!]]
  
-<HTML>+<hidden Lösung> 
 +<code learnj>
  
-<div class="java-online" style="height300px; width100%" data-java-online="{'withBottomPanel': false, 'id': 'Schachteln2'}">+</code> 
 +</hidden> 
 + \\  
 +2. Ändere das Programm so ab, dass die Pyramide zentriert erscheint, also so: 
 +<code> 
 +      * 
 +     *** 
 +    ***** 
 +   ******* 
 +  ********* 
 + *********** 
 +</code> 
 +**Tipps:** 
 +  * Jede Reihe besteht jetzt aus einer ungeraden Anzahl von Sternen. Die Variable ''reihe'' soll also nicht die Werte 1, 2, 3, ... annehmen, sondern die Werte 1, 3, 5, ... 
 +  * Vor jeder Reihe von Sternen stehen unterschiedlich viele Leerzeichen. Wie kann man die Anzahl der Leerzeichen aus der Anzahl der Sterne ( = Reihennummer) berechnen? Dazu eine Hilfstabelle:
  
-<script type="text/plain" title="Main.java"> +^ Reihe ^ Anzahl von Sternen ^ Anzahl von Leerzeichen ^ 
-int e = 1+|1|1|6| 
-for(int i = 1; i <= 10; i++){ +|3|3|5| 
-   print(e * i + " "); +|5|5|7| 
-} +...
-println();+
  
-e = 2; + \\  
-for(int i = 1; i <= 10; i++){ +[[.pyramidezentriert:start|Hier geht's zur Lösung!]]
-   print(e * i + " "); +
-+
-println();+
  
-e = 3; 
-for(int i = 1; i <= 10; i++){ 
-   print(e * i + " "); 
-} 
-println(); 
- 
-e = 4; 
-for(int i = 1; i <= 10; i++){ 
-   print(e * i + " "); 
-} 
-println(); 
- 
-e = 5; 
-for(int i = 1; i <= 10; i++){ 
-   print(e * i + " "); 
-} 
-println(); 
- 
-e = 6; 
-for(int i = 1; i <= 10; i++){ 
-   print(e * i + " "); 
-} 
-println(); 
- 
-e = 7; 
-for(int i = 1; i <= 10; i++){ 
-   print(e * i + " "); 
-} 
-println(); 
- 
-e = 8; 
-for(int i = 1; i <= 10; i++){ 
-   print(e * i + " "); 
-} 
-println(); 
- 
-e = 9; 
-for(int i = 1; i <= 10; i++){ 
-   print(e * i + " "); 
-} 
-println(); 
- 
-e = 10; 
-for(int i = 1; i <= 10; i++){ 
-   print(e * i + " "); 
-} 
-</script> 
-</div> 
- 
-</HTML> 
- 
-<WRAP center round todo 80%> 
-**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: 
-  * 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**. 
-  * Das Programm **belegt sehr viel Speicherplatz**.  
- \\ \\  
-Es muss doch möglich sein, den Computer anzuweisen, den Programmblock aus dem ersten Beispiel oben einfach 10-mal zu wiederholen! 
-</WRAP> 
- 
-== Bessere Lösung: zwei ineinandergeschachtelte Schleifen == 
-<HTML> 
- 
-<div class="java-online" style="height: 200px; width: 100%" data-java-online="{'withBottomPanel': false, 'id': 'Schachteln3'}"> 
- 
-<script type="text/plain" title="Main.java"> 
-for(int e = 1; e <= 10; e++){ 
-   for(int i = 1; i <= 10; i++){ 
-      print(e * i + " "); 
-   } 
-   println(); 
-} 
-</script> 
-</div> 
- 
-</HTML> 
- 
-<WRAP center round tip 80%> 
-Schiebe den Geschwindigkeitsregler (neben dem Startbutton) auf ca. 6 Schritte pro Sekunde und führe das Programm aus. Wenn das Programm langsam genug ausgeführt wird, wird die gerade ausgeführte Anweisung jeweils grün hinterlegt.  
-  * Beobachte, nach welchem Muster der grüne Balken sich durchs Programm bewegt!  
-  * Führe das Programm auch im Einzelschritt bei geöffnetem Tab "Variablen" aus und schau' Dir bei jedem Schritt die Werte der Variablen e und i an! 
-</WRAP> 
  
einstieg/geschachtelt/start.txt · Zuletzt geändert: 2021/12/29 11:29 von 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki