Grundlagen

Die vorliegenden Materialien wurden von André Tempel erstellt. Sollten andere Editoren die Materialien erstellt haben, werden diese explizit genannt.

Grundlagen der Codierung

ESA-Kontrollzentrum und Mars-Rover, Mit KI erstellt.

Sie arbeiten im Kontrollzentrum der Europäischen Weltraumorganisation (ESA). Millionen Kilometer entfernt rollt unser Forschungsrover über den Mars. Seine Antenne kann nur zwei Zustände senden bzw. empfangen: Signal an (1) oder Signal aus (0). Wir sprechen hier auch von Bits. Bevor der Rover startet, müssen wir ein Kommunikationsprotokoll festlegen.

Der Rover entdeckt Eis. Er soll das kurze Wort „EIS“ zur Erde funken. Er kann aber keine Buchstaben senden, sondern nur Nullen und Einsen.

  1. Beschreiben Sie das Problem, das entsteht, wenn der Rover nur 0 und 1 senden kann, uns aber über das Eis informieren möchte.
  2. Beschreiben Sie eine Lösungsstrategie für dieses Problem.
Hilfe 1 – Buchstaben als Zahlen
Überlegen Sie, wie Sie jedem Buchstaben des Alphabets eine feste Abfolge von Nullen und Einsen zuordnen könnten.
Hilfe 2 – Ein Codebuch
Was wäre, wenn Sie vor dem Start eine Tabelle anlegen? Zum Beispiel: A = 00001, B = 00010, C = 00011. Wie ließe sich dann das Wort „EIS“ aus solchen Kombinationen zusammensetzen?

Der Rover fährt auf einen tiefen Krater zu. Die Sensoren schlagen Alarm und der Rover sendet den Statusbericht an die Erde. Wir haben vorher vereinbart: „0“ bedeutet „Alles sicher“, „1“ bedeutet „Achtung, Abgrund!“. Genau in diesem Moment trifft ein starker Sonnensturm das Funksignal und kippt durch die Strahlung die gesendete „1“ in eine „0“ um. Die Erde denkt, alles sei sicher.

  1. Beschreiben Sie das Problem, das durch das Kippen des Bits entsteht.
  2. Beschreiben Sie eine mögliche Lösung, sodass ein gekipptes Bit kein Problem mehr darstellt.
Hilfe 1 – Mehrfachsendung
Was passiert, wenn der Rover nicht nur ein einziges Bit sendet, sondern die Nachricht sicherheitshalber mehrfach wiederholt?
Hilfe 2 – Der Mehrheitsentscheid
Stellen Sie sich vor, der Rover sendet für „Gefahr“ nicht nur „1“, sondern dreimal die „1“ (111). Wenn der Sonnensturm ein Bit kippt und „101“ auf der Erde ankommt – wie kann die Kontrollstation trotzdem mathematisch auf die ursprüngliche Nachricht schließen?

Der Rover hat nachts ein hochauflösendes Foto (10 Millionen Pixel) vom dunklen Mars-Himmel gemacht. 99 % des Bildes sind komplett schwarz, nur in der Mitte leuchtet ein kleiner, weißer Stern. Für jeden schwarzen Pixel muss der Rover einen langen Binärcode (z. B. 00000000) senden. Das Senden dieses Bildes würde Wochen dauern.

  1. Beschreiben Sie das entstehende Problem.
  2. Beschreiben Sie eine mögliche Lösung für die große Menge an Daten.
Hilfe 1 – Wiederholungen zusammenfassen
Anstatt für jeden einzelnen schwarzen Pixel immer wieder denselben Binärcode zu senden: Gibt es eine Möglichkeit, diese sehr langen, gleichbleibenden Wiederholungen kürzer zu beschreiben?
Hilfe 2 – Zählen statt senden
Was wäre, wenn der Rover anstelle von „schwarz, schwarz, schwarz...“ einfach eine Anweisung wie „Jetzt kommen 9,9 Millionen schwarze Pixel“ als kurzen Code sendet? Überlegen Sie, wie stark das die zu sendende Datenmenge reduziert.

Die drei Säulen der Datenübertragung

Sie haben in den drei Szenarien gerade die zentralen Herausforderungen der modernen Informatik selbst erkannt. Egal ob Mars-Rover, Smartphone oder WLAN-Router – jedes digitale System kommuniziert über die Zustände „Strom an“ oder „Strom aus“. Diese kleinsten Informationseinheiten nennen wir Bits (0 oder 1). Fassen wir acht solcher Bits zusammen, sprechen wir von einem Byte.

Doch Bits und Bytes allein sind erst einmal nur ein bedeutungsloses Rauschen. Damit daraus verwertbare Informationen werden, benötigen wir die Strategien, die Sie gerade entwickelt haben:

  1. Codierung (Die gemeinsame Sprache): Wie Sie in Szenario 1 festgestellt haben, nützt das beste Funksignal nichts, wenn Sender und Empfänger es unterschiedlich interpretieren. Wir benötigen feste Vorschrift, um Informationen von einer Darstellungsform in eine andere zu überführen. Eine solche Vorschrift nennt man Code. Nur wenn Erde und Rover exakt dasselbe „Wörterbuch“ nutzen, wird aus einer Bitfolge eine sinnvolle Nachricht.
  2. Fehlererkennung (Sicherheit durch Redundanz): Szenario 2 hat Ihnen gezeigt, wie anfällig digitale Daten sind. Ein einziges durch Strahlung gekipptes Bit kann eine lebensrettende Warnung in ein falsches Sicherheitssignal verwandeln. Die Lösung beruht auf Redundanz – dem bewussten Hinzufügen von zusätzlichen Kontrolldaten (wie dem mehrfachen Senden einer Nachricht). So können Fehler erkannt und sogar korrigiert werden.
  3. Datenmenge und Kompression (Effizienz): Die Fehlererkennung macht unsere Nachrichten zwar sicherer, bläht die Datenmenge aber enorm auf. Szenario 3 verdeutlicht das Problem: Riesige Datenmengen verstopfen die langsamen Funkkanäle. Um Zeit und Energie zu sparen, müssen wir Daten komprimieren, also Muster erkennen und intelligent zusammenfassen, statt Millionen Nullen einzeln zu senden. Sicherheit und Effizienz stehen in der Informatik also in einem ständigen Spannungsverhältnis.
Visuelle Zusammenfassung der drei Säulen der Datenübertragung, mit KI erstellt.

Von der Theorie zur Praxis: Text als Daten

Lassen Sie uns nun den ersten dieser drei Aspekte – die Codierung – genauer unter die Lupe nehmen. Wie genau übersetzen wir menschliche Sprache in Maschinensprache? Wenn der Rover das Wort „EIS“ funken möchte, braucht er für jeden einzelnen Buchstaben ein exaktes, weltweit standardisiertes Bit-Muster. Genau hierfür wurde der ASCII-Code entwickelt. Erfahren Sie im nächsten Schritt, wie dieser Code unsere Schriftzeichen in Nullen und Einsen codiert wird, und decodieren Sie Ihre erste echte Mars-Nachricht!

Der ASCII-Code: Text als Nullen und Einsen

Damit Computer – oder unser Mars-Rover – Texte fehlerfrei austauschen können, benötigen sie ein gemeinsames „Wörterbuch“. Die historische und technische Grundlage dafür bildet der sogenannte ASCII-Code.

Wie funktioniert die Übersetzung?

Das Prinzip des ASCII-Codes ist simpel: Jedem denkbaren Zeichen (Buchstaben, Ziffern, Satzzeichen) wird ein fester Dezimalwert zugeordnet.

  • Das Muster: Das große „A“ hat nach dieser weltweiten Definition immer den Dezimalwert 65. Das kleine „a“ beginnt bei 97.
  • Die binäre Form: Da Maschinen nur mit Strom an/aus arbeiten, wird dieser Dezimalwert in eine Dualzahl (Binärcode) umgewandelt. Die 65 wird so zu der Bitfolge 01000001.

Von 7 Bit zum vollen Byte

Ursprünglich wurde der ASCII-Code in den 1960er-Jahren als 7-Bit-Code entwickelt. Da ein einzelnes Bit genau zwei Zustände annehmen kann (0 oder 1), berechnet sich die maximale Anzahl der möglichen Zeichen durch die Potenz 2n, wobei n für die Anzahl der Bits steht. Mit 7 Bits ließen sich somit genau 27 = 128 verschiedene Zeichen darstellen. Das reichte zwar für das englische Alphabet und Zahlen, stieß aber bei anderen Sprachen schnell an seine Grenzen.

Daher wurde der Code durch eine vorangestellte „0“ auf 8 Bit (also genau 1 Byte) erweitert. Setzt man dies in die Formel ein, ergibt sich eine neue Anzahl von 28 = 256 darstellbaren Zeichen. Durch diese Verdopplung fanden nun auch Umlaute und Sonderzeichen Platz.

Der entscheidende Vorteil: Die feste Blocklänge

Das Wichtigste am ASCII-Code ist seine feste Länge. Jedes codierte Zeichen besteht aus exakt 8 Bits.

  • Für den Computer bedeutet das: Er muss nicht raten, wann ein Buchstabe aufhört und der nächste beginnt.
  • Er zählt einfach stur immer 8 Bits ab und übersetzt den Block.
  • Es werden keine künstlichen Pausen oder Trennzeichen im Datenstrom benötigt.

Dadurch ist die Übersetzung zwar sehr systematisch und sicher, aber nicht immer die speichersparendste Variante – ein Thema, das Sie später bei der Datenkompression noch genauer beschäftigen wird.

Aufgaben

Lösen Sie die folgenden Aufgaben in Partnerarbeit. Nutzen Sie bei Bedarf die integrierten Hilfen.

Ihr Bearbeitungsfortschritt: 0%

Die Bodenstation empfängt vom Mars-Rover die folgende Nachricht im 8-Bit-ASCII-Code. Decodieren Sie das Signal und notieren Sie das Wort.

