JavaScript 101 - Übungen
Diese Übungen helfen dir, die JavaScript-Grundlagen Schritt für Schritt zu erlernen. Die Übungen sind nach Schwierigkeit sortiert und bauen aufeinander auf.
So arbeitest du mit den Übungen:
- Kopiere den Code-Block in deine Browser-Konsole (F12) oder eine JS-Datei
- Implementiere die Funktion zwischen den Kommentaren
- Führe den Code aus
- Die Tests zeigen dir automatisch, ob deine Lösung korrekt ist
Teil 1: Einfacher Programmablauf & console.log
Übung 1.1: Willkommensnachricht
/*
* Übung 1.1: Willkommensnachricht
* Aufgabe: Schreibe eine Funktion, die "Willkommen bei JavaScript!" ausgibt.
* Konzept: Einfache Ausgabe mit console.log()
*/
function willkommensnachricht() {
/**
* Gibt eine Willkommensnachricht auf der Konsole aus.
*/
// DEINE LÖSUNG HIER
}
// Führe die Funktion aus
willkommensnachricht();Übung 1.2: Mehrere Zeilen
/*
* Übung 1.2: Mehrere Zeilen
* Aufgabe: Schreibe eine Funktion, die drei Zeilen Text ausgibt: "Zeile 1", "Zeile 2", "Zeile 3"
* Konzept: Mehrfache console.log()-Aufrufe
*/
function dreiZeilen() {
/**
* Gibt drei Zeilen Text auf der Konsole aus:
* "Zeile 1", "Zeile 2", "Zeile 3"
*/
// DEINE LÖSUNG HIER
}
// Führe die Funktion aus
dreiZeilen();Übung 1.3: Code Reading (Code lesen)
Aufgabe: Lies den folgenden Code und erkläre in eigenen Worten, was er macht. Schreibe deine Erklärung als Kommentar.
console.log("Hallo");
console.log("Welt");
console.log("!");Fragen:
- Wie viele Zeilen werden ausgegeben?
- In welcher Reihenfolge werden die Texte ausgegeben?
- Was passiert, wenn du die Reihenfolge der console.log-Befehle änderst?
Übung 1.4: Debugging (Fehler finden)
Aufgabe: Der folgende Code hat einen Fehler. Finde und behebe ihn.
/*
* Übung 1.4: Debugging
* Aufgabe: Finde und behebe den Fehler im folgenden Code.
* Hinweis: Öffne die Browser-Konsole (F12). Welche Zeile verursacht einen Fehler?
*/
function meineNachricht() {
// Gibt eine Nachricht aus.
console.log("Start");
console.log"Mitte";
console.log("Ende");
}
// Führe die Funktion aus
meineNachricht();Teil 2: Variablen
Übung 2.1: Variable erstellen
/*
* Übung 2.1: Variable erstellen
* Aufgabe: Schreibe eine Funktion, die den Wert einer Variable (42) zurückgibt.
* Konzept: Variable definieren und zurückgeben
*/
function meineZahl() {
/**
* Erstellt eine Variable mit dem Wert 42 und gibt sie zurück.
* @returns {number} Die Zahl 42
*/
// DEINE LÖSUNG HIER
}
// Tests
console.assert(meineZahl() === 42, "Fehler: Sollte 42 sein");
console.log("✓ Alle Tests bestanden!");Übung 2.2: Zwei Werte zurückgeben
/*
* Übung 2.2: Zwei Werte zurückgeben
* Aufgabe: Schreibe eine Funktion, die zwei Werte zurückgibt: Name "Anna" und Alter 16.
* Konzept: Mehrere Werte mit Array zurückgeben
*/
function nameUndAlter() {
/**
* Gibt Name und Alter zurück.
* @returns {Array} Name "Anna" und Alter 16
*/
// DEINE LÖSUNG HIER
}
// Tests
let [name, alter] = nameUndAlter();
console.assert(name === "Anna", "Fehler: Name sollte 'Anna' sein");
console.assert(alter === 16, "Fehler: Alter sollte 16 sein");
console.log("✓ Alle Tests bestanden!");Übung 2.3: Drei Werte zurückgeben
/*
* Übung 2.3: Drei Werte zurückgeben
* Aufgabe: Schreibe eine Funktion, die drei Werte zurückgibt: Name "Anna", Alter 16, Stadt "Bern".
* Konzept: Mehrere Werte zurückgeben (Array)
*/
function personenDaten() {
/**
* Gibt Name, Alter und Stadt zurück.
* @returns {Array} Name "Anna", Alter 16, Stadt "Bern"
*/
// DEINE LÖSUNG HIER
}
// Tests
let [name, alter, stadt] = personenDaten();
console.assert(name === "Anna", "Fehler: Name sollte 'Anna' sein");
console.assert(alter === 16, "Fehler: Alter sollte 16 sein");
console.assert(stadt === "Bern", "Fehler: Stadt sollte 'Bern' sein");
console.log("✓ Alle Tests bestanden!");Übung 2.4: Variable ändern
/*
* Übung 2.4: Variable ändern
* Aufgabe: Schreibe eine Funktion, die eine Variable mit 10 startet, sie auf 20 ändert und zurückgibt.
* Konzept: Variablenwert ändern
*/
function variableAendern() {
/**
* Erstellt eine Variable mit Wert 10, ändert sie auf 20.
* @returns {number} Der neue Wert (20)
*/
// DEINE LÖSUNG HIER
}
// Tests
console.assert(variableAendern() === 20, "Fehler: Sollte 20 sein");
console.log("✓ Alle Tests bestanden!");Übung 2.5: Code Reading (Code lesen)
Aufgabe: Lies den folgenden Code und erstelle eine Variablen-Tabelle auf Papier.
let x = 5;
let y = 10;
x = y;
y = 20;Erstelle diese Tabelle:
| Zeile | Code | x | y |
|---|---|---|---|
| 1 | let x = 5 | ? | ? |
| 2 | let y = 10 | ? | ? |
| 3 | x = y | ? | ? |
| 4 | y = 20 | ? | ? |
Fragen:
- Was ist der Wert von x am Ende?
- Was ist der Wert von y am Ende?
Übung 2.6: Debugging (Fehler finden)
Aufgabe: Der folgende Code hat einen Fehler. Nutze die Konsole, um die Variablenwerte zu beobachten und den Fehler zu finden.
/*
* Übung 2.6: Debugging - Werte tauschen
* Aufgabe: Der Code soll zwei Werte tauschen, aber es funktioniert nicht. Finde den Fehler!
* Hinweis: Füge console.log() ein, um die Variablenwerte zu beobachten.
*/
function tauscheWerte() {
// Tauscht zwei Werte.
let a = 10;
let b = 20;
a = b;
b = a;
return [a, b];
}
// Test
let [a, b] = tauscheWerte();
console.log(`a = ${a}, b = ${b}`); // Sollte a = 20, b = 10 seinTeil 3: Grundlegende Datentypen
Übung 3.1: Datentypen erkennen
/*
* Übung 3.1: Datentypen erkennen
* Aufgabe: Schreibe eine Funktion, die Number 42, String "Hallo" und Boolean true zurückgibt.
* Konzept: Verschiedene Datentypen
*/
function verschiedeneTypen() {
/**
* Gibt verschiedene Datentypen zurück.
* @returns {Array} Number 42, String "Hallo", Boolean true
*/
// DEINE LÖSUNG HIER
}
// Tests
let [ganzeZahl, text, wahrheit] = verschiedeneTypen();
console.assert(ganzeZahl === 42, "Fehler: Number sollte 42 sein");
console.assert(text === "Hallo", "Fehler: String sollte 'Hallo' sein");
console.assert(wahrheit === true, "Fehler: Boolean sollte true sein");
console.log("✓ Alle Tests bestanden!");Übung 3.2: String zusammensetzen
/*
* Übung 3.2: String zusammensetzen
* Aufgabe: Schreibe eine Funktion, die zwei Strings zu einem zusammenfügt (ohne Leerzeichen).
* Konzept: String-Konkatenation
*/
function stringsVerbinden(teil1, teil2) {
/**
* Verbindet zwei Strings.
* @param {string} teil1 - Erster String
* @param {string} teil2 - Zweiter String
* @returns {string} Beide Strings verbunden
*/
// DEINE LÖSUNG HIER
}
// Tests
console.assert(stringsVerbinden("Hallo", "Welt") === "HalloWelt", "Fehler: Sollte 'HalloWelt' sein");
console.assert(stringsVerbinden("Java", "Script") === "JavaScript", "Fehler: Sollte 'JavaScript' sein");
console.log("✓ Alle Tests bestanden!");Übung 3.3: Code Reading (Code lesen)
Aufgabe: Lies den folgenden Code und erkläre, was passiert.
let name = "Anna";
let alter = 16;
let groesse = 1.65;
let istSchueler = true;
let info = name + " ist " + alter + " Jahre alt";
console.log(info);Fragen:
- Welche Datentypen werden verwendet?
- Warum kann
alterhier direkt mit Strings verbunden werden? - Was gibt das Programm aus?
Übung 3.4: Debugging (Fehler finden)
Aufgabe: Der folgende Code hat einen Typ-Fehler. Finde und behebe ihn.
/*
* Übung 3.4: Debugging - Typ-Fehler
* Aufgabe: Der Code soll eine Summe berechnen, aber es gibt einen Typ-Fehler. Finde ihn!
* Hinweis: Was passiert, wenn man einen String mit + zu einer Zahl verbindet?
*/
function berechneSumme() {
// Berechnet eine Summe.
let zahl1 = "10";
let zahl2 = 20;
let summe = zahl1 + zahl2;
return summe;
}
// Test
console.log(berechneSumme()); // Was ist die Ausgabe?Teil 4: Arithmetische Operationen
Übung 4.1: Addition
/*
* Übung 4.1: Addition
* Aufgabe: Schreibe eine Funktion, die zwei Zahlen addiert und die Summe zurückgibt.
* Konzept: Addition mit +
*/
function addiere(a, b) {
/**
* Addiert zwei Zahlen.
* @param {number} a - Erste Zahl
* @param {number} b - Zweite Zahl
* @returns {number} Summe von a und b
*/
// DEINE LÖSUNG HIER
}
// Tests
console.assert(addiere(5, 3) === 8, "Fehler: 5 + 3 sollte 8 sein");
console.assert(addiere(10, 20) === 30, "Fehler: 10 + 20 sollte 30 sein");
console.assert(addiere(-5, 5) === 0, "Fehler: -5 + 5 sollte 0 sein");
console.log("✓ Alle Tests bestanden!");Übung 4.2: Grundrechenarten
/*
* Übung 4.2: Grundrechenarten
* Aufgabe: Schreibe eine Funktion, die Summe, Differenz, Produkt und Quotient zweier Zahlen zurückgibt.
* Konzept: +, -, *, /
*/
function grundrechenarten(a, b) {
/**
* Führt alle Grundrechenarten aus.
* @param {number} a - Erste Zahl
* @param {number} b - Zweite Zahl
* @returns {Array} Summe, Differenz, Produkt, Quotient
*/
// DEINE LÖSUNG HIER
}
// Tests
let [summe, differenz, produkt, quotient] = grundrechenarten(10, 2);
console.assert(summe === 12, "Fehler: 10 + 2 sollte 12 sein");
console.assert(differenz === 8, "Fehler: 10 - 2 sollte 8 sein");
console.assert(produkt === 20, "Fehler: 10 * 2 sollte 20 sein");
console.assert(quotient === 5, "Fehler: 10 / 2 sollte 5 sein");
console.log("✓ Alle Tests bestanden!");Übung 4.3: Flächenberechnung
/*
* Übung 4.3: Flächenberechnung
* Aufgabe: Schreibe eine Funktion, die die Fläche eines Rechtecks berechnet (Länge × Breite).
* Konzept: Multiplikation für praktische Anwendung
*/
function rechteckFlaeche(laenge, breite) {
/**
* Berechnet die Fläche eines Rechtecks.
* @param {number} laenge - Länge des Rechtecks
* @param {number} breite - Breite des Rechtecks
* @returns {number} Fläche (laenge * breite)
*/
// DEINE LÖSUNG HIER
}
// Tests
console.assert(rechteckFlaeche(5, 3) === 15, "Fehler: 5 * 3 sollte 15 sein");
console.assert(rechteckFlaeche(10, 10) === 100, "Fehler: 10 * 10 sollte 100 sein");
console.assert(rechteckFlaeche(7, 2) === 14, "Fehler: 7 * 2 sollte 14 sein");
console.log("✓ Alle Tests bestanden!");Übung 4.4: Code Reading (Code lesen)
Aufgabe: Erstelle eine Variablen-Tabelle für den folgenden Code.
let a = 10;
let b = 5;
let summe = a + b;
let produkt = a * b;
let differenz = a - b;| Zeile | Code | a | b | summe | produkt | differenz |
|---|---|---|---|---|---|---|
| 1 | let a = 10 | ? | ? | ? | ? | ? |
| 2 | let b = 5 | ? | ? | ? | ? | ? |
| 3 | let summe = a + b | ? | ? | ? | ? | ? |
| 4 | let produkt = a * b | ? | ? | ? | ? | ? |
| 5 | let differenz = a - b | ? | ? | ? | ? | ? |
Übung 4.5: Debugging (Fehler finden)
Aufgabe: Der folgende Code sollte die Fläche eines Kreises berechnen, aber das Ergebnis ist falsch. Finde den Fehler.
/*
* Übung 4.5: Debugging - Kreisfläche
* Aufgabe: Die Formel für die Kreisfläche ist A = π × r². Finde den Fehler in der Berechnung.
*/
function kreisFlaeche(radius) {
// Berechnet die Fläche eines Kreises.
const pi = 3.14;
let flaeche = pi * radius * 2;
return flaeche;
}
// Test
console.log(kreisFlaeche(10)); // Sollte ca. 314 seinTeil 5: Basisfunktionen (Typkonvertierung)
Übung 5.1: String zu Number
/*
* Übung 5.1: String zu Number
* Aufgabe: Schreibe eine Funktion, die einen String (z.B. "42") in eine Zahl umwandelt.
* Konzept: Number() Funktion
*/
function stringZuNumber(text) {
/**
* Konvertiert einen String in eine Zahl.
* @param {string} text - String mit einer Zahl (z.B. "42")
* @returns {number} Die Zahl als Number
*/
// DEINE LÖSUNG HIER
}
// Tests
console.assert(stringZuNumber("42") === 42, "Fehler: '42' sollte 42 sein");
console.assert(stringZuNumber("100") === 100, "Fehler: '100' sollte 100 sein");
console.assert(stringZuNumber("0") === 0, "Fehler: '0' sollte 0 sein");
console.log("✓ Alle Tests bestanden!");Übung 5.2: Number zu String
/*
* Übung 5.2: Number zu String
* Aufgabe: Schreibe eine Funktion, die eine Zahl in einen String umwandelt.
* Konzept: String() Funktion
*/
function numberZuString(zahl) {
/**
* Konvertiert eine Zahl in einen String.
* @param {number} zahl - Eine Zahl
* @returns {string} Die Zahl als String
*/
// DEINE LÖSUNG HIER
}
// Tests
console.assert(numberZuString(42) === "42", "Fehler: 42 sollte '42' sein");
console.assert(numberZuString(100) === "100", "Fehler: 100 sollte '100' sein");
console.assert(numberZuString(0) === "0", "Fehler: 0 sollte '0' sein");
console.log("✓ Alle Tests bestanden!");Übung 5.3: Formatierte Ausgabe
/*
* Übung 5.3: Formatierte Ausgabe
* Aufgabe: Schreibe eine Funktion, die "Ich bin [name] und [alter] Jahre alt." zurückgibt.
* Konzept: Template Literals für Formatierung
*/
function formatierteAusgabe(name, alter) {
/**
* Erstellt einen formatierten Satz.
* @param {string} name - Name der Person
* @param {number} alter - Alter der Person
* @returns {string} "Ich bin [name] und [alter] Jahre alt."
*/
// DEINE LÖSUNG HIER
}
// Tests
console.assert(formatierteAusgabe("Anna", 16) === "Ich bin Anna und 16 Jahre alt.", "Fehler: Format stimmt nicht");
console.assert(formatierteAusgabe("Max", 20) === "Ich bin Max und 20 Jahre alt.", "Fehler: Format stimmt nicht");
console.log("✓ Alle Tests bestanden!");Übung 5.4: Code Reading (Code lesen)
Aufgabe: Lies den folgenden Code und erstelle eine Variablen-Tabelle. Erkläre, was das Programm macht.
let alterEingabe = prompt("Wie alt bist du?");
let alter = Number(alterEingabe);
let naechstesJahr = alter + 1;
let ausgabe = "Nächstes Jahr bist du " + naechstesJahr + " Jahre alt.";
console.log(ausgabe);Fragen:
- Was passiert, wenn der Benutzer "16" eingibt?
- Welche Typkonvertierungen werden durchgeführt?
- Erstelle eine Variablen-Tabelle mit allen Variablen und ihren Werten (wenn Eingabe "16" ist).
| Variable | Typ | Wert |
|---|---|---|
| alterEingabe | ? | ? |
| alter | ? | ? |
| naechstesJahr | ? | ? |
| ausgabe | ? | ? |
Übung 5.5: Debugging (Fehler finden)
Aufgabe: Der folgende Code soll das Alter des Benutzers verdoppeln, hat aber einen Fehler.
/*
* Übung 5.5: Debugging - String-Multiplikation
* Aufgabe: Der Code soll das Alter verdoppeln. Was passiert mit Strings bei * 2?
* Hinweis: Bei * konvertiert JS automatisch, aber bei + nicht!
*/
function alterVerdoppeln(eingabe) {
// Verdoppelt das Alter
let doppelt = eingabe * 2;
return `Das Doppelte deines Alters ist ${doppelt}`;
}
// Test
console.log(alterVerdoppeln("16"));
// Sollte "Das Doppelte deines Alters ist 32" sein - aber ist es das?Teil 6: if/else Bedingungen
Übung 6.1: Einfache if-Bedingung
/*
* Übung 6.1: Einfache if-Bedingung
* Aufgabe: Schreibe eine Funktion, die true zurückgibt wenn die Zahl positiv (> 0) ist, sonst false.
* Konzept: if/else
*/
function istPositiv(zahl) {
/**
* Prüft, ob eine Zahl positiv ist.
* @param {number} zahl - Eine Zahl
* @returns {boolean} true wenn positiv (> 0), sonst false
*/
// DEINE LÖSUNG HIER
}
// Tests
console.assert(istPositiv(5) === true, "Fehler: 5 ist positiv");
console.assert(istPositiv(-3) === false, "Fehler: -3 ist nicht positiv");
console.assert(istPositiv(0) === false, "Fehler: 0 ist nicht positiv");
console.log("✓ Alle Tests bestanden!");Übung 6.2: if-else if-else
/*
* Übung 6.2: if-else if-else
* Aufgabe: Schreibe eine Funktion, die "positiv", "negativ" oder "null" zurückgibt.
* Konzept: if-else if-else
*/
function zahlKlassifizieren(zahl) {
/**
* Klassifiziert eine Zahl.
* @param {number} zahl - Eine Zahl
* @returns {string} "positiv", "negativ" oder "null"
*/
// DEINE LÖSUNG HIER
}
// Tests
console.assert(zahlKlassifizieren(5) === "positiv", "Fehler: 5 ist positiv");
console.assert(zahlKlassifizieren(-3) === "negativ", "Fehler: -3 ist negativ");
console.assert(zahlKlassifizieren(0) === "null", "Fehler: 0 ist null");
console.log("✓ Alle Tests bestanden!");Übung 6.3: Vergleich zweier Zahlen
/*
* Übung 6.3: Vergleich zweier Zahlen
* Aufgabe: Schreibe eine Funktion, die die größere von zwei Zahlen zurückgibt.
* Konzept: Vergleichsoperatoren und if/else
*/
function groessereZahl(a, b) {
/**
* Gibt die größere von zwei Zahlen zurück.
* @param {number} a - Erste Zahl
* @param {number} b - Zweite Zahl
* @returns {number} Die größere Zahl
*/
// DEINE LÖSUNG HIER
}
// Tests
console.assert(groessereZahl(5, 3) === 5, "Fehler: 5 ist größer");
console.assert(groessereZahl(10, 20) === 20, "Fehler: 20 ist größer");
console.assert(groessereZahl(7, 7) === 7, "Fehler: Beide gleich, gib 7 zurück");
console.log("✓ Alle Tests bestanden!");Übung 6.4: Code Reading (Code lesen)
Aufgabe: Lies den folgenden Code und erkläre, was er macht. Erstelle eine Ablauf-Tabelle.
let temperatur = 25;
let nachricht;
if (temperatur > 30) {
nachricht = "Es ist heiß!";
} else if (temperatur > 20) {
nachricht = "Es ist warm.";
} else if (temperatur > 10) {
nachricht = "Es ist kühl.";
} else {
nachricht = "Es ist kalt!";
}
console.log(nachricht);Fragen:
- Was wird ausgegeben, wenn
temperatur = 25? - Was wird ausgegeben, wenn
temperatur = 35? - Was wird ausgegeben, wenn
temperatur = 5? - Welche Bedingung wird bei
temperatur = 25überprüft und welche Bedingungen werden übersprungen?
Übung 6.5: Debugging (Fehler finden)
Aufgabe: Der folgende Code soll prüfen, ob eine Person volljährig ist (18 Jahre oder älter). Es gibt aber einen logischen Fehler.
/*
* Übung 6.5: Debugging - Volljährigkeit
* Aufgabe: Der Code prüft Volljährigkeit, aber bei alter = 18 stimmt das Ergebnis nicht.
* Hinweis: Welcher Vergleichsoperator ist korrekt: > oder >= ?
*/
function pruefeVolljaehrigkeit(alter) {
// Prüft, ob eine Person volljährig ist.
if (alter > 18) {
return "volljährig";
} else {
return "minderjährig";
}
}
// Tests
console.log(pruefeVolljaehrigkeit(20)); // Sollte "volljährig" sein
console.log(pruefeVolljaehrigkeit(18)); // Sollte "volljährig" sein - aber ist es das?
console.log(pruefeVolljaehrigkeit(16)); // Sollte "minderjährig" seinTeil 7: Schleifen (Loops)
Übung 7.1: Einfache for-Schleife
/*
* Übung 7.1: Einfache for-Schleife
* Aufgabe: Schreibe eine Funktion, die ein Array [1, 2, 3, 4, 5] mit einer for-Schleife erstellt.
* Konzept: for-Schleife
*/
function zahlenBisFuenf() {
/**
* Erstellt ein Array mit Zahlen von 1 bis 5.
* @returns {Array} [1, 2, 3, 4, 5]
*/
// DEINE LÖSUNG HIER
}
// Tests
let ergebnis = zahlenBisFuenf();
console.assert(JSON.stringify(ergebnis) === JSON.stringify([1, 2, 3, 4, 5]), "Fehler: Sollte [1, 2, 3, 4, 5] sein");
console.log("✓ Alle Tests bestanden!");Übung 7.2: Summe mit Schleife
/*
* Übung 7.2: Summe mit Schleife
* Aufgabe: Schreibe eine Funktion, die die Summe 1 + 2 + ... + n berechnet.
* Konzept: for-Schleife mit Akkumulator
*/
function summeBisN(n) {
/**
* Berechnet die Summe von 1 bis n.
* @param {number} n - Obergrenze
* @returns {number} Summe von 1 + 2 + ... + n
*/
// DEINE LÖSUNG HIER
}
// Tests
console.assert(summeBisN(5) === 15, "Fehler: 1+2+3+4+5 = 15");
console.assert(summeBisN(10) === 55, "Fehler: Summe bis 10 sollte 55 sein");
console.assert(summeBisN(1) === 1, "Fehler: Summe bis 1 sollte 1 sein");
console.log("✓ Alle Tests bestanden!");Übung 7.3: Gerade Zahlen zählen
/*
* Übung 7.3: Gerade Zahlen zählen
* Aufgabe: Schreibe eine Funktion, die zählt, wie viele gerade Zahlen in einem Array sind.
* Konzept: for-Schleife mit if-Bedingung, Modulo-Operator %
*/
function geradeZaehlen(zahlen) {
/**
* Zählt gerade Zahlen in einem Array.
* @param {Array} zahlen - Array von Zahlen
* @returns {number} Anzahl der geraden Zahlen
*/
// DEINE LÖSUNG HIER
}
// Tests
console.assert(geradeZaehlen([1, 2, 3, 4, 5, 6]) === 3, "Fehler: 3 gerade Zahlen");
console.assert(geradeZaehlen([1, 3, 5, 7]) === 0, "Fehler: Keine geraden Zahlen");
console.assert(geradeZaehlen([2, 4, 6, 8]) === 4, "Fehler: 4 gerade Zahlen");
console.log("✓ Alle Tests bestanden!");Übung 7.4: Code Reading (Code lesen)
Aufgabe: Lies den folgenden Code und erstelle eine Variablen-Tabelle. Erkläre den Ablauf der Schleife.
let summe = 0;
let zahlen = [10, 20, 30];
for (let zahl of zahlen) {
summe = summe + zahl;
console.log(`Aktuelle Summe: ${summe}`);
}
console.log(`Gesamt-Summe: ${summe}`);Fragen:
- Wie oft wird die Schleife durchlaufen?
- Erstelle eine Tabelle, die zeigt, wie sich
summein jeder Iteration ändert:
| Iteration | zahl | summe (vorher) | summe (nachher) |
|---|---|---|---|
| 1 | ? | ? | ? |
| 2 | ? | ? | ? |
| 3 | ? | ? | ? |
- Was ist der finale Wert von
summe?
Übung 7.5: Debugging (Fehler finden)
Aufgabe: Der folgende Code soll alle ungeraden Zahlen von 1 bis 10 in einem Array sammeln, aber es gibt einen Fehler.
/*
* Übung 7.5: Debugging - Schleifengrenzen
* Aufgabe: Der Code soll [1, 3, 5, 7, 9] zurückgeben. Was ist das Problem mit i < 10?
* Hinweis: Die Schleife soll BIS 10 laufen (inklusive).
*/
function ungeradeZahlen() {
// Sammelt ungerade Zahlen von 1 bis 10.
let ungerade = [];
for (let i = 1; i < 10; i++) {
if (i % 2 === 1) {
ungerade.push(i);
}
}
return ungerade;
}
// Test
console.log(ungeradeZahlen()); // Sollte [1, 3, 5, 7, 9] seinTeil 8: Funktionen
Übung 8.1: Funktion mit Parameter
/*
* Übung 8.1: Funktion mit Parameter
* Aufgabe: Schreibe eine Funktion, die "Hallo, [name]!" zurückgibt.
* Konzept: Funktion mit Parameter
*/
function begruesse(name) {
/**
* Erstellt eine Begrüßung.
* @param {string} name - Name der Person
* @returns {string} "Hallo, [name]!"
*/
// DEINE LÖSUNG HIER
}
// Tests
console.assert(begruesse("Anna") === "Hallo, Anna!", "Fehler: Begrüßung falsch");
console.assert(begruesse("Max") === "Hallo, Max!", "Fehler: Begrüßung falsch");
console.log("✓ Alle Tests bestanden!");Übung 8.2: Funktion mit mehreren Parametern
/*
* Übung 8.2: Funktion mit mehreren Parametern
* Aufgabe: Schreibe eine Funktion, die den Durchschnitt von zwei Zahlen berechnet: (a + b) / 2
* Konzept: Funktion mit mehreren Parametern
*/
function durchschnittZwei(a, b) {
/**
* Berechnet den Durchschnitt von zwei Zahlen.
* @param {number} a - Erste Zahl
* @param {number} b - Zweite Zahl
* @returns {number} Durchschnitt (a + b) / 2
*/
// DEINE LÖSUNG HIER
}
// Tests
console.assert(durchschnittZwei(4, 6) === 5, "Fehler: (4+6)/2 = 5");
console.assert(durchschnittZwei(10, 20) === 15, "Fehler: (10+20)/2 = 15");
console.assert(durchschnittZwei(0, 10) === 5, "Fehler: (0+10)/2 = 5");
console.log("✓ Alle Tests bestanden!");Übung 8.3: Funktion ruft Funktion auf
/*
* Übung 8.3: Funktion ruft Funktion auf
* Aufgabe: Nutze die verdopple()-Funktion, um (zahl * 2) + 10 zu berechnen.
* Konzept: Funktionsaufruf innerhalb einer Funktion
*/
function verdopple(zahl) {
// Verdoppelt eine Zahl.
return zahl * 2;
}
function verdoppleUndAddiereZehn(zahl) {
/**
* Verdoppelt eine Zahl und addiert 10.
* @param {number} zahl - Eine Zahl
* @returns {number} (zahl * 2) + 10
*/
// DEINE LÖSUNG HIER - nutze verdopple()!
}
// Tests
console.assert(verdoppleUndAddiereZehn(5) === 20, "Fehler: 5*2+10 = 20");
console.assert(verdoppleUndAddiereZehn(0) === 10, "Fehler: 0*2+10 = 10");
console.assert(verdoppleUndAddiereZehn(3) === 16, "Fehler: 3*2+10 = 16");
console.log("✓ Alle Tests bestanden!");Übung 8.4: Code Reading (Code lesen)
Aufgabe: Lies den folgenden Code und erkläre, was passiert. Verfolge den Aufruf-Stack (Call Stack).
function berechneQuadrat(zahl) {
// Berechnet das Quadrat einer Zahl.
let ergebnis = zahl * zahl;
return ergebnis;
}
function berechneSummeQuadrate(a, b) {
// Berechnet die Summe der Quadrate von a und b.
let quadratA = berechneQuadrat(a);
let quadratB = berechneQuadrat(b);
let summe = quadratA + quadratB;
return summe;
}
let resultat = berechneSummeQuadrate(3, 4);
console.log(resultat);Fragen:
- Was wird ausgegeben?
- Erkläre den Ablauf: Welche Funktion ruft welche Funktion auf?
- Erstelle eine Tabelle für die Variablen in
berechneSummeQuadrate(3, 4):
| Variable | Wert |
|---|---|
| a | ? |
| b | ? |
| quadratA | ? |
| quadratB | ? |
| summe | ? |
Übung 8.5: Debugging (Fehler finden)
Aufgabe: Der folgende Code soll die Fläche eines Rechtecks berechnen, aber das Ergebnis ist immer falsch.
/*
* Übung 8.5: Debugging - Falsche Formel
* Aufgabe: Die Fläche eines Rechtecks ist Länge × Breite. Finde den Fehler!
* Hinweis: Beobachte die Variablen mit console.log()
*/
function berechneFlaeche(laenge, breite) {
// Berechnet die Fläche eines Rechtecks.
let flaeche = laenge + breite;
return flaeche;
}
function flaecheMitRahmen(laenge, breite) {
// Berechnet Fläche und gibt sie formatiert aus.
let ergebnis = berechneFlaeche(laenge, breite);
return `Die Fläche ist ${ergebnis} m²`;
}
// Test
console.log(flaecheMitRahmen(5, 3)); // Sollte "Die Fläche ist 15 m²" seinTeil 9: Kombination aller Konzepte
Übung 9.1: Temperaturumrechner
/*
* Übung 9.1: Temperaturumrechner
* Aufgabe: Rechne Celsius in Fahrenheit um mit der Formel: F = C * 9/5 + 32
* Konzepte: Funktion, Parameter, Arithmetik, Rückgabewert
*/
function celsiusZuFahrenheit(celsius) {
/**
* Rechnet Celsius in Fahrenheit um.
* Formel: F = C * 9/5 + 32
* @param {number} celsius - Temperatur in Celsius
* @returns {number} Temperatur in Fahrenheit
*/
// DEINE LÖSUNG HIER
}
// Tests
console.assert(celsiusZuFahrenheit(0) === 32, "Fehler: 0°C = 32°F");
console.assert(celsiusZuFahrenheit(100) === 212, "Fehler: 100°C = 212°F");
console.assert(Math.abs(celsiusZuFahrenheit(37) - 98.6) < 0.1, "Fehler: 37°C ≈ 98.6°F");
console.log("✓ Alle Tests bestanden!");Übung 9.2: Notenbewertung
/*
* Übung 9.2: Notenbewertung
* Aufgabe: Prüfe ob eine Schweizer Note >= 4.0 ist und gib "bestanden" oder "nicht bestanden" zurück.
* Konzepte: Funktion, Parameter, if/else, Vergleich
*/
function notePruefen(note) {
/**
* Prüft, ob eine Note ausreichend ist (>= 4.0 in der Schweiz).
* @param {number} note - Schweizer Note (1.0 bis 6.0)
* @returns {string} "bestanden" oder "nicht bestanden"
*/
// DEINE LÖSUNG HIER
}
// Tests
console.assert(notePruefen(5.5) === "bestanden", "Fehler: 5.5 ist bestanden");
console.assert(notePruefen(4.0) === "bestanden", "Fehler: 4.0 ist bestanden");
console.assert(notePruefen(3.9) === "nicht bestanden", "Fehler: 3.9 ist nicht bestanden");
console.assert(notePruefen(6.0) === "bestanden", "Fehler: 6.0 ist bestanden");
console.log("✓ Alle Tests bestanden!");Übung 9.3: Einkaufspreis berechnen
/*
* Übung 9.3: Einkaufspreis berechnen
* Aufgabe: Berechne den Gesamtpreis für Hefte (2.50 CHF) und Stifte (1.20 CHF).
* Konzepte: Funktion, mehrere Parameter, Arithmetik, Variablen
*/
function einkaufspreis(anzahlHefte, anzahlStifte) {
/**
* Berechnet den Gesamtpreis eines Einkaufs.
* @param {number} anzahlHefte - Anzahl der Hefte (à 2.50 CHF)
* @param {number} anzahlStifte - Anzahl der Stifte (à 1.20 CHF)
* @returns {number} Gesamtpreis in CHF
*/
// DEINE LÖSUNG HIER
}
// Tests
console.assert(einkaufspreis(2, 3) === 8.60, "Fehler: 2*2.50 + 3*1.20 = 8.60");
console.assert(einkaufspreis(1, 0) === 2.50, "Fehler: 1 Heft = 2.50");
console.assert(einkaufspreis(0, 5) === 6.00, "Fehler: 5 Stifte = 6.00");
console.log("✓ Alle Tests bestanden!");Übung 9.4: Zahlen filtern
/*
* Übung 9.4: Zahlen filtern
* Aufgabe: Schreibe eine Funktion, die nur positive Zahlen (> 0) aus einem Array behält.
* Konzepte: Funktion, Array, Schleife, if-Bedingung
*/
function nurPositive(zahlen) {
/**
* Filtert positive Zahlen aus einem Array.
* @param {Array} zahlen - Array von Zahlen
* @returns {Array} Neues Array nur mit positiven Zahlen
*/
// DEINE LÖSUNG HIER
}
// Tests
console.assert(JSON.stringify(nurPositive([1, -2, 3, -4, 5])) === JSON.stringify([1, 3, 5]), "Fehler: Nur positive behalten");
console.assert(JSON.stringify(nurPositive([-1, -2, -3])) === JSON.stringify([]), "Fehler: Keine positiven");
console.assert(JSON.stringify(nurPositive([1, 2, 3])) === JSON.stringify([1, 2, 3]), "Fehler: Alle positiv");
console.log("✓ Alle Tests bestanden!");Übung 9.5: Multiplikationstabelle
/*
* Übung 9.5: Multiplikationstabelle
* Aufgabe: Erstelle ein Array [zahl*1, zahl*2, ..., zahl*10] mit einer Schleife.
* Konzepte: Funktion, Schleife, Array, Arithmetik
*/
function multiplikationstabelle(zahl) {
/**
* Erstellt Multiplikationstabelle von 1 bis 10.
* @param {number} zahl - Die Zahl für die Tabelle
* @returns {Array} Array mit [zahl*1, zahl*2, ..., zahl*10]
*/
// DEINE LÖSUNG HIER
}
// Tests
console.assert(JSON.stringify(multiplikationstabelle(5)) === JSON.stringify([5, 10, 15, 20, 25, 30, 35, 40, 45, 50]), "Fehler: 5er Reihe");
console.assert(JSON.stringify(multiplikationstabelle(1)) === JSON.stringify([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), "Fehler: 1er Reihe");
console.log("✓ Alle Tests bestanden!");Bonus-Übungen (Fortgeschritten)
Die folgenden Übungen sind anspruchsvoller und kombinieren mehrere Konzepte. Versuche sie erst, wenn du die Grundlagen beherrschst!
Bonus 1: Gerade oder ungerade
/*
* Bonus 1: Gerade oder ungerade
* Aufgabe: Prüfe mit dem Modulo-Operator %, ob eine Zahl gerade ist (durch 2 teilbar).
*/
function istGerade(zahl) {
/**
* Prüft, ob eine Zahl gerade ist.
*/
// DEINE LÖSUNG HIER
}
// Tests
console.assert(istGerade(4) === true, "Fehler: 4 ist gerade");
console.assert(istGerade(7) === false, "Fehler: 7 ist ungerade");
console.assert(istGerade(0) === true, "Fehler: 0 ist gerade");
console.log("✓ Alle Tests bestanden!");Bonus 2: Maximum von drei Zahlen
/*
* Bonus 2: Maximum von drei Zahlen
* Aufgabe: Finde das Maximum von drei Zahlen mit if/else if/else oder Math.max().
*/
function maximumVonDrei(a, b, c) {
/**
* Findet das Maximum von drei Zahlen.
*/
// DEINE LÖSUNG HIER
}
// Tests
console.assert(maximumVonDrei(5, 2, 8) === 8, "Fehler: Maximum sollte 8 sein");
console.assert(maximumVonDrei(10, 10, 5) === 10, "Fehler: Maximum sollte 10 sein");
console.log("✓ Alle Tests bestanden!");Bonus 3: Fakultät
/*
* Bonus 3: Fakultät
* Aufgabe: Berechne n! = n × (n-1) × ... × 2 × 1. Beispiel: 5! = 120
*/
function fakultaet(n) {
/**
* Berechnet die Fakultät von n (n!).
* Beispiel: 5! = 5 × 4 × 3 × 2 × 1 = 120
*/
// DEINE LÖSUNG HIER
}
// Tests
console.assert(fakultaet(5) === 120, "Fehler: 5! = 120");
console.assert(fakultaet(1) === 1, "Fehler: 1! = 1");
console.assert(fakultaet(0) === 1, "Fehler: 0! = 1");
console.log("✓ Alle Tests bestanden!");Bonus 4: Summe eines Arrays
/*
* Bonus 4: Summe eines Arrays
* Aufgabe: Berechne die Summe aller Zahlen in einem Array OHNE die reduce()-Methode!
*/
function summeArray(zahlen) {
/**
* Berechnet die Summe aller Zahlen in einem Array.
* Versuche es OHNE die reduce()-Methode!
*/
// DEINE LÖSUNG HIER
}
// Tests
console.assert(summeArray([1, 2, 3, 4, 5]) === 15, "Fehler: Summe sollte 15 sein");
console.assert(summeArray([]) === 0, "Fehler: Leeres Array = 0");
console.log("✓ Alle Tests bestanden!");Bonus 5: Durchschnitt berechnen
/*
* Bonus 5: Durchschnitt berechnen
* Aufgabe: Berechne den Durchschnitt eines Arrays (Summe / Anzahl).
*/
function durchschnitt(zahlen) {
/**
* Berechnet den Durchschnitt eines Arrays.
*/
// DEINE LÖSUNG HIER
}
// Tests
console.assert(durchschnitt([1, 2, 3, 4, 5]) === 3, "Fehler: Durchschnitt = 3");
console.assert(durchschnitt([10, 20, 30]) === 20, "Fehler: Durchschnitt = 20");
console.log("✓ Alle Tests bestanden!");Bonus 6: Gerade Zahlen filtern
/*
* Bonus 6: Gerade Zahlen filtern
* Aufgabe: Filtere alle geraden Zahlen aus einem Array (nur Zahlen, die durch 2 teilbar sind).
*/
function geradeZahlen(zahlen) {
/**
* Filtert alle geraden Zahlen aus einem Array.
*/
// DEINE LÖSUNG HIER
}
// Tests
console.assert(JSON.stringify(geradeZahlen([1, 2, 3, 4, 5, 6])) === JSON.stringify([2, 4, 6]), "Fehler: [2, 4, 6]");
console.assert(JSON.stringify(geradeZahlen([1, 3, 5])) === JSON.stringify([]), "Fehler: Leeres Array");
console.log("✓ Alle Tests bestanden!");Bonus 7: String umkehren
/*
* Bonus 7: String umkehren
* Aufgabe: Kehre einen String um. Tipp: .split('').reverse().join('')
*/
function stringUmkehren(text) {
/**
* Kehrt einen String um.
* Beispiel: "Hallo" → "ollaH"
*/
// DEINE LÖSUNG HIER
}
// Tests
console.assert(stringUmkehren("Hallo") === "ollaH", "Fehler: 'ollaH'");
console.assert(stringUmkehren("JavaScript") === "tpircSavaJ", "Fehler: 'tpircSavaJ'");
console.log("✓ Alle Tests bestanden!");Bonus 8: Wörter zählen
/*
* Bonus 8: Wörter zählen
* Aufgabe: Zähle die Anzahl der Wörter in einem String. Tipp: .split(" ")
*/
function woerterZaehlen(text) {
/**
* Zählt die Anzahl der Wörter in einem String.
* Tipp: .split() Methode
*/
// DEINE LÖSUNG HIER
}
// Tests
console.assert(woerterZaehlen("Hallo Welt") === 2, "Fehler: 2 Wörter");
console.assert(woerterZaehlen("JavaScript ist toll") === 3, "Fehler: 3 Wörter");
console.log("✓ Alle Tests bestanden!");Bonus 9: Palindrom-Checker
/*
* Bonus 9: Palindrom-Checker
* Aufgabe: Prüfe, ob ein Wort ein Palindrom ist (vorwärts = rückwärts). Beispiele: "anna", "rentner"
*/
function istPalindrom(wort) {
/**
* Prüft, ob ein Wort ein Palindrom ist.
* Beispiel: "anna", "rentner"
*/
// DEINE LÖSUNG HIER
}
// Tests
console.assert(istPalindrom("anna") === true, "Fehler: 'anna' ist Palindrom");
console.assert(istPalindrom("rentner") === true, "Fehler: 'rentner' ist Palindrom");
console.assert(istPalindrom("hallo") === false, "Fehler: 'hallo' ist kein Palindrom");
console.log("✓ Alle Tests bestanden!");Bonus 10: Array verdoppeln
/*
* Bonus 10: Array verdoppeln
* Aufgabe: Verdopple jedes Element in einem Array. [1, 2, 3] → [2, 4, 6]
*/
function arrayVerdoppeln(zahlen) {
/**
* Verdoppelt jedes Element in einem Array.
* Beispiel: [1, 2, 3] → [2, 4, 6]
*/
// DEINE LÖSUNG HIER
}
// Tests
console.assert(JSON.stringify(arrayVerdoppeln([1, 2, 3])) === JSON.stringify([2, 4, 6]), "Fehler: [2, 4, 6]");
console.assert(JSON.stringify(arrayVerdoppeln([])) === JSON.stringify([]), "Fehler: Leeres Array");
console.log("✓ Alle Tests bestanden!");Bonus 11: FizzBuzz
/*
* Bonus 11: FizzBuzz
* Aufgabe: Implementiere das FizzBuzz-Spiel:
* - Durch 3 teilbar → "Fizz"
* - Durch 5 teilbar → "Buzz"
* - Durch 3 UND 5 teilbar → "FizzBuzz"
* - Sonst → Zahl als String
*/
function fizzbuzz(n) {
/**
* FizzBuzz-Funktion.
*/
// DEINE LÖSUNG HIER
}
// Tests
console.assert(fizzbuzz(3) === "Fizz", "Fehler: 'Fizz'");
console.assert(fizzbuzz(5) === "Buzz", "Fehler: 'Buzz'");
console.assert(fizzbuzz(15) === "FizzBuzz", "Fehler: 'FizzBuzz'");
console.assert(fizzbuzz(7) === "7", "Fehler: '7'");
console.log("✓ Alle Tests bestanden!");Bonus 12: Häufigkeiten zählen
/*
* Bonus 12: Häufigkeiten zählen
* Aufgabe: Zähle, wie oft jedes Element in einem Array vorkommt.
* Beispiel: ["a", "b", "a"] → {a: 2, b: 1}
*/
function haeufigkeitZaehlen(array) {
/**
* Zählt die Häufigkeit jedes Elements.
* Beispiel: ["a", "b", "a"] → {a: 2, b: 1}
*/
// DEINE LÖSUNG HIER
}
// Tests
let ergebnis1 = haeufigkeitZaehlen(["a", "b", "a"]);
console.assert(ergebnis1.a === 2 && ergebnis1.b === 1, "Fehler");
let ergebnis2 = haeufigkeitZaehlen([]);
console.assert(Object.keys(ergebnis2).length === 0, "Fehler: Leeres Objekt");
console.log("✓ Alle Tests bestanden!");Glückwunsch!
Du hast alle Grundlagenübungen abgeschlossen! 🎉
Vergleiche deine Lösungen mit den Musterlösungen und schaue, wie du die Aufgaben anders oder effizienter lösen könntest.
Nächste Schritte
- Versuche die Bonus-Übungen
- Kombiniere verschiedene Konzepte in eigenen Programmen
- Lerne über Arrays, Objekte und fortgeschrittene Themen im Theorie-Skript
- Baue kleine Projekte im Browser (z.B. mit HTML/CSS)