From f642829cb1da7540c215c67cedd35a26b8fbd38b Mon Sep 17 00:00:00 2001 From: Philippe Torrel Date: Tue, 30 Jun 2026 15:02:55 +0200 Subject: [PATCH] added uebungen 1 - 10 --- .../uebungen/#u01_transform-name/index.html | 35 ++++++++ 02_advanced/uebungen/#u02_distance/index.html | 29 +++++++ .../uebungen/#u03_profile-card/index.html | 27 ++++++ .../uebungen/#u07_string-rekursiv/index.html | 30 +++++++ .../uebungen/#u09_level-rekursiv/index.html | 34 ++++++++ .../uebungen/u04_countdown-btn/index.html | 77 ++++++++++++++++++ .../uebungen/u05_sum-rekursiv/index.html | 39 +++++++++ .../u06_binomialkoeffizienten/index.html | 49 +++++++++++ .../uebungen/u08_max-rekursiv/index.html | 32 ++++++++ .../u10_sum-array-rekursiv/index.html | 34 ++++++++ 02_advanced/uebungen/uebungen_1-10.zip | Bin 0 -> 14145 bytes 11 files changed, 386 insertions(+) create mode 100644 02_advanced/uebungen/#u01_transform-name/index.html create mode 100644 02_advanced/uebungen/#u02_distance/index.html create mode 100644 02_advanced/uebungen/#u03_profile-card/index.html create mode 100644 02_advanced/uebungen/#u07_string-rekursiv/index.html create mode 100644 02_advanced/uebungen/#u09_level-rekursiv/index.html create mode 100644 02_advanced/uebungen/u04_countdown-btn/index.html create mode 100644 02_advanced/uebungen/u05_sum-rekursiv/index.html create mode 100644 02_advanced/uebungen/u06_binomialkoeffizienten/index.html create mode 100644 02_advanced/uebungen/u08_max-rekursiv/index.html create mode 100644 02_advanced/uebungen/u10_sum-array-rekursiv/index.html create mode 100644 02_advanced/uebungen/uebungen_1-10.zip diff --git a/02_advanced/uebungen/#u01_transform-name/index.html b/02_advanced/uebungen/#u01_transform-name/index.html new file mode 100644 index 0000000..0432416 --- /dev/null +++ b/02_advanced/uebungen/#u01_transform-name/index.html @@ -0,0 +1,35 @@ + + + + + + Übung 1: Vorname vor Nachname oder Nachname vor Vorname? + + + +
+
+
+

Übung 1: Vorname vor Nachname oder Nachname vor Vorname?

+

+ Wenn dich der Name der Übung beim Lesen genauso verwirrt wie uns beim Schreiben, dann liegt das daran, dass + die Reihenfolge von Vor- und Nachnamen nicht immer eindeutig ist. Manchmal heißt es + Max Mustermann und manchmal auch Mustermann, Max. Damit Benutzer der + Funktion logTransformedName (aus der Übung Der transformierte Ladislaus, Teil 2 der letzten Class) nicht + auch so verwirrt sind, stelle sie besser auf named parameters um. +

+
+
+
+ + + diff --git a/02_advanced/uebungen/#u02_distance/index.html b/02_advanced/uebungen/#u02_distance/index.html new file mode 100644 index 0000000..6d8656b --- /dev/null +++ b/02_advanced/uebungen/#u02_distance/index.html @@ -0,0 +1,29 @@ + + + + + + Übung 2: Ist es noch weit? Sind wir schon da? + + + +
+
+
+

Übung 2: Ist es noch weit? Sind wir schon da?

+

Die Formel zur Berechnung von Entfernungen lautet:

+ +
Math.sqrt((yDestination - yOrigin) ** 2 + (xDestination - xOrigin) ** 2);
+
+

Schreibe eine Funktion distance, die du z. B. folgendermaßen aufrufen kannst:

+ +
distance({ x: 1, y: 1 }, { x: 5, y: 1 }); // => 4
+
+
+
+
+ + + diff --git a/02_advanced/uebungen/#u03_profile-card/index.html b/02_advanced/uebungen/#u03_profile-card/index.html new file mode 100644 index 0000000..ba9dae7 --- /dev/null +++ b/02_advanced/uebungen/#u03_profile-card/index.html @@ -0,0 +1,27 @@ + + + + + + Übung 3: Profilcard mit destructuring + + + +
+
+
+

