Javascript:
`use strict`;
//Dialogfenster: alert, confirm, prompt
// alert
// spielt einen kurzen Text ein
// confirm
// spielt eine Abfrage ein, die der Benutzer bestätigen oder abgelehnen (cancel) kann.
// prompt
// spielt ebenfalls eine Abfrage ein, und zusätzlich ein Feld für eine Benutzereingabe.
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Wann wird if, else if und else in JavaScript verwendet?
// Struktur Wann wird es verwendet?
// if Prüft eine erste Bedingung
// else if Prüft eine weitere Bedingung, falls die vorherigen false sind
// else Wird ausgeführt, wenn keine vorherigen Bedingungen true sind
// Beispiel:
// let zahl = 3;
// if (zahl > 10)
// {console.log("Die Zahl ist größer als 10.");}
// else if (zahl === 10)
// {console.log("Die Zahl ist genau 10.");}
// else {console.log("Die Zahl ist kleiner als 10.");}
////////////////////////////////////////////////////////////////////////////////////////////////////////////
////// Aufgabe 1
// Analyse eines Einkaufs
// Programmieren Sie eine Simulation einer Einkaufssituation. Dabei sollen die Kosten für 4 Artikel
// erfasst, berechnet und verschiedene Ausgaben anzeigt werden. Ihre Programmierung sollte
// folgend Anforderungen erfüllen:
// Der Benutzer gibt die Preise von vier Artikeln über prompt-Fenster ein, die Ausgaben sollen in
// einer Ausgabebox (alert) angezeigt werden. Zwischenergebnisse können Sie in der Konsole ihres
// Browsers anzeigen lassen.
// Artikelpreise erfassen
let artikelPreise = []; // Erstellt ein leeres Array, also eine Liste, in die später die Beträge der Artikel gespeichert werden.
for (let i = 1; i <= 4; i++) // i++ erhöht den Zähler immer um 1 .... Das ist eine Schleife, die viermal durchläuft – von i = 1 bis i = 4
{
let betrag = Number(prompt(`Wie lautet der Betrag in Cent für Artikel ${i}?`)); //Die Eingabe wird als Zahl (Number) gespeichert in betrag... Fragt so häufig wie oft i gesetzt wurde
artikelPreise.push(betrag); // Fügt den eingegebenen Betrag in das Array artikelPreise ein.
// Beispiel:
// Wenn du eingibst: 100, 200, 150, 300 →
// Dann ist artikelPreise am Ende: [100, 200, 150, 300]
console.log(`Artikel ${i}: ${betrag} Cent`);
}
// a) Gesamtkosten
let gesamt = artikelPreise.reduce((summe, wert) => summe + wert, 0);
// reduce(...) geht alle Werte im Array durch (z. B. [100, 200, 300]) und addiert sie:
// summe startet bei 0
// wert ist jeweils ein Element aus dem Array
// Ergebnis: gesamt = 100 + 200 + 300 = 600
alert("Alle Artikel zusammen kosten: " + gesamt + " Cent");
// b) Durchschnitt
let durchschnitt = gesamt / artikelPreise.length; // artikelPreise.length = Anzahl der Artikel im Array (z. B. 4 Artikel)
alert("Alle Artikel kosten im Schnitt: " + durchschnitt.toFixed(2) + " Cent");
// c) Günstigster Artikel
let minWert = Math.min(...artikelPreise);
// Math.min(...artikelPreise) → findet den kleinsten Wert im Array
// ...artikelPreise wandelt das Array in eine Liste von Zahlen um. ohne die ... funktioniert es nicht
let minIndex = artikelPreise.indexOf(minWert) + 1;
// indexOf(...) → gibt die Position im Array zurück (0-basiert)
// +1 → damit wir z. B. Artikel 1 statt Index 0 sagen können
alert("Der niedrigste Betrag ist: " + minWert + " Cent (Artikel " + minIndex + ")");
// d) Teuerster Artikel
let maxWert = Math.max(...artikelPreise);
let maxIndex = artikelPreise.indexOf(maxWert) + 1;
// Funktioniert genauso wie bei minWert, nur mit Math.max(...)
// Findet also den höchsten Betrag und dessen Position
alert("Der höchste Betrag ist: " + maxWert + " Cent (Artikel " + maxIndex + ")");
////////////////////////////////////////////////////////////////////////////////////////////////////////////
////// Aufgabe 2
// Programmierung eines einfachen Taschenrechners
// Programmieren Sie einen einfachen Taschenrechner, der dem Nutzer nach Eingabe von zwei
// Zahlenwerten und einer gängigen Rechenoperation (Addition, Subtraktion, Multiplikation und
// Division) das berechnete Ergebnis anzeigt.
let zahl1 = Number(prompt("Eingabe der ersten Zahl:"));
let zahl2 = Number(prompt("Eingabe der zweiten Zahl:"));
let operator = prompt("Was soll gerechnet werden? Gib ein: + - * /");
let ergebnis;
if (operator === "+") ergebnis = zahl1 + zahl2; // === bedeutet: "ist exakt gleich" (inkl. Typprüfung).
else if (operator === "-") ergebnis = zahl1 - zahl2;
else if (operator === "*") ergebnis = zahl1 * zahl2;
else if (operator === "/") ergebnis = zahl1 / zahl2;
else ergebnis = "Ungültiger Operator";
alert(`Dein Ergebnis: ${zahl1} ${operator} ${zahl2} = ${ergebnis}`);
////////////////////////////////////////////////////////////////////////////////////////////////////////////
////// Aufgabe 3
// Schere, Stein, Papier
// Programmieren Sie das klassische Spiel „Schere, Stein, Papier“, welches der Nutzer gegen den
// Computer spielt. Für die Auswahl des Computers lassen Sie Zufallszahlen erstellen und nutzen
// bitte folgende Zuordnungen:
// 1 = Schere, 2 = Stein, 3 = Papier (zur Erinnerung: Eine Zufallszahl zwischen 0 und 1 wird mit Hilfe
// des Befehls Math.random() generiert.
do {
const eingabe = Number(prompt("Wir spielen 1 = Schere, 2 = Stein, 3 = Papier. Was wählst du?"));
if (![1, 2, 3].includes(eingabe)) // das ! bedeutet NICHT enthalten, .includes(eingabe) prüft: Ist eingabe in diesem Array enthalten?
{
alert("Ungültige Eingabe! Bitte gib 1, 2 oder 3 ein.");
continue;
}
const zufall = Math.floor(Math.random() * 3) + 1;
// Math.floor(...) rundet nach unten auf die nächste ganze Zahl
// Math.random() liefert eine Zufallszahl zwischen 0 (inkl.) und 1 (exkl.), z. B. 0.57
// * 3 skaliert die Zufallszahl auf 0 bis knapp unter 3, z. B. 0.57 * 3 = 1.71
// + 1 verschiebt den Bereich von 0–2 auf 1–3
alert("Computer wählt: " + zufall);
if (eingabe === zufall) {
alert("Unentschieden");
} else if (
(eingabe === 1 && zufall === 3) || // Schere schlägt Papier
(eingabe === 2 && zufall === 1) || // Stein schlägt Schere
(eingabe === 3 && zufall === 2) // Papier schlägt Stein
) {
alert("Du hast gewonnen!");
} else {
alert("Der Computer hat gewonnen.");
}
} while (confirm("Möchtest du noch einmal spielen?"));
// Die do-while-Schleife sorgt dafür, dass der Code mindestens einmal ausgeführt wird und sich danach wiederholt, solange der Nutzer dies möchte.
// do:
// Hier beginnt die Schleife. Der gesamte Codeblock innerhalb der geschweiften Klammern { ... } wird mindestens einmal ausgeführt.
// while (confirm("Möchtest du noch einmal spielen?")):
// Nach jeder Runde erscheint ein Bestätigungsdialog (confirm).
// Falls der Nutzer auf "OK" klickt, wird das Spiel erneut gestartet. Falls er "Abbrechen" wählt, endet die Schleife.
////////////////////////////////////////////////////////////////////////////////////////////////////////////
////// Aufgabe 4
// BMI-Rechner
// Programmieren Sie einen BMI-Rechner, der das Gewicht und die Größe eines Benutzers
// verwendet, um den Body Mass Index (BMI) zu berechnen und eine entsprechende
// Gewichtskategorie anzuzeigen.
// Folgende Anforderungen sollen dabei erfüllt werden:
// 1. Der Benutzer gibt sein Gewicht in Kilogramm über ein prompt-Fenster ein.
// 2. Der Benutzer gibt seine Größe in Metern (Achtung! Kommata bitte als Punkte eingeben!) über ein prompt-Fenster ein.
// 3. Lassen Sie den BMI mit der Formel: 𝐵𝑀𝐼 = 𝐺𝑒𝑤𝑖𝑐ℎ𝑡 / 𝐺𝑟öß𝑒2 berechnen.
// 4. Verwenden Sie if-Anweisungen, um die Gewichtskategorie basierend auf dem BMI zu bestimmen:
// o Untergewicht: BMI < 18.5
// o Normalgewicht: 18.5 ≤ BMI < 24.9
// o Übergewicht: 25 ≤ BMI < 29.9
// o Adipositas: BMI ≥ 30
// 5. Zeigen Sie das Ergebnis des BMI und die entsprechende Gewichtskategorie in einem alert-Fenster an.
// In JavaScript (und generell in der englischen Schreibweise von Zahlen) wird der Dezimalpunkt (.) verwendet — nicht das Komma (,).
// prompt() gibt einen Text (String) zurück.
// Number("1.75") → ergibt die Zahl 1.75 ✅
// Number("1,75") → ergibt NaN (Not a Number) ❌
// Denn JavaScript versteht "1,75" nicht als gültige Zahl, weil das Komma dort kein Dezimaltrennzeichen ist.
// 💡 Tipp: Willst du Kommas zulassen, könntest du den String vorher ersetzen:
// let eingabe = prompt("Größe in Meter (mit Punkt oder Komma):");
// let bmi_größe = Number(eingabe.replace(",", "."));
alert("BMI-Rechner");
const gewicht = Number(prompt("Gib dein Gewicht in kg ein:"));
const größeInput = prompt("Gib deine Körpergröße in Meter ein (z. B. 1.75 oder 1,75):");
const größe = Number(größeInput.replace(",", ".")); // erlaubt Komma oder Punkt
const bmi = gewicht / (größe * größe);
const bmiGerundet = bmi.toFixed(2); // tofixed(2) rundet auf zwei nachkommastellen
let kategorie = ""; // Erstellt eine leere Variable namens kategorie, in der später die Bewertung (z. B. „Normalgewicht“) gespeichert wird.
if (bmi < 18.5) {
kategorie = "Untergewicht";
} else if (bmi < 24.9) {
kategorie = "Normalgewicht";
} else if (bmi < 29.9) {
kategorie = "Übergewicht";
} else {
kategorie = "Adipositas";
}
alert(`Dein BMI ist: ${bmiGerundet} (${kategorie})`);
// Aufgabe 5: Trinkgeldrechner
// Ziel: Berechne den Rechnungsbetrag inkl. Trinkgeld.
let rechnung = Number(prompt("Wie hoch ist der Rechnungsbetrag in Euro?"));
let trinkgeldProzent = Number(prompt("Wie viel Prozent Trinkgeld möchtest du geben?"));
let trinkgeld = rechnung * (trinkgeldProzent / 100);
let gesamtbetrag = rechnung + trinkgeld;
alert(`Trinkgeld: ${trinkgeld.toFixed(2)} €\nGesamtbetrag: ${gesamtbetrag.toFixed(2)} €`);
// Erweiterung: Wenn der Betrag höher als 100 € ist, gib eine besondere Nachricht aus („Große Rechnung heute!“).
if (gesamtbetrag >= 100) {alert ("Große Rechnung heute!")}
else {alert ("Rechnung vollkommen oK!")};
// Aufgabe 6: Einkaufswagen mit beliebig vielen Artikeln
// Ziel: Lass den Nutzer selbst entscheiden, wie viele Artikel er eingeben möchte.
let anzahl = Number(prompt("Wie viele Artikel möchtest du eingeben?"));
let preise = [];
for (let i = 1; i <= anzahl; i++) {
let preis = Number(prompt(`Preis für Artikel ${i} in Cent:`));
preise.push(preis);
}
let summe = preise.reduce((acc, val) => acc + val, 0);
let durchschnitt = summe / preise.length;
alert(`Gesamt: ${summe} Cent\nDurchschnitt: ${durchschnitt.toFixed(2)} Cent`);
// Erweiterung: Gib wieder den teuersten und den günstigsten Artikel aus.
let maxwert6 = Math.max (...preise)
let maxindex6 = preise.indexOf (maxwert6) +1;
alert ("Der Höchste Betrag ist: " +maxwert6 + " Cent (Artikel " + maxindex6 +")");
let minwert6 = Math.min (...preise) // bei Math.min und max auf Großschreibung achten
let minindex6 = preise.indexOf (minwert6) +1; // bei indexOf auf Großschreibung achten
alert ("Der niedrigste Betrag ist: " +minwert6 + " Cent (Artikel " +minindex6 +")");
Zuletzt bearbeitet von einem Moderator: