Skip to content

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:

  1. Kopiere den Code-Block in deine Browser-Konsole (F12) oder eine JS-Datei
  2. Implementiere die Funktion zwischen den Kommentaren
  3. Führe den Code aus
  4. Die Tests zeigen dir automatisch, ob deine Lösung korrekt ist

Teil 1: Einfacher Programmablauf & console.log

Übung 1.1: Willkommensnachricht

javascript
/*
 * Ü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

javascript
/*
 * Ü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.

javascript
console.log("Hallo");
console.log("Welt");
console.log("!");

Fragen:

  1. Wie viele Zeilen werden ausgegeben?
  2. In welcher Reihenfolge werden die Texte ausgegeben?
  3. 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.

javascript
/*
 * Ü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

javascript
/*
 * Ü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

javascript
/*
 * Ü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

javascript
/*
 * Ü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

javascript
/*
 * Ü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.

javascript
let x = 5;
let y = 10;
x = y;
y = 20;

Erstelle diese Tabelle:

ZeileCodexy
1let x = 5??
2let y = 10??
3x = y??
4y = 20??

Fragen:

  1. Was ist der Wert von x am Ende?
  2. 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.

javascript
/*
 * Ü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 sein

Teil 3: Grundlegende Datentypen

Übung 3.1: Datentypen erkennen

javascript
/*
 * Ü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

javascript
/*
 * Ü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.

javascript
let name = "Anna";
let alter = 16;
let groesse = 1.65;
let istSchueler = true;

let info = name + " ist " + alter + " Jahre alt";
console.log(info);

Fragen:

  1. Welche Datentypen werden verwendet?
  2. Warum kann alter hier direkt mit Strings verbunden werden?
  3. Was gibt das Programm aus?

Übung 3.4: Debugging (Fehler finden)

Aufgabe: Der folgende Code hat einen Typ-Fehler. Finde und behebe ihn.

javascript
/*
 * Ü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

javascript
/*
 * Ü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

javascript
/*
 * Ü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

javascript
/*
 * Ü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.

javascript
let a = 10;
let b = 5;
let summe = a + b;
let produkt = a * b;
let differenz = a - b;
ZeileCodeabsummeproduktdifferenz
1let a = 10?????
2let b = 5?????
3let summe = a + b?????
4let produkt = a * b?????
5let 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.

javascript
/*
 * Ü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 sein

Teil 5: Basisfunktionen (Typkonvertierung)

Übung 5.1: String zu Number

javascript
/*
 * Ü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

javascript
/*
 * Ü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

javascript
/*
 * Ü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.

javascript
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:

  1. Was passiert, wenn der Benutzer "16" eingibt?
  2. Welche Typkonvertierungen werden durchgeführt?
  3. Erstelle eine Variablen-Tabelle mit allen Variablen und ihren Werten (wenn Eingabe "16" ist).
VariableTypWert
alterEingabe??
alter??
naechstesJahr??
ausgabe??

Übung 5.5: Debugging (Fehler finden)

Aufgabe: Der folgende Code soll das Alter des Benutzers verdoppeln, hat aber einen Fehler.

javascript
/*
 * Ü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

javascript
/*
 * Ü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

javascript
/*
 * Ü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

javascript
/*
 * Ü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.

javascript
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:

  1. Was wird ausgegeben, wenn temperatur = 25?
  2. Was wird ausgegeben, wenn temperatur = 35?
  3. Was wird ausgegeben, wenn temperatur = 5?
  4. 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.

javascript
/*
 * Ü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" sein

Teil 7: Schleifen (Loops)

Übung 7.1: Einfache for-Schleife

javascript
/*
 * Ü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

javascript
/*
 * Ü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

javascript
/*
 * Ü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.

javascript
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:

  1. Wie oft wird die Schleife durchlaufen?
  2. Erstelle eine Tabelle, die zeigt, wie sich summe in jeder Iteration ändert:
Iterationzahlsumme (vorher)summe (nachher)
1???
2???
3???
  1. 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.

javascript
/*
 * Ü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] sein

Teil 8: Funktionen

Übung 8.1: Funktion mit Parameter

javascript
/*
 * Ü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

javascript
/*
 * Ü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

javascript
/*
 * Ü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).

javascript
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:

  1. Was wird ausgegeben?
  2. Erkläre den Ablauf: Welche Funktion ruft welche Funktion auf?
  3. Erstelle eine Tabelle für die Variablen in berechneSummeQuadrate(3, 4):
VariableWert
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.

javascript
/*
 * Ü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²" sein

Teil 9: Kombination aller Konzepte

Übung 9.1: Temperaturumrechner

javascript
/*
 * Ü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

javascript
/*
 * Ü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

javascript
/*
 * Ü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

javascript
/*
 * Ü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

javascript
/*
 * Ü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

javascript
/*
 * 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

javascript
/*
 * 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

javascript
/*
 * 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

javascript
/*
 * 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

javascript
/*
 * 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

javascript
/*
 * 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

javascript
/*
 * 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

javascript
/*
 * 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

javascript
/*
 * 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

javascript
/*
 * 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

javascript
/*
 * 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

javascript
/*
 * 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)

Informatik & ICT Unterricht Neufeld