01000101 01010011 01000001
ZeichenDezimalzahlASCII-Code (8-Bit)
Hilfe 1 – Der erste Schritt
Wandeln Sie die Dualzahlen zunächst in Dezimalzahlen um. Erinnern Sie sich an die Stellenwerte im Binärsystem: 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1.
Hilfe 2 – Das erste Zeichen
Der erste Block lautet 01000101. Hier stehen die Einsen bei den Werten 64, 4 und 1. Das ergibt zusammen 64 + 4 + 1 = 69. Suchen Sie die Zahl 69 in Ihrer ASCII-Tabelle.

Der 8-Bit-ASCII-Code reicht mit seinen 28 = 256 Zeichen für unsere irdischen Schriften und Sonderzeichen meist gut aus. Stellen Sie sich vor, wir müssten ein komplexes, außerirdisches Alphabet mit über 1.000 verschiedenen Zeichen in das Kommunikationsprotokoll aufnehmen.

Berechnen Sie, wie viele Bits (die Blocklänge) wir mindestens pro Zeichen benötigen würden, um alle Zeichen abbilden zu können. Geben Sie Ihren Rechenweg an.

Hilfe 1 – Verdopplung
Jedes zusätzliche Bit verdoppelt die Anzahl der darstellbaren Zeichen. Wenn 8 Bit 256 Möglichkeiten bieten, wie viele Möglichkeiten bieten dann 9 Bit?
Hilfe 2 – Weiterrechnen
Multiplizieren Sie die Möglichkeiten so lange mit 2, bis Ihr Ergebnis die geforderte Marke von 1.000 Zeichen überschreitet. Zählen Sie dann, wie viele Bits Sie verwendet haben.

Der ASCII-Code nutzt für jedes Zeichen starr exakt 8 Bit.

  1. Erklären Sie in ein bis zwei Sätzen, warum diese feste Länge für den Computer beim Einlesen des Datenstroms einen massiven Vorteil bietet.
  2. Nennen Sie einen Nachteil, der entsteht, wenn wir auch extrem häufige Zeichen (wie z. B. das Leerzeichen oder das "e") immer mit vollen 8 Bit codieren.
Hilfe 1 – Zum Vorteil
Stellen Sie sich vor, Sie lesen einen langen Text ganz ohne Leerzeichen. Woher weiß der Computer bei einem kontinuierlichen Strom aus Nullen und Einsen, wo ein Buchstabe aufhört und der nächste beginnt?
Hilfe 2 – Zum Nachteil
Überlegen Sie, wie viel Speicherplatz oder Übertragungszeit durch ein Zeichen verbraucht wird, das fast in jedem Wort vorkommt. Wäre es nicht effizienter, häufige Buchstaben mit kürzeren Codes (z. B. nur 2 oder 3 Bit) zu versenden?
🎉 Ausgezeichnet – Alle Aufgaben abgeschlossen!

Sie haben alle Aufgaben bearbeitet und abgehakt. Vergleichen Sie Ihre Ergebnisse nun mit der Musterlösung.

Sicherheit durch Redundanz: Der n-Bit-Repetitionscode

Das Problem: Unsichtbare Fehler

Unerkannter Fehler, mit KI erstellt

Stellen Sie sich noch einmal das zweite Szenario vor: Der Mars-Rover funkt eine 1 für „Achtung, Abgrund!“. Ein Sonnensturm stört die Funkwelle, das Signal kippt, und auf der Erde kommt eine 0 an. Das fatale Problem dabei ist, dass der Computer auf der Erde die 0 einfach als gültiges Signal für „Alles in Ordnung“ wertet. Der Fehler bleibt völlig unsichtbar.

Die Lösung: Das Prinzip der Redundanz

Um solche unsichtbaren Übertragungsfehler aufzuspüren, nutzt die Informatik das Prinzip der Redundanz.

Redundanz bedeutet, dass dem Datenstrom bewusst zusätzliche Informationen hinzugefügt werden, die für die eigentliche Nachricht gar nicht nötig wären – einzig und allein, um die Sicherheit zu erhöhen. Das wohl simpelste Verfahren hierfür ist der sogenannte n-Bit-Repetitionscode.

Der 3-Bit-Repetitionscode

Der Ansatz ist so einfach wie wirkungsvoll: Jedes zu sendende Bit wird nicht einzeln geschickt, sondern n-fach wiederholt. Wir betrachten hier die dreifache Wiederholung.

  • Codierung: Aus einer zu sendenden 0 wird der Block 000. Aus einer 1 wird der Block 111.
  • Beispiel: Möchte der Rover die kurze Folge 01 senden, funkt er stattdessen den Satz 000 111.

Was passiert nun, wenn der Sonnensturm zuschlägt? Der Empfänger-Computer führt zwei aufeinanderfolgende Schritte durch:

Schritt 1: Fehler erkennen (Musterprüfung)

Nehmen wir an, die Strahlung kippt das mittlere Bit im ersten Block. Die Erde empfängt die Nachricht: 010 111.

Der Computer prüft systematisch jeden Dreierblock. Die Regel ist klar: Es dürfen eigentlich nur die reinen Blöcke 000 oder 111 vorkommen. Da der Block 010 nicht aus drei gleichen Ziffern besteht, schlägt das System sofort Alarm: Hier gab es einen Übertragungsfehler!

Schritt 2: Fehler korrigieren (Der Mehrheitsentscheid)

Das System kann den Fehler nicht nur finden, sondern auch selbstständig reparieren. Dafür nutzt es einen logischen Trick: den Mehrheitsentscheid.

In dem fehlerhaften Block 010 gibt es zwei Nullen und eine Eins. Es ist sehr viel wahrscheinlicher, dass durch den Sturm nur ein einziges Bit gekippt ist, als dass zufällig gleich zwei Bits exakt im selben Block kippen. Daher verlässt sich der Computer auf die Mehrheit und korrigiert die einsame Eins einfach zurück zur 000.

Aufgaben

Bearbeiten Sie die folgenden Aufgaben zu Fehlererkennung und Redundanz. Nutzen Sie bei Bedarf die integrierten Hilfen.

Ihr Bearbeitungsfortschritt: 0%

Der Mars-Rover hat Eis gefunden und soll das Zeichen „E“ funken. Um Übertragungsfehler zu vermeiden, wird der 3-Bit-Repetitionscode verwendet.

  1. Wandeln Sie das Zeichen „E“ in seine 8-stellige ASCII-Code um.
  2. Codieren Sie diese anschließend in den 3-Bit-Repetitionscode.
Hilfe zu Aufgabe 1
Teilen Sie den Dezimalwert 69 in Zweierpotenzen auf (64 + 4 + 1). Wandeln Sie dann jede 0 in 000 und jede 1 in 111 um.

Der Rover sendet eigentlich die Nachricht 000 (für eine 0). Durch einen Sonnensturm kommt es jedoch zu Übertragungsfehlern. Untersuchen Sie, wie das System in den folgenden drei Fällen reagiert, wenn es die Regel des Mehrheitsentscheids anwendet:

  1. Es tritt genau ein Fehler auf und die Erde empfängt 010. Was macht das System?
  2. Es treten genau zwei Fehler im selben Block auf und die Erde empfängt 011. Was macht das System und welches Problem entsteht dabei?
  3. Es treten genau drei Fehler im selben Block auf und die Erde empfängt 111. Was passiert in diesem Fall?
Hilfe zu Aufgabe 2
Das System zählt stur die Nullen und Einsen in einem empfangenen Block und wandelt den gesamten Block in die Zahl um, die in der Mehrheit ist.

Um die Funkverbindung noch sicherer zu machen, schlägt die Missionsleitung vor, längere Wiederholungen zu nutzen.

  1. Analysieren Sie den 4-Bit- und den 5-Bit-Repetitionscode: Wie viele Übertragungsfehler pro Block können jeweils maximal erkannt werden? Wie viele können durch den Mehrheitsentscheid sicher korrigiert werden?
  2. Leiten Sie daraus allgemeine Formeln ab: Wie viele Fehler kann ein n-Bit-Repetitionscode allgemein sicher erkennen? Wie viele Fehler kann er sicher korrigieren (nehmen Sie für die Korrektur an, dass n eine ungerade Zahl ist)?
Hilfe zu Aufgabe 3
Ein Fehler bleibt nur dann unbemerkt, wenn sich ein gültiges Codewort durch die Störung in das exakt andere gültige Codewort verwandelt. Überlegen Sie bei der Korrektur für den 4-Bit-Code, was bei genau zwei Fehlern (z. B. 0011) passiert.

Sicherheit ist in der Informatik nie kostenlos. Als Maß für die Effizienz einer Codierung verwendet man die sogenannte Informationsrate. Sie berechnet sich allgemein durch die Formel:

Informationsrate = (Anzahl der Informationsbits) / (Gesamtzahl der gesendeten Bits)
  1. Berechnen Sie die Informationsrate für den 3-Bit- und den 5-Bit-Repetitionscode in Prozent. Geben Sie zudem die allgemeine Formel für die Informationsrate eines n-Bit-Repetitionscodes an.
  2. Diskutieren Sie das Ergebnis: Was würde es für die Übertragung eines hochauflösenden Bildes vom Mars bedeuten, wenn wir zur maximalen Sicherheit einen 11-Bit-Repetitionscode verwenden würden?
Hilfe zu Aufgabe 4
Beim 3-Bit-Repetitionscode senden wir insgesamt 3 Bits, um in Wahrheit nur 1 einziges Bit an Information zu übermitteln.
🎉 Ausgezeichnet – Alle Aufgaben zum Repetitionscode abgeschlossen!

Sie haben alle Aufgaben bearbeitet und abgehakt. Vergleichen Sie Ihre Ergebnisse nun mit der Musterlösung.

Bilder vom Roten Planeten: Das RGB-Farbmodell

Bild aus Pixeln, mit KI erstellt

Stellen Sie sich vor, der Mars-Rover hat den gefährlichen Abgrund sicher umfahren. Nun richtet er seine Hauptkamera auf die atemberaubende, rostige Landschaft und macht ein hochauflösendes Foto. Wir wissen bereits, dass der Rover nur Nullen und Einsen senden kann. Doch wie übersetzt er ein farbiges Foto in einen solchen Binärcode?

Das Bild als Mosaik (Pixel)

Ein digitales Bild ist nicht aus einem Guss, sondern wie ein riesiges Mosaik aufgebaut. Wenn Sie ein Bild auf einem Bildschirm immer weiter vergrößern, erkennen Sie kleine quadratische Bildpunkte, die sogenannten Pixel. Der Rover muss der Erde für jeden einzelnen dieser Pixel mitteilen, welche Farbe er hat.

Farben aus Licht (Das RGB-Modell)

Wenn Sie das Display eines Smartphones oder Fernsehers unter ein Mikroskop legen, sehen Sie, dass jeder Pixel technisch aus drei winzigen Leuchtdioden (LEDs) besteht: einer roten, einer grünen und einer blauen. Dies nennt man das RGB-Farbmodell (Rot, Grün, Blau).

Da Bildschirme selbst leuchten, funktioniert die Farbdarstellung durch die sogenannte „additive Farbmischung“. Das bedeutet:

  • Mischen Sie alle drei Farben mit voller Leuchtkraft, entsteht Weiß.
  • Bleiben alle drei Lampen aus (Dunkelheit), sehen Sie Schwarz.
  • Alle anderen Farben entstehen, indem die drei Leuchtdioden unterschiedlich hell strahlen.

Um dem Computer mitzuteilen, wie hell eine bestimmte Farbe leuchten soll, nutzen wir Dezimalzahlen von 0 bis 255. Ein Wert von 0 bedeutet „Licht aus“, ein Wert von 255 bedeutet „maximale Helligkeit“.

Doch warum ausgerechnet 255? Hier schließt sich der Kreis zu Ihrem Vorwissen:

Für jeden der drei Farbanteile (Rot, Grün, Blau) reserviert der Computer im Speicher exakt 8 Bits, also genau 1 Byte. Wie Sie bereits bei der Textcodierung gelernt haben, lassen sich mit 8 Bit genau 28 = 256 verschiedene Zustände darstellen. Da wir in der Informatik bei der Null zu zählen beginnen, ist der höchste mögliche Wert die 255.

Die binäre Übersetzung

Möchte der Rover nun einen rein roten Pixel senden, stellt er Rot auf die maximale Helligkeit (255) und schaltet Grün (0) sowie Blau (0) ab. Der Computer wandelt diese Dezimalwerte nun in Binärcode um:

  • Rot (255): 11111111
  • Grün (0): 00000000
  • Blau (0): 00000000

Für einen einzigen farbigen Punkt muss der Rover also insgesamt 24 Bit (3 Byte) senden. Die fertige Nachricht für diesen einen Pixel lautet: 11111111 00000000 00000000.

Aufgaben

Bearbeiten Sie die folgenden Aufgaben zu Farbmischung, Binärcodes und Speicherkapazität. Nutzen Sie bei Bedarf die integrierten Hilfen.

Ihr Bearbeitungsfortschritt: 0%

Vervollständigen Sie die Lücken in der folgenden Tabelle. Wandeln Sie dazu die Farbwerte zwischen dem Dezimalsystem und dem Binärcode um oder bestimmen Sie die resultierende Farbe.

FarbeDezimalwerte (Rot, Grün, Blau)Binärwerte (Rot, Grün, Blau)
Reines Rot(255, 0, 0)(11111111, 00000000, 00000000)
Reines Grün(0, 255, 0)
(0, 0, 0)(00000000, 00000000, 00000000)
Weiß(11111111, 11111111, 11111111)
(0, 0, 255)(00000000, 00000000, 11111111)
Gelb (Rot + Grün)(255, 255, 0)
(85, 85, 85)(01010101, 01010101, 01010101)
Mittelgrau(128, 128, 128)(10000000, 10000000, 10000000)
(192, 192, 192)(11000000, 11000000, 11000000)
Hilfe zu Aufgabe 1
Denken Sie an die Wertebereiche: 0 bedeutet „Licht aus“ (Binär: 00000000) und 255 bedeutet „volle Helligkeit“ (Binär: 11111111).

Auf der Marsoberfläche nimmt die Hauptkamera ein hochauflösendes Foto mit einer Auflösung von 1000 × 1000 Pixeln auf.

  1. Berechnen Sie, wie viele Pixel das Bild insgesamt enthält.
  2. Ermitteln Sie den gesamten Speicherbedarf dieses Bildes in Byte und in Megabyte (MB), wenn jeder Pixel im Standard-RGB-Format mit 24 Bit (3 Byte) gespeichert wird.
Hilfe zu Aufgabe 2
Multiplizieren Sie zunächst die Breite und Höhe für die Gesamtzahl der Pixel. Multiplizieren Sie diesen Wert anschließend mit den 3 Byte pro Pixel. (Beachten Sie: 1 Megabyte = 1.000.000 Byte bzw. 106 Byte).

Der Rover analysiert ein schimmerndes Mineral auf dem Marsboden. Die Kamera mischt dafür Rot und Blau jeweils mit voller Intensität (255), während der Grün-Kanal ausgeschaltet bleibt (0).

  1. Notieren Sie die Dezimal- und Binärwerte für diesen Farbton.
  2. Benennen Sie die Mischfarbe, die durch diese Kombination entsteht.
  3. Da für jede der drei Grundfarben genau 8 Bit zur Verfügung stehen, gibt es pro Farbe 256 Abstufungen (0 bis 255). Berechnen Sie, wie viele verschiedene Farben sich mit diesem 24-Bit-RGB-Code insgesamt darstellen lassen.
Hilfe zu Aufgabe 3
Überlegen Sie für die Vielfalt: Wenn jede der drei Grundfarben 256 Möglichkeiten bietet, wie viele Kombinationen ergeben sich insgesamt aus ihrer Multiplikation ($256 \times 256 \times 256$)?
🎉 Ausgezeichnet – Alle Aufgaben abgeschlossen!

Sie haben alle Aufgaben bearbeitet und abgehakt. Vergleichen Sie Ihre Ergebnisse nun mit der Musterlösung.

Der Datenstau: Lauflängecodierung zur Kompression

Datenübertragung, mit KI erstellt

Erinnern Sie sich an das dritte Szenario mit dem Foto des nächtlichen Mars-Himmels? Nachdem Sie nun wissen, dass ein einziger farbiger Pixel ganze 24 Bits Speicherplatz benötigt, wird das wahre Ausmaß des Problems deutlich.

Ein hochauflösendes Foto der Mars-Kamera mit 10 Millionen Pixeln besteht unkomprimiert aus 240 Millionen Nullen und Einsen. Da die Funkverbindung zwischen Mars und Erde extrem schwach ist, würde das Senden dieser gigantischen Datenmenge wertvolle Zeit und enorm viel Energie kosten. Wir müssen die Datenmenge also zwingend verkleinern (komprimieren).

Zählen statt Wiederholen (Die Lauflängencodierung)

Auf dem Foto des Nachthimmels ist fast alles schwarz, nur in der Mitte leuchtet ein Stern. Wenn der Rover für jeden schwarzen Pixel stur immer wieder den 24-Bit-Code für Schwarz (00000000 00000000 00000000) senden würde, wäre das extrem ineffizient.

Anstatt die Farbe für jeden Punkt einzeln zu funken, nutzt der Bordcomputer ein intelligentes Kompressionsverfahren: die sogenannte Lauflängencodierung (engl. Run-Length Encoding, RLE). Bei dieser Methode zählt der Computer einfach, wie oft eine bestimmte Farbe direkt hintereinander auftritt (die sogenannte Lauflänge).

Konkretes Beispiel: Ein einfaches Schwarz-Weiß-Bild

Schauen wir uns das Prinzip an einer Zeile aus 16 Pixeln an:

P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
P13
P14
P15
P16

Unkomprimiert müsste der Rover für jeden Punkt 1 Bit senden (1 für Schwarz und 0 für Weiß). Das unkomprimierte Signal lautet: 1111111100001111 (16 Bits).

Die Regel der 3-Bit-Lauflängencodierung

Jeder Datenblock besteht aus exakt **3 Bits** und ist klar strukturiert:

  • Das 1. Bit bestimmt die Farbe: 1 = Schwarz | 0 = Weiß
  • Die Bits 2 und 3 bestimmen die Anzahl:
    • 00 = 1 Pixel
    • 01 = 2 Pixel
    • 10 = 3 Pixel
    • 11 = 4 Pixel

Nun übersetzen wir das Pixel-Muster schrittweise (größere Längen werden in Blöcke von maximal 4 Pixeln aufgeteilt):

  1. Schritt 1: 8 schwarze Pixel in Folge → aufgeteilt in 2-mal 4 schwarze Pixel.
    → 4× Schwarz (111) + 4× Schwarz (111)
  2. Schritt 2: 4 weiße Pixel in Folge.
    → 4× Weiß (011)
  3. Schritt 3: 4 schwarze Pixel in Folge.
    → 4× Schwarz (111)

Der fertige komprimierte Datenstrom lautet zusammengesetzt: 111 111 011 111 (nur noch 12 Bits statt der ursprünglichen 16 Bits).

Wichtige Erkenntnis: Bei zusammenhängenden Farbflächen spart die Lauflängencodierung deutlich Speicherplatz und Übertragungszeit. Bei echten Mars-Fotos mit Millionen gleichfarbigen Hintergrundpixeln schrumpft die Datenmenge dadurch um ein Vielfaches!

Effizienz ohne Informationsverlust

Da der Computer auf der Erde aus diesen Zählanweisungen das exakte Originalbild wiederherstellen kann, ohne dass auch nur ein einziges Detail fehlt, spricht man in der Informatik von einer verlustfreien Kompression[cite: 2]. Die Datenmenge wird bei echten Bildern drastisch reduziert, aber die Qualität des Bildes bleibt zu 100 Prozent erhalten[cite: 2].

Aufgaben

Bearbeiten Sie die folgenden Aufgaben zu den Grenzen und Herausforderungen der Kompression. Nutzen Sie bei Bedarf die integrierten Hilfen.

Ihr Bearbeitungsfortschritt: 0%

Beim 3-Bit-Code dient das erste Bit der Farbe (1 = Schwarz, 0 = Weiß) und die verbleibenden 2 Bits bestimmen die Anzahl (maximal 4 Pixel pro Block).

Erstellen Sie das analoge Regelwerk für eine 4-Bit-Lauflängencodierung, bei der ebenfalls das 1. Bit die Farbe angibt, nun aber 3 Bits für die Anzahl zur Verfügung stehen.

  1. Notieren Sie, wie viele Pixel mit 3 Bits maximal in einem einzigen Block codiert werden können.
  2. Vervollständigen Sie die Codeworttabelle für die 4-Bit-Lauflängencodierung.
CodewortFarbePixelanzahlCodewortFarbePixelanzahl
0000Weiß11000Schwarz1
0001Weiß21001Schwarz2
      
      
      
      
      
      
Hilfe zu Aufgabe 1
Mit 3 Bits (23) lassen sich genau 8 verschiedene Längen codieren (von 1 Pixel bis 8 Pixel).
000 = 1 Pixel
001 = 2 Pixel
...
111 = 8 Pixel

Gegeben ist ein Ausschnitt eines ruhigen Mars-Himmels (16 Pixel in einer Reihe):

Bild A (16 Pixel): 8 Pixel Schwarz, gefolgt von 8 Pixeln Weiß.

  1. Codieren Sie Bild A mit der 3-Bit-Lauflängencodierung (max. 4 Pixel pro Block).
  2. Codieren Sie Bild A mit Ihrer neu entwickelten 4-Bit-Lauflängencodierung (max. 8 Pixel pro Block).
  3. Vergleichen Sie die Bitlängen beider Codes mit der unkomprimierten Version (16 Bit).
Hilfe zu Aufgabe 2
Bei der 4-Bit-Codierung passt eine Reihe von 8 gleichen Pixeln exakt in einen einzigen Block!

Der Rover fotografiert eine stark strukturierte Gesteinskante mit häufig wechselnden Details:

Bild B (16 Pixel): Ein Schachbrettmuster aus abwechselnden Einzelpixeln:
[Schwarz, Weiß, Schwarz, Weiß, Schwarz, Weiß, Schwarz, Weiß, Schwarz, Weiß, Schwarz, Weiß, Schwarz, Weiß, Schwarz, Weiß]

  1. Ermitteln Sie die unkomprimierte Bitlänge für Bild B (1 Bit pro Pixel).
  2. Codieren Sie Bild B mit der 3-Bit-Lauflängencodierung.
  3. Codieren Sie Bild B mit der 4-Bit-Lauflängencodierung.
  4. Berechnen Sie, um wie viel Prozent sich die Datenmenge durch die "Kompression" in beiden Fällen jeweils vergrößert (aufbläht).
Hilfe zu Aufgabe 3
Da sich die Farbe nach jedem einzelnen Pixel ändert, hat jede Lauflänge genau die Länge 1 (00 bei 3-Bit, 000 bei 4-Bit). Jeder einzelne Pixel benötigt somit einen vollen Steuerblock!

Führen Sie Ihre Ergebnisse in der folgenden Übersichtstabelle zusammen und beantworten Sie die Leitfragen:

BildtypUnkomprimiert3-Bit-RLE4-Bit-RLE
Bild A (große Farbflächen)16 Bits_____ Bits_____ Bits
Bild B (starker Farbwechsel)16 Bits_____ Bits_____ Bits
  1. Anzahl der Bits pro Block: Warum schneidet die 4-Bit-Codierung bei Bild A besser ab als die 3-Bit-Codierung, verliert aber bei Bild B noch deutlicher?
  2. Einsatzbedingung: Formulieren Sie eine allgemeine Regel für die Bildanalyse: Unter welchen konkreten Bedingungen ist die Lauflängencodierung ein Gewinn für die Datenübertragung und wann schadet sie?
Hilfe zu Aufgabe 4
Überlegen Sie, wie stark der Overhead (die Zusatzinformation für die Länge) ins Gewicht fällt, wenn ein Block kurz ist oder wenn gar keine Wiederholungen vorliegen.
🎉 Ausgezeichnet – Alle Aufgaben abgeschlossen!

Sie haben alle Aufgaben bearbeitet und abgehakt. Vergleichen Sie Ihre Ergebnisse nun mit der Musterlösung.

Exkurs: Wie rechnet man Dezimal- und Binärzahlen um?

Da Computer ausschließlich im Binärsystem (mit den Ziffern 0 und 1) arbeiten, während wir Menschen das Dezimalsystem (mit den Ziffern 0 bis 9) nutzen, müssen wir Werte zwischen diesen beiden Systemen übersetzen können.

Von Binär nach Dezimal (Die Stellenwerttafel)

Jede Stelle einer Binärzahl hat einen bestimmten Wert, der sich von rechts nach links (beginnend mit 20 = 1) immer verdoppelt (Zweierpotenzen: 1, 2, 4, 8, 16, 32, 64, 128 usw.).

Beispiel: Wir wollen die Binärzahl 10011 in eine Dezimalzahl umwandeln.

  • Schritt 1: Wir schreiben die Stellenwerte über die Binärzahl:
    16er | 8er | 4er | 2er | 1er
    1 | 0 | 0 | 1 | 1
  • Schritt 2: Wir addieren die Werte aller Stellen, an denen eine „1“ steht:
    16 + 2 + 1 = 19

Ergebnis: Die Binärzahl 10011 entspricht der Dezimalzahl 19.

Von Dezimal nach Binär (Die größte-Zweierpotenz-Methode)

Möchten wir umgekehrt eine Dezimalzahl (z. B. die Zahl 53) in eine Binärzahl umwandeln, suchen wir nach den passenden Gewichten (Zweierpotenzen).

  • Schritt 1: Wir suchen die größte Zweierpotenz, die noch in unsere Zahl (53) hineinpasst.
    Das ist die 32 (25). Wir schreiben eine „1“ in die 32er-Spalte.
  • Schritt 2: Wir ziehen diesen Wert ab (53 - 32 = 21) und prüfen den Rest.
    Passt die nächste kleinere Potenz (16) hinein? Ja (21 - 16 = 5). Wir schreiben eine „1“ in die 16er-Spalte.
  • Schritt 3: Wir machen weiter mit dem Rest (5):
    • Passt die 8 hinein? Nein → „0“ in die 8er-Spalte.
    • Passt die 4 hinein? Ja (5 - 4 = 1) → „1“ in die 4er-Spalte.
    • Passt die 2 hinein? Nein → „0“ in die 2er-Spalte.
    • Passt die 1 hinein? Ja (1 - 1 = 0) → „1“ in die 1er-Spalte.

Ergebnis: Zusammengesetzt ergibt sich für die 53 die Binärzahl 110101 (denn 32 + 16 + 4 + 1 = 53).

Aufgaben

Bearbeiten Sie die folgenden Aufgaben zum Übersetzen von Zahlen zwischen dem Binär- und dem Dezimalsystem. Nutzen Sie bei Bedarf die integrierten Hilfen.

Ihr Bearbeitungsfortschritt: 0%

Wandeln Sie die folgenden Binärzahlen mithilfe der Stellenwerttafel in Dezimalzahlen um:

  • 01011
  • 110010
  • 01111111 (Tipp: Das ist der maximale Wert für 7 Bit!)
Hilfe zu Aufgabe 1
Schreiben Sie sich die Zweierpotenzen (..., 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1) über die Bits und addieren Sie nur die Zahlen, unter denen eine 1 steht.

Wandeln Sie die folgenden Dezimalzahlen mithilfe der Größte-Zweierpotenz-Methode in Binärzahlen um:

  • 25
  • 84
  • 255 (Tipp: Der maximale Farbwert pro RGB-Kanal!)
Hilfe zu Aufgabe 2
Suchen Sie die größte Zweierpotenz, die in die Zahl passt (128, 64, 32, 16, 8, 4, 2, 1), notieren Sie dort eine 1 und rechnen Sie stufenweise mit dem Rest weiter.
  • Fehlersuche: Ein Schüler wandelt die Dezimalzahl 42 in Binärcode um und erhält 101001. Prüfen Sie das Ergebnis durch Rückrechnung und korrigieren Sie den Fehler.
  • Mustererkennung: Betrachten Sie die folgenden Binärzahlen: 1, 11, 111, 1111.
    1. Wandeln Sie alle vier Zahlen in Dezimalzahlen um.
    2. Welcher Zusammenhang besteht zwischen der Anzahl der Einsen und der nächsthöheren Zweierpotenz?
Hilfe zu Aufgabe 3
Zu Teil 2: Addieren Sie gedanklich zu jedem Ihrer Ergebnisse 1 hinzu und vergleichen Sie den Wert mit den Zweierpotenzen (2, 4, 8, 16).
🎉 Ausgezeichnet – Alle Aufgaben abgeschlossen!

Sie haben alle Aufgaben bearbeitet und abgehakt. Vergleichen Sie Ihre Ergebnisse nun mit der Musterlösung.

Grundlagen der Programmierung

Marsrover auf dem Mars

Stellen wir uns vor, dass unser Mars-Rover nun sicher auf dem Mars gelandet ist (unten links). Leider ist er nicht so ganz korrekt bei der Marsstation (oben rechts) gelandet.
Die ESA muss eine Steuerung für den Rover übertragen, sodass dieser sicher an den Kratern vorbei zur Marsstation kommt. Der Praktikant hat einen ersten Vorschlag gebracht.

Programm des Praktikanten, um den Rover zur Station zu fahren

Stellen Sie Vermutungen darüber an, was die einzelnen Blöcke machen.

