Zurück zur StartseiteInformatik · EF · Fach wechseln
Kostenlos starten
EF · Informatik
Informatiksysteme · Textuelle Programmierung

Der Entwicklungsprozess

Die Mensa-App deiner Schule soll den Preis eines Menüs berechnen. Beim ersten Start meldet der Compiler einen Fehler, beim zweiten läuft das Programm, zeigt aber für Schülerinnen und Schüler mit Ermäßigung einen falschen Preis an. Kein Programm funktioniert auf Anhieb. Wie du Fehler systematisch findest und behebst, lernst du auf dieser Seite. Am Ende kommen wir auf die Mensa-App zurück.

Der Entwicklungszyklus

Ablaufdiagramm des Entwicklungszyklus: Quellcode bearbeiten, ausführen und testen, Verzweigung „funktioniert es?“, bei „nein“ Fehler beheben und zurück zum Bearbeiten, bei „ja“ Programm freigeben. Quellcode bearbeiten Ausführen und testen Funktioniert es korrekt? Fehler beheben Programm freigeben nein ja

Ein Fehler im Programm heißt umgangssprachlich Bug. Debuggen bedeutet, einen Bug zu finden und zu beheben. Der „nein“-Pfeil führt zurück zum Bearbeiten, weil ein Fehler nur im Quellcode behoben werden kann. Danach muss das Programm erneut übersetzt und getestet werden.

Üben★☆☆Nicht begonnen
Diese Phasen der Entwicklung eines Programms sind durcheinandergeraten: (a) das Programm mit verschiedenen Daten testen, (b) den Quelltext bearbeiten, (c) gefundene…

Diese Phasen der Entwicklung eines Programms sind durcheinandergeraten: (a) das Programm mit verschiedenen Daten testen, (b) den Quelltext bearbeiten, (c) gefundene Fehler beheben (Debugging), (d) das Programm ausführen. Bringe sie in eine sinnvolle Reihenfolge und erkläre, was in jeder Phase gemacht wird. Berücksichtige dabei, dass beim Testen möglicherweise ein Schritt zurück nötig ist.

Lösen
Üben★☆☆Nicht begonnen
Erkläre, was ein „Bug“ in einem Programm ist und was Debuggen bedeutet. Gib ein einfaches Beispiel für einen Fehler, den das Programm eines Geldautomaten haben könnte,…

Erkläre, was ein „Bug“ in einem Programm ist und was Debuggen bedeutet. Gib ein einfaches Beispiel für einen Fehler, den das Programm eines Geldautomaten haben könnte, und welche Folge er für den Nutzer hätte.

Lösen
Üben★☆☆Nicht begonnen
Die Abbildung zeigt den Arbeitszyklus der Entwicklung eines Programms, aber eine seiner Etappen ist mit einem Fragezeichen verdeckt, wie in der Abbildung gezeigt. Gib…

Die Abbildung zeigt den Arbeitszyklus der Entwicklung eines Programms, aber eine seiner Etappen ist mit einem Fragezeichen verdeckt, wie in der Abbildung gezeigt.

Code bearbeiten Ausführen und testen Funktioniert alles? ? Programm veröffentlichen nein ja

Gib an, welche Etappe im Zyklus fehlt, worin sie besteht und warum der „nein“-Pfeil die Arbeit zurück zur Bearbeitung des Codes führt.

Lösen

Fehlerarten

