1 Allgemeines. Informatik I: Einführung in die Programmierung 2. Erste Schritte in Python. Die Programmiersprache Python... Programmiersprachen

Ähnliche Dokumente
Informatik I: Einführung in die Programmierung

Informatik I: Einführung in die Programmierung

Informatik I: Einführung in die Programmierung

Programmieren in Python

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Informatik I. Informatik I 16. Dezember Erste Schritte in Python Motivation Motivation Ausdrücke

Informatik I. 12. Erste Schritte in Python. Jan-Georg Smaus. Albert-Ludwigs-Universität Freiburg. 16. Dezember 2010

Informatik I. Jan-Georg Smaus. Motivation. Informatik I. 12. Erste Schritte in Python. Albert-Ludwigs-Universität Freiburg. 16.

Einführung in die Programmierung mit VBA

Python Programmierung. Dipl.-Ing.(FH) Volker Schepper

Informatik I. 2. Erste Schritte in Scheme. 21. Oktober Albert-Ludwigs-Universität Freiburg. Informatik I. Jan-Georg Smaus

III.1 Prinzipien der funktionalen Programmierung - 1 -

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

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

Programmieren in Python

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

Informatik Erste Schritte mit MATLAB

Programmieren in Haskell Einführung

Gliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung

Übungen zur Vorlesung Wissenschaftliches Rechnen I

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

Angewandte Mathematik und Programmierung

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

n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 -

2.5 Primitive Datentypen

Programmiersprachen. Organisation und Einführung. Berthold Hoffmann. Studiengang Informatik Universität Bremen

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

Programmieren 1 C Überblick

1 Funktionsaufrufe. Informatik I: Einführung in die Programmierung 4. Funktionen: Aufrufe und Definitionen. Standardfunktionen: Typen-Konversion

Programmierkurs für das modularisierte Lehramt. September 2011, 8. Vorlesung. Stuttgart, den 22. September Dr. Heiko Schulz.

Algorithmik und Programmieren

Informatik I: Einführung in die Programmierung

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

1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog. IV.1 Grundkonzepte der logischen Programmierung - 1 -

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

4. Zahlendarstellungen

n 1. Grundkonzepte der logischen Programmierung n 2. Syntax von Prolog n 3. Rechnen in Prolog IV.1 Grundkonzepte der logischen Programmierung - 1 -

Übungszettel 2a - Python

Java I Vorlesung Imperatives Programmieren

Grundlagen von C# - 1

Programmierkurs Python I

Die einfachsten Anweisungen

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

Python als praktischer Helfer

Einstieg in die Informatik mit Java

Hallo Haskell. (Funktionale Programmierung) Prof. Dr. Oliver Braun. Letzte Änderung: :08. Hallo Haskell 1/23

Inhalt. n Algorithmus. n Euklidscher Algorithmus. n Sortieren. n Programmiersprachen. n Entwicklungsschritte eines Programms.

o feste Anzahl Vorkommastellen (z.b. 7) o feste Anzahl Nachkommastellen (z.b. 3) o Nachteil 1: o feste Anzahl signifikanter Stellen (10)

Beispiele elementarer Datentypen Ganze Zahlen (integer) Unterbereiche Gleitkommazahlen Festkommazahlen

1. Einführung Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

Programmieren in Python

Informatik I. Informatik I. 4.1 Funktionsaufrufe. 4.2 Mathematische Funktionen. 4.3 Funktionsdefinitionen. 4.4 Variablengültigkeitsbereich

Vorlesung Skriptsprachen Duale Hochschule Stuttgart Sommersemester Dipl.-Ing. (FH) Volker Schepper

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

Definitionen/Vorarbeit zum Thema Java

Hallo Haskell. Funktionale Programmierung. Prof. Dr. Oliver Braun Letzte Änderung: :06. Hallo Haskell 1/23

Programmiervorkurs. Wintersemester 2013/2014

Einleitung Typsystem Typisierung Zusammenfassung Literatur. Typisierung. Effiziente Programmierung. Thomas Schnieders

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