Hilfe 1n
Das Feld kann sich wie ein Koordinatenkreuz vorstellen. In der Mitte des Bildes ist (0, 0).
Hilfe 2
Die ersten drei Blöcke sind für das eigentliche Vorankommen des Rovers zur Station nicht nötig, welche Bedeutung haben sie aber für uns.

Beschreiben Sie so exakt wie möglich, wie der Weg des Rovers aussieht.

Hilfe 1
Konzentrieren Sie sich auf die letzten drei Blöcke, die sidn für die eigentlich Bewegung nötig.
Hilfe 2
Der Roboter blickt am Anfang nach oben, wenn er nun 290er Schritte gehen soll, wo landet er dann?

Vergleichen Sie Ihre Überlegungen mit dem konkreten Programm.

Anweisungen und Sequenzen

Wir werden im Folgenden die grafische Programmierumgebung Scratch nutzen, um die Grundlagen der Programmierung kennenzulernen.
Wie die Programmierumgebung Scratch aufgebaut ist, sehen Sie bereits unten in dem Schaubild. Die Blöcke (linke Spalte) werden in die Mitte gezogen (hier wird programmiert), wodurch dann die Figur (im Bild die Katze, bei uns der Marsrover) diese Aktionen ausführt.

Entwicklungsumgebung Scratch

Wir haben bereits zwei grundlegende Bausteine der Programmierung kennengelernt.
Zum Einen sind da die Anweisungen. Alle Blöcke, die unmittelbar eine direkte Aktion ausführen, werden Anweisungen genannt.

Beispiele für Anweisungen

Zum Anderen haben wir die Sequenz kennengelernt. Eine Sequenz ist eine Abfolge von Anweisungen.

Beispiele für eine Sequenz

Sowohl Anweisungen als auch Sequenzen werden als sogenannte Kontrollstrukturen bezeichnet, und wir finden sie in jeder Programmiersprache. Wir werden später noch weitere Kontrollstrukturen kennenlernen. Doch beginnen wir zunächst mit diesen beiden.

Aufgaben

Bearbeiten Sie die folgenden Aufgaben in Scratch. Nutzen Sie bei Bedarf die integrierten Hilfen.

Ihr Bearbeitungsfortschritt: 0%

Die Chefin ist mit der Programmierung des Praktikanten nicht zufrieden und möchte gerne, dass der Rover im Zick-Zack zur Station fährt, wie es auf dem folgenden Schaubild eingezeichnet ist.

[ Platzhalter für Bild: Zick-Zack-Kurs des Rovers ] Zick-Zack-Kurs
Geplanter Zick-Zack-Kurs zur Station

Starten Sie hierüber die Vorlage und implementieren Sie den Wunsch der Chefin ausschließlich mithilfe von Anweisungen in Scratch.

Hilfe 1
Sie benötigen für den gesamten Weg ausschließlich zwei verschiedene Befehlsblöcke, die Sie mehrfach hintereinander (als Sequenz) anordnen.
Hilfe 2
Denken Sie an die Bewegungs- und Steuerungsblöcke: Sie benötigen den Block zum Vorwärtsgehen bzw. Positionieren sowie den Block zum Drehen (z. B. gehe zu ... oder Schritte gehen in Kombination mit drehe dich um ... Grad).

Erklären Sie, wie der Computer bzw. Scratch die von Ihnen erstellte Liste an Anweisungen abarbeitet. In welcher Reihenfolge führt der Computer die einzelnen Blöcke aus?

Hilfe 1
Beobachten Sie, was passiert, wenn Sie das Programm in Scratch starten: Führt der Computer alle Befehle gleichzeitig aus oder nacheinander?
Hilfe 2
Denken Sie an den Begriff der Sequenz: Ein Computer arbeitet Programmcodes streng nacheinander (von oben nach unten) ab.

Betrachten Sie Ihre erstellte Sequenz aus Aufgabenteil a). Fällt Ihnen etwas an der Struktur Ihrer Implementierung der Zick-Zack-Bewegung auf?

Hilfe 1
Betrachten Sie den Code als Ganzes: Erkennen Sie eine bestimmte Systematik oder Regelmäßigkeit im Aufbau?
Hilfe 2
Gibt es bestimmte Anweisungen oder vollständige Teil-Sequenzen, die exakt so immer wiederholt werden müssen, um den Weg fortzuführen?
🎉 Ausgezeichnet – Alle Aufgaben abgeschlossen!

Sie haben alle Aufgaben bearbeitet und abgehakt. Vergleichen Sie Ihre Ergebnisse nun mit der Musterlösung.

Zählschleifen

Wir haben in den letzten Aufgaben bei der Zick-Zack-Bewegung gesehen, dass sich eine Teil-Sequenz eine bestimmte Anzahl oft wiederholt hat.
Nun ist es äußerst umständlich, diese Wiederholungen jedes Mal einzeln mit Anweisungen zu programmieren.
Zu diesem Zweck gibt es die Kontrollstruktur der Schleife bzw. Wiederholung und in diesem besonderen Fall die Zählschleife – es gibt nämlich verschiedene Schleifenarten.
Eine Schleife sorgt erst einmal dafür, dass eine Anweisung oder Sequenz wiederholt wird. Eine Zählschleife sorgt dafür, dass eine solche Sequenz oder Anweisung eine im Vorfeld festgelegte Anzahl von Malen wiederholt wird. In Scratch wird dafür der folgende Block genutzt:

Zählschleife – in diesem Fall wird etwas 10 Mal wiederholt.

Die anderen Schleifenarten werden wir im späteren Verlauf kennenlernen.

Aufgaben

Bearbeiten Sie die folgenden Aufgaben zum Einsatz von Zählschleifen in Scratch. Nutzen Sie bei Bedarf die integrierten Hilfen.

Ihr Bearbeitungsfortschritt: 0%
Aufgabe 1: Zick-Zack-Bewegung mit Zählschleife

Bearbeiten Sie die folgenden Aufgabe in Scratch. Nutzen Sie entweder Ihre vorherige Lösungen oder nutzen Sie diese Lösung.

Greifen Sie das Programm des Zick-Zack-Kurses wieder auf, bei dem Sie den Weg zur Station zuvor mühsam mit einzelnen Anweisungen hintereinander programmiert haben.
Verändern Sie Ihr Programm nun mithilfe einer Zählschleife.

Hilfe 1 (Muster erkennen)
Betrachten Sie Ihr bisheriges Programm ohne Schleife. Suchen Sie nach dem Block-Muster, das sich genau so immer wiederholt (z. B. Rechts drehen → Vorwärts gehen → Links drehen → Vorwärts gehen).
Hilfe 2 (Schleife einsetzen)
Ziehen Sie den Block wiederhole (x) mal um genau eine dieser wiederkehrenden Zacken-Abfolgen. Die Zahl x gibt an, wie viele Zick-Zack-Zacken der Rover fahren soll.

Vergleichen Sie Ihre ursprüngliche Lösung (nur mit Anweisungen) mit Ihrer neuen Schleifen-Lösung in Scratch.

  1. Wie viele einzelne Blöcke bzw. Zeilen Code hatten Sie vorher auf dem Bildschirm und wie viele Blöcke benötigt Ihre Lösung jetzt mit der Zählschleife?
  2. Erklären Sie in ein bis zwei Sätzen, welchen großen Vorteil die Zählschleife für die Lesbarkeit und die spätere Fehlerbehebung eines Programms bietet.
Hilfe zu Aufgabe 2
Überlegen Sie, was passieren würde, wenn der Mars-Rover plötzlich doppelt so viele Zacken fahren müsste: Wie viel Aufwand wäre das im alten Code im Vergleich zum Ändern einer einzigen Zahl in der Schleife?
Aufgabe 2: Systemcheck

Starten Sie für diese Aufgabe dieses Programm.

Der Mars-Rover soll einen Funktionstest seiner Scheinwerfer durchführen und in einer Schleife wiederholt blinken.
Implementieren Sie, dass der Marsrover die Scheinwerfer 10 Mal an und aus schaltet - nutzen Sie dafür den den Block setze Effekt ... auf ....

Hilfe 1 (Licht-Effekt)
Wählen Sie im Block setze Effekt [Helligkeit v] auf (...) den Effekt Helligkeit. Ein Wert von 100 lässt die Figur hell aufleuchten (Licht an), ein Wert von 0 setzt sie auf das normale Aussehen zurück (Licht aus).
Hilfe 2 (Pausen einbauen)
Vergessen Sie nicht, nach dem Ein- und Ausschalten jeweils einen Block warte (0.5) Sek. einzufügen. Ohne Pause schaltet der Computer das Licht so schnell um, dass das Auge das Blinken nicht wahrnehmen kann.

Der Rover soll die Umgebung überprüfen, indem er nacheinander ein quadratisches Testmuster abfährt – einmal im Uhrzeigersinn (rechtsherum) und einmal gegen den Uhrzeigersinn (linksherum).

Hilfe 1 (Ein Quadrat fahren)
Ein Quadrat besteht aus 4 gleich langen Seiten und vier 90°-Ecken. Verwenden Sie für ein Quadrat den Block wiederhole (4) mal mit den Anweisungen gehe (...) Schritte und einer 90°-Drehung.
Hilfe 2 (Richtungswechsel)
Für das erste Quadrat nutzen Sie den Drehblock nach links, für das zweite Quadrat den Drehblock nach rechts. Bauen Sie zwischen den beiden Schleifen eine kurze Pause ein, damit die Richtungsänderung deutlich sichtbar ist.
🎉 Ausgezeichnet – Alle Aufgaben abgeschlossen!

Sie haben alle Aufgaben bearbeitet und abgehakt. Vergleichen Sie Ihre Ergebnisse nun mit der Musterlösung.

Bedingte Anweisung

Bisher hat unser Mars-Rover seine Wege stur nach einem festen Muster abgearbeitet (Zählschleifen). Aber was passiert, wenn auf der geplanten Route plötzlich ein unvorhergesehenes Hindernis auftaucht? Ein stur programmierter Rover würde ungebremst gegen einen Felsen krachen. Er benötigt die Fähigkeit, selbstständig Entscheidungen zu treffen.

