K-EL/Schleifen/Zählschleifen

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Java</language>
= Zählschleifen =

<language>Java</language>
== Einführung ==

Das folgende Beispiel zeigt eine Zählschleife in Aktion:
Das Programm gibt einfach die ersten zehn natürlichen Zahlen aus.
<run id="4fd9088290651">
  int i;
  for(i = 1; i <= 10; i = i + 1) {
    System.out.println(i);
  }
</run>

Wir erinnern uns nocheinmal an den allgemeinen Aufbau einer Zählschleife:

for(STARTWERT; ENDWERT; SCHRITTWEITE);

Startwert: $ i = 1 $
Endwert: $ i <= 10$
Schrittweite: $ i = i + 1$ 

Statt die Schrittweite mit $ i = i + 1$  anzugeben können wir auch verkürzt $ i++$  Schreiben:
<run id="4fd9088290760">
  int i;
  for(i = 1; i <= 10; i++) {
    System.out.println(i);
  }
</run>

$ i++$  erhöht einfach den Wert von $ i$  um 1:

<run id="4fd90882907de">
  int i = 0;
  System.out.println("i hat den Wert" + i);

  i++; // Wert von i um eins erhöhen
  System.out.println("Jetzt hat i den Wert " + i);

  i++; // Wert von i um eins erhöhen
  System.out.println("Jetzt hat i den Wert " + i);

  i++; // Wert von i um eins erhöhen
  System.out.println("Jetzt hat i den Wert " + i);
</run>

===Aufgabe===
(1) Schau dir folgenden Quelltext an und bearbeite die darunter aufgeführten Aufgaben:

<run id="4fd90e5ae3431">
int i;
for(i=0;0<10;i=i+1) {
  System.out.println(i)
}
</run>

* Verändere die Schrittweite der Schleife, indem du die 1 durch eien 2 [3, 4 ...] ersetzt. Was beobachtest du? Verändere ebenfalls Start- und Endwert.
* Verändere den Quelltext so, dass die Zahlen nun nicht von 0 bis 9, sondern in umgekehrter Reihenfolge ausgegeben werden. [Tipp: Neben $i++$ gibt es auch $i--$]
* Verändere den Quelltext so, dass bei einer geraden Zahl "[akt. Wert von i] ist eine gerade Zahl" und sonst "[akt. Wert von i] ist eine ungerade Zahl". 
[Hinweis: Nutze für die Bedingung der Verzweigung die Division mit Rest. $i%2$ berechnet den Rest bei der Division des Wertes von i durch 2. Der Rest ist 0, wenn i gerade ist, sonst 1.]


(2) Es sollen die Zahlen von 1 bis 100 in 10er Reihen tabellarisch ausgegeben werden:

<pre>
 1  2  3  4  5  6  7  8  9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 ...
</pre>

== Muster ==

Mit Schleifen kann man neben allerlei sinnvollen Sachen auch schicke, weniger sinnvolle Muster kreieren:

[[Bild:Elephan_MusterSterne.png]]

<run id="4fd90ca5a7e8b">
int i;
int k;
for (i=1; i<10; i++) {
  for(k=1; k<=i; k++) { // Diese Schleife wird insgesamt i-mal durchlaufen
    System.out.print('*'); // Mit der zweiten Schleife werden nun i Sterne nebeneinander gezeichnet
  }
  System.out.println(); // Am Ende der Zeile einen Zeilenumbruch
}
</run>

'''ACHTUNG:''' Bei ineinander geschachtelten Zählschleifen müssen die Zählvariablen (hier $i$ und $k$) unterschiedliche Variablennamen besitzen. 

=== Aufgaben ===
(1) Ändere den Quelltext so ab, dass folgendes Muster entsteht:
<pre>
*
**
***
****
***
**
*
</pre>
(2) Ändere den Quelltext nun so ab, dass ein Tannenbaum gezeichnet wird:
<pre>
     *   
    ***
   *****
  *******
 *********
***********
    ***
    ***
</pre>