Programmieren in Python 3. Variablen, Funktionen und Bedingungen

1 Bedingte Anweisungen. 2 Vergleiche und logische Operatoren. 3 Fallunterscheidungen. 4 Zeichen und Zeichenketten. 5 Schleifen.

Programmieren in Haskell Einführung

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

Begleittext: Einführung in das Programmieren in Java für Nichtinformatiker

ALP I Geschichtliche Einführung in die Programmiersprachen

2. Ganze Zahlen int unsigned int

3. Ganze Zahlen int unsigned int

Binäre Darstellung ganzer Zahlen

4. Daten. K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

Programmierbüchlein Grundlagen der Programmierung. Rootgames

1. Fliesskommazahlen

Projekt 3 Variablen und Operatoren

o feste Anzahl Vorkommastellen (z.b. 7) o feste Anzahl Nachkommastellen (z.b. 3) o Nachteil 1: o feste Anzahl signifikanter Stellen (10)

Leseprobe. Bernd Klein. Einführung in Python 3. In einer Woche programmieren lernen. ISBN (Buch): ISBN (E-Book):

Übungspaket 8 Datentyp int

Die Zahl ist: (z 2, z 1, z 0 ) (z ) : 7 = 0 Rest z 2

Informatik I Übung, Woche 41

3. Datentypen, Ausdrücke und Operatoren

Aufruf des Compilers in der Kommandozeile und Ausführung des Programms:

1.5 Einführung und Zahlensysteme/Darstellung gebrochener Zahlen

Aufgabenblatt 4 IT-Security Angewandte Informatik WS 2016/17

JAVA-Datentypen und deren Wertebereich

Einstieg in die Informatik mit Java

Informatik I - Übung 2 Programmieren in Eclipse

Einführung in C. EDV1-04C-Einführung 1

Bru ckenkurs Programmieren

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Programmieren in Python

Zahlen im Computer (Klasse 7 Aufbaukurs Informatik)

Wertebereich und Genauigkeit der Zahlendarstellung

Grundlagen Internet-Technologien. Clientseitige Web-Programmierung

Python Einführung. Monica Selva Soto. 24 März Mathematisches Institut

Intensivübung zu Algorithmen und Datenstrukturen

Transkript:

1 Informatik I: Einführung in die Programmierung 2. Erste Schritte in Python Albert-Ludwigs-Universität Freiburg Bernhard Nebel 21. & 24. Oktober 2014 21. & 24. Oktober 2014 B. Nebel Info I 3 / 39 Programmiersprachen Die Programmiersprache Python... Ada, Basic, C, C++, C, Cobol, Curry, Fortran, Go, Gödel, HAL, Haskell, Java, Lisp, Lua, Mercury, Miranda, ML, OCaml, Pascal, Perl, Python, Prolog, Ruby, Scheme, Shakespeare, Smalltalk, Visual Basic, u.v.m. wurde Anfang der 90er Jahre von Guido van Rossum als Skriptsprache für das verteilte Betriebssystem Amoeba entwickelt; Wir lernen hier Python (genauer Python 3), eine objektorientierte, dynamisch getypte, interpretierte und interaktive höhere Programmiersprache. Foto: Wikipedia gilt als einfach zu erlernen, da sie über eine klare und übersichtliche Syntax verfügt; wird kontinuierlich von Guido van Rossum bei Google weiter entwickelt. bezieht sich auf die Komikertruppe Monty Python. 21. & 24. Oktober 2014 B. Nebel Info I 4 / 39 21. & 24. Oktober 2014 B. Nebel Info I 5 / 39