💡 Aus dem Alltag: Die Bedingung

Auch Sie treffen jeden Tag unzählige automatisierte Entscheidungen nach einem festen Schema:
Falls es regnet, dann spannen Sie den Regenschirm auf. Sonst lassen Sie ihn zu.

Damit unser Rover solche Entscheidungen treffen kann, benötigen wir eine neue Kontrollstruktur: die bedingte Anweisung.

Eine bedingte Anweisung überprüft immer eine bestimmte Bedingung (z. B. "Ist ein Hindernis im Weg?"). In Scratch erkennen Sie diese Bedingungen an ihrer eckigen, sechseckigen Form. Es gibt dabei zwei grundlegende Varianten:

1. Die einfache bedingte Anweisung

Falls ... dann
Die Anweisungen im Block werden nur ausgeführt, wenn die Bedingung erfüllt (wahr) ist. Ist sie falsch, passiert einfach gar nichts bzw. es wird nach der einfachen bedingten Anweisung weitergemacht.

2. Die Verzweigung

Falls ... dann ... sonst
Hier gibt es einen Plan B: Ist die Bedingung wahr, wird der erste Teil ausgeführt. Ist sie falsch, wird automatisch der sonst-Teil abgearbeitet.

Die Falls-Dann-Blöcke (bedingte Anweisungen) in Scratch.

Aufgaben

Erwecken Sie den Rover in drei Stufen zum Leben. Öffnen Sie dafür dieses neue Scratch-Projekt und bearbeiten Sie die folgenden Aufgaben.

Ihr Bearbeitungsfortschritt: 0%
Aufgabe 1: Manuelle Steuerung und Startposition

Zunächst möchten wir den Rover per Hand steuern können. Damit der Rover bei jedem Neustart des Programms nicht am Rand festhängt, benötigt er zuerst eine feste Startposition (Initialisierung).

Nutzen Sie zu Beginn Ihres Skripts den Block gehe zu x: ... y: ..., um den Rover beim Anklicken der grünen Flagge immer in der Mitte starten zu lassen.
Nutzen Sie danach eine Endlosschleife (wiederhole fortlaufend) mit mehreren einfachen Falls ... dann-Blöcken, um den Rover mit den Pfeiltasten steuern zu können.

Hilfe 1 (Startposition)
Die Bildschirmmitte in Scratch hat die Koordinaten X: 0 und Y: 0. Setzen Sie diesen Block ganz an den Anfang, noch bevor die Schleife beginnt.
Hilfe 2 (Die Sensor-Bedingung)
Suchen Sie bei den hellblauen Sensor-Blöcken nach Taste [Pfeil nach oben v] gedrückt? und ziehen Sie diese in das Feld des Falls-Dann-Blocks innerhalb Ihrer Schleife.

Verschieben Sie nun den Startpositions-Block (gehe zu x: 0 y: 0) testweise in die Endlosschleife hinein. Starten Sie das Programm und versuchen Sie, den Rover zu steuern.
Beschreiben Sie, was passiert und erklären Sie das Verhalten des Rovers aus Sicht des Computers.

Hilfe 1
Denken Sie daran, wie schnell ein Computer eine Schleife abarbeitet (viele Male pro Sekunde). Wenn der Befehl "Gehe zur Mitte" immer wieder ausgeführt wird, hat der Rover dann überhaupt Zeit, an einer anderen Stelle zu bleiben?
Aufgabe 2: Das Radar-Assistenzsystem

Ein Funksignal von der Erde zum Mars benötigt bis zu 22 Minuten. Wenn Sie auf der Erde den umherspringenden Felsen sehen und bremsen, ist der Rover schon längst hineingefahren. Wir benötigen ein Warnsystem an Bord!

Nutzen Sie weiterhin nur den einfachen Falls ... dann Block (ohne das "sonst").
Auftrag: Überprüfen Sie in Ihrer Steuerungsschleife fortlaufend die Entfernung zum Hindernis (Felsen). Falls der Abstand kleiner als 50 ist, soll der Rover das rote Alarm-Kostüm anziehen.
Fahren Sie nahe an den Krater heran und danach wieder weg. Beschreiben Sie das Problem, das nun auftritt.

Hilfe 1 (Vergleichs-Operatoren)
Damit Sie eine Zahl überprüfen können, benötigen Sie aus den grünen Operator-Blöcken den Kleiner-als-Block: [ ] < [ 50 ].
Hilfe 2 (Der Abstandssensor)
Ziehen Sie nun aus den hellblauen Sensor-Blöcken den runden Block Entfernung zu [Krater v] in die linke Seite Ihres grünen Operators.

Sie haben festgestellt, dass der Rover rot bleibt, auch wenn die Gefahr vorbei ist, da der Computer keinen Befehl hat, das Kostüm wieder zu ändern.
Auftrag: Tauschen Sie die einfache bedingte Anweisung nun gegen die Verzweigung Falls ... dann ... sonst aus. Programmieren Sie den Rover so, dass er im sicheren Bereich wieder grün leuchtet.

Aufgabe 3: Der autonome Autopilot (anspruchsvoll)

Wegen der Funkverzögerung nützt uns die Radar-Warnung auf der Erde immer noch nichts, um den Rover rechtzeitig per Hand zu stoppen, bevor der wild umherspringende Felsen ihn trifft. Wir müssen dem Rover beibringen, die manuelle Steuerung abzuschalten und völlig autonom auszuweichen!

Bauen Sie das Skript des Rovers um: Werfen Sie die Tasten-Steuerung heraus. Der Rover soll in der Endlosschleife nun von ganz alleine vorwärts fahren (z.B. 3 Schritte pro Durchlauf).
Auftrag: Falls er das Hindernis berührt (z. B. wird Rand berührt? oder bei Abstand < 20), soll er automatisch ein Stück zurückfahren (-20 Schritte), sich um 90 Grad drehen und seine Fahrt sicher fortsetzen.

Der Autopilot ist aktiv und der Fels soll alle 5 Sekunden an einem zufälligen Orten auftauchen.
Auftrag: Testen Sie Ihr Programm auf Herz und Nieren. Beobachten Sie, wie Ihr Autopilot reagiert, wenn der Fels durch Zufall direkt *auf* oder extrem nah vor dem Rover auftaucht. Schafft es Ihr Skript, den Rover rechtzeitig zurückzusetzen, oder müssen Sie die Ausweich-Schritte eventuell erhöhen, damit er nicht stecken bleibt?

🎉 Mission erfüllt – Autopilot ist online!

Sie haben den Rover erfolgreich von einer fehleranfälligen Handsteuerung zu einem autarken System weiterentwickelt. Vergleichen Sie Ihre Analysen und Programme nun mit der Musterlösung.

Sich Dinge merken

Bisher konnte unser Mars-Rover Befehle ausführen und auf Hindernisse reagieren. Aber ein echter Forschungsrover soll mehr tun, als nur auszuweichen: Er muss Daten sammeln und mit uns kommunizieren.

Dafür benötigen wir eine neue Funktion: Den Frage-Antwort-Dialog. In Scratch finden Sie diese Blöcke im hellblauen Bereich "Fühlen".

Eingabeblöcke in Scratch
Die Blöcke für die Benutzereingabe in Scratch.

Mit diesen Blöcken können Sie während des Programmlaufs Informationen eingeben.

Aufgaben

Bringen Sie dem Rover bei, sich Dinge zu merken. Öffnen Sie dafür ein neues, leeres Scratch-Projekt und bearbeiten Sie die folgenden Aufgaben.

Bearbeitungsfortschritt (Teil 1): 0%
Aufgabe 1: Das Problem des "Vergessens"

Nutzen Sie den Block frage [Wie heißt der Fahrer?] und warte, um vom Benutzer den Namen abzufragen.
Lassen Sie den Rover danach den eingegebenen Namen sagen. Nutzen Sie dafür den violetten Block sage [...] für 2 Sek. und ziehen Sie den hellblauen runden Antwort-Block in das Textfeld.

Erweitern Sie Ihr Programm: Der Rover soll zunächst nach dem Namen fragen.
Direkt danach soll er eine zweite Frage stellen: "Wie ist das heutige Datum?".
Lassen Sie den Rover am Ende des Skripts versuchen, beide Antworten (Name und Datum) hintereinander aufzusagen.
Auftrag: Führen Sie das Skript aus. Beschreiben Sie, was passiert und warum der Rover scheitert.

Hilfe 1 (Die Beobachtung)
Es gibt in Scratch nur einen einzigen Antwort-Block. Was passiert mit dem alten Inhalt, wenn Sie eine zweite Frage beantworten?

Variablen

Um das Problem aus Aufgabe 1b zu lösen, haben Ingenieure folgenden Programmentwurf entwickelt:

Eingabeblöcke in Scratch
Mehrere Benutzereingabe verwalten

Betrachten Sie den obenstehenden Programmentwurf und beantworten Sie für sich folgende Fragen:

  • Wie gelingt es diesem Skript, dass der Rover am Ende sowohl den Namen als auch das Datum weiß?
  • Welche Funktion erfüllen die orangenen Bausteine fahrername und datum?
💡 Infobox: So funktionieren Variablen

In der Informatik nennt man diese Notizbucheinträge Variablen. Eine Variable ist wie eine kleine, beschriftete Kiste im Speicher des Computers, in der genau ein Wert (eine Zahl, ein Wort oder ein Text) aufbewahrt werden kann.

  • Erstellen: In Scratch erstellen Sie Variablen in der orangen Kategorie "Variablen".
  • Benennung: Variablennamen sind immer kleingeschrieben und sollten den Zweck des gespeicherten Wertes verdeutlichen.
  • Wert zuweisen: Mit dem Block setze [Variable v] auf [...] legen Sie einen Wert in die Kiste. Wird ein neuer Wert hineingelegt, wird der alte überschrieben.
  • Wert verändern: Mit dem Block ändere [Variable v] um (1) können Sie den bisherigen Zahlenwert erhöhen oder verringern.
  • Wert auslesen: Der runde orange Baustein mit dem Namen der Variable vertritt den aktuell darin gespeicherten Wert. Sie können ihn in andere Blöcke (z. B. sage oder Bedingungen) einsetzen.

