Kapitel 2: Python: Ausdrücke und Typen. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2016/2017. Inhaltsverzeichnis 1

Ähnliche Dokumente
Kapitel 2: Python: Ausdrücke und Typen. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2018/2018. Inhaltsverzeichnis 1

Abschnitt 2: Daten und Algorithmen

Informatik I: Einführung in die Programmierung 3. Werte, Typen, Variablen und Ausdrücke

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Datentypen und Operatoren Ganzzahlige Numerische Datentypen Logischer Datentyp

Vorkurs Informatik WiSe 16/17

Vorkurs Informatik WiSe 17/18

Java I Vorlesung Imperatives Programmieren

Informatik I: Einführung in die Programmierung

Teil II. Datentypen. T. Neckel Einführung in die wissenschaftliche Programmierung IN8008 Wintersemester 2017/

Informatik I Information & Daten Repräsentation von Daten

Informatik Vorkurs - Vorlesung 2

Einführung in die Programmierung

2.5 Primitive Datentypen

Hello World! Eine Einführung in das Programmieren Variablen

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

Variablen. CoMa-Übung VIII TU Berlin. CoMa-Übung VIII (TU Berlin) Variablen / 15

Semantik von Ausdrücken

Schwerpunkte. 8. Ausdrücke, Operatoren (einfache Typen) Beispiel: Schaltjahr Test. Einführendes Beispiel: Grundprobleme

Operatoren in C/C++ und Java:

Programmieren in Python

Kapitel 05. Datentypen. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Ausdrücke der Programmiersprache Java

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 12/13. Kapitel 3. Grunddatentypen, Ausdrücke und Variable

Kapitel 2: Ausdrücke. 1. Sorten und abstrakte Datentypen. 2. Ausdrücke 2.1 Syntax 2.2 Semantik 2.3 Ausdrücke in Java. 3. Funktionale Algorithmen

float: Fließkommazahl nach IEEE 754 Standard mit 32 bit

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Informatik für Schüler, Foliensatz 2 Ausdrücke, Variablen, Datentypen, Ein- und Ausgabe

Algorithmen & Programmierung. Ausdrücke & Operatoren (1)

Kapitel 3. Grunddatentypen, Ausdrücke und Variable

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Intensivübung zu Algorithmen und Datenstrukturen

2.1 Fundamentale Typen

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

Daten und Algorithmen

Abschnitt 5: Grundlagen der funktionalen und imperativen Programmierung

Programmierkurs C++ Variablen und Datentypen

Übungen zur Vorlesung Wissenschaftliches Rechnen I

4. Zahlendarstellungen

Python Intro. Vorsemesterkurs Informatik Praktischer Teil WS2012/13. 2.Oktober Vorkurs Informatik - WS 2012/13

Ganze Zahlen. Die Typen int, unsigned int; Auswertung arithmetischer Ausdrücke, arithmetische Operatoren

Tag 3 Repetitorium Informatik (Java)

Einheit Datentypen in der Programmiersprache C Schwerpunkt: Elementare (arithmetische) Datentypen

Programmierung WS12/13 Lösung - Übung 1 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder

Abschnitt 5: Grundlagen der funktionalen Programmierung

Abschnitt 11: Korrektheit von imperativen Programmen

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen

WS2017/ Oktober 2017

Grundlagen der Programmierung - Datenstrukturen

Operatoren und Ausdrücke

Grundlagen der Programmierung

Modellierung und Programmierung 1

Programmierkurs Python I

JAVA-Datentypen und deren Wertebereich

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

Problem: Keine Integers in JavaCard. ToDo: Rechnen mit Bytes und Shorts

II. Grundlagen der Programmierung

Zwischenklausur Informatik, WS 2016/17. Lösungen zu den Aufgaben

C-Programmierung: Ausdrücke und Operatoren#Division.2F

Python Intro I. Vorsemesterkurs Informatik Praktischer Teil WS 2013/14. 1.Oktober Vorkurs Informatik - WS 2013/14

Grundlagen der Programmierung

Programmiervorkurs Einführung in Java Tag 1