Literatur 2 Es gibt eine Menge von Lehrbüchern zu Python3. Wir werden im wesentlichen einsetzen Allen Downey, Think Python: How to Think Like a Computer Scientist, O Reilly, 2013 als PDF herunterladbar oder als HTML lesbar (Green Tea Press): http://greenteapress.com/thinkpython/ thinkpython.html als deutsche Version: Programmieren lernen mit Python, O Reilly, 2013. Marc Lutz, Learning Python, O Reilly, 2013 (deutsche Ausgabe ist veraltet!) Marc Lutz, Python kurz & gut, O Reilly, 2014 (als Nachschlagwerk) Weitere Bücher im Semesterapparat. 21. & 24. Oktober 2014 B. Nebel Info I 6 / 39 21. & 24. Oktober 2014 B. Nebel Info I 8 / 39 Python benutzen? Einsteigersprachen in den USA Softwarequalität Lesbarkeit Software-Reuse-Mechanismen (wie OOP) Programmierer-Produktivität Die Länge von Programmen ist typischerweise weniger als 50% verglichen mit äquivalentem Java oder C++-Programmen. Kein Edit-Compile-Test-Zyklus, sondern direkte Tests Portabilität Support-Bibliotheken ( Batterien sind enthalten ) Komponenten-Integrierbarkeit (Java,.Net, COM, Silverlight, SOAP, CORBA,... ) 21. & 24. Oktober 2014 B. Nebel Info I 9 / 39 21. & 24. Oktober 2014 B. Nebel Info I 10 / 39

Wer benutzt Was geht nicht? Google: Web search, App engine, YouTube Dropbox CCP Games: EVE Online 2kgames: Civilization IV (SDK) Industrial Light & Magic: Workflow-Automatisierung ESRI: Für Nutzerprogrammierung des GIS Intel, Cisco, HP, Seagate: Hardwaretesting Python ist langsamer als Java und C++ Wieviel langsamer? http://benchmarksgame.alioth.debian.org/ Eignet sich nicht für das Schreiben von Gerätetreibern Eignet sich nicht für die Programmierung von eingebetteten Systemen / Mikrocontrollern (bare metal programming) Mittlerweile gibt es allerdings MicroPython für einen ARM-Prozessor. NASA, JPL, Alamos: Scientific Computing... http://www.python.org/about/success/ 21. & 24. Oktober 2014 B. Nebel Info I 11 / 39 21. & 24. Oktober 2014 B. Nebel Info I 12 / 39 3 - versus Compiler-Sprachen Abbildungen aus Downey 2013 21. & 24. Oktober 2014 B. Nebel Info I 14 / 39 21. & 24. Oktober 2014 B. Nebel Info I 15 / 39

Woher nehmen? Interaktiver und Skript-Modus Unter http://python.org/ findet man aktuelle Dokumentation und Links zum Herunterladen (uns interessiert Python 3.X) für Windows, MacOSX, Unixes (Quellpakete), für aktuelle Linux-Distributionen gibt es Packages für die jeweilige Distribution, meistens bereits installiert! Läuft u.a. auch auf dem Raspberry Pi! Man kann den auf folgende Arten starten: im interaktiven Modus (ohne Angabe von Programm-Parametern) Man kann interaktiv Ausdrücke und Anweisungen eintippen, der wertet diese aus und druckt ggfs. das Ergebnis. im Skript-Modus (unter Angabe einer Skript-/Programm-Datei) Ein Programm (auch Skript genannt) wird eingelesen und dann ausgeführt. 21. & 24. Oktober 2014 B. Nebel Info I 16 / 39 21. & 24. Oktober 2014 B. Nebel Info I 17 / 39 4 Interaktives Nutzen der Erste Schritte: Ausdrücke Nach Starten des s erhält man das Prompt-Zeichen, kann Ausdrücke eintippen und erhält ein Ergebnis. Um dem eine Ausgabe zu entlocken, gibt es zwei Methoden. Zum einen kann man einfach einen Ausdruck eingeben, woraufhin der dann den Ausdruck auswertet und das Ergebnis ausgibt: >>> 7 * 6 42 >>> "Hello world" Hello world >>> "spam " * 4 spam spam spam spam 21. & 24. Oktober 2014 B. Nebel Info I 19 / 39 21. & 24. Oktober 2014 B. Nebel Info I 20 / 39