Aufgaben

Wenden Sie das Konzept der Variablen nun in komplexeren Rover-Szenarien an. Sie können dieses Projekt als Grundlage verwenden.

Bearbeitungsfortschritt (Teil 2): 0%

Der Rover soll bei der Landung nicht nur den Namen des Fahrers und das Datum erfassen, sondern auch das heutige Missionsziel (z. B. "Gesteinsanalyse" oder "Krater-Erkundung").

  1. Erstellen Sie in der Kategorie "Variablen" drei eigene Variablen: fahrername, datum und missionsziel.
  2. Erweitern Sie das Dialog-Muster selbstständig: Stellen Sie nacheinander alle drei Fragen. Achten Sie darauf, dass jede Eingabe sofort in der passenden Variable gesichert wird, bevor die nächste Frage gestellt wird.
  3. Lassen Sie den Rover am Ende einen vollständigen Statusbericht ausgeben, indem er alle drei gespeicherten Werte nacheinander aufruft.
Hilfe zum Ablauf:
Das Prinzip lautet immer: frage ... und wartesetze [Variable v] auf (Antwort). Dieser Zweischritt muss für alle drei Informationen nacheinander ausgeführt werden.

Bei Fahrten auf dem Mars verbraucht der Rover Energie. Verknüpfen Sie nun Variablen mit Schleifen und Verzweigungen:

  1. Erstellen Sie eine Variable namens akkustand. Setzen Sie diese ganz zu Beginn des Programms auf 100 (Initialisierung).
  2. Simulieren Sie eine Testfahrt mit einer Zählschleife: Lassen Sie den Rover in einer wiederhole (10) mal-Schleife jeweils 10 Schritte fahren.
  3. Verringern Sie bei jedem Schleifendurchlauf den Akkustand um 10: Nutzen Sie dafür den Block ändere [akkustand] um (-10).
  4. Bauen Sie innerhalb der Schleife eine bedingte Anweisung ein: falls < (akkustand) < (30) > dann soll der Rover für 1 Sekunde warnen: Achtung: Akku kritisch!.
Hilfe zu Schritt 3 & 4:
Um einen Wert zu verringern, tragen Sie beim Block ändere [akkustand] um [...] eine negative Zahl ein (z. B. -10). Die falls ... dann-Abfrage gehört direkt unter den Bewegungsblock in die Schleife.

Der Rover soll Gesteinsproben aufspüren und zählen:

  1. Erstellen Sie eine Variable probenzähler und setzen Sie diese beim Start auf 0.
  2. Programmieren Sie eine `wiederhole fortlaufend`-Schleife zur Steuerung:
    • Der Rover soll durch die Pfeiltasten gesteuert werden können.
    • falls < (Abstand von [Felsen]) < (80) > und die Leertaste gedrückt wird, soll sich der Probenzähler um 1 erhöhen.
  3. Erweitern Sie die Logik: Ergänzen Sie eine Prüfbedingung falls < (probenzähler) = (3) > dann, soll der Rover anhalten und melden: Missionsziel erreicht! 3 Proben gesammelt..
🎉 Mission erfüllt – Gedächtnis installiert!

Ihr Rover kann sich nun Daten merken, Berechnungen anstellen und seinen Zustand überwachen. Vergleichen Sie Ihre Programme mit den Musterlösungen.

Bedingte Schleife

Bisher haben Sie Zählschleifen (wiederhole (x) mal) genutzt, um Abläufe exakt abzuzählen. Auf dem Mars stehen Ingenieure jedoch oft vor dem Problem, dass sich Startbedingungen verändern und die genaue Anzahl von Schritten oder Ladezyklen im Voraus gar nicht bekannt ist.

Der Marsrover steht an einer Ladestation. Sein Ziel ist es, seinen Akku auf 100 % aufzuladen. Je nachdem, wie viel Restenergie der Akku noch hat, startet der Vorgang mit unterschiedlichen Werten (z. B. bei 50 %).

Betrachten Sie die beiden folgenden Programmentwürfe der Bodenstation:

Beschreibung des Bildes
Entwurf A (Zählschleife)
Beschreibung des Bildes
Entwurf B (Bedingte Schleife)

Beantworten Sie für sich folgende Fragen:

  1. Welchen Endwert erreicht die Variable akkustand bei Entwurf A? Warum führt eine feste Zählschleife hier zu einer gefährlichen Überladung?
  2. Wie reagiert Entwurf B, wenn der Rover mit 20 %, 50 % oder 80 % Restakku an die Ladestation fährt?
💡 Infobox: Die bedingte Schleife (`wiederhole bis <...>`)

Für dynamische Abläufe nutzen wir in Scratch den Baustein wiederhole bis <Bedingung> aus der Kategorie Steuerung.

  • Funktionsweise: Der Computer führt die Anweisungen im Bauch der Schleife so lange immer wieder aus, BIS das Ziel im Sechseck-Feld wahr wird.
  • Abbruchprüfung: Vor jedem Schleifendurchlauf prüft Scratch automatisch das Sechseck-Feld. Sobald die Bedingung erfüllt ist, bricht die Schleife ab und das Programm läuft darunter weiter.
  • Zielzustand definieren: In das Sechseck-Feld tragen Sie genau das Ereignis ein, bei dem gestoppt werden soll (z. B. akkustand > 99 oder Abstand < 50).

Aufgaben

Bringen Sie dem Rover in drei Stufen bei, dynamisch auf seine Umwelt zu reagieren. Öffnen Sie dafür dieses vorbereitete Scratch-Projekt und bearbeiten Sie die folgenden Aufgaben.

Ihr Bearbeitungsfortschritt: 0%
Aufgabe 1: Die smarte Ladestation

Zunächst programmieren Sie eine vollautomatische Solarladestation, die sich flexibel an jeden beliebigen Start-Akkustand anpasst.

1. Erstellen Sie eine Variable akkustand.
2. Nutzen Sie den Block frage [Start-Akkustand in % eingeben:] und warte und setzen Sie die Variable akkustand auf die Antwort.
3. Programmieren Sie die Schleife wiederhole bis < (akkustand) > (99) >: Erhöhen Sie den Akkustand darin jeweils um 10 mit einer Pause von 0.4 Sekunden.
4. Lassen Sie den Rover nach der Schleife melden: Akku vollständig geladen!.

Hilfe 1 (Die Schleifenbedingung)
Nutzen Sie den grünen Operator-Block [ ] > [ 99 ] und ziehen Sie die orange Variable akkustand auf die linke Seite. So stoppt der Ladevorgang sicher bei 100 %.

Testen Sie Ihr Skript: Geben Sie beim Start unterschiedliche Werte ein (z. B. 10 %, 65 % oder 90 %). Stoppt der Ladevorgang immer zuverlässig?
Zusatzauftrag: Wenn man mit 95 % startet, erhöht die Schleife den Akku um 10 auf 105 %. Bauen Sie nach der Schleife eine kurze falls < (akkustand) > (100) > dann-Abfrage ein, die den Wert sauber auf exakt 100 deckelt.

Hilfe 1 (Begrenzung einbauen)
Setzen Sie unter die Schleife den Block: falls < (akkustand) > (100) > dann: setze [akkustand v] auf (100). Dadurch wird der Anzeigewert perfekt korrigiert.
Aufgabe 2: Der adaptive Bremsassistent

Ein echter Rover fährt Hindernisse nicht starr an, sondern bremst sein Tempo dynamisch ab, je näher er dem Objekt kommt. Zudem signalisiert er seinen Status über Warnlampen.

1. Platzieren Sie eine Figur Felsen frei auf der Bühne.
2. Programmieren Sie eine Schleife wiederhole bis < (Abstand von [Felsen v]) < (40) >.
3. Lassen Sie den Rover darin gehe (5) Schritte ausführen.
4. Bauen Sie in die Schleife ein: falls < (Abstand von [Felsen v]) < (120) > dann soll das Kostüm zu Lampe_Gelb wechseln, sonst zu Lampe_Gruen.
5. Nach dem Schleifenende schaltet der Rover auf Lampe_Rot und meldet: Sicherheitsstopp absolviert!.

Hilfe 1 (Aufbau der Schleife)
Die Verzweigung falls ... sonst steht direkt unter dem Bewegungsblock gehe 5 Schritte innerhalb des Schleifenbauchs.

Ersetzen Sie die starren 5 Schritte aus Teil a durch eine dynamische Geschwindigkeitsberechnung!
Auftrag: Nutzen Sie den grünen Operatoren-Block / (Geteilt) und berechnen Sie die Schrittweite direkt aus dem Abstand: gehe ((Abstand von [Felsen v]) / (10)) Schritte.
Beobachten Sie das Fahrverhalten, wenn Sie den Felsen an ganz unterschiedlichen Stellen auf der Bühne platzieren.

Hilfe 1 (Formel einsetzen)
Ziehen Sie den hellblauen Wertblock Abstand von [Felsen v] in die linke Seite des grünen Geteilt-Blocks [ ] / [ 10 ]. Ziehen Sie diesen Gesamtblock anschließend in das Zahlenfeld von gehe [...] Schritte.
Aufgabe 3: Code-Analyse & System-Check (Entwürfe vergleichen)

Drei Entwicklerteams haben Algorithmen programmiert, die den Rover autonom fahren lassen sollen, bis er weniger als 60 Pixel vom Felsen entfernt ist. Doch zwei Teams haben schwere Logikfehler eingebaut!

Team Alpha:
Beschreibung des Bildes
Entwurf Team Alpha
Team Beta:
Beschreibung des Bildes
Entwurf Team Beta
Team Gamma:
Beschreibung des Bildes
Entwurf Team Gamma