Übung 3: Profilcard mit destructuring

+

+ Erstelle eine Funktion namens createProfileCard, die die Informationen einer Person + entgegennimmt und daraus eine Bootstrap Card im HTML-Format generiert. Nutze dabei die generatePersonData + Funktion, um die Personendaten zu formatieren. Die Funktion soll so angepasst werden, dass sie Destructuring + für die übergebenen Parameter verwendet. +

+
+
+
+ + + diff --git a/02_advanced/uebungen/#u07_string-rekursiv/index.html b/02_advanced/uebungen/#u07_string-rekursiv/index.html new file mode 100644 index 0000000..18d2ac1 --- /dev/null +++ b/02_advanced/uebungen/#u07_string-rekursiv/index.html @@ -0,0 +1,30 @@ + + + + + + Übung 7: Rekursive Umkehrung eines Strings + + + +
+
+
+

Übung 7: Rekursive Umkehrung eines Strings

+

Schreibe eine rekursive Funktion in JavaScript, die einen gegebenen String umkehrt.

+
+
+
+ + + diff --git a/02_advanced/uebungen/#u09_level-rekursiv/index.html b/02_advanced/uebungen/#u09_level-rekursiv/index.html new file mode 100644 index 0000000..24650b8 --- /dev/null +++ b/02_advanced/uebungen/#u09_level-rekursiv/index.html @@ -0,0 +1,34 @@ + + + + + + Übung 9: Tiefste Ebene eines verschachtelten Arrays finden + + + +
+
+
+

Übung 9 (advanced): Tiefste Ebene eines verschachtelten Arrays finden

+

+ Schreibe eine rekursive Funktion in JavaScript, die die tiefste Ebene eines verschachtelten Arrays bestimmt. + Die Funktion soll die maximale Verschachtelungstiefe des Arrays zurückgeben. +

+
+
+
+ + + diff --git a/02_advanced/uebungen/u04_countdown-btn/index.html b/02_advanced/uebungen/u04_countdown-btn/index.html new file mode 100644 index 0000000..73331f0 --- /dev/null +++ b/02_advanced/uebungen/u04_countdown-btn/index.html @@ -0,0 +1,77 @@ + + + + + + Übung 4: Button Countdown mit Settings + + + +
+
+
+

Übung 4: Button Countdown mit Settings

+

+ Entwickle einen funktionalen Button, der nach einem Klick einen Countdown in der Schaltfläche anzeigt und + nach Ablauf des Countdowns automatisch wieder aktiviert wird. +

+

Szenario

+

+ Du arbeitest als Frontend-Entwickler für ein Unternehmen, das Online-Formulare für Messeaufträge anbietet. + Um sicherzustellen, dass Benutzer die Formulare nicht versehentlich oder mehrfach absenden, soll ein Button + implementiert werden, der nach dem Absenden für eine bestimmte Zeit (z.B. 5 Sekunden) deaktiviert wird. + Während dieser Zeit soll ein Countdown in der Schaltfläche angezeigt werden, der die verbleibende Zeit bis + zur Reaktivierung des Buttons anzeigt. +

+

Aufgaben

+ +
    +
  1. + HTML-Struktur: Erstelle einen einfachen HTML-Button mit einer Klasse (z.B. button-send). +
  2. +
  3. + JavaScript-Funktionalität: +
      +
    • Implementiere einen Event-Listener für den Klick auf den Button.
    • + +
    • Erstelle eine Countdown-Funktion, die beim Klicken auf den Button gestartet wird.
    • + +
    • + Während des Countdowns soll der Button deaktiviert und der aktuelle Countdown-Wert in der Schaltfläche + angezeigt werden. +
    • + +
    • + Nach Ablauf des Countdowns soll der Button wieder aktiviert und der ursprüngliche Text in der + Schaltfläche wiederhergestellt werden. +
    • +
    +
  4. +
  5. + Countdown-Anzeige: Der Countdown soll in der Schaltfläche des Buttons angezeigt werden. + Das Format der Anzeige (z.B. "5...", "4...", "3...") kannst du selbst wählen. +
  6. +
  7. + Deaktivierung: Stelle sicher, dass der Button während des Countdowns deaktiviert ist, um + Mehrfachklicks zu verhindern. +
  8. +
  9. + Reaktivierung: Sobald der Countdown abgelaufen ist, soll der Button automatisch wieder + aktiviert werden. +
  10. +
  11. + Countdown-Wert konfigurierbar machen: Ermögliche es, den Countdown-Wert (z.B. 5 Sekunden) + über ein Settings-Objekt einzustellen. aktiviert werden. +
  12. +