Erste Schritte: Drucken Exkurs: Hello-World-Programme Zum anderen kann man die print-funktion verwenden, um einen Ausdruck auszugeben: >>> print(7 * 6) 42 >>> print("hello world") Hello world >>> print("spam " * 4) spam spam spam spam print ist der übliche Weg, Ausgaben zu erzeugen und funktioniert daher auch in richtigen Programmen. Hello-World-Programme dienen dazu, eine erste Idee vom Stil einer Programmiersprache zu bekommen. Python print("hello World!") Pascal program Hello_World; begin writeln( Hello World! ); end. Brainfuck ++++++++++[>+++++++>++++++++++>+++>+<<<<-] >++.>+.+++++++..+++.>++.<<+++++++++++++++. >.+++.------.--------.>+.>. 21. & 24. Oktober 2014 B. Nebel Info I 21 / 39 21. & 24. Oktober 2014 B. Nebel Info I 22 / 39 Ausgaben des s Etwas mehr zu print Es besteht ein kleiner aber feiner Unterschied zwischen nackten Ausdrücken und Ergebnissen der print-funktion: >>> print(7 * 6) 42 >>> print("hello world") Hello world >>> print("oben\nunten") oben unten >>> print(none) None Mehr dazu später... >>> 7 * 6 42 >>> "Hello world" Hello world >>> "oben\nunten" oben\nunten >>> None >>> Wir werden die Möglichkeiten von print später noch ausführlicher behandeln. Ein Detail soll aber schon jetzt erwähnt werden: >>> print("2 + 2 =", 2 + 2, "(vier)") 2 + 2 = 4 (vier) Man kann print mehrere Ausdrücke übergeben, indem man sie mit Kommas trennt. Die Ausdrücke werden dann in derselben Zeile ausgegeben, und zwar durch Leerzeichen getrennt. 21. & 24. Oktober 2014 B. Nebel Info I 23 / 39 21. & 24. Oktober 2014 B. Nebel Info I 24 / 39

