Benutzer-Werkzeuge

Webseiten-Werkzeuge


einstieg:schleifen

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:schleifen [2020/07/12 14:34] – [Beispiel 5: while-Schleife mit Endbedingung (do...while-Schleife)] Martin Pabsteinstieg:schleifen [2022/11/04 19:58] (aktuell) – [C. Die for-loop] Martin Pabst
Zeile 1: Zeile 1:
-====== Wiederholungen ("Schleifen"/"Loops") ======+====== Wiederholungen ("Schleifen"/"Loops") ====== 
 Wenn man Anweisungen in ähnlicher Weise mehrfach wiederholen möchte, schreibt man sie nicht mehrfach hintereinander ins Programm, sondern nutzt Wiederholungen ("Schleifen"/"Loops"). Wenn man Anweisungen in ähnlicher Weise mehrfach wiederholen möchte, schreibt man sie nicht mehrfach hintereinander ins Programm, sondern nutzt Wiederholungen ("Schleifen"/"Loops").
-<WRAP center round tip 60%> +<WRAP center round tip 60%>  
-**Zur Begrifflichkeit:** \\  +**Zur Begrifflichkeit:** \\ \\  
-Der bayerische Lehrplan sieht den Begriff "Wiederholung" vor [[http://www.isb-gym8-lehrplan.de/contentserv/3.1.neu/g8.de/id_26436.html|(siehe etwa hier, ganz unten)]], gebräuchlich (auch in den Lehrplänen anderer Bundeslänger, [[https://www.schulentwicklung.nrw.de/lehrplaene/lehrplannavigator-s-ii/gymnasiale-oberstufe/informatik/hinweise-und-beispiele/schulinterner-lehrplan/uv_ef_iii.html|etwa Nordrhein-Westfalen]] sowie im beruflichen Umfeld von Informatikern) ist aber auch der Begriff "Schleife" als wörtliche Übersetzung des englischen Fachbegriffs "Loop". \\ Oft werden beide Begriffe synonym verwendet, etwa im [[http://www.bildungsplaene-bw.de/,Lde/LS/BP2016BW/ALLG/SEK1/INF7/IK/7/02|Informatiklehrplan von Baden-Württemberg]] oder in [[https://de.wikipedia.org/wiki/Schleife_(Programmierung)|Wikipedia]]. \\ \\ +Der bayerische Lehrplan sieht den Begriff "Wiederholung" vor [[http://www.isb-gym8-lehrplan.de/contentserv/3.1.neu/g8.de/id_26436.html|(siehe etwa hier, ganz unten)]], gebräuchlich (auch in den Lehrplänen anderer Bundesländer, [[https://www.schulentwicklung.nrw.de/lehrplaene/lehrplannavigator-s-ii/gymnasiale-oberstufe/informatik/hinweise-und-beispiele/schulinterner-lehrplan/uv_ef_iii.html|etwa Nordrhein-Westfalen]]sowie im beruflichen Umfeld von Informatikern) ist aber auch der Begriff "Schleife" als wörtliche Übersetzung des englischen Fachbegriffs "Loop". \\ \\  
-Selten (z.B. im [[https://www.schule.sachsen.de/lpdb/web/downloads/2345_lp_gy_informatik_2019.pdf?v2|sächsischen Lehrplan]]) findet sich auch der Begriff "Zyklus". \\ \\  +Oft werden beide Begriffe synonym verwendet, etwa im [[http://www.bildungsplaene-bw.de/,Lde/LS/BP2016BW/ALLG/SEK1/INF7/IK/7/02|Informatiklehrplan von Baden-Württemberg]] oder in [[https://de.wikipedia.org/wiki/Schleife_(Programmierung)|Wikipedia]]. \\ \\ 
-Aus der Diskussion um den deutschsprachigen Fachbegriff werde ich mich heraushalten, indem ich im Folgenden weitgehend das englische Fachwort "loop" verwende, das sich in Verbindung mit den englischen Schlüsselwörtern (z.B. "for-loop", "while-loop"ohnehin besser eignet.+Selten (z.B. im [[https://www.schule.sachsen.de/lpdb/web/downloads/2345_lp_gy_informatik_2019.pdf?v2|sächsischen Lehrplan]]) findet sich auch der Begriff "Zyklus". \\ \\   
 +Ich möchte mich aus der Diskussion um den deutschsprachigen Fachbegriff heraushalten, daher werde ich im Folgenden weitgehend das englische Fachwort "loop" verwenden, das vor allem in Verbindung mit den englischen Schlüsselwörtern (z.B. "for-loop", "while-loop"gebräuchlicher und griffiger ist als entsprechende deutsche Übersetzungen.
 </WRAP> </WRAP>
 + 
  
 ====== A. while-loop (Wiederholung mit Anfangsbedingung) ====== ====== A. while-loop (Wiederholung mit Anfangsbedingung) ======
Zeile 68: Zeile 69:
 } }
 </code> </code>
-Die Anweisung ''while(n <= 10)'' bedeutet: Wiederhole die Anweisungen zwischen den nachfolgenden ''{}'', solange ''n'' kleiner oder gleich ''10'' ist. Damit die Anweisungen nicht unendlich oft wiederholt werden, müssen wir dafür sorgen, dass die Aussage ''n <= 10'' irgendwann nicht mehr zutrifft. Deshalb erhöhen wir am Ende der des wiederholten Blocks ''n'' um ''1'', indem wir schreiben: ''n = n + 1;''.+Die Anweisung ''while(n < = 10)'' bedeutet: Wiederhole die Anweisungen zwischen den nachfolgenden ''{}'', solange ''n'' kleiner oder gleich ''10'' ist. Damit die Anweisungen nicht unendlich oft wiederholt werden, müssen wir dafür sorgen, dass die Aussage ''n < = 10'' irgendwann nicht mehr zutrifft. Deshalb erhöhen wir am Ende der des wiederholten Blocks ''n'' um ''1'', indem wir schreiben: ''n = n + 1;''.
 <code learnj [enable_line_numbers="true", start_line_numbers_at="10"]> <code learnj [enable_line_numbers="true", start_line_numbers_at="10"]>
 println("Fertig!", Color.green); println("Fertig!", Color.green);
Zeile 180: Zeile 181:
  
  
-====== C. Die for-Schleife ====== +====== C. Die for-loop====== 
-Die ''while''-Schleife hat zwei große Nachteile:+Die ''while''-loop hat zwei große Nachteile:
   * Zum bloßen Zählen ist sie sehr umständlich, da insgesamt drei Zeilen benötigt werden:   * Zum bloßen Zählen ist sie sehr umständlich, da insgesamt drei Zeilen benötigt werden:
 <code learnj> <code learnj>
Zeile 192: Zeile 193:
   * 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.   * 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, in denen auf irgendeine Art und Weise gezählt wird, verwendet man daher üblicherweise eine Kurzschreibweise der ''while''-Schleife, die ''for''-Schleife. Hier eine Gegenüberstellung der beiden. Beide Programme sind gleichwertig:+Für alle Anwendungsfälle, in denen auf irgendeine Art und Weise gezählt wird, verwendet man daher üblicherweise eine Kurzschreibweise der ''while''-loop, die ''for''-loop. Hier eine Gegenüberstellung der beiden. Beide Programme sind gleichwertig:
  
-^ While-Schleife ^ For-Schleife +^ While-loop ^ For-loop 
-| {{:einstieg:pasted:20200620-185526.png}} | {{:einstieg:pasted:20200620-185646.png}} |+| {{:einstieg:pasted:20200620-185526.png}} | {{:einstieg:pasted:20221104-195727.png}} |
  
 <WRAP center round info 60%> <WRAP center round info 60%>
-Die ''for''-Schleife ist eine Kurzform der ''while''-Schleife. Sie besteht aus drei Bestandteilen: \\ +Die ''for''-loop ist eine Kurzform der ''while''-loop. Sie besteht aus drei Bestandteilen: \\ 
 <code learnj>for(Startanweisung; Bedingung; Anweisung am Ende jedes Wiederholungsschrittes){ <code learnj>for(Startanweisung; Bedingung; Anweisung am Ende jedes Wiederholungsschrittes){
    // Anweisungen    // Anweisungen
 } }
 </code> </code>
-  * Die **Startanweisung** wird genau 1-mal zu Beginn der Schleife aufgerufen. +  * Die **Startanweisung** wird genau 1-mal zu Beginn aufgerufen. 
-  * Die **Bedingung** wird vor jedem Wiederholungsschritt ausgewertet. Ist ihr Wert ''true'', so werden die Anweisungen in den ''{}'' ausgeführt. Ist der Wert ''false'', so werden die Anweisungen in den ''{}'' übersprungen und es wird mit der Anweisung hinter der for-Schleife fortgefahren.+  * Die **Bedingung** wird vor jedem Wiederholungsschritt ausgewertet. Ist ihr Wert ''true'', so werden die Anweisungen in den ''{}'' ausgeführt. Ist der Wert ''false'', so werden die Anweisungen in den ''{}'' übersprungen und es wird mit der Anweisung hinter der for-loop fortgefahren.
   * Die **Anweisung am Ende jedes Wiederholungsschrittes** wird am Ende jedes Wiederholungsschrittes ausgeführt.   * Die **Anweisung am Ende jedes Wiederholungsschrittes** wird am Ende jedes Wiederholungsschrittes ausgeführt.
-Für Einsteiger ist die ''for''-Schleife oft schwer zu verstehen, weil ihre drei Bestandteile jeweils ganz unterschiedliche Bedeutung haben. Noch dazu ist der 1. und 3. Bestandteil eine Anweisung, der 2. Bestandteil eine Bedingung (genauer: eine Aussage). \\ \\ **Lass' Dich nicht entmutigen:** Meist wird die ''for''-Schleife zum **Zählen** benutzt und sieht so oder ähnlich aus:+Für Einsteiger ist die ''for''-loop oft schwer zu verstehen, weil ihre drei Bestandteile jeweils ganz unterschiedliche Bedeutung haben. Noch dazu ist der 1. und 3. Bestandteil eine Anweisung, der 2. Bestandteil eine Bedingung (genauer: eine Aussage). \\ \\ **Lass' Dich nicht entmutigen:** Meist wird die ''for''-loop zum **Zählen** benutzt und sieht so oder ähnlich aus:
 <code learnj> <code learnj>
-for(int i = 0; i < 10; i++){+for(int i = 1; i <10; i++){
    // Anweisungen    // Anweisungen
 } }
Zeile 237: Zeile 238:
  
 == Erklärung ==  == Erklärung == 
-Die ''for''-Schleife bewirkt, dass der Rechner folgendes macht:+Die ''for''-loop bewirkt, dass der Rechner folgendes macht:
 ^Anweisung^Erklärung^Wert von ''i'' nach der Anweisung^ ^Anweisung^Erklärung^Wert von ''i'' nach der Anweisung^
 |''int i = 1;''|Die Startanweisung wird genau ein Mal zu Beginn ausgeführt.|1| |''int i = 1;''|Die Startanweisung wird genau ein Mal zu Beginn ausgeführt.|1|
Zeile 306: Zeile 307:
   * Du kannst die ''8'' in der ersten Zeile natürlich auch durch eine andere Zahl ersetzen!   * Du kannst die ''8'' in der ersten Zeile natürlich auch durch eine andere Zahl ersetzen!
   * Warum wird der Variablen ''fakultät'' in Zeile 2 der Startwert ''1'' zugeordnet und nicht ''0''? \\ (Falls Du nicht auf die Antwort kommst, probier' es aus, indem Du die ''1'' im Programm durch ''0'' ersetzt!)   * Warum wird der Variablen ''fakultät'' in Zeile 2 der Startwert ''1'' zugeordnet und nicht ''0''? \\ (Falls Du nicht auf die Antwort kommst, probier' es aus, indem Du die ''1'' im Programm durch ''0'' ersetzt!)
 +
 +==== Aufgaben zur for-Loop ====
 +[[.aufgabenfor:start|Hier geht's zu den Aufgaben.]]
einstieg/schleifen.1594557287.txt.gz · Zuletzt geändert: 2021/12/29 11:29 (Externe Bearbeitung)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki