Aus Das deutschsprachige Scratch-Wiki

Diese Seite ist der dritte Projektteil der OER-Serie Projekt: Ada's Gedicht Generator. In dieser Einheit geht es darum, ein Gedicht das auf Scratch in einer Liste gespeichert ist, in ein eigenes Format zu bringen, vom Gedichtgenerator wieder eingelesen und aufgesagt werden kann.

Voraussetzung: Absolvieren der zweiten Einheit der OER-Serie Projekt: Ada's Gedicht Generator.

1. Vorbereitung

Einleitung: Du hast schon gesehen, das Gedicht kann auf verschiedene Weisen vom Computer dargestellt werden: Als von Ada Gesagtes, als Liste. Der Inhalt ist beide Male als Text dargestellt. In dieser Aufgaben werden wir unser eigenes Dateiformat erfinden bei der der Inhalt als Zahlenreihe dargestellt wird, um unsere Gedichte auf dem Computer zu speichern, einfach an andere versenden und Gedichtdateien importieren und den Inhalt anzeigen zu können.

In dieser Aufgabe lernst du, wie du eine Datei kodierst um sie zu speichern und vielleicht zu verschicken und wieder dekodierst um sie zu lesen. Das nennt man in der Informatik "Serialisierung" und "Deserealisierung". So kannst du deine Gedichte einfach mit anderen Leuten austauschen.

Aufgabe: Bevor du weitermachst überlege selbst. Welche Teilschritte sind erforderlich, um das Problem zu lösen, also die Liste von Gedichtzeilen in eine Zahlenfolge umzuwandeln und diese wieder zurück in eine Liste zu verwandeln? Schreibe deinen Algorithmus auf Papier auf!

Tipp: Das Problem mit dem du in dieser Einheit konfrontiert wirst ist eine große Herausforderung, nimm sie sportlich. Gib dein bestes, aber sei nicht enttäuscht wenn es nicht alles klappt. Du hast ja gerade erst angefangen mit Programmierung!

Tipp: Versuche, nicht ziellos herumzuprobieren, sondern nachzudenken, was sinnvoll wäre. Wenn du mit der Programmierung nicht zurecht kommst, formuliere in Worten, was Schritt für Schritt passieren soll.

Tipp: Wenn nicht alles klappt, macht das nichts. Komm am Ende des Kurses oder vielleicht sogar am Ende des Semesters oder nächstes Semester zurück zur Aufgabe, und schau sie dir nochmal an.

2. Eine Look-Up-Table designen

Look-Up-Table: Eine Look-Up-Table kannst du verwenden um jedem Zeichen (z.B. "A", ".", ...) einen Zahlenwert (z.B. "10", "42", ...) zuzuweisen. Du kannst darin nachschauen, welche Zahl welches Zeichen bedeutet und umgekehrt. Verwende für deine Look-Up-Table nur Zeichen, die für ein Gedicht Sinn machen.

Aufgabe: Schau dir deinen Gedicht-Algorithmus an. Überlege welche Zeichen in der Look-Up-Table gespeichert werden sollen und welche Zahl das Zeichen jeweils erhalten soll. Mach dir auf einem Zettel Notizen.

Tipp: Scratch unterscheidet nicht zwischen Groß- und Kleinschreibung. Denk auch an Zeichensetzung. Was ist mit Leerzeichen? Und neuen Zeilen?

3. Eine Look-Up-Table verwenden

Die vorgegebene Look-Up-Tabelle: Um dir die Arbeit zu erleichtern gibt es bereits eine Text-Datei mit sinnvollen Zeichen, die du verwenden kannst. Denk daran: Wenn alle dieselbe Tabelle verwenden, kannst du deine serialisierten Gedichte mit anderen austauschen und die Gedichte von anderen anzeigen lassen. Du wirst die Look-Up-Table benutzen um die Zeichen aus deinem Gedicht in Zahlen umzuwandeln und zurück.

Aufgabe: Importiere die Look-Up-Table in dein Gedicht-Generator Projekt.

Kopierbare Look-Up-Table Text-Datei: https://gist.github.com/LiFaytheGoblin/a7062c9cba347e37f409b95c0b3818ea

Einzelschritt 1: Öffne den Text-Editor. Markiere den Inhalt der Look-Up-Table-Datei und kopiere ihn. Paste den Inhalt in deinen Text-Editor. Verändere die Table, wenn du meinst etwas anderes macht für dein Gedicht mehr Sinn. Speichern nicht vergessen.

Rechtsklick auf die Liste, die auf der Bühne zu sehen ist, zeigt dir ein Importieren und Exportieren Menü.

Einzelschritt 2: Importiere die Text-Datei in Scratch. Erstelle dazu eine neue Liste in Scratch und lasse sie auf der Bühne anzeigen. Mit einem Rechtsklick kannst du eine Text-Datei zum importieren auswählen.

