10. – 13. Unterrichtsblock
JavaScript Schleifen
Schleifen können einen Codeblock mehrmals ausführen. Schleifen sind praktisch, wenn man einen Befehl wiederholt und mit unterschiedlichen Werten ausführen möchte.
Bei der Arbeit mit Arrays ist dies oft der Fall:
// Array Inhalt:
const tiere = ["Luchs", "Hirsch", "Uhu", "Wildsau", "Feldhase", "Fuchs"];
// Umständliche Befehlskette zur Ausgabe eines Arrays
text += tiere[0] + "<br>";
text += tiere[1] + "<br>";
text += tiere[2] + "<br>";
text += tiere[3] + "<br>";
text += tiere[4] + "<br>";
text += tiere[5] + "<br>";
// Einfache & Dynamische Ausgabe der Array-Inhalte:
let text = "";
for (let liste = 0; liste < tiere.length; liste++) {
text += tiere[liste] + "<br>";
}
document.getElementById("demo").innerHTML = text;
Verschiedene Arten von Schleifen
JavaScript unterstützt verschiedene Arten von Schleifen:
for
– durchläuft einen Codeblock mehrmalsfor/in
– durchläuft die Eigenschaften eines Objektsfor/of
– durchläuft die Werte eines iterierbaren Objektswhile
– durchläuft einen Codeblock, während eine angegebene Bedingung wahr istdo/while
– durchläuft auch einen Codeblock, während eine angegebene Bedingung wahr ist
Aufgabe
Lasse Dir das Ergebnis aus o.g. Array bei Überfliegen einer Überschrift mit der Maus durch die Ausgabe mit einer Schleife anzeigen.
Die for-Schleife
Die for
-Anweisung erstellt eine Schleife mit 3 optionalen Ausdrücken:
for (ausdruck 1; ausdruck 2; ausdruck 3) {
// Auszuführender Code
}
Ausdruck 1 (Initialisierung) wird (einmal) vor der Ausführung des Codeblocks ausgeführt.
Ausdruck 2 (Schleifenbedingung) definiert die Bedingung zum Ausführen des Codeblocks.
Ausdruck 3 (Fortsetzung) wird (jedes Mal) ausgeführt, nachdem der Codeblock ausgeführt wurde und die Schleifenbedingung erneut zutrifft.
Hierbei kommen die Operatoren aus dem 3. Unterrichtsblock zum Einsatz.
/*
for ( Initialisierung; Schleifenbedingung; Fortsetzung)
{
Anweisungen
}
*/
let liste = ""; // Zunächst wird eine Variable ohne Wert erstellt
// Ausdruck 1; Ausdruck 2; Ausdruck3;
// Initialisierung Schleifenbedingung Fortsetzung
for (let ziffer = 0; ziffer < 5; ziffer++ )
{
liste += ziffer + "<br>"; // Anweisung
}
/*
Erklärung:
Ausdruck 1 (Initialisierung)
Setzt eine Variable, bevor die Schleife beginnt (ziffer = 0)
Ausdruck 2 (Schleifenbedingung)
Definiert die Bedingung für die Ausführung der Schleife (ziffer muss kleiner als 5 sein)
Ausdruck 3 (Fortsetzung)
Erhöht den Wert von "ziffer" (ziffer++) jedes Mal,
wenn der Codeblock in der Schleife ausgeführt wurde.
*/
Ausdruck 1 (Initialisierung)
Normalerweise wird der erste Ausdruck verwendet, um die in der Schleife verwendete Variable zu initialisieren (ziffer = 0;).
Ausdruck 1 ist optional.
// Im ersten Ausdruck können auch mehrere Werte durch ein Komma getrennt definiert werden.
const waldtiere = ["Luchs", "Hirsch", "Uhu", "Wildsau", "Feldhase", "Fuchs"];
// let i = ""; // Einzeldeklaration
// let zahl = ""; // Einzeldeklaration
// let text = ""; // Einzeldeklaration
let i, zahl, text; // Mehrfachdeklaration
for (i = 0, zahl = waldtiere.length, text = ""; i < zahl; i++) {
text += waldtiere[i] + "<br>";
}
// Ausdruck 1 kann auch weggelassen werden (wenn die Werte festgelegt werden, bevor die Schleife beginnt):
let i = 2;
let zahl = waldtiere.length;
let text = "";
for (; i < zahl; i++) {
text += tiere[i] + "<br>";
}
Ausdruck 2 (Schleifenbedingung)
Oft wird Ausdruck 2 verwendet, um den Zustand der Anfangsvariablen auszuwerten.
Ausdruck 2 ist ebenfalls optional.
Wenn Ausdruck 2 wahr zurückgibt, beginnt die Schleife erneut. Wenn es falsch zurückgibt, wird die Schleife beendet.
Ausdruck 3 (Fortsetzung)
Oft erhöht Ausdruck 3 den Wert der Anfangsvariablen. Dies wird vor allem dann angewendet, wenn die Schleife anhand von Zahlenwerten ein vordefiniertes Ende haben soll.
Ausdruck 3 ist ebenfalls optional.
Ausdruck 3 kann sowohl eine Dekrementierung (i–), als auch eine Inkrementierung (i = i + 15) oder andere Zählarten ausführen.
// Ausdruck 3 kann auch weggelassen werden, wenn die Werte innerhalb der Schleife erhöht werden:
let i = 0;
let len = cars.length;
let text = "";
for (; i < len; ) {
text += cars[i] + "<br>";
i++;
}
Schleifenbereich
Verwendung var
und let
in einer Schleife:
/*
Verwendung von "var"
*/
// In diesem Beispiel wird var innerhalb der Schleife neu deklariert.
var i = 5;
for (var i = 0; i < 10; i++) {
// Ausführung
}
// Hier ist i gleich 10
/*
Verwendung von let
*/
// Im diesem Beispiel, wird der Wert von let nicht innerhalb der Schleife verändert,
da er bereits außerhalb der Schleife deklariert wurde.
let i = 5;
for (let i = 0; i < 10; i++) {
// Ausführung
}
// Hier ist i gleich 5
Wenn
let
verwendet wird, um die i-Variable in einer Schleife zu deklarieren, ist die i-Variable nur innerhalb der Schleife verwendbar.
Aufgabe
Aufgabe 1: Zähle bis 10
Schreibe eine for
-Schleife, die Zahlen von 0 bis 10 zählt und jede Zahl auf der Konsole ausgibt.
Aufgabe 2: Bilderrahmen
Verwende eine for
-Schleife, um einen rechteckigen Rahmen aus Sternchen (z.B. *
) mit einer Breite und Höhe von jeweils 5 Sternchen zu generieren. Der Rahmen sollte als Text auf der Konsole ausgegeben werden.
Aufgabe 3: Summiere die Zahlen
Erstelle ein Programm, das eine for
-Schleife verwendet, um die Summe der Zahlen von 1 bis 50 zu berechnen. Gib das Ergebnis in der Konsole aus.
Aufgabe 4: Jedes zweite Auto
Gegeben ist das Array const autos = ["Audi", "Opel", "Mercedes", "Toyota", "VW", "BMW"];
. Verwende eine for
-Schleife, um jedes zweite Auto aus dem Array in der Konsole auszugeben.
Aufgabe 5: Abwärts zählen
Schreibe eine for
-Schleife, die von 10 rückwärts bis 0 zählt und jede Zahl auf der Konsole ausgibt. Verwende dabei eine Dekrementierung innerhalb der Schleife.
Diese Aufgaben helfen Anfängern, ein Verständnis für die grundlegenden Konzepte und Anwendungen der for
-Schleife zu entwickeln, einschließlich Initialisierung, Schleifenbedingung, und Fortsetzung.
Die for-in-Schleife
Die JavaScript for in
Anweisung durchläuft die Eigenschaften eines Objekts:
Syntax
for (Schlüssel für jeden Wert in Objekt) {
// Programm, das ausgeführt werden soll
}
const person = {vname:"Thomas", nname:"Müller", alter:35};
let text = "";
for (let x in person) {
text += person[x];
}
- Die for in Schleife iteriert über ein Personenobjekt
- Jede Iteration gibt einen Schlüssel (x) zurück
- Der Schlüssel wird verwendet, um auf den Wert des Schlüssels zuzugreifen
- Der Wert des Schlüssels ist person[x]
Verwendung in Arrays
Die JavaScript for in
-Anweisung kann auch die Eigenschaften eines Arrays durchlaufen:
for (Variable in Array) {
// Programm, das ausgeführt werden soll
}
const nummern = [45, 4, 9, 16, 25];
let txt = "";
for (let x in nummern) {
txt += nummern[x];
}
Man verwendet for-in-Schleifen nicht für ein Array, wenn die Indexreihenfolge wichtig ist.
Die Indexreihenfolge ist implementierungsabhängig, und auf Arraywerte wird möglicherweise nicht in der erwarteten Reihenfolge zugegriffen.
Es ist besser, eine for – Schleife, eine for of – Schleife oder Array.forEach() zu verwenden, wenn die Reihenfolge wichtig ist.
Array.forEach()
Die forEach()
Methode ruft eine Funktion einmal für jedes Array-Element auf.
const nummern = [45, 4, 9, 16, 25];
let txt = "";
nummern.forEach(meineFunktion);
function meineFunktion(value, index, array) {
txt += value;
}
Die Funktion akzeptiert 3 Argumente:
- Den
value
-Parameter - Den
index
-Parameter - Das
array
selbst
Das obige Beispiel verwendet nur den value
-Parameter. Es kann umgeschrieben werden zu:
const nummern = [45, 4, 9, 16, 25];
let txt = "";
nummern.forEach(meineFunktion);
function meineFunktion(value) {
txt += value;
}
Aufgabe
Aufgabe 1: Eigenschaften eines Objekts ausgeben
Gegeben ist ein Auto
-Objekt. Schreibe eine for-in
Schleife, die alle Eigenschaften und ihre Werte des Objekts in der Konsole ausgibt.
Aufgabe 2: Array mit for-in
Schleife durchsuchen
Du hast ein Array mit Farbnamen. Verwende eine for-in
Schleife, um jeden Farbnamen in der Konsole auszugeben.
Aufgabe 3: Die Anzahl der Eigenschaften in einem Objekt zählen
Gegeben ist ein Benutzer
-Objekt. Verwende eine for-in
Schleife, um die Anzahl der Eigenschaften im Objekt zu zählen und gib die Zahl in der Konsole aus.
Aufgabe 4: Summe der quadratischen Werte eines Arrays berechnen
Erstelle ein Array mit verschiedenen Zahlen. Verwende eine for-in
Schleife, um die Summe der Quadrate jeder Zahl zu berechnen und auszugeben.
Aufgabe 5: Findet die längste Eigenschaft
Gegeben ist ein Buch
-Objekt mit unterschiedlichen Eigenschaften. Verwende eine for-in
Schleife, um die Eigenschaft mit dem längsten Wert zu ermitteln.
Die for-of-Schleife
Die JavaScript for of
-Anweisung durchläuft die Werte eines iterierbaren Objekts.
Damit können iterierbare Datenstrukturen wie Arrays, Strings, Maps und mehr durchlaufen werden:
Syntax
for (Variable of iterierares Objekt) {
// Programm, das ausgeführt werden soll
}
Variable – Bei jeder Iteration wird der Variablen der Wert der nächsten Eigenschaft zugewiesen. Variablen können mit const
, let
, oder var
deklariert werden.
Iterierbares Objekt – Ein Objekt mit wiederholbaren Eigenschaften.
for-of-Schleife bei einem Array
const tiere = ["Luchs", "Hirsch", "Steinmarder"];
let text = "";
for (let x of tiere) {
text += x "<br>";
}
for-of-Schleife bei einem String
let langwort = "Chiemseeschifffahrt";
let text = "";
for (let x of langwort) {
text += x + "<br>";
}
Aufgabe
ehörigen Lösungen:
Aufgabe 1: Zahlen in einem Array verdoppeln
Gegeben ist ein Array von Zahlen. Verwende eine for-of
Schleife, um jede Zahl zu verdoppeln und die verdoppelten Zahlen in der Konsole auszugeben.
Aufgabe 2: Vokale in einem String zählen
Schreibe eine Funktion, die einen String entgegennimmt und mit einer for-of
Schleife die Anzahl der Vokale im String zählt.
Aufgabe 3: Elemente eines Arrays in Großbuchstaben ausgeben
Gegeben ist ein Array mit Wochentagen. Verwende eine for-of
Schleife, um jeden Wochentag in Großbuchstaben in der Konsole auszugeben.
Aufgabe 4: Zeichenlänge eines Strings herausfinden
Gegeben ist ein String. Verwende eine for-of
Schleife, um die Länge des Strings zu ermitteln und diese auszugeben.
Aufgabe 5: Benutzerdefinierte Objekte in einem Array ausgeben
Erstelle ein Array, das Objekte mit einem name
und einem alter
Attribut enthält. Verwende eine for-of
Schleife, um jeden Namen und das Alter der Objekte auszugeben.
Die while-Schleife
Die while
-Schleife durchläuft einen Codeblock, solange eine angegebene Bedingung wahr ist.
Syntax
while (Bedingung) {
// Auszuführendes Programm
}
/*
Im folgenden Beispiel wird der Code in der Schleife immer wieder ausgeführt,
solange eine Variable (i) kleiner als 10 ist:
*/
let text = "";
let i = 0;
while (i < 10) { // Die Schleifenbedingung wird geprüft
text += "Zahl " + i; // 1. Programmteil gibt einen Text aus und den aktuellen Wert der Variable "i"
i++; // 2. Programmteil erhöht die Variable "i" um den Wert 1
} // 3. Programm kehr zurück zum Ausgangspunkt (Prüfung der Schleifenbedingung)
Wichtig: Wenn man vergisst, die in der Bedingung verwendete Variable zu erhöhen, endet die Schleife nie. Dies wird den Browser zum Absturz bringen.
Die do-while-Schleife
Die do-while
-Schleife ist eine Variante der while
-Schleife. Diese Schleife führt den Codeblock einmal aus, bevor überprüft wird, ob die Bedingung wahr ist, dann wiederholt sie die Schleife, solange die Bedingung wahr ist.
Syntax
do {
// Auszuführendes Programm
}
while (Bedingung);
/*
Das folgende Beispiel verwendet eine do-while-Schleife.
Die Schleife wird immer mindestens einmal ausgeführt,
auch wenn die Bedingung falsch ist,
da der Codeblock ausgeführt wird, bevor die Bedingung getestet wird:
*/
let text = "";
let i = 0;
do {
text += "Zahl " + i;
i++;
}
while (i < 10);
Wichtig: Nicht vergessen, die in der Bedingung verwendete Variable zu erhöhen, sonst endet die Schleife nie.
Vergleich von for und while
In der Lektion über die for-Schleife ist zu erkennen, dass eine while
-Schleife im Wesentlichen dasselbe ist wie eine for
-Schleife, wobei Anweisung 1 und Anweisung 3 weggelassen werden.
Beispiel mit einer for-Schleife
/*
Die Schleife in diesem Beispiel verwendet eine for-Schleife,
um die Autonamen aus dem Array "tiere" zu sammeln:
*/
const tiere = ["Steinmarder", "Dachs", "Falke", "Luchs"];
let i = 0;
let text = "";
for (;tiere[i];) {
text += tiere[i];
i++;
}
Beispiel mit einer while-Schleife
/*
Die Schleife in diesem Beispiel verwendet eine while-Schleife,
um die Autonamen aus dem Array tiere zu sammeln:
*/
const tiere = ["Auerhahn", "Feldhase", "Uhu", "Graureiher"];
let i = 0;
let text = "";
while (tiere[i]) {
text += tiere[i];
i++;
}
Aufgabe
Aufgabe 1: Zählen bis zu einer Zahl
Schreibe eine while
-Schleife, die von 0 bis zu einer festgelegten Zahl zählt und jede Zahl in der Konsole ausgibt.
Aufgabe 2: Schleife mit Benutzereingaben
Erstelle eine while
-Schleife, die den Benutzer wiederholt nach Eingaben fragt, bis der Benutzer „stop“ eingibt.
Aufgabe 3: Array umkehren
Verwende eine do-while
-Schleife, um ein Array mit Zahlen rückwärts in der Konsole auszugeben.
Aufgabe 4: Addition bis zur Grenze
Schreibe eine do-while
-Schleife, die wiederholt Zahlen addiert, die der Benutzer eingibt, bis die Summe 100 übersteigt. Gib die endgültige Summe aus.
Aufgabe 5: Multiplikationstabelle
Verwende eine while
-Schleife, um eine Multiplikationstabelle für eine angegebene Zahl bis zu 10 zu erstellen und gib die Ergebnisse in der Konsole aus.
break & continue innerhalb von Schleifen
Die break
-Anweisung „springt“ aus einer Schleife.
Die continue
-Anweisung „überspringt“ eine Iteration in der Schleife.
Die break-Anweisung
Erinnerung: haben
break
die in einem früheren Unterrichtsblock bereits verwendet. In einemswitch()
-Programmcode wurdebreak
verwendet, um aus einer Aussage „herauszuspringen“ .
Die break
-Anweisung kann auch verwendet werden, um aus einer Schleife zu springen:
/*
Im folgenden Beispiel beendet "break" die Schleife
(„unterbricht“ die Schleife), wenn der Schleifenzähler (i) 5 ist
*/
let text = "";
for (let i = 0; i < 50; i++) {
if (i === 5) { break; }
text += "Nummer " + i + "." + "<br>";
}
Die continue-Anweisung
Die continue
-Anweisung unterbricht eine Iteration (in der Schleife), wenn eine bestimmte Bedingung eintritt, und fährt mit der nächsten Iteration in der Schleife fort.
// Dieses Beispiel überspringt den Wert 3:
let text = "";
for (let i = 0; i < 15; i++) {
if (i === 3) { continue; }
text += "Nummer " + i + "." + "<br>";
}
Aufgabe
Aufgabe 1: Erste gerade Zahl finden
Verwende eine for
-Schleife, um die erste gerade Zahl in einem Array von Zahlen zu finden. Nutze die break
-Anweisung, um die Schleife bei der ersten gefundenen geraden Zahl zu beenden.
Aufgabe 2: Bestimmte Zahl in einem Array überspringen
Verwende eine for
-Schleife, um jedes Element eines Arrays von Zahlen in der Konsole auszugeben. Nutze continue
, um die Zahl 5 zu überspringen.
Aufgabe 3: Schleife bis zur Hälfte brechen
Schreibe eine while
-Schleife, die den Wert des Zählers von 0 auf 10 hochzählt. Breche die Schleife mit break
, wenn der Zähler die Hälfte des maximalen Werts erreicht hat, also 5.
Aufgabe 4: Keine ungeraden Zahlen
Verwende eine for
Schleife zum Ausgeben von Zahlen von 1 bis 10 in der Konsole, überspringe jedoch alle ungeraden Zahlen mit continue
.
Aufgabe 5: Wörter in einem Satz zählen, bis ein Stop-Wort erscheint
Gib eine Liste von Wörtern aus oder zähle diese, bis das Wort „Stopp“ im Satz erscheint. Verwende break
, um die Schleife zu beenden, wenn das Stop-Wort gefunden wird.
Aufgaben zur Erzeugung von HTML mit Schleifen
Aufgabe 1: Eine ungeordnete Liste (ul) mit einer for-Schleife
Erstellen Sie eine Funktion, die eine ungeordnete Liste in HTML generiert. Die Anzahl der Listenelemente wird durch einen Parameter festgelegt.
Aufgabe 2: Eine geordnete Liste (ol) mit einer while-Schleife
Erstellen Sie eine Funktion, die eine geordnete Liste in HTML generiert. Die Anzahl der Listenelemente wird durch einen Parameter vorgegeben.
Aufgabe 3: Eine Tabelle mit einer do-while-Schleife
Erstellen Sie eine Funktion, die eine HTML-Tabelle mit einer bestimmten Anzahl von Zeilen und Spalten erstellt, wobei der Inhalt einer jeden Zelle ein beliebiger Text ist.
Aufgabe 4: Erzeugen von Div-Elementen mit einer for…of-Schleife
Erstellen Sie eine Funktion, die für jedes Element in einem Array ein div
-Element erzeugt. Der Inhalt jedes Elements sollte den Text des Arrays enthalten.
Aufgabe 5: Erstellen eines Dropdown-Menüs mit einer for…in-Schleife
Erstellen Sie eine Funktion, die ein Dropdown-Menü (select-Element) mit Optionen aus einem Objekt generiert. Der Schlüssel des Objekts wird als Wert und die zugehörige Eigenschaft als Text angezeigt.
Übungsaufgaben
Aufgabe 1
- Erstelle ein Objekt „person“ mit 5 Werten (Alter / Haarfarbe / Name / Nachname / Beruf)
- Der Wert
- Lasse Dir diese Werte über eine Schleife in einer HTML-Tabelle ausgeben.
- Jeder Wert soll dabei in einer extra Tabellen-Zeile stehen
- Der Wert „Nachname“ soll mit
continue
übersprungen werden