Kapitel 15: Von dynamischen zu statischen Typen. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2016/2017. Inhaltsverzeichnis 1

3 Syntax von Programmiersprachen

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r

1. Referenzdatentypen: Felder und Strings

Zahlendarstellungen und Rechnerarithmetik*

Übung Praktische Informatik I

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2

EIGENSCHAFTEN VON SPRACHEN

Software Entwicklung 1

Kapitel 4. Programmierung. Skript zur Vorlesung Einführung in die Programmierung. im Wintersemester 2012/13 Ludwig-Maximilians-Universität München

5.3 Auswertung von Ausdrücken

Kapitel 5: Daten und Operationen

Quick-Start Informatik Programmieren in Python Teil 1

Einstieg in die Informatik mit Java

Kapitel 15: Von dynamischen zu statischen Typen. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2018/2018. Inhaltsverzeichnis 1

Einführung in die Programmierung Wintersemester 2008/09

2.2 Syntax, Semantik und Simulation

1 Bedingungen und der Typ bool. Informatik I: Einführung in die Programmierung 5. Bedingungen, bedingte Ausführung und Schleifen. Vergleichsoperatoren

Projekt 3 Variablen und Operatoren

Einführung in die Programmierung

Algorithmen und Datenstrukturen (für ET/IT)

Inhaltsangabe 3.1 Zahlensysteme und Darstellung natürlicher Zahlen Darstellung ganzer Zahlen

Einführung in die Informatik. Processing Numbers

Einführung in die Informatik. Processing Numbers. Motivation. Primitive Datentypen. Operatoren versus Methoden

Database Systems Group Prof. Dr. Peer Kröger. Übung 00. Einführung in die Programmierung WS 2016/17

WS2018/ Oktober 2018

Übungsblatt 1. Java Vorkurs (WS 2017)

4. Zahlendarstellungen

Einstieg in die Informatik mit Java

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy

Kapitel 3: Variablen. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2016/2017. Inhaltsverzeichnis 1. Abbildungsverzeichnis 2

Programmieren in Java

Transkript:

Kapitel 2: Python: Ausdrücke und Typen Grundlagen der Programmierung 1 Holger Karl Wintersemester 2016/2017 Inhaltsverzeichnis Inhaltsverzeichnis 1 Abbildungsverzeichnis 2 Liste von Definitionen u.ä. 2 2.1 Überblick............................... 3 2.2 Python interaktiv.......................... 3 2.3 Zahlen................................ 4 2.4 Ausdrücke.............................. 6 2.5 Typen................................. 8 2.6 Typen in Programmiersprachen.................. 14 1

2.7 Zusammenfassung......................... 15 Abbildungsverzeichnis 2.1 Read-Evaluate-Print-Schleife................... 4 2.2 Syntax-Fehler............................ 5 Liste von Definitionen u.ä. 2.1 Definition (Interpreter)...................... 3 2.2 Definition (Arithmetischer Ausdruck).............. 7 2.3 Definition (Semantik von + bei Zeichenketten)......... 8 2.4 Definition (Datentyp)....................... 9 2.1 Beispiel (Datentyp: Ganze Zahlen)................ 9 2.2 Beispiel (Datentyp: Reelle Zahlen)................ 9 2.3 Beispiel (Datentyp: str)...................... 10 2.4 Beispiel (Datentyp: bool)..................... 10 2.5 Beispiel (Datentyp: Ganze Zahlen (ergänzt))........... 11 2.1 Achtung (Semantik von Operatoren ist typabhängig)...... 13 2.5 Definition (Typisierte Programmiersprache)........... 14 2.6 Definition (Schwach typisierte Programmiersprache)...... 14 2.7 Definition (Stark typisierte Programmiersprache)........ 15 2

2.1. Überblick 3 2.1 Überblick 2.1.1 Dieses Kapitel Erste Schritte mit Python Interaktive Nutzung Grundkonzepte: Zahlen, Ausdrücke,... Fehler 2.2 Python interaktiv 2.2.1 Interaktiv? Interaktive Software: Eingabe während der Ausführung entgegennehmen und verarbeiten Interaktive Programmierung? Die Sprache wird ausgeführt? Genauer: Ein Interpreter Definition 2.1 (Interpreter). Ein Interpreter ist ein Programm, das Programme (oder Programmfragmente) entgegennimmt und ausführt. Die Ergebnisse der Ausführung werden unmittelbar ausgegeben. Beispiele für Interpreter Beispiele für Interpreter gibt es viele, wenn man den Begriff des eingegebenen Programms etwas weiter fasst. Tabellenkalkulationen sind typische Beispiele: Man gibt ein Programm ein, das aus Formeln besteht. Die Berechnungsergebnisse werden sofort angezeigt. Fasst man den Begriff noch offener, dann ist auch eine Textverarbeitung (wie etwa OpenOffice oder Word) ein Interpreter. 2.2.2 Python als Interpreter Graue Box erwartet Eingaben: In Result wird darunter erscheinen: Out Mit # werden Kommentare markiert

4 Liste von Definitionen u.ä. 1 # Ihre Anweisungen? 2.2.3 Read-Evaluate-Print (REP) Verhalten des Interpreters: Warte auf Eingabe, lies sie ein (read) Werte die Eingabe aus, berechne ein Ergebnis (evaluate) Gib das Ergebnis aus (print) Beginne wieder von vorne (Schleife, loop) Abbildung 2.1: Read-Evaluate-Print-Schleife Abbildung 2.1 zeigt die Read-Evaluate-Print-Schleife eines Interpreters. Beachten Sie die Analogie zu einem Maschinenmodell: Ein Interpreter ist in gewissem Sinne eine (sehr abstrakte) Form einer Maschine. 2.3 Zahlen 2.3.1 Eingaben? Zahlen 1 # Zahlen? Gültige Zahlen (Version 1) Jede Ziffer ist eine Zahl: 0, 1,..., 9 Jede Folge von Ziffern ist eine Zahl Aber nicht mit einer Null beginnen Eine Zahl darf einen Dezimalpunkt. enthalten Eine Zahl darf mit einem Vorzeichen + oder - beginnen

2.3. Zahlen 5 2.3.2 Ungültige Zahlen Mehrere Dezimalpunkte 1 234.3451.213 Fehlermeldung SyntaxError: Eine Regel der Sprache wurde verletzt Abbildung 2.2: Syntax-Fehler 2.3.3 Ungültige Zahlen Führende Null 1 0464 2.3.4 Ungültige Zahlen Mehrere Vorzeichen 1 1+2+3 Ungültig? Nein... aber unerwartet? Text wie 1+2+3 wird nicht als Zahl interpretiert Sondern als arithmetischer Ausdruck Wert wird ausgerechnet 2.4 Ausdrücke

6 Liste von Definitionen u.ä. 2.4.1 Arithmetischer Ausdruck Syntax Jede Zahl ist ein arithmetischer Ausdruck Verbindet man zwei arithmetische Ausdrücke durch +, -, * oder /, so entsteht ein arithmetischer Ausdruck Setzt man um einen arithmetischen Ausdruck ein Klammerpaar (... ), so entsteht ein arithmetischer Ausdruck Beispiel 1 (5*3)+5 2.4.2 Arithmetischer Ausdruck Syntax Was ist dann ((627)(223++-+))? Definition vorherige Folie: Keine Aussage Was fehlt? Und nur das sind arithmetische Ausdrücke Typische rekursive Definition Details: VL Modellierung 2.4.3 Arithmetischer Ausdruck Semantik? Bis jetzt: Nur Syntax, aber keine Bedeutung der Ausdrücke Was ist der Wert eines Ausdrucks? Beispiel: Ist 5 + 2 3 = 21? Oder 5 + 2 3 = 11? 1 5+2*3 2.4.4 Arithmetischer Ausdruck Semantik Klar für Zahlen: Der Wert einer Zahl ist die Zahl Klar für binäre Ausdrücke Sind a 1 und a 2 arithmetische Ausdrücke und besteht der arithmetische Ausdruck a aus a 1 + a 2, so ist der Wert von a die Summe der Werte von a 1 und a 2.