Analysieren Sie die drei Entwürfe gedanklich (ohne den Computer zu nutzen):

  1. Team Alpha: Der Rover steht beim Start 200 Pixel weit entfernt. Warum fährt der Rover bei diesem Skript gar nicht erst los?
  2. Team Beta: Welches schwerwiegende Problem entsteht bei diesem Skript? (Tipp: Wo befindet sich der Bewegungsblock?)
  3. Team Gamma: Beschreiben Sie den genauen Ablauf bei Team Gamma. Bei welchem Abstand stoppt der Rover hier exakt und warum funktioniert dieses Skript als einziges einwandfrei?
Hilfe 1 (Spurensuche)
Denken Sie daran: wiederhole bis stoppt sofort, wenn die Bedingung WAHR ist. Ist 200 größer als 60? Wo findet die Bewegung statt?

Bauen Sie die Skripte der drei Teams (arbeitsteilig) in Scratch nach und testen Sie Ihre Vermutungen.
Synthese-Auftrag: Formulieren Sie eine Merkregel: Wie muss die Bedingung in einer Scratch-Schleife wiederhole bis <...> aufgebaut sein und wo müssen die Bewegungsbefehle stehen?

🎉 Mission erfüllt – Bedingte Schleifen gemeistert!

Sie haben gelernt, wie der Rover durch bedingte Schleifen flexibel auf dynamische Umweltreize reagiert. Vergleichen Sie Ihre Programme mit den Musterlösungen.

Datenstrukturen: Verwalten komplexer Messreihen mit Listen

Bisher haben Sie Variablen genutzt, um einzelne Werte (wie z. B. den aktuellen Akkustand oder die Geschwindigkeit) im Speicher des Computers abzulegen. Auf einer mehrtägigen Mars-Mission erfasst der Rover jedoch täglich neue Forschungsdaten.

Problematisierung: Das Variablen-Chaos

Der Rover soll die Bodentemperatur an 7 aufeinanderfolgenden Tagen aufzeichnen. Vergleichen Sie die beiden Lösungsansätze der Software-Teams:

Entwurf A (Einzelvariablen): Beschreibung des Bildes
Umsetzung mit Variablen
Entwurf B (Datenstruktur Liste):
Beschreibung des Bildes
Umsetzung mit einer Liste

Beantworten Sie für sich folgende Fragen:

  1. Stellen Sie sich vor, der Rover soll nicht 7 Tage, sondern 365 Tage lang messen. Was passiert mit dem Quellcode bei Entwurf A?
  2. Welchen Vorteil bietet Entwurf B, wenn sich die Anzahl der Messungen spontan ändert?

💡 Infobox: Die Liste als „Notizbuch mit Fächern“

Eine Liste ist eine Datenstruktur, die beliebig viele Werte unter einem einzigen Namen speichert.

  • Das mentale Modell (Das Regal): Stellen Sie sich eine Liste wie ein Regal vor. Auf dem Regal steht der Variablenname (z. B. temperaturarchiv). Jedes Fach im Regal hat eine feste Nummer – den sogenannten Index (1, 2, 3, ...). In jedem Fach liegt genau ein Messwert (Inhalt).
  • Index vs. Inhalt: Der Index gibt an, WO gesucht wird (z. B. Fach 3). Der Inhalt ist der Wert, der DARIN liegt (z. B. -12 °C).
  • Die wichtigsten Bausteine in Scratch:
    • füge [Wert] zu [Liste v] hinzu: Hängt einen neuen Wert unten an die Liste an.
    • Element (1) von [Liste v]: Liest den Inhalt aus dem angegebenen Fach aus.
    • Länge von [Liste v]: Verrät automatisch, wie viele Fächer aktuell belegt sind.
    • lösche alles aus [Liste v]: Leert die Liste beim Neustart des Programms.

Aufgaben: Das Messdaten-Archiv

Bringen Sie dem Rover in drei Stufen bei, komplexe Messreihen in einer Liste zu speichern und automatisch auszuwerten. Öffnen Sie dafür dieses vorbereitete Scratch-Projekt und bearbeiten Sie die folgenden Aufgaben.

Ihr Bearbeitungsfortschritt: 0%
Aufgabe 1: Das Notizbuch anlegen (Speichern & gezielt Abfragen)

Der Marsrover führt eine 5-tägige Messfahrt durch und zeichnet jeden Tag die Bodentemperatur auf. Wir speichern alle Werte in einer einzigen Liste.

1. Erstellen Sie unter Variablen eine neue Liste namens temperaturarchiv.
2. Setzen Sie an den Anfang Ihres Skripts den Baustein lösche alles aus [temperaturarchiv v] (Initialisierung).
3. Nutzen Sie eine Schleife wiederhole (5) mal:

  • Fragen Sie den Benutzer: frage [Temperatur in °C eingeben:] und warte.
  • Fügen Sie die Eingabe direkt mit füge (Antwort) zu [temperaturarchiv v] hinzu in die Liste ein.

Hilfe 1 (Listen-Blöcke)
Sobald Sie eine Liste erstellen, erscheinen unter der Kategorie Variablen (orange) neue, dunkler orangefarbene Listen-Blöcke. Den Block füge ... zu ... hinzu finden Sie dort.

Die Bodenstation möchte nun den Messwert eines ganz bestimmten Tages abfragen:
1. Stellen Sie nach der Befüllung die Frage: frage [Welchen Tag möchten Sie anzeigen? (1-5)] und warte.
2. Lassen Sie den Rover den Wert aus diesem Fach vorlesen! Nutzen Sie dafür: sage (Element (Antwort) von [temperaturarchiv v]) für (2) Sek..

Hilfe 1 (Der Index-Zugriff)
Ziehen Sie den hellblauen Antwort-Block in das Zahlenfeld des runden Listenblocks Element (1) von [temperaturarchiv v]. Ziehen Sie dieses Konstrukt anschließend in den sage-Block.
Aufgabe 2: Automatische Auswertung (Summe & Durchschnitt)

Um die durchschnittliche Mars-Temperatur zu berechnen, müssen wir alle Werte der Liste nacheinander durchlaufen und aufsummieren (Traversierung).

Erstellen Sie eine Hilfsvariable index.
Setzen Sie index vor der Auswertung auf 1 (das erste Fach im Regal).
Nutzen Sie eine Schleife wiederhole (Länge von [temperaturarchiv v]) mal:
In der Schleife soll der Rover jeweils das aktuelle Element aufrufen (sage (Element (index) von [temperaturarchiv v]) für (1) Sek.) und danach den index um 1 erhöhen, um zum nächsten Fach zu wandern.

Hilfe 1 (Index weiterzählen)
Am Ende des Schleifenbauchs muss der Block ändere [index v] um (1) stehen. Vergisst man diesen Schritt, liest der Rover ewig nur das 1. Fach aus!

Erweitern Sie Ihr Durchlauf-Skript um die Berechnung des Mittelwerts:
1. Erstellen Sie die Variablen gesamtsumme (Startwert 0) und durchschnitt.
2. Addieren Sie in der Schleife bei jedem Schritt den aktuellen Wert zur Summe hinzu: ändere [gesamtsumme v] um (Element (index) von [temperaturarchiv v]).
3. Berechnen Sie nach der Schleife den Durchschnitt: setze [durchschnitt v] auf ((gesamtsumme) / (Länge von [temperaturarchiv v])).
4. Der Rover meldet am Ende den berechneten Durchschnittswert.

Hilfe 1 (Akkumulation)
Der Block ändere [gesamtsumme v] um [...] nimmt den alten Wert der Summe und packt den Wert aus dem aktuellen Fach dazu.
Aufgabe 3: Der Analyse-Algorithmus (Höchstwert finden & Code-Analyse)

Der Rover soll nun selbstständig herausfinden, was die höchste Temperatur in der gesamten Messreihe war (Maximumsuche).

1. Erstellen Sie eine Variable maxtemperatur.
2. Setzen Sie vor der Schleife index auf 1 und nehmen Sie testweise an, das 1. Fach sei bereits das Maximum: setze [maxtemperatur v] auf (Element (1) von [temperaturarchiv v]).
3. Durchlaufen Sie die Liste mit einer Schleife:
    falls < (Element (index) von [temperaturarchiv v]) > (maxtemperatur) > dann:
        Aktualisieren Sie das Maximum: setze [maxtemperatur v] auf (Element (index) von [temperaturarchiv v]).
    Vergessen Sie nicht: ändere [index v] um (1).
4. Der Rover meldet am Ende: Die höchste Temperatur betrug ... °C!.

Hilfe 1 (Die Vergleichslogik)
In der Verzweigung vergleicht der Computer das Fach, vor dem der Rover gerade steht, mit seinem bisherigen Rekord (maxtemperatur). Ist der neue Wert größer, wird der alte Rekord überschrieben!

Ein Nachwuchs-Ingenieur hat folgenden Skriptentwurf für die Maximumsuche eingereicht:

Fehlerhafter Entwurf:

setze [maxtemperatur v] auf (0)       // Initialisierungsfehler!
setze [index v] auf (1)
wiederhole (Länge von [temperaturarchiv v]) mal:
    falls < (Element (index) von [temperaturarchiv v]) > (maxtemperatur) > dann:
        setze [maxtemperatur v] auf (Element (index) von [temperaturarchiv v])
    ändere [index v] um (1)

Arbeitsauftrag:

  1. Stellen Sie sich vor, auf dem Mars herrschen durchgehend Minustemperaturen. Die Liste enthält die Werte: -15, -8, -22, -5, -12.
  2. Welchen Wert gibt der fehlerhafte Entwurf am Ende als maxtemperatur aus? Erklären Sie, warum das Ergebnis falsch ist.
  3. Warum ist es viel sicherer, maxtemperatur zu Beginn auf den ersten Wert der Liste (Element (1) von Liste) zu setzen, statt auf 0?
🎉 Mission erfüllt – Datenstruktur Liste gemeistert!

Sie haben gelernt, wie man Datenreihen in Listen speichert, durchläuft und algorithmisch auswertet. Vergleichen Sie Ihre Programme mit den Musterlösungen.

Glossar