Die Hilfe-Funktion 5 Wenn Sie etwas zu einem Befehl oder einer Funktion in Python wissen möchten, dann nutzen Sie die help-funktion: >>> help Type help() for interactive help, or help(object) for help about object. >>> help(print) Help on built-in function print in module builtins: print(...) print(value,..., sep=,... 21. & 24. Oktober 2014 B. Nebel Info I 25 / 39 21. & 24. Oktober 2014 B. Nebel Info I 27 / 39 Zahlen int int-konstanten schreibt man, wie man es erwartet: Python kennt drei verschiedene Datentypen (bzw. Klassen) für Zahlen: int für ganze Zahlen beliebiger Größe (!) float für Gleitkommazahlen (entspricht in etwa den rationalen Zahlen) complex für komplexe Gleitkommazahlen. >>> 10 10 >>> -20-20 Hexadezimal-, Oktal- und Binärzahlen werden durch Präfixe 0x, 0o bzw. 0b notiert: >>> 0x10 16 >>> 0o10 8 21. & 24. Oktober 2014 B. Nebel Info I 28 / 39 21. & 24. Oktober 2014 B. Nebel Info I 29 / 39

mit int mit int: Beispiele Python benutzt für Arithmetik die folgenden Symbole: Grundrechenarten: +, -, *, /, Ganzzahlige Division: // Modulo: % Potenz: ** Bitweise Boolesche Operatoren: &,, ˆ, (brauchen wir erst einmal nicht) >>> 14 * 12 + 10 178 >>> 14 * (12 + 10) 308 >>> 13 % 8 5 >>> 11 ** 11 285311670611 21. & 24. Oktober 2014 B. Nebel Info I 30 / 39 21. & 24. Oktober 2014 B. Nebel Info I 31 / 39 Integer-Division: Ganzzahlig oder nicht? Gleitkommazahlen und komplexe Zahlen Der Divisionsoperator / liefert das genaue Ergebnis (als float). Das Ergebnis der ganzzahligen Division erhält man mit //. Dabei wird immer abgerundet. >>> 20 / 3 6.666666666666667 >>> -20 / 3-6.666666666666667 >>> 20 // 3 6 >>> -20 // 3-7 float-konstanten schreibt man mit Dezimalpunkt und optionalem Exponent: 2.44, 1.0, 5., 1.5e+100 (bedeutet 1,5 10 100 ) complex-konstanten schreibt man als Summe von (optionalem) Realteil und Imaginärteil mit imaginärer Einheit j: 4+2j, 2.3+1j, 2j, 5.1+0j float und complex unterstützen dieselben arithmetischen Operatoren wie die ganzzahligen Typen. Wir haben also: Grundrechenarten: +, -, *, /, // Potenz: ** Rest bei Division für ganzzahliges Ergebnis: % 21. & 24. Oktober 2014 B. Nebel Info I 32 / 39 21. & 24. Oktober 2014 B. Nebel Info I 33 / 39

mit float Wieviel ist 2 2.1? >>> print(1.23 * 4.56) 5.6088 >>> print(17 / 2.0) 8.5 >>> print(23.1 % 2.7) 1.5 >>> print(1.5 ** 100) 4.06561177535e+17 >>> print(10 ** 0.5) 3.16227766017 >>> print(4.23 ** 3.11) 88.6989630228 >>> 2-2.1-0.10000000000000009 Die meisten Dezimalzahlen können als Gleitkommazahlen nicht exakt dargestellt werden (!) Neulinge finden Ausgaben wie die obige oft verwirrend dies ist weder eine Schwäche von Python noch die Rückkehr des Pentium-Bugs, sondern völlig normal. Das Ergebnis in C oder Java wäre dasselbe, aber es wird besser vor dem Programmierer versteckt. 21. & 24. Oktober 2014 B. Nebel Info I 34 / 39 21. & 24. Oktober 2014 B. Nebel Info I 35 / 39 mit complex Automatische Konversionen zwischen Zahlen >>> print(2+3j + 4-1j) (6+2j) >>> 1+2j * 100 (1+200j) [Achtung, Punkt vor Strich!] >>> (1+2j) * 100 (100+200j) >>> print((-1+0j) ** 0.5) (6.12303176911e-17+1j) Ausdrücke mit gemischten Typen wie 100 * (1+2j) oder (-1) ** 0.5 verhalten sich so, wie man es erwarten würde. Die folgenden Bedingungen werden der Reihe nach geprüft, die erste zutreffende Regel gewinnt: Ist einer der Operanden ein complex, so wird der andere zu complex konvertiert (falls er das nicht schon ist). Ist einer der Operanden ein float (und keiner ein complex), so wird der andere zu float konvertiert (falls er das nicht schon ist). 21. & 24. Oktober 2014 B. Nebel Info I 36 / 39 21. & 24. Oktober 2014 B. Nebel Info I 37 / 39

Überläufe und Unterläufe Zusammenfassung Im Gegensatz zu anderen Programmiersprachen können in Python ganze Zahlen beliebig groß (und klein) werden. Gleikommazahlen haben aber eine beschränkte Darstellung (IEEE 754 Standard) von meist 64 Bit. >>> 1e-999 0.0 >>> 1e+999 inf >>> 1e+999-1e+999 nan Python ist ein objektorientierte, dynamisch getypte, interpretierte und interaktive höhere Programmiersprache. Python wird immer populärer und wird in den USA als die häufgste Anfängersprache genannt. Python läuft auf praktisch allen Maschinen und Betriebssystemen (außer auf Mikrocontrollern). Es gibt drei numerische Typen in Python: int, float, und complex. Es werden alle bekannten arithmetischen Operationen unterstützt. inf steht für infinity und nan für not a number. Mit beiden kann man weiter rechnen. 21. & 24. Oktober 2014 B. Nebel Info I 38 / 39 21. & 24. Oktober 2014 B. Nebel Info I 39 / 39