Lernpfad:Einführung in Processing/13: Unterschied zwischen den Versionen

keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(15 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{{NNavigation}}
{{NNameAnzeigen}}{{NNavigation}}


{{Tldr:Start|Was du in diesem Schritt lernst|Icon=Icon Chalk board.png}}
{{Tldr:Start|Was du in diesem Schritt lernst|Icon=Icon Chalk board.png}}
* ''Bedingte Schleifen''
* ''Bedingte Schleifen''
* ''Zählschleifen''
* ''Zählschleifen''
* ''verschachtelte'' Schleifen
{{Tldr:End}}
{{Tldr:End}}


Zeile 41: Zeile 42:
</pre>
</pre>


Wichtig ist hier Zeile 6: Die Schleife läuft solange, bis <code>x</code> größer oder gleich <code>100</code> ist. Wenn Zeile 6 nicht wäre, würde sich <code>x</code> nicht verändern und immer <code>1</code> bleiben. In dem Fall würde das Programm ''unendlich lange'' laufen und niemals enden.
Wichtig ist hier Zeile 6: Die Schleife läuft so lange, bis <code>x</code> größer oder gleich <code>100</code> ist. Wenn Zeile 6 nicht wäre, würde sich <code>x</code> nicht verändern und immer <code>1</code> bleiben. In dem Fall würde das Programm ''unendlich lange'' laufen und niemals enden.


{{Aufgabe:Start}}
{{Aufgabe:Start}}
Kopiere das Programm nach {{Processing}} und probiere es mit Hilfe des ''Debuggers'' aus.
Kopiere das Programm nach {{Processing}} und probiere es mithilfe des ''Debuggers'' aus.


Klicke dazu den runden grauen Button oben rechts an (der etwas aussieht wie ein Käfer). {{Processing}} wechselt in den Debug-Modus. Nun kannst du das Programm ''schrittweise'' ablaufen lassen. Markiere dazu Zeile 4 als ''Breakpoint'', indem du links auf die Zeilennummer klickst (die Nummer wird zu einem "Diamanten"). Wenn du nun das Programm startest stoppt die Ausführung in Zeile 5 und zeigt dir im ''Debug-Fenster'' die Werte aller Variablen an.
Klicke dazu den runden grauen Button oben rechts an (der etwas aussieht wie ein Käfer). {{Processing}} wechselt in den Debug-Modus. Nun kannst du das Programm ''schrittweise'' ablaufen lassen. Markiere dazu Zeile 4 als ''Breakpoint'', indem du links auf die Zeilennummer klickst (die Nummer wird zu einem "Diamanten"). Wenn du jetzt das Programm startest, stoppt die Ausführung in Zeile 5 und zeigt dir im ''Debug-Fenster'' die Werte aller Variablen an.


Klicke nun den ''Weiter'' Button mehrmals und beobachte die Veränderung der Werte im kleinen ''Debug-Fenster''.
Klicke nun den ''Weiter'' Button mehrmals und beobachte die Veränderung der Werte im kleinen ''Debug-Fenster''.
Zeile 53: Zeile 54:
{{Aufgabe:Start}}
{{Aufgabe:Start}}
# Gib alle geraden Zahlen von 2 bis 100 auf der Konsole aus.
# Gib alle geraden Zahlen von 2 bis 100 auf der Konsole aus.
# Zeichnen drei Quadrate nebeneinander. Das erste liegt bei <code>(10, 40)</code> und ist 20x20 Pixel groß. Das nächste liegt mit 10 Pixeln Abstand rechts daneben, das dritte wieder 10 Pixel rechts davon.
# Zeichnen drei Quadrate nebeneinander. Das Erste liegt bei <code>(10, 40)</code> und ist 20x20 Pixel groß. Das nächste liegt mit 10 Pixeln Abstand rechts daneben, das dritte wieder 10 Pixel rechts davon.
#: Verwende eine While-Schleife, so dass mit einer kleinen Änderung auch 5 oder 2 Quadrate gezeichnet werden können.
#: Verwende eine <code>while</code>-Schleife, sodass mit einer kleinen Änderung auch 5 oder 2 Quadrate gezeichnet werden können.
{{Aufgabe:End}}
{{Aufgabe:End}}
{{Lösung:Start}}
{{Lösung:Start}}
Zeile 67: Zeile 68:
== Zählschleifen ==
== Zählschleifen ==


Die Aufgaben oben haben alle einen ähnlichen Aufbau: Sie zählen in einer Variable von einem ''Anfangswert'' bis zu einem ''Zielwert'' mit einer festgelegten ''Schrittweite''. Da diese Art der Schleife beim Programmieren sehr häufig vorkommt, gibt es dafür ein eigenes Konstrukt: Die ''Zählschleife''.
Die Aufgaben oben haben alle einen ähnlichen Aufbau: Sie zählen in einer Variable von einem ''Anfangswert'' bis zu einem ''Zielwert'' mit einer festgelegten ''Schrittweite''. Da diese Art der Schleife beim Programmieren regelmäßig vorkommt, gibt es dafür ein eigenes Konstrukt: die ''Zählschleife''.


Eine Zählschleife (oder auch <code>for</code>-Schleife) bringt alle drei Teile zusammen:
Eine Zählschleife (oder auch <code>for</code>-Schleife) bringt alle drei Teile zusammen:
Zeile 99: Zeile 100:


{{Aufgabe:Start}}
{{Aufgabe:Start}}
# Probiere diese Programm aus und erkläre seine Funktion. Was sind ''Startwert'', ''Zielwert'' und ''Schrittweite''?
# Probiere dieses Programm aus und erkläre seine Funktion. Was sind ''Startwert'', ''Zielwert'' und ''Schrittweite''?
#: <syntaxhighlight lang="java" line="1">
#: <syntaxhighlight lang="java" line="1">
for (int x = 0; x < 100; x = x + 10) {
for (int x = 0; x < 100; x = x + 10) {
Zeile 204: Zeile 205:
size(200, 200);
size(200, 200);


for( int i = 0; i < 10; i += 1 ) {
for( int i = 0; i < 5; i += 1 ) {
     for( int j = 0; j < 10; j += 1 ) {
     for( int j = 0; j < 5; j += 1 ) {
         if( (i+j)%2 == 0 ) {
         if( (i+j)%2 == 0 ) {
           fill(0);
           fill(0);
Zeile 239: Zeile 240:
         rect(i*40, j*40, 40, 40);
         rect(i*40, j*40, 40, 40);
     }
     }
}
</syntaxhighlight>
{{Lösung:End}}
{{Aufgabe:Start}}
# Erstelle ein Programm, dass für die Zahlen Eins bis Zehn die Produkte mit den Zahlen Eins bis Zehn ausgibt (also das kleine Einmaleins).
#: <code>1*1=1, 1*2=2, 1*3=3, ..., 1*10=10, 2*1=2, 2*2=4, 2*3=6, ..., 10*10=100</code>
#
## Fülle eine <code>400x400</code>-Pixel Große Zeichenfläche reihen- und spaltenweise mit roten Kreisen.
##: [[Bild:Processing_Kreismuster.jpg|200px]]
## Modifiziere das Programm so, dass jede zweite Spalte grüne Kreise enthält.
##: [[Bild:Processing_Kreismuster_2.jpg|200px]]
{{Aufgabe:End}}
{{Lösung:Start|Lösung Aufgabe 1}}
<syntaxhighlight lang="java" line="1">
for( int i = 1; i <= 10; i += 1 ) {
  for( int j = 1; j <= 10; j += 1 ) {
    int produkt = i*j;
    println(i+"*"+j+"="+produkt);
  } 
}
</syntaxhighlight>
{{Lösung:End}}
{{Lösung:Start|Lösung Aufgabe 2}}
<syntaxhighlight lang="java" line="1">
void setup() {
  size(400, 400);
}
void draw() {
  fill(236, 48, 0);
  for ( int i = 0; i < 10; i += 1 ) {
    for ( int j = 0; j < 10; j += 1 ) {
      ellipse(20 + i*40, 20 + j*40, 30, 30);
    }
  }
}
</syntaxhighlight>
{{Lösung:End}}
{{Lösung:Start|Lösung Aufgabe 3}}
<syntaxhighlight lang="java" line="1">
void setup() {
  size(400, 400);
}
void draw() {
  for ( int i = 0; i < 10; i += 1 ) {
    for ( int j = 0; j < 10; j += 1 ) {
      if ( i%2 == 1 ) {
        fill(0, 198, 48);
      } else {
        fill(236, 48, 0);
      }
      ellipse(20 + i*40, 20 + j*40, 30, 30);
    }
  }
}
</syntaxhighlight>
{{Lösung:End}}
{{Zusatzaufgabe:Start}}
Erstelle ein ''radiales'' Muster dieser Art:
[[Bild:Processing_Kreise_radial.jpg|200px]]
Verwende auch hier verschachtelte Schleifen. Die erste bestimmt den Abstand zum Mittelpunkt, die zweite den Winkel. Nutze dann <code>sin()</code> zur Berechnung der <code>x</code>- und <code>cos()</code> für die <code>y</code>-Koordinate.
{{Zusatzaufgabe:End}}
{{Tipp:Start|Tipp zur Zusatzaufgabe}}
Für den nullten Kreis und den Winkel 135 Grad könntest du die Koordinaten berechnen durch:
* x: <code>i*60*sin(radians(135))</code>
* y: <code>i*60*cos(radians(135))</code>
<code>60</code> ist der Abstand zwischen zwei Ringen. Der Winkel beginnt bei 0 und zählt bis 360 hoch. Die Schrittweite wird anhand der Anzahl Kreise pro Ring bestimmt. Bei Acht Kreisen: <code>360 / 8 = 45</code>.
{{Tipp:End}}{{Lösung:Start|Lösung Zusatzaufgabe}}
<syntaxhighlight lang="java" line="1">
void setup() {
  size(400, 400);
}
void draw() {
  for ( int i = 0; i <= 3; i += 1 ) {
    for ( int j = 0; j < 360; j += 45 ) {
      ellipse(200+i*60*sin(radians(j)), 200+i*60*cos(radians(j)), 30, 30);
    }
  }
}
}
</syntaxhighlight>
</syntaxhighlight>
{{Lösung:End}}
{{Lösung:End}}
8.581

Bearbeitungen