CDaten & InformationDaten und Informationen

Lernziele

  • Sie können erklären, wie aus Rohdaten Informationen entstehen.
  • Sie können einen Semantikfehler von einem Syntaxfehler unterscheiden.

Dieser Block dreht sich um die Frage: Wie repräsentieren wir die Welt mit 0 und 1, damit wir die Rechenleistung von Computern nutzen können?

Dazu folgendes Beispiel: Überlegen Sie sich, was Sie hier sehen.

Pasted image 20231105144113

Man muss wissen, wie man diese Rohdaten interpretieren soll - sonst kann man daraus keine Information ziehen.

Lösung

Die Rohdaten, die Sie hier sehen, haben keine Bedeutung. Es ist einfach ein Rechteck oder eine gerade Linie, und eine gekrümmte Linie.

Information wird daraus erst, wenn Sie wissen, wie Sie die Daten interpretieren müssen. Ist es eine Zahl oder ein Buchstabe? Je nachdem ist die Bedeutung ganz anders!

Pasted image 20231105145319

Simple Datentypen und Dateiformate

Schauen wir uns damit drei Grundbegriffe an:

  • Rohdaten = Letztlich 0 und 1
  • Kodierung = Interpretationsregeln - was bedeuten diese Nullen und Einsen in diesem Fall?
  • Information = Für Menschen verständliche

Rohdaten ohne Kodierung sind bedeutungslose Nullen und Einsen.

svg alt tag

Simple Datentypen

In den allermeisten Programmiersprachen gibt es eine Reihe von simplen Datentypen.

  • Ganzzahlen heissen Integer.
  • Fliesskommazahlen sind Floats.
  • Zeichenketten sind Strings.
  • Wahr oder unwahr sind Bools.

Alle diese Datentypen werden im Speicher anders mit Nullen und Einsen repräsentiert.

Loading...
Run

Wieso gibt es zwei verschiedene Zahlentypen - Integer und Floats? Weil sie unterschiedlich gespeichert werden.

  • Integer funktionieren so, wie wir das mit den Lämpchen beim Addierer auch getan haben. (Wobei negative Zahlen eine kleine Komplikation sind.)
  • Floats speichert zwei Zahlen ähnlich der wissenschaftlichen Notation.

Ein Beispiel, wie Pi gespeichert werden könnte

    0 10000010 11001001000011111100111
    ^     ^               ^
    |     |               |
    |     |               +--- significand = 0.7853975...
    |     |
    |     +------------------- exponent = 2 (130 - 128)
    |
    +------------------------- sign = 0 (positive)

    value= -1(sign) * 2(exponent) * (significand)
    value= -10 * 22 * 0.7853975...
    value= 3.14159...

Datentypen in Python

Wieso musste Sie sich noch (fast) nie um Datentypen kümmern? Weil Python automatisch den Datentyp einer Variabel festlegt und dynamisch anpasst.

Das merken Sie z.B. bei einer Divison von zwei Ganzzahlen. Python kreiert bei Divisionen von zwei Ganzzahlen automatisch einen Float (Fliesskommazahl), auch wenn die Divison eigentlich restlos aufgehen würde - wie bei der Variable ergebnis in diesem Beispiel.

Loading...
Run

Dateiendungen

Wenn Sie Informationen abspeichern, müssen Sie also auch abspeichern, wie diese Daten interpretiert werden müssen. Sie kennen das vielleicht von Dateiendungen (oder “Dateierweiterungen”, oder “Suffixe”) auf Ihrem Computer.

Wieso weiss der Computer, dass eine Datei ein Word-Dokument ist? Weil die Datei mit “.docx” endet, also z.B. “abschlussarbeit.docx”. Hätten die Datei keine Dateiendung, wären sie schön aufgeschmissen!

Bei mir sehe ich keine Dateiendungen!

Wenn Sie keine Dateiendungen sehen, aber Ihr Computer die Dateien trotzdem richtig öffnet, heisst das, die Endungen sind da, aber Ihr Computer blendet sie aus (weil Sie ja am Icon ansehen, was für eine Datei es ist).

