Lektion 05 - JSON Speicherlogik
Pseudocode fuer JSON-Speicherung
JSON-Speicherung ist nicht nur Code. Dahinter steckt ein Ablauf: Daten laden, pruefen, veraendern und wieder speichern. Genau diesen Ablauf trainierst du hier als Algorithmus, bevor du ihn in JavaScript, Dart oder Flutter umsetzt.
1. Was ist die Aufgabe beim Speichern?
Beim Speichern geht es fast nie nur um "speichere irgendwas". Eine App muss entscheiden, ob schon Daten existieren, ob die Daten gueltig sind, was geaendert werden soll und wann erneut gespeichert wird.
Allgemeiner Speicher-Ablauf:
Lade gespeicherte Daten
Wenn keine Daten vorhanden sind:
Erstelle Standarddaten
Pruefe Daten
Veraendere Daten
Wandle Daten in JSON um
Speichere JSON
Gib Rueckmeldung
Merke: Speichern ist ein Ablauf mit Entscheidungen. Deshalb passt es perfekt zu Pseudocode und Programmablaufplanung.
2. Die wichtigsten Bausteine
3. Pseudocode: User-Profil laden
Diese Situation ist sehr typisch: Eine App startet und moechte wissen, ob ein User schon gespeichert ist. Wenn nicht, wird ein Gastprofil erstellt.
Funktion ladeUserProfil:
gespeicherterText = Lade Wert mit Schluessel "user"
Wenn gespeicherterText nicht vorhanden ist:
user = StandardUser mit Name "Gast", Punkte 0
Gib user zurueck
Wandle gespeicherterText von JSON in Daten um
Wenn Daten ungueltig sind:
user = StandardUser mit Name "Gast", Punkte 0
Gib user zurueck
user = Erstelle User aus Daten
Gib user zurueck
Hier gibt es zwei wichtige Entscheidungen: Existieren Daten? Sind die Daten gueltig? Erst danach wird daraus ein richtiger User.
4. Pseudocode: Punkte erhoehen und speichern
Ein User schliesst eine Lektion ab. Die App soll Punkte erhoehen und den neuen Stand speichern.
Funktion lektionAbschliessen(lektionId):
user = ladeUserProfil()
Wenn user.erledigteLektionen enthaelt lektionId:
Gib Meldung "Lektion war schon erledigt" aus
Beende Funktion
Fuege lektionId zu user.erledigteLektionen hinzu
Erhoehe user.punkte um 10
jsonText = Wandle user in JSON um
Speichere jsonText mit Schluessel "user"
Gib Meldung "Fortschritt gespeichert" aus
Der Schutz vor doppelten Lektionen ist wichtig. Sonst koennte ein User dieselbe Lektion mehrfach abschliessen und immer wieder Punkte bekommen.
5. Pseudocode: Aufgabenliste speichern
Eine Aufgabenliste besteht aus mehreren Aufgaben. Jede Aufgabe hat einen Titel und einen Status. Beim Speichern muss die komplette Liste gesichert werden.
Funktion speichereAufgaben(aufgabenListe):
Wenn aufgabenListe leer ist:
Speichere leere JSON-Liste
Gib Meldung "Keine Aufgaben vorhanden" aus
Beende Funktion
Fuer jede aufgabe in aufgabenListe:
Wenn aufgabe.titel leer ist:
Gib Meldung "Aufgabe ohne Titel nicht erlaubt" aus
Beende Funktion
jsonText = Wandle aufgabenListe in JSON um
Speichere jsonText mit Schluessel "tasks"
Gib Meldung "Aufgaben gespeichert" aus
6. Pseudocode: Aufgabe als erledigt markieren
Diese Aufgabe trainiert Suchen in einer Liste. Die App muss die richtige Aufgabe finden, ihren Status aendern und danach die Liste speichern.
Funktion markiereAufgabeErledigt(gesuchterTitel):
aufgabenListe = ladeAufgaben()
gefunden = false
Fuer jede aufgabe in aufgabenListe:
Wenn aufgabe.titel gleich gesuchterTitel ist:
aufgabe.erledigt = true
gefunden = true
Wenn gefunden gleich false ist:
Gib Meldung "Aufgabe nicht gefunden" aus
Beende Funktion
speichereAufgaben(aufgabenListe)
Gib Meldung "Aufgabe erledigt gespeichert" aus
Die Variable gefunden merkt sich, ob die Suche erfolgreich war. Ohne
diese Variable wuesstest du nach der Schleife nicht sicher, ob etwas geaendert
wurde.
7. Fehlerfaelle planen
Gute Speicherlogik denkt auch an Fehler. Daten koennen fehlen, leer sein, falsch aufgebaut sein oder doppelt vorkommen.
8. Deine Aufgaben
- Schreibe Pseudocode fuer
ladeAufgaben(). - Plane, was passiert, wenn gespeichertes JSON kaputt ist.
- Schreibe Pseudocode fuer
addTask(title). - Schreibe Pseudocode fuer
deleteTask(id). - Schreibe Pseudocode fuer
resetProgress(). - Zeichne fuer
lektionAbschliesseneinen Programmablaufplan.