Diese Seite dient mir zum üben der Web-Programmiersprachen

Schleifen

JS hat mehrere verschiedene Schleifen. Sie wiederholen einen Vorgang und können so sehr viel Schreibarbeit abnehmen. Eine sehr allgemeine Schleife ist die while-Schleife sie ist sowas wie die Grundform aller Schleifen. Die Schleife beginnt mit ihrer Art, hier also while gefolgt von ihrer Bedingung. Ist die Bedingung erfüllt, so führt sie alle Befehle aus die in den geschweiften Klammern stehen. Wenn am Ende der Schleife die Bedingung noch immer erfüllt ist, wiederholt die Schleife diese Befehle, solange bis die Bedingung nicht mehr erfüllt sind. Achtung vor Endlosschleifen!

while (Bedingung){
   Befehl 1;
   Befehl 2;
   Befehl 3;
   ...
}

Um Endlosschleifen zu verhindern muss in der Bedingung eine Variable vor kommen, die auch im Schleifenkörper vor kommt. Es muss möglich sein diese Variable so zu verändern, das die Bedingung nicht mehr erfüllt wird.

let eingabe = 0;
while (eingabe != 5){
eingabe = prompt ("Was ergibt 3 + 2?");
}
alert ("Richtige Lösung!");

Zählen und Zahlen

Die meisten Programmierer benutzen die Bezeichnung i für eine Variable die als Zähler benutzt wird. Heißt, sie erhöht sich schrittweise um 1 (Inkrement) oder wird um 1 veringert(Dekrement).
Um bei der Eingabe einer Nummer zu prüfen, ob es sich um eine Nummer handelt, gibt es die Methode isNaN(). In der Klammer steht der Name der zu überprüfenden Variable. Ist es keine Nummer, so bekommt es den Wert true. Hier ein kleines Programm welches eine Zahl zwischen 5-100 erfragt und dabei prüft ob die Eingabe eine Nummer ist und sich im erlaubten Zahlenraum befindet.

Zum I-Zähler Programm

do-while-Schleife

Diese Schleife wird auch fußgesteuerte Schleife genannt, da der Körper erst ausgeführt wird, und dann erst wird die Bedingung geprüft. Das heißt also, die Schleife wird auf jeden Fall mindestens einmal ausgeführt.

do {
   Befehl 1;
   Befehl 2;
   Befehl 3;
   ...
} while (Bedingung);

for-Schleife

Die for-Schleife hat einen Zähler der genau angiebt wie oft die Schleife ausgeführt werden soll. In den Klammern der for-Schleife befinden sich dafür drei Elemente, die mit einem Semikolon getrennt werden.
Der erste Teil nennt den Startwert des Zählers.
Der zweite Teil gibt die Abbruchbedingung vor. Also den Wert der die Schleife beenden soll.
Der letzte Teil gibt an wie sich der Zähler bei jedem Durchlauf ändert.

let eingabe = Number(prompt("Bis zu welcher Zahl soll gezählt werden?"));
for (let i = 1; i <= eingabe; i++) {
   document.write(i + "<br>");
}

Der erste Teil = let i = 1 Die Variable "i" wird beim ersten Durchlauf erstellt. Sie muss nicht 1 betragen.
Der zweite Teil = i <= eingabe Ist "i" kleiner als "eingabe" führe die Schleife aus.
Der letzte Teil = i++ "i" soll um 1 erhöht werden. Er könnte auch verdoppelt oder veringert werden ...

Es ist auch möglich den ersten oder letzten Teil weg zu lassen, wenn der Wert wo anders her kommt. Der Startwert könnte zum Beispiel auch vom Anwender abgefragt werden. Dann würde der Code so aussehen:

let i = Number(prompt("Geben sie einen Startwert vor"));
let eingabe = Number (prompt("Bis zu welchem Wert soll gezählt werden?"));
for (; i <= eingabe; i++){
   document.write(i + "<br>");
}

for-of-Schleife

Um alle Elemente eines arrays auszugeben, gibt es die for-of-Schleife. Sie beginnt mit dem Schlüsselbegriff for. In den Klammern wird erste eine neue Variable deklariert, dann folgt der Schlüsselbegriff of, anschließend der Name des Arrays. Unter dem Namen, der in der Klammer deklarierten Variable, sind nun alle Werte des Arrays gespeichert.