2.4. Ausdrücke 7 2.4.5 Eindeutigkeit? Und analog für -, *, / Ist 5 + 2 3 ein binärer Ausdruck? Ja, mit zwei möglichen Interpretationen * Einerseits: a 1 = 5 * Andererseits: a 1 = 5 + 2 Problem: tertiäre Ausdrücke a 1 a 2 a 3 Vorrangregeln: Punkt vor Strich * Also: 5 + (2 3) Links-nach-rechts: Bei gleichem Vorrang, von links lesen Formal durch Vorrangregeln festgelegt Details: Kompliziert; später 2.4.6 Arithmetischer Ausdruck Definition Definition 2.2 (Arithmetischer Ausdruck). Arithmetische Ausdrücke verknüpfen Zahlen und arithmetische Ausdrücke zu neuen arithmetischen Ausdrücken. Dazu legt eine Programmiersprache syntaktisch Verknüpfungen fest und beschreibt semantisch den Wert eines solchen verknüpften Ausdrucks. Verknüpfungen werden häufig durch spezielle Zeichen wie +, * u.ä. angegeben. Diese Zeichen heißen Operatoren. 2.4.7 Nur Zahlen? Text? Zahlen sind toll, aber was ist mit Text? Text direkt? 1 Hallo Text mit Anführungszeichen 1 "Hallo" 1 Hallo 2.4.8 Syntaxregel: Text als Zeichenkette Text wird durch eine Kette von einzelnen Zeichen, kurz Zeichenkette, dargestellt

8 Liste von Definitionen u.ä. Zeichenkette muss in Anführungszeichen eingeschlossen sein 2.4.9 Ausdrücke mit Zeichenketten? Zahlen kann man addieren - was ist mit Zeichenketten? Erwartung? 1 "Hallo" + " GP1" Definition 2.3 (Semantik von + bei Zeichenketten). Sind t 1 und t 1 Zeichenketten, so ist t 1 +t 2 eine Zeichenkette. Der Wert von t 1 +t 2 ist die Zeichenkette die entsteht, indem an t 1 unmittelbar t 2 angehängt wird. 2.4.10 Andere Verknüpfungen für Zeichenketten Subtraktion? 1 "Hallo" - " GP1" Multiplikation? 1 "Hallo" * " GP1" Division? 1 "Hallo" / " GP1" Nein, nur Addition! Keine sinnvolle Semantik, also Fehler 2.5 Typen 2.5.1 Fehlermeldungen: TypeError Bei den sinnlosen Kombinationen gab es die Fehlermeldung: TypeError: unsupported operand type(s) TypeError: can t multiply sequence by non-int

2.5. Typen 9 Type? 2.5.2 Datentypen Was könnte ein Typ bedeuten? Die Fehlermeldung bei Multiplikation klingt interessant Offenbar sind Zahlen und Zeichenketten ja etwas unterschiedliches Unterschiedliche Werte, unterschiedliche Verknüpfungen erlaubt, unterschiedliche Interpretation (+ bei Zahlen vs. bei Zeichenketten) Beobachtung formalisiert in der Vorstellung eines Datentyps Definition 2.4 (Datentyp). Ein Datentyp oder kurz Typ legt eine Menge möglicher Werte fest. Literale sind die konkreten Notationen möglicher Werte. Zusätzlich legt ein Datentyp erlaubte Verknüpfungen fest. Er erklärt sowohl die Syntax als auch die Semantik dieser Verknüpfungen. 2.5.3 Datentyp: Ganze Zahlen Beispiel 2.1 (Datentyp: Ganze Zahlen). Ganze Zahlen haben den Wertebereich { -,..., -3, -2, -1, 0, 1, 2, 3,...+ }. Die Verknüpfungen +, -, * sind nach üblichen Rechenregeln erklärt. Die Verknüpfung / ist als ganzzahlige Division erklärt. 2.5.4 Literale für ganze Zahlen Üblicherweise bestehen Literale für ganze Zahlen aus arabischen Ziffern: 0, 1, 2,..., 4711,... Denkbar wäre auch, römische Zahlen zu benutzen: I, II, III, IV,... 2.5.5 Datentyp: Reelle Zahlen Beispiel 2.2 (Datentyp: Reelle Zahlen). Reelle Zahlen sind die rationalen, algebraischen und transzendenten Zahlen. Die arithmetischen Verknüpfungen sind wie üblich erklärt. 2.5.6 Datentypen: Zahlen in Rechnern Problem: Die gerade definierten Datentypen können in einem realen Rechner nicht dargestellt werden Jeder Rechner ist endlich

