v11-folien (das glei..

Werbung
Modul: Programmierung B-PRG
Grundlagen der Programmierung 1 – Teil 1 – V11
Zusammenfassung und Ergänzungen - Teil 1
Prof. Dr. Detlef Krömker
Professur für Graphische Datenverarbeitung
Institut für Informatik
Fachbereich Informatik und Mathematik (12)
Hier wird Wissen Wirklichkeit
Wo sind wir in Teil1?
V 0
---V 1
V 2
V 3
---V 4
V 5
---V 6
V 7
---V 8
V 9
V10
V11
2
Begrüßung und Einführung
Daten – Information – Wissen
Computer – Algorithmus – Programm
Variablen – Datentypen – Objekte
Elementare numerische Datentypen
Zeichenketten
Verzweigungen und Schleifen
Prozeduren
Wir haben tatsächlich
schon viel geschafft ... Sie
haben viel geleistet!
Was bleibt?
Kleine Ergänzungen zu
verschiedenen
Themengebieten!
Aggregierte Datentypen
Klassen
Graphen und Bäume
Bibliotheken, ...
B-CG – V11 – Ergänzungen und
Zusammenfassung
Prof. Dr. Detlef Krömker
Institut für Informatik
Hier wird Wissen Wirklichkeit
1
Übersicht
1. Die Datentypen None, Bool und Enumeration in Python
2. Module und Bibliotheken
3. Eingebaute Bibliotheken in Python
4. Anmerkungen zum Programmierstil
5. Ein- und Ausgabe in Python
6. Zusammenfassung und Ausblick
3
B-CG – V11 – Ergänzungen und
Zusammenfassung
Prof. Dr. Detlef Krömker
Institut für Informatik
Hier wird Wissen Wirklichkeit
unmutable
None
elementare
Wahrheitswerte
Ganzzahlen
Zahlen
Gleitkommazahl.
Zeichen
Komplexe Zahlen
Aufzählungstypen
div.Kodierungen
Kodierungen
div.
Mengen
Kollektionen
Sequenzen
Abbildungen
Prozeduren
aufrufbar
Klassen
4
B-CG – V11 – Ergänzungen und
Zusammenfassung
Python Objekte
mutable
Rückblick
Prof. Dr. Detlef Krömker
Institut für Informatik
frozenset ( )
set ( ) integer
long float decimal
complex
string ustring tupel ( )
list [ ] dictionary { }
def class
Hier wird Wissen Wirklichkeit
2
Der Datentyp None
‣
Der Typ None bezeichnet ein Null-Objekt.
‣
Python stellt genau ein Null-Objekt zur Verfügung, das in einem
Programm als None geschrieben wird.
‣
Dieses Objekt wird von Funktionen zurückgegeben, die keinen Wert
explizit zurückgeben (man kann es auch an Funktionen und Methoden
übergeben, um eine leere Argumentliste anzuzeigen).
‣
None hat keinerlei Attribute und
‣
None wird in allen Ausdrücken immer zu logisch falsch ausgewertet.
5
B-CG – V11 – Ergänzungen und
Zusammenfassung
Prof. Dr. Detlef Krömker
Institut für Informatik
Hier wird Wissen Wirklichkeit
Der Datentyp Bool
‣
Der Datentyp Bool verfügt über zwei vordefinierte Konstanten:
True und False
‣
Der Typ Bool ist eine Unterklasse der Klasse int und gibt Instanzen
davon anders aus, 0 als False und alle anderen Werte als True
Kommentar: nicht sehr schön!
‣
In den meisten Fällen können die Konstanten
False als 0 und True als 1 angesehen werden
>>> False + 1
1
>>> True + True + 2
4
>>>
6
B-CG – V11 – Ergänzungen und
Zusammenfassung
Prof. Dr. Detlef Krömker
Institut für Informatik
Hier wird Wissen Wirklichkeit
3
Boolesche Ausdrücke
‣
Mit den Schlüsselwörtern and, or und not können boolesche Ausdrücke gebildet
werden.
‣
Operator
Beschreibung
x or y
Ergibt x, falls x True ist, sonst y
x and y
Ergibt x, falls x False ist, sonst y
not x
Ergibt True, falls x False ist, sonst True
Bei Verwendung eines Ausdrucks zur Bestimmung eines Wahrheitswertes
werden alle von Null verschiedenen Zahlen und alle nicht-leeren Strings, Listen,
Tupel oder Dictionaries als logisch wahr betrachtet.
Die Zahl Null, None sowie leere Listen, Tupel und Dictionaries werden logisch
falsch ausgewertet.
Die Auswertung eines booleschen Ausdrucks erfolgt von links nach rechts und
verwendet den rechten
‣
‣
7
B-CG – V11 – Ergänzungen und
Zusammenfassung
Prof. Dr. Detlef Krömker
Institut für Informatik
Hier wird Wissen Wirklichkeit
Der Datentyp Enumeration (Aufzählungstyp)
‣
ist ein Datentyp mit einem endlichen Wertebereich.
‣
Alle Werte des Aufzählungstyps werden bei der Deklaration des Typs
mit Namen definiert. Dabei wird auch eine Reihenfolge festgelegt, die
eine Ordnung der einzelnen Werte bestimmt, die Werte können also
sortiert werden.
‣
Aufzählungstypen sind z.B. in den Programmiersprachen Pascal, C++
ein übliches Mittel. (In Java werden Aufzählungen erst seit der Version
5 unterstützt, dafür sind sie hier als echte Objekte mit objektorientierten
Mitteln flexibel erweiterbar).
‣
Beispiel aus Java
enum Farbe {BLAU, GRUEN, ROT, GELB}
8
B-CG – V11 – Ergänzungen und
Zusammenfassung
Prof. Dr. Detlef Krömker
Institut für Informatik
Hier wird Wissen Wirklichkeit
4
Der Datentyp Enumeration in Python
‣
auch in Python 2.5 kein builtin aber „Work in Progress“, siehe
PEP 354 (Python Enhancement Proposal)
‣
Vorschlag: Implementierung als unveränderliche Sequenz von Werten
anderer Basisdatentypen, wie str oder int
‣
Es wäre möglich, einfach ein tupel oder ein frozenset zu benutzen,
aber
vs. tupel: enum würde sicherstellen, dass jeder Wert nur einmal
vorkommt
vs. frozenset: Es ist eine Ordnung definiert
‣
Im Web dindet man gute Implementierungen einer solchen Klasse: z.B.
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/413486
9
B-CG – V11 – Ergänzungen und
Zusammenfassung
Prof. Dr. Detlef Krömker
Institut für Informatik
Hier wird Wissen Wirklichkeit
Module
Größere Python-Programme werden oft als Paket von Modulen
organisiert.
Der Typ des Moduls ist ein Behälter, der Objekte enthält, die mit der
Anweisung import geladen werden.
‣
Wenn in einem Programm z.B. die Anweisung import foo erscheint, wird der
Name foo dem entsprechenden Modulobjekt zugeordnet.
‣
Module definieren einen Namensraum, der (mit einem Dictionary implementiert
wird und) über die Variable __dict__ zugänglich ist.
‣
Immer wenn ein Attribut des Moduls referenziert wird (mit dem Punktoperator),
wird dies in einen Dictionary-Zugriff umgewandelt.
‣
So ist z.B. m.x äquivalent zu m.__dict__["x"]. Genauso ist die Zuweisung an ein
Attribut, wie etwa m.x = y, äquivalent zu m.__dict__["x"] = y.
10
B-CG – V11 – Ergänzungen und
Zusammenfassung
Prof. Dr. Detlef Krömker
Institut für Informatik
Hier wird Wissen Wirklichkeit
5
Attribute eines Moduls
Attribute
Beschreibung
m.__dict__
Das Dictionary, das zum Modul gehört
m.__doc__
Dokumentations-String des Moduls
m.__name__
Name des Moduls
m.__file__
Datei, aus der das Modul geladen wurde
m.__path__
Vollständig qualifizierter Paketname; definiert, wenn
das Modulobjekt sich auf ein Paket bezieht
11
B-CG – V11 – Ergänzungen und
Zusammenfassung
Prof. Dr. Detlef Krömker
Institut für Informatik
Hier wird Wissen Wirklichkeit
Zugriff auf einen Modul
Nach
import module
Zugriff auf Funktionen des Moduls
durch module.Funktionsname
from module import name
Zugriff auf die Funktion name des
Moduls einfach durch name
from module import *
Alle benutzten Namen werden
importiert und können unqualifiziert
benutzt werden
Achtung: Namenskonflikte!
12
B-CG – V11 – Ergänzungen und
Zusammenfassung
Prof. Dr. Detlef Krömker
Institut für Informatik
Hier wird Wissen Wirklichkeit
6
Arten von Modulen
‣
In Python geschriebene Programme (.py-Dateien) – ein Modul
„entsteht“ durch abspeichern eines Python Programms mit der Endung
.py
‣
Erweiterungen in C oder C++, die als dynamische Bibliotheken oder
DLLs übersetzt wurden.
‣
Pakete, die eine Anzahl von Modulen enthalten.
‣
Eingebaute (builtin) Module in der Regel in C implementiert, die in den
Interpreter gebunden sind, davon gibt es hunderte!
13
B-CG – V11 – Ergänzungen und
Zusammenfassung
Prof. Dr. Detlef Krömker
Institut für Informatik
Hier wird Wissen Wirklichkeit
Anmerkungen
‣
Bei .py-Dateien gilt, dass sie beim ersten import in Byte-Code übersetzt und
in eine neue Datei mit Erweiterung .pyc geschrieben werden.
‣
Bei einem späteren import, lädt der Interpreter diese vorübersetzte Datei, es sei
denn, der Zeitstempel der letzten Änderung der .py-Datei ist jünger (dann wird
die .pyc-Datei neu erstellt).
‣
Dateien mit Erweiterung .pyo werden zusammen mit der Interpreter-Option -O
verwendet und enthalten Byte-Code ohne Zeilennummern, Zusicherungen und
andere Debugging-Information. Daher sind sie etwas kleiner und werden vom
Interpreter etwas schneller ausgeführt.
‣
Die Übersetzung von Dateien in solche mit Erweiterung .pyc oder .pyo erfolgt
nur in Zusammenhang mit der import-Anweisung.
‣
Programme, die auf der Kommandozeile oder in der Standardeingabe definiert
werden, erzeugen solche Dateien nicht.
14
B-CG – V11 – Ergänzungen und
Zusammenfassung
Prof. Dr. Detlef Krömker
Institut für Informatik
Hier wird Wissen Wirklichkeit
7
Pakete
‣
Pakete erlauben es, eine Anzahl von Modulen unter einem
gemeinsamen Paketnamen zu gruppieren.
‣
Diese Technik hilft, Namensraumkonflikte zwischen Modulnamen in
verschiedenen Anwendungen aufzulösen.
‣
Ein Paket wird definiert, indem ein Ordner gleichen Namens mit einer
Datei __init__.py darin angelegt wird.
‣
Anschließend kann man je nach Bedarf weitere Quelldateien,
übersetzte Erweiterungen und Unterpakete in diesen Ordner
platzieren.
15
B-CG – V11 – Ergänzungen und
Zusammenfassung
Prof. Dr. Detlef Krömker
Institut für Informatik
Hier wird Wissen Wirklichkeit
Wichtige Python Module (builtins)
Modul sys
Zugriff auf einige Umgebungskomponenten, wie
Kommandozeile, Standardströme, etc
Modul string
Konstante und Variable zur Bearbeitung von StringObjekten
Modul os
Werkzeuge der betriebssystemumgebung: Prozesse
Dateien, Shell-Kommandos, etc.
Modul re
Mustererkennung und Reguläre Ausdrücke
Module anydbm, pickle, shelve
16
B-CG – V11 – Ergänzungen und
Zusammenfassung
Module zur Objekt-Persistenz
Prof. Dr. Detlef Krömker
Institut für Informatik
Hier wird Wissen Wirklichkeit
8
Wichtige weitere Python Module (builtins)
‣
GUI-Modul Tkinter
‣
Internet Module
‣
Modul math
‣
Modul time
‣
Modul datetime
‣
Module zum Threading
‣
...
17
B-CG – V11 – Ergänzungen und
Zusammenfassung
Prof. Dr. Detlef Krömker
Institut für Informatik
Hier wird Wissen Wirklichkeit
Eingebaute Funktionen in Python
‣
befinden sich im Modul __builtin__
‣
sind ohne import verfügbar
‣
Beispiele: hunderte ... abs(N), cmp (X,Y), dir ([Objekt])
‣
... siehe Python Docs
18
B-CG – V11 – Ergänzungen und
Zusammenfassung
Prof. Dr. Detlef Krömker
Institut für Informatik
Hier wird Wissen Wirklichkeit
9
Anmerkungen zum Programmierstil
Worum geht es: Konventionen, also
ein Satz von Regeln, nach welchen der Quelltext eines Programms
erstellt wird.
Es ist üblich, für alle größeren Softwareprojekte solche Regeln in
„Programmierhandbüchern“ festzulegen. Einige Qualitätsnormen im
Softwareumfeld fordern explizit die Anwendung bestimmter
Regelwerke. Die bekanntesten Regelwerke dürften die GNU coding
standards für C-Programme im Umfeld der Free Software
Foundation und z.B. für Java die Code Conventions von SUN sein.
19
B-CG – V11 – Ergänzungen und
Zusammenfassung
Prof. Dr. Detlef Krömker
Institut für Informatik
Hier wird Wissen Wirklichkeit
Anmerkungen zum Programmierstil (2)
Der Zweck eines definierten Programmierstils ist die Erleichterung der Arbeit aller
an einem Programmierprojekt beteiligten Teammitglieder.
Das bezieht sich insbesondere auf:
‣ Lesbarkeit
‣ Verständlichkeit
‣ Wartbarkeit
Elemente sind
‣
‣
‣
‣
‣
‣
‣
20
Einrückung von untergeordneten Programmelementen (Einrückungsstil),
Positionierung Blockbildener Syntaxelemente wie {}, [], (), BEGIN, END,
Einsatz von Leerzeichen und Leerzeilen,
Einsatz von Kommentaren: Namenskonventionen
Reihenfolge der Deklaration von Namen,
Länge von Namen und
Verschachtelungstiefe untergeordneter Programmelemente.
B-CG – V11 – Ergänzungen und
Zusammenfassung
Prof. Dr. Detlef Krömker
Institut für Informatik
Hier wird Wissen Wirklichkeit
10
Anmerkungen zum Programmierstil (3)
‣
Diese Elemente beziehen insbesondere auf die optische Lesbarkeit
eines Programms.
‣
Style Checker können die meisten der oben genannten Kriterien
überprüfen. Beautifier sind in der Lage, durch Umformatierung des
Quelltextes die Einhaltung eines guten Stils bezüglich dieser Kriterien
zu gewährleisten. Aber Vorsicht, ein Beautifier verbessert den
„optischen“ Stil – die wirklich wichtigen Aspekte guter Programmierung
können kaum überprüft werden
‣
... gewöhnen Sie sich einfach einen guten Programmierstil an,
dann brauchen Sie diese Programme in der Regel nicht!
21
B-CG – V11 – Ergänzungen und
Zusammenfassung
Prof. Dr. Detlef Krömker
Institut für Informatik
Hier wird Wissen Wirklichkeit
Anmerkungen zum Programmierstil (4)
Wichtiger sind jedoch folgende, automatisch nur schwer zu überprüfende Kriterien:
‣ Umsetzung des gewählten Programmierparadigmas, wie zum Beispiel der
Objektorientierten Programmierung; (Früher hieß es mal: Ein guter FortranProgrammierer kann in jeder Sprache Fortran programmieren!)
‣ Anwendung von Entwurfsmustern
‣ Vermeidung von Redundanz
‣ Löschung überflüssiger Programmteile
‣ Unabhängigkeit verschiedener Programmteile voneinander
‣ Abstraktionsgrad und Verallgemeinerung
‣ Wiederverwendbarkeit
‣ Robustheit
‣ Fehler- und Ausnahmebehandlung
‣ u.a.
für Python finden Sie eine Empfehlung im Skript
22
B-CG – V11 – Ergänzungen und
Zusammenfassung
Prof. Dr. Detlef Krömker
Institut für Informatik
Hier wird Wissen Wirklichkeit
11
Zusammenfassung PRG 1 – Teil 1
V 0
---V 1
V 2
V 3
---V 4
V 5
---V 6
V 7
---V 8
V 9
V10
V11
23
Begrüßung und Einführung
Daten – Information – Wissen
Computer – Algorithmus – Programm
Variablen – Datentypen – Objekte
Elementare numerische Datentypen
Zeichenketten
Verzweigungen und Schleifen
Prozeduren
Aggregierte Datentypen
Klassen
Graphen und Bäume
Bibliotheken, ...
B-CG – V11 – Ergänzungen und
Zusammenfassung
Grundlegende Elemente der
informatischen Bildung:
Zentrale Begriffe
Wichtige Datentypen
Strukturierte Programmierung
Objektorientierte Programmierung
Prof. Dr. Detlef Krömker
Institut für Informatik
Hier wird Wissen Wirklichkeit
Was haben wir (noch) nicht gemacht?
Exeptions und Event-based Programming in Python
diverse Details, zum Beispiel Stringmanipulation, usw.. Nachlesen, in der
Python-Dokumentation
ein kleiner Teil des Skripts fehlt noch V10-11 fehlt noch ... wird sehr bald
nachgeliefert
Möglichkeiten zum Selbsttest (Multiple-Choice Fragen, demnächst!), als
Fragen sicher noch vor Weihnachten
Evaluation und Studienbedingungen ... wir brauchen Feedback!
24
B-CG – V11 – Ergänzungen und
Zusammenfassung
Prof. Dr. Detlef Krömker
Institut für Informatik
Hier wird Wissen Wirklichkeit
12
Fragen und (hoffentlich) Antworten
25
B-CG – V11 – Ergänzungen und
Zusammenfassung
Prof. Dr. Detlef Krömker
Institut für Informatik
Hier wird Wissen Wirklichkeit
Ausblick
[Teil 2 - Drobnik] Elemente des Softwareengineerings
‣ Testen
‣ Entwicklungszyklen, Anforderungen, Spezifikation, Korrektheit,
Dokumentation.
‣ Algorithmenkonstruktion
[Teil 3 - Brause] Betriebssysteme
[Teil 4 - Drobnik] Elemente von Computernetzwerken
Danke für Ihre Aufmerksamkeit!
Es hat Spaß gemacht!
26
B-CG – V11 – Ergänzungen und
Zusammenfassung
Prof. Dr. Detlef Krömker
Institut für Informatik
Hier wird Wissen Wirklichkeit
13
Herunterladen