diff --git a/07_js-debug/uebungen/u01_bibverwaltung/index.html b/07_js-debug/uebungen/u01_bibverwaltung/index.html index 02e136f..6f1217b 100644 --- a/07_js-debug/uebungen/u01_bibverwaltung/index.html +++ b/07_js-debug/uebungen/u01_bibverwaltung/index.html @@ -27,8 +27,8 @@ const isLibraryUpdating = false; const isUserLoggedIn = true; - const hasLibrarianPermissions = true; - const hasBookEditCapability = false; + const hasLibrarianPermissions = false; + const hasBookEditCapability = true; const hasBookAccess = false; const bookCollection = [ diff --git a/07_js-debug/uebungen/u01_bibverwaltung/solution.html b/07_js-debug/uebungen/u01_bibverwaltung/solution.html new file mode 100644 index 0000000..75a9c2f --- /dev/null +++ b/07_js-debug/uebungen/u01_bibverwaltung/solution.html @@ -0,0 +1,84 @@ + + + + + + + Exercise: Nested If-Statements + + +
+
+

Exercise: Nested If-Statements

+
+
+

Übung 1: Bibliotheksverwaltung

+

+ In dieser Übung besteht deine Aufgabe darin, die verschachtelten if-Anweisungen mit Hilfe der Inversion zu + vereinfachen. In der nächsten Übung, in der du auch die Extraktion verwendest, wird deine Lösung verwendet. + Verwende für diese Übung also nur die Inversion. +

+
+
+
+ + + + diff --git a/07_js-debug/uebungen/u02_extraction/solution.html b/07_js-debug/uebungen/u02_extraction/solution.html new file mode 100644 index 0000000..bab8306 --- /dev/null +++ b/07_js-debug/uebungen/u02_extraction/solution.html @@ -0,0 +1,100 @@ + + + + + + + Exercise: Nested If-Statements + + +
+
+

Exercise: Nested If-Statements

+
+
+

Übung 2: Bibliotheksverwaltung – Extraktion

+

+ Diese Übung setzt voraus, dass du die Übung Bibliotheksverwaltung abgeschlossen hast. Du kannst deine eigene + Lösung oder eine Musterlösung für die Übung verwenden. +

+

+ Diesmal machst du den Code lesbarer und übersichtlicher, indem du die Kernlogik in separate Funktionen + extrahierst. Erstelle eine neue Datei, kopiere den Code hinein und wende das Extraktionskonzept an. +

+
+
+
+ + + + diff --git a/07_js-debug/uebungen/u03_dry/solution.html b/07_js-debug/uebungen/u03_dry/solution.html new file mode 100644 index 0000000..c23100c --- /dev/null +++ b/07_js-debug/uebungen/u03_dry/solution.html @@ -0,0 +1,71 @@ + + + + + + + Übung 3: DRY + + +
+
+

Exercise: Don't Repeat Yourself (DRY)

+
+
+

Übung 3: DRY

+

+ In dieser Übung überarbeitest du einen Teil des Codes nach dem DRY-Prinzip (Don't Repeat Yourself). Du + arbeitest mit einem Skript, das Wetterberichte für mehrere Städte protokolliert, einschließlich zusätzlicher + Wetterdaten wie der Windgeschwindigkeit. Deine Aufgabe ist es, Code-Wiederholungen zu vermeiden, indem du + Arrays, Schleifen und Funktionen verwendest. +

+

+ Erstelle eine zusätzliche formatWeatherReport(report) Funktion, die ein Wetterberichtsobjekt + als Parameter annimmt. Sie sollte einen formatierten Wetterberichtstring zurückgeben. +

+
+
+
+ + + + diff --git a/07_js-debug/uebungen/u04_dry-benutzerzugang/solution2.html b/07_js-debug/uebungen/u04_dry-benutzerzugang/solution2.html new file mode 100644 index 0000000..9f22c20 --- /dev/null +++ b/07_js-debug/uebungen/u04_dry-benutzerzugang/solution2.html @@ -0,0 +1,295 @@ + + + + + + Advanced If-Else Statements (Enhanced Nesting) + + + +
+
+

Advanced If-Else Statements (Enhanced Nesting)

+
+
+ + + diff --git a/07_js-debug/uebungen/u04_dry-benutzerzugang/solutiuon.html b/07_js-debug/uebungen/u04_dry-benutzerzugang/solutiuon.html new file mode 100644 index 0000000..4791ffc --- /dev/null +++ b/07_js-debug/uebungen/u04_dry-benutzerzugang/solutiuon.html @@ -0,0 +1,273 @@ + + + + + + + Übung 4: Benutzerzugang verwalten + + +
+
+

Advanced If-Else Statements (Enhanced Nesting)

+
+
+

Übung 4: Benutzerzugang verwalten

+

+ In dieser Übung ist es deine Aufgabe, den folgenden Code zu vereinfachen und dabei alle Techniken und + Prinzipien anzuwenden, die du bisher gelernt hast. Der vorgegebene Code simuliert ein + Benutzerverwaltungssystem mit verschiedenen Berechtigungen und Zuständen. Dein Ziel ist es, die Funktion + manageUserAccess zu überarbeiten, um die Logik sauberer und lesbarer zu machen, indem du die + Komplexität der verschachtelten Bedingungen reduzierst. +

+
+
+
+ + + diff --git a/07_js-debug/uebungen/u05_error-format-date/solution.html b/07_js-debug/uebungen/u05_error-format-date/solution.html new file mode 100644 index 0000000..d21aa6e --- /dev/null +++ b/07_js-debug/uebungen/u05_error-format-date/solution.html @@ -0,0 +1,30 @@ + + + + + + Übung 05: formatDate Fehler + + + +
+
+
+

Übung 05: formatDate Fehler

+

Die Kommentare zeigen das erwartete Ergebnis.

+
+
+
+ + + diff --git a/07_js-debug/uebungen/u06_error-benutzer/solution.html b/07_js-debug/uebungen/u06_error-benutzer/solution.html new file mode 100644 index 0000000..0c8f39a --- /dev/null +++ b/07_js-debug/uebungen/u06_error-benutzer/solution.html @@ -0,0 +1,57 @@ + + + + + + Übung 6: Benutzer erstellen + + + +
+
+
+

Übung 6: Benutzer erstellen

+

+ Nehmen wir eine anspruchsvollere Syntaxfehlerübung in Angriff. Diese Übung enthält mehrere Syntaxfehler, die + über den gesamten Code verteilt sind. Dein Ziel ist es, alle Syntaxfehler zu identifizieren und zu beheben, + damit der Code korrekt ausgeführt werden kann. +

+
+
+
+ + + diff --git a/07_js-debug/uebungen/u07_check-temperature/solution.html b/07_js-debug/uebungen/u07_check-temperature/solution.html new file mode 100644 index 0000000..725c10c --- /dev/null +++ b/07_js-debug/uebungen/u07_check-temperature/solution.html @@ -0,0 +1,41 @@ + + + + + + Übung 7: checkTemperature Fehler + + + +
+
+
+

Übung 7: checkTemperature Fehler

+

Versuche, den Code auszuführen, den Fehler zu identifizieren und ihn zu beheben.

+
+
+
+ + + diff --git a/07_js-debug/uebungen/u08_benutzer-anzeigen/solution.html b/07_js-debug/uebungen/u08_benutzer-anzeigen/solution.html new file mode 100644 index 0000000..781df80 --- /dev/null +++ b/07_js-debug/uebungen/u08_benutzer-anzeigen/solution.html @@ -0,0 +1,59 @@ + + + + + + Übung 8: Benutzer anzeigen + + + +
+
+
+

Übung 8: Benutzer anzeigen

+

+ Der folgende Code enthält mehrere Referenzfehler, die über verschiedene Teile des Codes verteilt sind. Deine + Aufgabe ist es, alle Referenzfehler zu identifizieren und zu beheben, um sicherzustellen, dass der Code + korrekt läuft. +

+
+
+
+ + + diff --git a/07_js-debug/uebungen/u09_parse-user-data/solution.html b/07_js-debug/uebungen/u09_parse-user-data/solution.html new file mode 100644 index 0000000..5b3e3d4 --- /dev/null +++ b/07_js-debug/uebungen/u09_parse-user-data/solution.html @@ -0,0 +1,40 @@ + + + + + + Übung 9: parseUserData Fehler + + + +
+
+
+

Übung 9: parseUserData Fehler

+

Die Kommentare zeigen das erwartete Ergebnis.

+
+
+
+ + + diff --git a/07_js-debug/uebungen/u10_einkaufspreis/index.html b/07_js-debug/uebungen/u10_einkaufspreis/index.html index be5d641..d6b3a3b 100644 --- a/07_js-debug/uebungen/u10_einkaufspreis/index.html +++ b/07_js-debug/uebungen/u10_einkaufspreis/index.html @@ -5,7 +5,7 @@ Übung 10: Einkaufspreis - +
diff --git a/07_js-debug/uebungen/u10_einkaufspreis/solution.js b/07_js-debug/uebungen/u10_einkaufspreis/solution.js new file mode 100644 index 0000000..71e2a92 --- /dev/null +++ b/07_js-debug/uebungen/u10_einkaufspreis/solution.js @@ -0,0 +1,51 @@ +function calculateTotalPrice(items = []) { + // let total = 0; + // items.forEach((item) => { + // total += item.price; + // }); + const total = items.reduce((sum, item) => { + // Ensure that item.price is a number + const price = typeof item.price === 'number' ? item.price : Number(item.price); + + if (isNaN(price)) { + console.warn(`Invalid price for item "${item.name}". Skipping...`); + return sum; + } + return sum + Number(item.price); + }, 0); + + return Number(total.toFixed(2)); +} + +const shoppingCart = [ + { name: 'Laptop', price: 999.99 }, + { name: 'Smartphone', price: 599.99 }, + { name: 'Headphones', cost: 199.99 }, +]; + +const totalPrice = calculateTotalPrice(shoppingCart); +console.log('Total Price:', totalPrice); + +function displayUserProfile(user) { + console.log(`Name: ${user.name}`); + console.log(`Age: ${user.age}`); + console.log(`Email: ${user.email.toLowerCase()}`); +} + +const userProfile = { + name: 'Sarah', + age: 'twenty-five', + email: 'SARAH@EXAMPLE.COM', +}; + +displayUserProfile(userProfile); + +function getFirstItemName(items) { + return items[0].name.toUpperCase(); +} + +console.log('First Item:', getFirstItemName(shoppingCart)); // => LAPTOP + +const numberList = [1, 2, 3, 4, 5]; +const sum = numberList.reduce((acc, num) => acc + Number(num), 0); +console.log('Sum:', sum); // => 15 diff --git a/07_js-debug/uebungen/u11_calculate-avg-error/solution.js b/07_js-debug/uebungen/u11_calculate-avg-error/solution.js index e69de29..1f3d6b1 100644 --- a/07_js-debug/uebungen/u11_calculate-avg-error/solution.js +++ b/07_js-debug/uebungen/u11_calculate-avg-error/solution.js @@ -0,0 +1,8 @@ +function calculateAverage(numbers) { + const total = numbers.reduce((sum, num) => sum + num, 0); + const average = total / numbers.length; + return average; +} + +console.log(calculateAverage([10, 20, 30])); // => 20 +console.log(calculateAverage([5, 15, 25, 35])); // => 20 diff --git a/07_js-debug/uebungen/u12_find-maximum-error/index.js b/07_js-debug/uebungen/u12_find-maximum-error/index.js index f800bb6..9059c57 100644 --- a/07_js-debug/uebungen/u12_find-maximum-error/index.js +++ b/07_js-debug/uebungen/u12_find-maximum-error/index.js @@ -1,12 +1,14 @@ // logical error function findMaximum(a, b, c) { - if (a > b && a > c) { - return a; - } else if (b > a && b > c) { - return b; - } else { - return c; - } + // if (a >= b && a >= c) { + // return a; + // } else if (b >= a && b >= c) { + // return b; + // } else { + // return c; + // } + + return Math.max(a, b, c); } console.log(findMaximum(1, 2, 3)); // => 3 diff --git a/07_js-debug/uebungen/u13_temp-converter/assets/js/main.js b/07_js-debug/uebungen/u13_temp-converter/assets/js/main.js index a9e0d8d..e1ccf53 100644 --- a/07_js-debug/uebungen/u13_temp-converter/assets/js/main.js +++ b/07_js-debug/uebungen/u13_temp-converter/assets/js/main.js @@ -1,17 +1,45 @@ 'use strict'; (() => { - // === DOM & VARS ======= - const DOM = {}; + // ===== DOM ===== + const DOM = { + temperatureForm: document.querySelector('#temperatureForm'), + celsiusInput: document.querySelector('#celsius'), + result: document.querySelector('#result'), + }; - // === INIT ============= - const init = () => {}; + // ===== INIT ===== + const init = () => { + DOM.temperatureForm.addEventListener('submit', handleFormSubmit); + }; - // === EVENTHANDLER ===== + // ===== EVENT HANDLERS ===== + function handleFormSubmit(e) { + e.preventDefault(); + const celsius = Number(DOM.celsiusInput.value); - // === XHR/FETCH ======== + if (isNaN(celsius)) { + alert('Please enter a valid number'); + return; + } + const fahrenheit = convertToFahrenheit(celsius); - // === FUNCTIONS ======== + displayResult(fahrenheit); + DOM.temperatureForm.reset(); + } + + // ===== FUNCTIONS ===== + function convertToFahrenheit(celsius) { + if (typeof celsius === 'string') return 0; + + return (celsius * 9) / 5 + 32; + } + + function displayResult(result) { + DOM.result.textContent = result.toFixed(2); + } + + // ===== CALL INIT ===== init(); })(); diff --git a/07_js-debug/uebungen/u13_temp-converter/index.html b/07_js-debug/uebungen/u13_temp-converter/index.html index dd8ec54..7bf01d1 100644 --- a/07_js-debug/uebungen/u13_temp-converter/index.html +++ b/07_js-debug/uebungen/u13_temp-converter/index.html @@ -1,4 +1,4 @@ - + @@ -16,7 +16,7 @@
- +