Hier lesen Sie, wie Sie auf Windows und OSX die Dateiendungen anzeigen können.

Man spricht hier vom Dateiformat, das festlegt, wie die Daten in der Datei interpretiert werden müssen. Die Dateiendung signalisiert dem Computer das Dateiformat.

Versuchen wir das mal. Laden Sie sich diese Datei mit einer unbekannten Dateiendung herunter.

Ihr Betriebssystem versucht Ihnen eventuell zu helfen und macht daraus eine “.zip”-Datei, doch das stimmt nicht!

Öffnen Sie diese im Texteditor. Sie werden so etwas sehen:

Pasted image 20231105164519

Versuchen Sie mal herauszufinden, wie Sie die Informationen in der Datei anzeigen können!

Lösung

Es ist eine Word-Datei. Öffnen Sie sie direkt in Word oder fügen Sie die Dateiendung “.docx” am Ende des Dateinamens hinzu.

Semantikfehler

Dass Datentypen in Python trotz automatischer Typisierung existieren und wichtig sind, zeigt folgendes Problem. Spielen Sie mit den Werten der Variabeln und versuchen Sie, eine gute Erklärung für die Ergebnisse zu finden!

Loading...
Run
  • Im ersten Beispiel sind zahl1 und zahl2 als Ganzzahlen (Integers) definiert, weil sie ohne Anführungszeichen geschrieben sind. Ein ”+” zwischen zwei Ganzzahlen bedeutet —> eine mathematische Addition.
  • Im zweiten Beispiel sind zahl1 und zahl2 als Zeichenketten (Strings) definiert wegen der Anführungszeichen. Ein ”+” zwischen zwei Zeichenketten bedeutet —> die Zeichen aneinanderhängen.

Das nennt man einen Semantikfehler, den Sie von einem Syntaxfehler unterscheiden können müssen.

Syntax und Syntaxfehler

Die Syntax einer Programmiersprache beschreibt die Regeln für die korrekte Schreibweise von Code.

Ein Syntaxfehler führen dazu, dass der Code nicht ausgeführt werden kann.

Ein Beispiel:

Loading...
Run

👆 Führen Sie den Code aus und beachten Sie die Fehlermeldung.

  • Das erste Anführungszeichen läutet eine Zeichenkette ein, aber das schliessende Anführungszeichen fehlt.
  • Das Code wirft einen Fehler auf.

Semantik und Semantikfehler

Die Semantik beschreibt die Bedeutung eines korrekt geschriebenen Programms oder Ausdrucks. Sie legt fest, was der Code tut und wie er interpretiert wird.

Semantikfehler lassen das Programm laufen, aber es tut nicht das, was eigentlich beabsichtigt war.

Ein zusätzliches Beispiel:

Loading...
Run
  • Der Code läuft ohne Syntaxfehler.
  • input() erzeugt immer einen String, auch wenn die User Zahlen eingeben.
  • * bedeutet bei Strings: Wiederholung, nicht Multiplikation!
  • Beispiel: Wenn die User 5 eingiben, gibt der Code 555 aus, nicht 15.

Kontrollfragen

Loading...

Frage 1: Datentypen in Python

Welche der folgenden Aussagen zu Datentypen in Python sind korrekt?

Python erkennt den Datentyp einer Variablen automatisch.

In Python müssen Variablentypen explizit angegeben werden.

Eine Variable kann in Python ihren Datentyp dynamisch ändern, während das Programm ausgeführt wird.

Frage 2: Semantikfehler

Warum ist folgender Code ein Semantikfehler?

eingabe = input("Geben Sie eine Zahl ein:")
ergebnis = 3 * eingabe
print("Das Produkt ist", ergebnis)

Weil input() einen String liefert und * dann die Zeichenkette wiederholt.

Weil die User eine falsche Zahl eingeben könnten.

Frage 3: Dateiformate und Endungen

Warum sind Dateiendungen wichtig?

Sie zeigen an, wo die Datei auf der Festplatte gespeichert ist.

Sie signalisieren, wie (z.B. mit welchem Programm) die Rohdaten interpretiert werden können.

Sie werden beim Programmieren verwendet.