Die fertig importierte Look-Up-Table sollte etwa so aussehen.

Einzelschritt 3: Wenn die Datei importiert wurde entferne noch das letzte Element aus der Liste, falls dieses leer ist (das passiert leider beim Import :(). Das "/n" sollte die letzte Zeile sein.

Tipp: Du siehst in der letzten Zeile "/n". Das steht für "neue Zeile". Auch das Leerzeichen ist in der Tabelle vorhanden, findest du es? Aus Gründen die du später verstehen wirst sind die ersten 10 Zeilen freigelassen.

Tipp: In der Look-Up-Table stehen nur Zeichen, also wo wird da ein Zahlenwert den Zeichen zugeordnet? Die Zeilennummer, also der "Index", also der Platz in der Liste, an dem das Zeichen sich befindet, ist der Zahlenwert, der dem Zeichen zugeordnet wird!

4. Zeichen werden zu Zahlen

Aufgabe: Speichere das Gedicht Zeichen für Zeichen als Zahlenfolge in einer Variable. Das nennt man Serialisieren.

Tipp: Du benötigst eine neue Variable für dein Ergebnis. Du kannst Zahlen zur Variable anhängen, indem du den verbinde-Block aus der Operatoren-Kategorie wählst. So erstellst du eine Zahlenkette aus zweistelligen Zahlen. Welcher Anfangswert muss deine Ergebnis-Variable haben?

Tipp: Kopiere deine Schleifen-Kombi aus Teil 3 dieser OER-Serie und ersetze den Teil, in dem Ada das Zeichen sagt, durch das Speichern des Zeichens.

Tipp: Wo in der Schleifen-Kombo musst du speichern, dass jetzt eine neue Zeile kommt?

Tipp: Das Speichern besteht aus zwei Teilen: 1. Herausfinden welche Zahl das Zeichen laut deiner Look-Up-Table kodiert und 2. Die Zahl an die bestehende Zahlenkette anhängen.

Tipp: Funktionen können auch verwendet werden, um deinen Code übersichtlicher zu machen. Lagere den Programmcode zur Speicherung des Zeichens in eine Funktion aus.

Tipp: Leider kann man bei Scratch den Variablenwert nicht kopieren, sondern nur den Wert eines Listenelements. Erstelle deshalb eine neue Liste, in die du nur den Wert deiner Zeichenkette speicherst. Wenn du die Liste anzeigen lässt kannst du die Zeichenkette markieren und kopieren.

5. Zahlen werden zu Zeichen

Aufgabe: Deserealisiere eine vom User eingegeben Zahlenfolge zurück in eine Gedichtliste.

Tipp: Wie soll das Dekodieren ausgelöst werden? Sobald es ausgelöst wird, lass den User die Zahlenfolge eingeben, indem du den Frage-Block aus der Kategorie "Fühlen" verwendest. Dieser erzeugt ein Fensterchen, in das der User die Zahlenfolge eingeben kann. Wenn das passiert ist, wird die Antwort in der Variablen "Antwort" (auch in der "Fühlen"-Kategorie) gespeichert.

Tipp: Die Zahlen sind immer zweistellig. Du musst dir also immer die nächsten zwei Zahlen anschauen und sie in eine Ziffer umwandeln. Jetzt verstehst du auch, warum in unserer Look-Up-Table die ersten 9 Zeilen frei sind! Es wäre unpraktisch, wenn manche Zahlen nur eine Stelle hätten.

Tipp: Deine Schleife läuft nun über die Zahlenfolge. Speichere am besten den Wert der nächsten zwei Stellen zusammengenommen um den zweistelligen Code zu erhalten. Eine Variable muss festhalten, wo in der Zahlenfolge du gerade bist. Um wieviel muss die Variable sich immer erhöhen?

Tipp: Was soll im Normalfall mit dem Zeichen passieren, dass dem zweistelligen Code entspricht? Was soll passieren falls es sich um ein Zeichen handelt, dass eine neue Zeile ankündigt?

Tipp: Zum Debuggen (also Fehler finden und beheben) hilft es, wenn du vorübergehend "warte"-Blöcke in deinen Algorithmus einbaust um zu beobachten, wie sich die Variablen verändern.

Tipp: Einen Lösungsvorschlag findest du unter https://scratch.mit.edu/projects/431809549/editor/.


Code zum Einbinden ins Forum:
[wiki=de:Projekt: Ada's Gedicht Generator Teil 3 - Serialisierung]Projekt: Ada's Gedicht Generator Teil 3 - Serialisierung[/wiki]

Kategorie:En-Link

Cookies helfen uns bei der Bereitstellung von Das deutschsprachige Scratch-Wiki. Durch die Nutzung von Das deutschsprachige Scratch-Wiki erklärst du dich damit einverstanden, dass wir Cookies speichern.