let arr = ["Eins", "Zwei", "Drei"];
for (let wert of arr){
   document.write(wert + "<br>");
}

So etwas nennt man Iteration (Verdopplung eines Wortes) Die Schleife geht alle Elemente des Objekts (in diesem Fall ein array) durch. Bei jedem Duchgang bekommt der Wert der Variable den Wert des aktuellen Feldes. Die Schleife macht also eine Kopie des Objektes. Man kann das Objekt auslesen, es so aber nicht verändern. Außer arrays kann man noch sets oder maps auslesen lassen.
Bei einer map enthält die Variable den Schlüsselbegriff und den Inhalt dieses Begriffes. Das wird in einem array abgespeichert. So können die beiden Werte auch einzelnd ausgegeben werden indem die Indexnummer 0 oder 1 verwendet wird.

let farbe = new Map();
farbe.set ("Name", "Rot");
farbe.set ("Hexa", "#F00");
farbe.set ("RGB"; "255 0 0");
for (let wert of farbe){
   document.write("Schlüsselbegriff" + wert[0] + "<br>");
   document.write("Inhalt" + wert[1] + "<br>");
}

break und continue

Um den Ablauf von Schleifen zu steuern gibt es außer den Bedingungen noch den Befehl break und continue. Diese lassen sich in der while- und do-while und for-Schleife verwenden. Während mit break die Schleife sofort beendet wird, unterbricht continue nur den aktuellen Durchlauf der Schleife. Bei break-Befehl steht nicht direkt im Schleifenkörper, da dieser sonst im ersten Durchlauf die Schleife beenden würde. Meist steht dieser in einer if-Abfrage.
Ein Beispiel: der Anwender soll einen Wert eingeben, um zu prüfen, ob sich dieser in einem array befindet. Die Schleife geht Feld für Feld durch. Ist der Wert vorhanden wird die Schleife beendet, ansonsten geht sie alle Felder bis zum Schluss durch.

let farbe = ["Rot", "Blau", "Schwarz", "Gelb"]
let eingabe = prompt("Welche Farbe wird gesucht?");
let i = 0;
for (let wert of farbe){
   if (wert == eingabe){
     document.write ("Die Farbe ist vorhanden <br>");
     document.write ("Diese Farbe befindet sich auf Platz " + i);
     break;
   }
   i++
}
if (i == farbe.length){
     document.write ("Die Farbe ist nicht vorhanden");
}
Zum Farbe suchen Programm (einfach)
Zum Farbe suchen Programm (erweitert) Buchstaben in Groß- oder Kleinbuchstaben umwandeln

Um nur den aktuellen Durchgang zu beenden wird continue verwendet. Danach beginnt die Schleife wieder von vorn. In diesem Beispiel wird der Anwender nach einer Zahl gefragt, die Schleife überprüft dann wieviele Elemente des arrays durch diese Zahl teilbar ist. Dafür braucht es den Modulo-Operator (%) der den Rest einer ganzzahligen Division ausgibt. Wenn dieser den Wert 0 errechnet, ist die Zahl genau teilbar. Eine if-Anfrage schaut ob der Wert ungleich (!=) 0 ist, die Zahl also nicht teilbar ist. Dann soll die Schleife den Durchlauf mit continue beenden. Ist die Zahl teilbar, wird ein Zähler um 1 erhöht.

let arr = [2, 5, 9, 14, 18, 27];
let eingabe = prompt("Eine Zahl zum vergleichen:");
let i = 0;
for (let wert of arr){
   if (wert % eingabe != 0){
     continue;
   }
   i++
}
document.write (arr + " <br>");
document.write (i + " Einträge sind durch " + eingabe + " teilbar.");
Zum Zahl suchen Programm

Übungsaufgabe

Der Anwender soll 5 Werte eingeben, die in einem array gespeichert werden. Dafür soll eine for-Schleife verwendet werden. Anschließend solle das array aus gegeben werden. Das zweite Programm soll das gleiche mit einer while-Schleife machen.

Hier geht es zur Lösung (for)
Hier geht es zur Lösung (while)

Ein Set soll mehrere Wörter haben, der Anwender wird nach einem Wort gefragt. Eine for-of-Schleife soll überprüfen ob das Wort des Anwenders im Set vorhanden ist. Würde dies auch mit einer for- oder while-Schleife gehen?

Hier geht es zur Lösung