Vergleich von Syntaxfehler und logischem Fehler: Bei fehlender Klammer startet das Programm nicht; bei Division durch 4 statt durch 3 läuft das Programm und liefert 5,25 statt 7. Syntaxfehler Programm startet nicht mittel = (a + b + c / 3; ! logischer Fehler läuft, Ergebnis falsch mittel = (a + b + c) / 4; 5,25 erwartet: 7

Eine Fehlermeldung des Compilers liest du so: Zuerst die Zeilennummer, dann die Meldung. Der eigentliche Fehler steht oft in der angegebenen Zeile oder kurz davor, zum Beispiel ein fehlendes Semikolon in der Zeile darüber.

int summe = a + b + c

double mittel = summe / 3.0;

Der Compiler meldet für diesen Code etwa „';' expected“ und nennt die erste Zeile. Dort fehlt das Semikolon am Ende.

Java übersetzt den Quellcode vor dem Start. Darum findet der Compiler Syntaxfehler schon vor der Ausführung. Laufzeitfehler und logische Fehler zeigen sich erst, wenn das Programm läuft.

Üben★☆☆Nicht begonnen
Unterscheide zwischen einem Fehler, der beim Kompilieren auftritt (das Programm startet gar nicht erst), und einem Fehler, der zur Laufzeit auftritt (es startet,…

Unterscheide zwischen einem Fehler, der beim Kompilieren auftritt (das Programm startet gar nicht erst), und einem Fehler, der zur Laufzeit auftritt (es startet, scheitert aber bei bestimmten Daten), mit je einem Beispiel.

Lösen
Üben★★☆Nicht begonnen
Erkläre den Unterschied zwischen einem Syntaxfehler und einem Logikfehler, mit je einem Beispiel in einem Programm, das den Durchschnitt von drei Noten berechnet. Welche…

Erkläre den Unterschied zwischen einem Syntaxfehler und einem Logikfehler, mit je einem Beispiel in einem Programm, das den Durchschnitt von drei Noten berechnet. Welche der beiden Fehlerarten verhindert die Ausführung des Programms und welche lässt die Ausführung zu, liefert aber falsche Ergebnisse?

Lösen

Testfälle entwerfen

Zahlengerade mit Testfällen: ein fehlerhafter Wert außerhalb des gültigen Bereichs, zwei Grenzwerte an den Rändern des Bereichs und ein normaler Wert im Inneren. fehlerhaft Grenzwert normal Grenzwert gültiger Wertebereich

Beispiel für ein Programm, das zwei Zahlen addiert: Normaler Fall: Eingabe $3$ und $4$, erwartet $7$. Besonderer Fall: Eingabe $0$ und $0$ oder $-5$ und $5$, erwartet $0$.

Üben★☆☆Nicht begonnen
Erkläre, was ein Testfall ist, und schreibe zwei Testfälle für ein Programm, das zwei Zahlen addiert: einen mit normalen Werten und einen mit einem besonderen Wert. Gib…

Erkläre, was ein Testfall ist, und schreibe zwei Testfälle für ein Programm, das zwei Zahlen addiert: einen mit normalen Werten und einen mit einem besonderen Wert. Gib jeweils die Eingabe und das erwartete Ergebnis an.

Lösen
Üben★★☆Nicht begonnen
Ein Programm, das zwei Zahlen dividiert, funktioniert in fast allen Tests richtig, schlägt aber fehl, wenn der Divisor 0 ist. Erkläre, was Grenzwerte oder Sonderfälle…

Ein Programm, das zwei Zahlen dividiert, funktioniert in fast allen Tests richtig, schlägt aber fehl, wenn der Divisor 0 ist. Erkläre, was Grenzwerte oder Sonderfälle beim Testen sind, warum man sie immer testen muss, und nenne zwei weitere Werte, mit denen du dieses Programm testen würdest.

Lösen
Üben★★☆Nicht begonnen
Um ein Programm zu testen, das Personen ab 65 Jahren einen Rabatt gewährt, lege drei Testfälle fest: einen mit einem normalen Wert, einen mit dem genauen Grenzwert und…

Um ein Programm zu testen, das Personen ab 65 Jahren einen Rabatt gewährt, lege drei Testfälle fest: einen mit einem normalen Wert, einen mit dem genauen Grenzwert und einen mit einem fehlerhaften Wert (negatives oder unmögliches Alter), jeweils mit dem erwarteten Ergebnis. Begründe deine Auswahl.

Lösen
Üben★★★Nicht begonnen
Ein Teammitglied zeigt Ihnen die folgende C++-Funktion, die den Endpreis inklusive Mehrwertsteuer berechnet und einen Rabatt gewährt, wenn der Kunde Mitglied ist, und…

Ein Teammitglied zeigt Ihnen die folgende C++-Funktion, die den Endpreis inklusive Mehrwertsteuer berechnet und einen Rabatt gewährt, wenn der Kunde Mitglied ist, und behauptet: „Wenn sie ohne Fehler und Warnungen kompiliert, kann sie zur Laufzeit unmöglich fehlschlagen; man muss sie nicht testen."

float berechneEndpreis(float basis, bool istMitglied) {

    float gesamt = basis;

    if (istMitglied = true) {

        gesamt = gesamt * 0.90f;

    }

    gesamt = gesamt * 1.21f;

    return gesamt;

}
  1. Sagen Sie begründet die Ausgabe der Funktion für einen Kunden ohne Mitgliedschaft (istMitglied = false) bei einem Grundpreis von 100,00 € voraus. Entspricht sie dem erwarteten Verhalten? Erklären Sie, warum der Compiler dies nicht als Fehler zurückweist.

  2. Begründen Sie anhand dieses Beispiels den Unterschied zwischen dem, was die syntaktische Prüfung des Compilers garantiert, und dem, was dynamische Softwaretests nachweisen.

  3. Schlagen Sie eine Korrektur des Codes vor und schreiben Sie einen konkreten Testfall, der den Fehler aufzeigen würde, wenn die Korrektur nicht angewendet wäre.

Lösen
Üben★★★Nicht begonnen
Entwerfen Sie einen Testplan für ein Programm, das zwei Zahlen abfragt und deren Quotienten ausgibt: Erstellen Sie eine Tabelle mit mindestens sechs Testfällen (Paare…

Entwerfen Sie einen Testplan für ein Programm, das zwei Zahlen abfragt und deren Quotienten ausgibt: Erstellen Sie eine Tabelle mit mindestens sechs Testfällen (Paare von Eingabewerten, darunter normale Werte, Grenzwerte und fehlerhafte Werte), dem erwarteten Ergebnis jedes Falls und dem, was das Programm bei ungültiger Eingabe tun sollte. Begründen Sie die Auswahl jedes Falls.

Lösen
Üben★★★Nicht begonnen
Das Intranet der Schule implementiert ein Authentifizierungsmodul mit folgenden Anforderungen: Benutzername: 4 bis 12 alphanumerische Zeichen, Groß- und Kleinschreibung…

Das Intranet der Schule implementiert ein Authentifizierungsmodul mit folgenden Anforderungen:

  • Benutzername: 4 bis 12 alphanumerische Zeichen, Groß- und Kleinschreibung wird nicht unterschieden.

  • Passwort: zwischen 8 und 16 Zeichen, Groß- und Kleinschreibung wird unterschieden, mit mindestens einer Ziffer und einem Sonderzeichen.

  • Sicherheit: vorübergehende Sperrung des Kontos für 15 Minuten nach drei aufeinanderfolgenden fehlgeschlagenen Versuchen.

Entwerfen Sie einen sorgfältigen Testplan in Form einer Tabelle mit mindestens sechs von Ihnen entworfenen Testfällen. Für jeden Fall müssen Sie angeben: Kennung, Eingabewerte (Benutzername und Passwort), vorheriger Systemzustand, erwartetes Ergebnis und welches spezifische Risiko in Bezug auf Logik, Grenzwerte oder Sicherheit Sie damit überprüfen.

Lösen
Üben★★★Nicht begonnen
Ein Programmierer behauptet, „eine einzeilige Funktion braucht keine Tests, weil sie selbsterklärend ist", und präsentiert diese in C++ geschriebene Funktion: 1. Sagen…

Ein Programmierer behauptet, „eine einzeilige Funktion braucht keine Tests, weil sie selbsterklärend ist", und präsentiert diese in C++ geschriebene Funktion:

bool esImpar(int n) {

    return (n % 2 == 1);

}
  1. Sagen Sie die Ausgabe der Funktion für n = 7, n = 0 und n = -7 voraus. Erklären Sie technisch, warum in einem dieser Fälle ein unerwartetes Ergebnis entsteht, und stützen Sie sich dabei darauf, wie der Modulo-Operator (%) in dieser Sprache negative Operanden behandelt.

  2. Korrigieren Sie den Ausdruck so, dass die Funktion für jede ganze Zahl mathematisch korrekt ist.

  3. Widerlegen Sie anhand dieses Falls mit zwei technischen Argumenten die Idee, bei kurzen oder scheinbar trivialen Algorithmen auf Unit-Tests zu verzichten.

Lösen

Techniken zur Fehlersuche

Debugging-Zyklus: Fehler reproduzieren, mit Ausgaben den Ablauf sichtbar machen, Ursache beheben, mit denselben Daten erneut testen und Ausgaben entfernen. 1. Fehlerreproduzieren 2. Ausgaben: Ablaufsichtbar machen 3. Ursachebeheben 4. erneut testen,Ausgaben entfernen Ausgabe: Durchlauf 1: n = 5 Durchlauf 2: n = 5 … n ändert sich nicht → „n = n - 1;“ fehlt in der Schleife
Üben★☆☆Nicht begonnen
Erkläre, was eine Trace- oder Protokollmeldung (Log) in einem Programm ist und wie sie hilft, einen Fehler zu finden (sie zeigt, wo das Programm entlanggelaufen ist und…

Erkläre, was eine Trace- oder Protokollmeldung (Log) in einem Programm ist und wie sie hilft, einen Fehler zu finden (sie zeigt, wo das Programm entlanggelaufen ist und mit welchen Werten).

Lösen
Üben★★☆Nicht begonnen
Eine Schleife in einem Programm hört nie auf. Erkläre, wo du temporäre Ausgabemeldungen zur Diagnose platzieren würdest (innerhalb der Schleife, mit Anzeige der…

Eine Schleife in einem Programm hört nie auf. Erkläre, wo du temporäre Ausgabemeldungen zur Diagnose platzieren würdest (innerhalb der Schleife, mit Anzeige der Laufvariablen in jedem Durchlauf) und was du in diesen Meldungen beobachten würdest, um die Ursache zu finden.

Lösen
Üben★★★Nicht begonnen
Im Abrechnungssystem einer Schülergenossenschaft wurde festgestellt, dass beim Erstellen der monatlichen Rechnung der zu zahlende Gesamtbetrag einiger Mitglieder falsch…

Im Abrechnungssystem einer Schülergenossenschaft wurde festgestellt, dass beim Erstellen der monatlichen Rechnung der zu zahlende Gesamtbetrag einiger Mitglieder falsch ist. Ihnen liegen die folgenden Systemprotokolle vor:

  • Mitglied 101: 2 Einkäufe zu je 15,00 € -> abgerechneter Gesamtbetrag: 30,00 € (erwartet: 30,00 €).

  • Mitglied 102: 1 Einkauf zu 50,00 € mit Aktionsrabatt von 10 % (5,00 €) und Bearbeitungsgebühr von 3,00 € -> abgerechneter Gesamtbetrag: 47,50 € (erwartet: 48,00 €).

  • Mitglied 103: 1 Einkauf zu 20,00 € und Rückgabe von 1 Artikel zu 5,00 € (-5,00 €) -> abgerechneter Gesamtbetrag: 25,00 € (erwartet: 15,00 €).

  • Formulieren Sie eine begründete Hypothese zum logischen Fehler bzw. zum Fehler in der Reihenfolge der Operationen, der den Fehler bei Mitglied 102 und Mitglied 103 erklärt.

  • Entwerfen Sie die Debugging-Strategie, um Ihre Hypothesen zu bestätigen: Geben Sie an, welche minimalen Testdaten Sie eingeben würden, um den Fehler zu isolieren, an welchen Stellen des Programmablaufs Sie Haltepunkte (Breakpoints) setzen würden und welche konkreten Variablen Sie Schritt für Schritt untersuchen müssten.

Lösen
Üben★★★Nicht begonnen
Ein Skript zur Wettersimulation schlägt bei etwa jeder zwanzigsten Ausführung mit einer unerwarteten Ausnahme fehl, doch bei manueller Ausführung Schritt für Schritt…

Ein Skript zur Wettersimulation schlägt bei etwa jeder zwanzigsten Ausführung mit einer unerwarteten Ausnahme fehl, doch bei manueller Ausführung Schritt für Schritt tritt der Fehler nie auf (das Programm verwendet Echtzeit-Anfragen an eine API und eine Funktion zur Erzeugung von Zufallszahlen).

  1. Begründen Sie, warum dieser Fehler als nicht deterministisch (Heisenbug) eingestuft wird, und benennen Sie die zwei Quellen der Variabilität, die verhindern, dass er sich nach Belieben reproduzieren lässt.

  2. Entwerfen Sie einen technischen Aktionsplan, um den Fehler kontrolliert zu reproduzieren, ohne passiv darauf zu warten, dass er zufällig auftritt (erklären Sie, wie Sie den Pseudozufallszahlengenerator behandeln und die externen Netzwerkaufrufe entkoppeln würden).

  3. Welches Testverfahren würden Sie nach der Lokalisierung und Behebung des Defekts anwenden, um zu belegen, dass der Fehler vollständig verschwunden ist und es sich nicht nur um einen statistischen Zufall handelt?

Lösen

Dokumentieren, umstrukturieren und im Team arbeiten

/**


 * Berechnet den Gesamtpreis inklusive Mehrwertsteuer.


 * @param netto Nettopreis in Euro


 * @return Bruttopreis in Euro

 */

double berechneBrutto(double netto) {

    double mehrwertsteuer = netto * 0.19;

    return netto + mehrwertsteuer;

}

Ein undokumentiertes Programm „altert“ schlecht: Nach Wochen versteht selbst die Autorin den eigenen Code nicht mehr, und neue Teammitglieder müssen raten, was er bewirken soll. Auch sprechende Namen dokumentieren: netto, mehrwertsteuer und brutto sind besser als x, y2 und zzz. So verhindern sie Verwechslungen und damit Fehler.

Arbeiten zwei Personen gleichzeitig an derselben Datei, kann beim Zusammenführen ein Merge-Konflikt entstehen. Man löst ihn, indem man beide Versionen prüft und entscheidet, welche Änderungen bleiben oder wie sie kombiniert werden. Vorbeugen hilft: die Arbeit nach Modulen aufteilen und Änderungen häufig in kleinen Schritten zusammenführen. In der Schule arbeitest du dabei meist zu zweit, zum Beispiel als Pair Programming: eine Person schreibt, die andere prüft mit.

Üben★☆☆Nicht begonnen
Programme haben Versionen (1.0, 1.1, 2.0 ...). Erkläre, wozu es dient, Versionen des Codes zu speichern, und was du tun kannst, wenn die neueste Version schlechter…

Programme haben Versionen (1.0, 1.1, 2.0 ...). Erkläre, wozu es dient, Versionen des Codes zu speichern, und was du tun kannst, wenn die neueste Version schlechter funktioniert als die vorherige.

Lösen
Üben★☆☆Nicht begonnen
Die Dokumentation begleitet das Programm. Erkläre, welche zwei Dinge sie mindestens erklären sollte (was das Programm tut und wie man es benutzt) und warum ein…

Die Dokumentation begleitet das Programm. Erkläre, welche zwei Dinge sie mindestens erklären sollte (was das Programm tut und wie man es benutzt) und warum ein undokumentiertes Programm schlecht „altert“, wenn ein Team daran arbeitet.

Lösen
Üben★★☆Nicht begonnen
Erkläre, was die Modularisierung eines Programms ist (es in Funktionen oder Module aufzuteilen), und analysiere zwei Vorteile, die sie bringt, wenn die Entwicklung in…

Erkläre, was die Modularisierung eines Programms ist (es in Funktionen oder Module aufzuteilen), und analysiere zwei Vorteile, die sie bringt, wenn die Entwicklung in einem Team mehrerer Personen erfolgt: Denke an die Arbeitsaufteilung, an das Testen und an das Auffinden von Fehlern.

Lösen
Üben★★☆Nicht begonnen
Erkläre, was Refactoring ist (den Code verbessern, ohne zu ändern, was er tut), und beschreibe zwei typische Refactorings (Variablen mit klaren Namen umbenennen, aus…

Erkläre, was Refactoring ist (den Code verbessern, ohne zu ändern, was er tut), und beschreibe zwei typische Refactorings (Variablen mit klaren Namen umbenennen, aus wiederholtem Code eine Funktion extrahieren), mit je einem Beispiel.

Lösen
Üben★★☆Nicht begonnen
Ein Codefragment verwendet die Variablen x, y2 und zzz, um den Preis, die Mehrwertsteuer und den Gesamtbetrag zu speichern. Schreibe diese Namen sinnvoll um und erkläre,…

Ein Codefragment verwendet die Variablen x, y2 und zzz, um den Preis, die Mehrwertsteuer und den Gesamtbetrag zu speichern. Schreibe diese Namen sinnvoll um und erkläre, warum die Wahl der Namen ein Mittel gegen Fehler ist (der Code dokumentiert sich selbst).

Lösen
Üben★★☆Nicht begonnen
Zwei Personen eines Teams bearbeiten gleichzeitig dieselbe Datei des Projekts und beim Zusammenführen der Änderungen tritt ein Konflikt auf. Erkläre, was ein…

Zwei Personen eines Teams bearbeiten gleichzeitig dieselbe Datei des Projekts und beim Zusammenführen der Änderungen tritt ein Konflikt auf. Erkläre, was ein Merge-Konflikt ist, wie man ihn löst (beide Versionen prüfen und entscheiden) und welche zwei Arbeitsgewohnheiten im Team ihn verhindern (die Arbeit nach Modulen aufteilen, Änderungen häufig integrieren).

Lösen
Üben★★★Nicht begonnen
Das Überwachungssystem eines Gewächshauses wurde in einer einzigen Datei innerhalb einer einzigen Funktion mit 400 Zeilen programmiert. Der Code liest nacheinander drei…

Das Überwachungssystem eines Gewächshauses wurde in einer einzigen Datei innerhalb einer einzigen Funktion mit 400 Zeilen programmiert. Der Code liest nacheinander drei analoge Bodenfeuchtesensoren aus, berechnet den Mittelwert, wertet Schwellenwerte aus, steuert über einen digitalen Pin ein Magnetventil, speichert das Verlaufsprotokoll in einer Textdatei und sendet eine Warn-E-Mail, wenn die Feuchtigkeit unter 30 % fällt.

  1. Begründen Sie ausführlich drei gravierende technische Probleme, die diese Architektur verursacht, wenn ein sporadisch auftretender Fehler gesucht oder automatisierte Unit-Tests durchgeführt werden sollen.

  2. Entwerfen Sie eine modulare Umstrukturierung (Refactoring) des Programms: Zerlegen Sie die Funktion in mindestens vier unabhängige Funktionen. Legen Sie für jede den Namen, die Eingabeparameter mit Typ, den Rückgabewert und die eigene, einzige Verantwortung fest.

  3. Erklären Sie, wie Ihr Entwurf es ermöglichen würde, den Entscheidungsalgorithmus für die Bewässerung durch simulierte Daten zu testen, ohne dass die physischen Sensoren am Mikrocontroller angeschlossen sind.

Lösen
Üben★★★Nicht begonnen
Eine Gruppe von drei Schülerinnen und Schülern wird zehn Wochen lang eine Anwendung zur Anwesenheitskontrolle für die Schule entwickeln. Um Verzögerungen und…

Eine Gruppe von drei Schülerinnen und Schülern wird zehn Wochen lang eine Anwendung zur Anwesenheitskontrolle für die Schule entwickeln. Um Verzögerungen und gescheiterte Abgaben in letzter Minute zu vermeiden, sollen Sie die Arbeitsmethodik des Teams strukturieren:

  1. Entwerfen Sie einen Zeitplan mit vier überprüfbaren Meilensteinen bzw. Lieferergebnissen und erklären Sie, welche objektiven Kriterien erfüllt sein müssen, bevor der Übergang zum nächsten Meilenstein freigegeben wird.

  2. Legen Sie ein formales Protokoll für die Überprüfung durch Kollegen (Code-Review) fest: Bestimmen Sie, wer wessen Code prüft, welche Checkliste mit Mindestqualitätskriterien erfüllt sein muss, bevor eine Änderung akzeptiert wird, und wie Meinungsverschiedenheiten gelöst werden.

  3. Legen Sie eine Richtlinie zum „Code-Freeze" (Code Freeze) fest und begründen Sie sie: In welcher Woche muss er greifen, welche Arten von Änderungen sind ab diesem Zeitpunkt strikt verboten und welche Aufgaben muss das Team bis zur endgültigen Abgabe ausschließlich übernehmen?

Lösen
Üben★★★Nicht begonnen
Herausforderung des Themas. Als Nachwuchs-Softwareanalystin bzw. -analyst entwerfen Sie ein Python-Skript (Sie können eine kostenlose Webumgebung wie Replit nutzen), das…

Herausforderung des Themas. Als Nachwuchs-Softwareanalystin bzw. -analyst entwerfen Sie ein Python-Skript (Sie können eine kostenlose Webumgebung wie Replit nutzen), das die täglichen Energiekosten auswertet, um das Energiesparen im Haushalt zu fördern.

Gehen Sie in drei Phasen vor:

  1. Datenerfassung: Rufen Sie die Website der Bundesnetzagentur (SMARD) auf und notieren Sie den offiziellen Preis ($€/\text{kWh}$) für $6$ verschiedene Zeitfenster des heutigen Tages.

  2. Entwurf und Codierung: Wenden Sie den Softwareentwicklungsprozess an. Skizzieren Sie zuerst den Algorithmus und übertragen Sie ihn dann nach Python. Das Programm muss die Daten in einer Liste speichern, mit einer Schleife den durchschnittlichen Tageskostenwert berechnen und Verzweigungen (if-else) verwenden, die Warnungen ausgeben, wenn der Preis den Schwellenwert von $0,18$ €/kWh übersteigt.

  3. Debugging und Endprodukt: Führen Sie Tests mit Grenzwerten durch und beheben Sie Laufzeitfehler. Verfassen Sie einen kurzen Bericht, der den sauberen, kommentierten Code, einen Screenshot des Ergebnisses in der Konsole und zwei Vorschläge für einen effizienten Verbrauch in Ihrem Haushalt auf Grundlage Ihrer Daten enthält.

Bewertet werden:

  • Sorgfalt im Entwicklungsprozess (vorheriger Algorithmenentwurf, textuelle Codierung und Debugging).

  • Korrekte Verwendung von Kontrollstrukturen (Sequenz, Verzweigung und Schleife) und der Syntax der Sprache.

  • Genauigkeit im Umgang mit realen Daten und Tragfähigkeit der energetischen Schlussfolgerungen.

Lösen

Zurück zur Mensa-App: Die Compilermeldung war ein Syntaxfehler und zeigte Zeile und Art des Fehlers. Der falsche Preis bei Ermäßigung war ein logischer Fehler. Ein Testfall mit Ermäßigung und bekanntem Ergebnis hätte ihn sofort aufgedeckt.

Auf einen Blick

Alle Aufgaben zu diesem Abschnitt anzeigen