g9:uebungen:kontrollstrukturen:start
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungLetzte ÜberarbeitungBeide Seiten der Revision | ||
g9:uebungen:kontrollstrukturen:start [2021/01/20 19:24] – [A. while-loop (Wiederholung mit Anfangsbedingung)] Martin Pabst | g9:uebungen:kontrollstrukturen:start [2022/06/30 07:13] – Martin Pabst | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== | + | ====== |
- | ===== Sequenz, lokale Variablen | + | |
< | < | ||
Zeile 21: | Zeile 20: | ||
</ | </ | ||
- | ====== | + | ====== |
- | + | ==== Beispiel 1 ==== | |
- | + | ||
- | ====== A. Wiederholung mit Anfangsbedingung ====== | + | |
- | + | ||
- | ===== Beispiel 1 ===== | + | |
Wir schreiben den Text "Hallo Welt!" 10-mal untereinander in die Ausgabe. Zuerst möchte ich Euch zeigen, wie man es **nicht** machen sollte: | Wir schreiben den Text "Hallo Welt!" 10-mal untereinander in die Ausgabe. Zuerst möchte ich Euch zeigen, wie man es **nicht** machen sollte: | ||
< | < | ||
Zeile 73: | Zeile 68: | ||
Schalte rechts auf den " | Schalte rechts auf den " | ||
- | == Erklärung der einzelnen Anweisungen == | + | ==== Beispiel 2: Varianten... ==== |
- | <code learnj [enable_line_numbers=" | + | |
- | int n = 1; | + | |
- | </ | + | |
- | Die Variable '' | + | |
- | <code learnj [enable_line_numbers=" | + | |
- | while(n <= 10){ | + | |
- | | + | |
- | n = n + 1; | + | |
- | } | + | |
- | </ | + | |
- | Die Anweisung '' | + | |
- | <code learnj [enable_line_numbers=" | + | |
- | println(" | + | |
- | </ | + | |
- | Sobald die Bedingung hinter '' | + | |
- | + | ||
- | + | ||
- | + | ||
- | <WRAP center round info 60%> | + | |
- | Mit Hilfe der '' | + | |
- | <code learnj> | + | |
- | while(Bedingung){ | + | |
- | // | + | |
- | } | + | |
- | </ | + | |
- | Die Anweisungen werden wiederholt, solange die Bedingung zutrifft, also den Wert '' | + | |
- | **Beachte: | + | |
- | Schon vor der Ersten Ausführung der Anweisungen wird überprüft, | + | |
- | </ | + | |
- | == Kleine Aufgabe == | + | |
- | Ändere das Programm oben so ab, dass es 8-mal Deinen Namen in Deiner Lieblingsfarbe ausgibt! | + | |
- | + | ||
- | ===== Beispiel 2: Varianten... ===== | + | |
- | Eine while-loop kann nicht nur immer wieder exakt dasselbe wiederholen. Man kann beispielsweise die Zählvariable benutzen, um auszugeben, wie oft schon wiederholt wurde: | + | |
< | < | ||
<div class=" | <div class=" | ||
Zeile 131: | Zeile 92: | ||
</ | </ | ||
- | <WRAP center round tip 60%> | + | ==== Beispiel 3: Erzeugen vieler Objekte |
- | **Addieren von Zeichenketten** \\ \\ | + | |
- | In Java bewirkt der Operator '' | + | |
- | Wird eine Variable vom Datentyp '' | + | |
- | <code learnj> | + | |
- | int z = 12; | + | |
- | println(" | + | |
- | </ | + | |
- | gibt also aus: Das ist die Zahl 12. | + | |
- | </ | + | |
- | + | ||
- | ===== Beispiel 3: Zweierpotenzen ===== | + | |
Oft ist es nützlich, noch zusätzliche Variablen zu deklarieren, | Oft ist es nützlich, noch zusätzliche Variablen zu deklarieren, | ||
< | < | ||
Zeile 148: | Zeile 98: | ||
<script type=" | <script type=" | ||
int i = 0; | int i = 0; | ||
- | int zp = 1; | ||
- | |||
- | while(i <= 10){ | ||
- | |||
- | | ||
- | | ||
- | zp *= 2; // Kurzform für zp = zp * 2; | ||
+ | while (i <= 10) { | ||
+ | new Circle(20 + 50*i, 300, 20); | ||
+ | i++; | ||
} | } | ||
</ | </ | ||
Zeile 169: | Zeile 115: | ||
</ | </ | ||
- | ===== Aufgaben | + | ==== Aufgaben ==== |
- | Jetzt bis Du dran. [[.aufgabenwhile: | + | Jetzt bis Du dran. [[:einstieg:aufgabenwhile: |
- | + | ||
- | + | ||
- | ====== B. Die while-loop mit Endbedingung (Wiederholung mit Endbedingung) ====== | + | |
- | Man kann die '' | + | |
- | + | ||
- | ===== Beispiel 5: while-loop mit Endbedingung (do...while-loop) ===== | + | |
- | Wir zählen wieder von 1 bis 10: | + | |
- | < | + | |
- | <div class=" | + | |
- | <script type=" | + | |
- | int i = 0; | + | |
- | + | ||
- | do { | + | |
- | + | ||
- | | + | |
- | | + | |
- | + | ||
- | } while (i <= 10); | + | |
- | </ | + | |
- | </ | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | + | ||
- | ====== C. Die for-loop====== | + | |
- | Die '' | + | |
- | * Zum bloßen Zählen ist sie sehr umständlich, | + | |
- | <code learnj> | + | |
- | int i = 0; // Deklaration der Zählvariable | + | |
- | while(i <= 10){ // Bedingung | + | |
- | // Anweisungen | + | |
- | | + | |
- | } | + | |
- | </ | + | |
- | * Oft stehen zwischen der Deklaration der Zählvariable und der Bedingung sowie zwischen der Bedingung und der Erhöhung der Zählvariable sehr viele Anweisungen und es ist schwer, "auf einen Blick" zu erfassen, wie oft wiederholt wird und welche Werte die Zählvariable bei jedem Wiederholungsschritt annimmt. | + | |
- | + | ||
- | Für alle Anwendungsfälle, | + | |
- | + | ||
- | ^ While-loop ^ For-loop ^ | + | |
- | | {{: | + | |
- | + | ||
- | <WRAP center round info 60%> | + | |
- | Die '' | + | |
- | <code learnj> | + | |
- | // Anweisungen | + | |
- | } | + | |
- | </ | + | |
- | * Die **Startanweisung** wird genau 1-mal zu Beginn aufgerufen. | + | |
- | * Die **Bedingung** wird vor jedem Wiederholungsschritt ausgewertet. Ist ihr Wert '' | + | |
- | * Die **Anweisung am Ende jedes Wiederholungsschrittes** wird am Ende jedes Wiederholungsschrittes ausgeführt. | + | |
- | Für Einsteiger ist die '' | + | |
- | <code learnj> | + | |
- | for(int i = 0; i < 10; i++){ | + | |
- | // Anweisungen | + | |
- | } | + | |
- | </ | + | |
- | Dieses Muster (das in diesem Fall die Anweisungen für '' | + | |
- | </ | + | |
- | + | ||
- | Führe die folgenden Programme in Einzelschritten aus ("Step over": {{: | + | |
- | * zunächst mit offenem Tab " | + | |
- | * dann mit offenem Tab " | + | |
- | Beobachte genau, was jeder Einzelne Programmschritt bewirkt! | + | |
- | + | ||
- | ===== Beispiel 6: Zählen mit " | + | |
- | Wir schreiben den Text "Hallo Welt!" 10-mal untereinander in die Ausgabe. Mit der Variablen '' | + | |
- | < | + | |
- | + | ||
- | <div class=" | + | |
- | + | ||
- | <script type=" | + | |
- | for(int i = 1; i <= 10; i++){ | + | |
- | | + | |
- | } | + | |
- | println(" | + | |
- | </ | + | |
- | </ | + | |
- | + | ||
- | </ | + | |
- | + | ||
- | == Erklärung == | + | |
- | Die '' | + | |
- | ^Anweisung^Erklärung^Wert von '' | + | |
- | |'' | + | |
- | |Prüfe: Ist '' | + | |
- | |'' | + | |
- | |'' | + | |
- | |Prüfe: Ist '' | + | |
- | |'' | + | |
- | |'' | + | |
- | + | ||
- | usw... \\ \\ Die letzten Schritte sehen so aus: | + | |
- | |'' | + | |
- | |'' | + | |
- | |Prüfe: Ist '' | + | |
- | |'' | + | |
- | |'' | + | |
- | |Prüfe: Ist '' | + | |
- | |'' | + | |
- | + | ||
- | + | ||
- | ===== Beispiel 7: Zählen im Dreierschritt ===== | + | |
- | + | ||
- | < | + | |
- | + | ||
- | <div class=" | + | |
- | + | ||
- | <script type=" | + | |
- | println(" | + | |
- | for(int n = 3; n <= 30; n += 3){ | + | |
- | | + | |
- | } | + | |
- | println(" | + | |
- | </ | + | |
- | </ | + | |
- | + | ||
- | </ | + | |
- | <WRAP center round tip 60%> | + | |
- | Du erinnerst Dich sicher: '' | + | |
- | </ | + | |
- | + | ||
- | + | ||
- | ===== Beispiel 8: Berechnung von 8! ===== | + | |
- | <WRAP center round tip 80%> | + | |
- | **Berechnung von Fakultäten** \\ \\ | + | |
- | Die **Faktultät** einer Zahl $n \in \mathbb{N}$, | + | |
- | $$n! = 1 \cdot 2 \cdot 3 \cdot 4 \cdot \ldots | + | |
- | Es ist beispielsweise $5! = 1 \cdot 2 \cdot 3 \cdot 4 \cdot 5 = 120$. | + | |
- | </ | + | |
- | + | ||
- | < | + | |
- | + | ||
- | <div class=" | + | |
- | + | ||
- | <script type=" | + | |
- | int zahl = 8; | + | |
- | int fakultät = 1; | + | |
- | + | ||
- | for(int i = 1; i <= zahl; i++){ | + | |
- | | + | |
- | } | + | |
- | + | ||
- | println(zahl + "! = " + fakultät); | + | |
- | </ | + | |
- | </ | + | |
- | </ | + | |
- | Probiere das Programm wieder in Einzelschritten aus und schau' Dir die Belegung der Variablen nach jedem Schritt an! | ||
- | * Du kannst die '' | ||
- | * Warum wird der Variablen '' | ||
- | ==== Aufgaben zur for-Loop ==== | ||
- | [[.aufgabenfor: |
g9/uebungen/kontrollstrukturen/start.txt · Zuletzt geändert: 2022/07/01 08:29 von Martin Pabst