+

Viel Erfolg bei der Umsetzung!

+
+ + +
+
+ + + diff --git a/02_advanced/uebungen/u05_sum-rekursiv/index.html b/02_advanced/uebungen/u05_sum-rekursiv/index.html new file mode 100644 index 0000000..be95ad0 --- /dev/null +++ b/02_advanced/uebungen/u05_sum-rekursiv/index.html @@ -0,0 +1,39 @@ + + + + + + Übung 5: Summe einer Zahlenreihe rekursiv berechnen + + + +
+
+
+

Übung 5: Summe einer Zahlenreihe rekursiv berechnen

+

+ Schreibe eine rekursive Funktion in JavaScript, die die Summe aller Zahlen von n bis + 1 berechnet. +

+

Hinweise

+ +
    +
  • Definiere einen Basisfall, der die Rekursion beendet.
  • +
  • Der rekursive Fall sollte das Problem in ein kleineres Teilproblem zerlegen.
  • +
+

Viel Erfolg bei der Umsetzung!

+
+
+
+ + + diff --git a/02_advanced/uebungen/u06_binomialkoeffizienten/index.html b/02_advanced/uebungen/u06_binomialkoeffizienten/index.html new file mode 100644 index 0000000..b5ce674 --- /dev/null +++ b/02_advanced/uebungen/u06_binomialkoeffizienten/index.html @@ -0,0 +1,49 @@ + + + + + + Optionale Übung 6: Berechnung von Kombinationen mit Rekursion + + + +
+
+
+

Optionale Übung 6: Berechnung von Kombinationen mit Rekursion

+

+ Implementiere eine rekursive Funktion in JavaScript, die die Anzahl der Kombinationen berechnet, in denen + man k Elemente aus einer Menge von n Elementen auswählen kann (also den + Binomialkoeffizienten). +

+

Hinweise

+ +
    +
  • + Die Formel für Kombinationen lautet:
    +
  • +
  • + Definiere geeignete Basisfälle, zum Beispiel wenn k gleich 0 oder + n ist. +
  • +
+
+
+
+ + + diff --git a/02_advanced/uebungen/u08_max-rekursiv/index.html b/02_advanced/uebungen/u08_max-rekursiv/index.html new file mode 100644 index 0000000..17473c8 --- /dev/null +++ b/02_advanced/uebungen/u08_max-rekursiv/index.html @@ -0,0 +1,32 @@ + + + + + + Übung 8: Rekursive Suche des Maximums in einem Array + + + +
+
+
+

Übung 8: Rekursive Suche des Maximums in einem Array

+

+ Schreibe eine rekursive Funktion in JavaScript, die das größte Element in einem Array von Zahlen findet. +

+
+
+
+ + + diff --git a/02_advanced/uebungen/u10_sum-array-rekursiv/index.html b/02_advanced/uebungen/u10_sum-array-rekursiv/index.html new file mode 100644 index 0000000..8ff642e --- /dev/null +++ b/02_advanced/uebungen/u10_sum-array-rekursiv/index.html @@ -0,0 +1,34 @@ + + + + + + Übung 10: Summe aller Zahlen in einem verschachtelten Array + + + +
+
+
+

Übung 10: Summe aller Zahlen in einem verschachtelten Array

+

+ Schreibe eine rekursive Funktion in JavaScript, die die Summe aller Zahlen in einem verschachtelten Array + berechnet. Das Array kann beliebig tief verschachtelt sein und enthält nur Zahlen oder weitere Arrays. +

+
+
+
+ + + diff --git a/02_advanced/uebungen/uebungen_1-10.zip b/02_advanced/uebungen/uebungen_1-10.zip new file mode 100644 index 0000000000000000000000000000000000000000..a5f1b13a36eda7488fa0b7b97ebea88ea8c17537 GIT binary patch literal 14145 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
    q_GcF1x66koxq^U2<6aiel@B0s}CotZ;UHS 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 literal 0 HcmV?d00001