10 Liste von Definitionen u.ä. Kann keine unendlich großen Zahlen speichern Endliche Ausschnitte Datentypen in vielen (nicht allen) Programmiersprachen sind immer nur endliche Ausschnitte aus entsprechenden, konzeptionellen Datentypen. Oft ist die Unterscheidung egal Aber manchmal wichtig: Endliche Präzision, endliche Werte Verletzung von Rechenregeln Beispiel: Assoziativitätsgesetz gilt nicht mehr! 2.5.7 Zahldarstellung Darstellung von numerischen Datentypen in Rechnern nicht trivial Vorzeichen? Genauigkeit? Platzbedarf?...? Details: Vorlesung Grundlagen technische Informatik 2.5.8 Datentyp: str Beispiel 2.3 (Datentyp: str). Strings (kurz: str) sind Aneinandereihungen einzelner Zeichen; sie formalisieren Zeichenketten. Die leere Reihe ist ebenfalls ein String. Zeichen sind durch eine Aufzählung definiert (a, b, c,...). Zwei Strings können durch Addition miteinander verknüpft werden. 2.5.9 Datentyp: bool Beispiel 2.4 (Datentyp: bool). Der Datentyp bool kennt nur die beiden Werte wahr und falsch, notiert als Literale True bzw. False. Zwei Werte dieses Types können mit and, or,!= verknüpft werden; dies liefert einen Wert vom Typ bool. Auf einen Wert bool kann not angewendet werden. Die Semantik dieser Verknüpfungen ist in den folgenden Tabellen definiert.

2.5. Typen 11 2.5.10 Datentyp: bool Semantik der Verknüpfungen Verknüpfung: and b 1 b 2 b 1 and b 2 False False False False True False True False False True True True Siehe auch Vorlesung Modellierung. 2.5.11 Vergleiche zwischen Werte Viele Datentypen erlauben Vergleiche zwischen Werten Meist: Gleichheit ==, Ungleichheit!= Oft: Kleiner/größer Vergleich Strikt: <, > Mit Gleichheit: <=, >= Definition der Datentypen von oben: ergänzen! 2.5.12 Datentyp mit Vergleich Beispiel 2.5 (Datentyp: Ganze Zahlen (ergänzt)). Ganze Zahlen haben den Wertebereich { -,..., -3, -2, -1, 0, 1, 2, 3,...+ }. Die Verknüpfungen +, -, * sind nach üblichen Rechenregeln erklärt. Die Verknüpfung / ist als ganzzahlige Division erklärt. Zwei Zahlen können mit <, <=, >, >=, ==,!= miteinander verglichen werden. Das Resultat eines Vergleichs ist ein Wert des Datentyps bool. 2.5.13 Beispiel: Vergleich arithmetischer Ausdrücke 1 pingo_title = "Was ist ((5+3*2) < 17-5) and ((1*1) > -1)" 2 pingo_type = "single" 3 pingo_questions = ["Wahr (True)", "Falsch (False)"] 4 pingo_duration = "30" 5 6 %pingo 2.5.14 Vereinfachen? Darf man das vereinfachen zu:

12 Liste von Definitionen u.ä. 1 5+3*2 < 17-5 and 1*1 > -1 Was fehlt? Welche Festlegung fehlt für so eine Vereinfachung? 2.5.15 Zusammenfassung: Einfache Datentypen Numerisch: int, float, complex Mit üblichen arithmetischen Operationen Unterschiedliche Repräsentation im Speicher Und bit-für-bit Operationen für int Siehe Details Zeichenkette: str Folge von Unicode-Zeichen Siehe Details Folgen von Bytes,... 2.5.16 Verknüpfungen unterschiedlicher Typen? Bisher: nur typreine Verknüpfungen betrachtet str und str, int und int Was passiert, wenn wir mischen? Beispiel: Zeichenkette und Zahl 1 "Hallo GP1" + 5 2.5.17 Sinnvolle Verknüpfungen? Was wären denn Verknüpfungen mit sinnvoller Semantik? Zeichenkette und Zahl? Multiplikation: Zeichenkette mehrfach hintereinander Zeichenkette oder Zahl und bool???? Zahl und Zahl, genauer: unterschiedliche Zahlen? Ja... 2.5.18 Zeichenkette und Zahl str und int 1 "Hallo GP1!" * 5

2.5. Typen 13 str und float 1 "Hallo GP1!" * 3.1415 Semantik? Sinnlose Semantik, also Fehler 2.5.19 Operatoren: Verschiedene Semantik! Achtung 2.1 (Semantik von Operatoren ist typabhängig). Der gleiche Operator kann in Kombination mit unterschiedlichen Typen auftreten. Dadurch erhält der Operator jeweils eine andere Semantik. Man spricht dann von Operator Overloading. Beispiel: Multiplikation 1 3 * 5 1 "Hallo" * 5 2.5.20 Arithmetik? int und float? Implizite Umwandlung, weitgehend problemlos In Python3; andere Programmiersprachen hier ggf. kompliziert Explizite Umwandlung: Runden u.ä. später 1 10 * 0.3 1 10 / 3 1 10 // 3

14 Liste von Definitionen u.ä. 2.6 Typen in Programmiersprachen 2.6.1 Typen in Python 3 Alles hat einen Typ in Python 3 Literale haben stets einen eindeutigen Typ Verknüpfungen zwischen zwei Werten produzieren Wert mit Typ Eindeutig durch Typ der Werte und Verknüpfung bestimmt Folge: Man kann nichts ohne Typ hinschreiben... Typ eines Werts wird im Interpreter explizit repräsentiert Man muss den Typ aber nicht explizit hinschreiben 2.6.2 Typisierte Programmiersprache Definition 2.5 (Typisierte Programmiersprache). Eine Programmiersprache heißt typisiert wenn für jeden Wert und Ausdruck nicht nur der Wert selbst sondern auch der Datentyp bekannt ist. Beispiel Python (2 & 3) Java... 2.6.3 Konvertierung zwischen Typen Typen sind unterschiedlich, aber was, wenn das gleiche Datum repräsentiert wird? Beispiel: int: 9 string: 9 Wie kommt man von string 9 zu int 9? Umgekehrt? Möglich Details: später 2.6.4 Bemerkung: Starke vs. schwache Typisierung Definition 2.6 (Schwach typisierte Programmiersprache). Eine Programmiersprache ist schwach typisiert wenn Werte unterschiedlicher, nicht verwandter Typen miteinander verknüpft werden können, ohne dass sie explizit konvertiert werden müssen.

2.7. Zusammenfassung 15 Beispiel Eine schwach typisierte Sprache würde 9 + 9 erlauben. Aber bedeutet das dann 99 oder 18? Sprache: Perl, C (alte Versionen) 2.6.5 Bemerkung: Starke vs. schwache Typisierung (2) Definition 2.7 (Stark typisierte Programmiersprache). Eine Programmiersprache ist stark typisiert wenn Werte unterschiedlicher, nicht verwandter Typen nur dann miteinander verknüpft werden können, wenn sie explizit konvertiert werden. Beispiel Bei starker Typisierung ist 9 + 9 nicht möglich Beispiel: Python, Java 2.6.6 Ausdrücke und Zustand? Und was ist mit Zustand? Vorheriges Kapitel: Lange Diskussion, Ausführungsmodell,... Ausdrücke verändern den Zustand nicht Und nun? 2.7 Zusammenfassung 2.7.1 Zusammenfassung Datentypen legen Werte und Verknüpfungen fest Werte werden durch Literale angegeben Durch Verknüpfungen werden Ausdrücke gebildet Ausdrücken erzeugen neue Werte aus vorhandenen Werten Python ist ein Beispiel für eine Sprache/Umgebung mit einer read-evaluate-print-schleife eine stark typisierte Programmiersprache