Programmierung I Einführung in Python, Beyond the Basics



Ähnliche Dokumente
Programmierung I Einführung in Python, Beyond the Basics

Objektorientierte Programmierung

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Einführung in die Programmierung

Übung Grundlagen der Programmierung. Übung 05: Arrays. Abgabetermin: xx.xx.xxxx. Java-Programm Testplan Testergebnisse

Modellierung und Programmierung 1

Programmierkurs Java

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

1 Vom Problem zum Programm

Erstellen der Barcode-Etiketten:

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Einführung in die Java- Programmierung

2. Semester, 2. Prüfung, Lösung

Informatik für Schüler, Foliensatz 12 Pseudo-Zufallszahlen

Erwin Grüner

Erfahrungen mit Hartz IV- Empfängern

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Schnellanleitung: Verbuchung von Studien- und Prüfungsleistungen

Sortierverfahren. Sortierverfahren für eindimensionale Arrays

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Felder. November 5, 2014

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Informatik Grundlagen, WS04, Seminar 13

Software Engineering Klassendiagramme Assoziationen

Frankfurt am Main. Dortmund. Stuttgart. Düsseldorf

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Funktionale Programmierung mit Haskell

Typdeklarationen. Es gibt in Haskell bereits primitive Typen:

Beschluss für ein neues Teilhaberecht Einfache Sprache, Großdruck

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Algorithmen und Datenstrukturen

Algorithmen & Datenstrukturen 1. Klausur

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Informatik für Schüler, Foliensatz 21 Objektorientierte Programmierung

Datenbanken Microsoft Access 2010

Erstellen von x-y-diagrammen in OpenOffice.calc

Einführung in die Programmierung

SMS/ MMS Multimedia Center

Informatik Repetitorium SS Volker Jaedicke

1 topologisches Sortieren

Programmieren für Ingenieure Sommer Ein Rechner. Rechner sind überall. Gerät, das mittels programmierbarer Rechenvorschriften Daten verarbeitet.

A Lösungen zu Einführungsaufgaben zu QueueTraffic

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Der Wert von Lebensmitteln Umfragen im Auftrag des BMELV

Diana Lange. Generative Gestaltung Operatoren

Die Statistiken von SiMedia

Ein Buch entsteht. Ein langer Weg

Lehrer: Einschreibemethoden

Zählen von Objekten einer bestimmten Klasse

Animationen erstellen

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Professionelle Seminare im Bereich MS-Office

Der Gabelstapler: Wie? Was? Wer? Wo?

Datenaufbereitung in SPSS. Daten zusammenfügen

Lineare Gleichungssysteme

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Übungen Programmieren 1 Felix Rohrer. Übungen

Statuten in leichter Sprache

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.)

Programmieren Tutorium

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Institut für Programmierung und Reaktive Systeme 25. August Programmier-Labor Übungsblatt. int binarysearch(int[] a, int x),

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

AutoCAD Dienstprogramm zur Lizenzübertragung

Arbeitsblätter. Sinnvolle Finanzberichte. Seite 19

Scala kann auch faul sein

Einführung in die Programmierung (EPR)

E-PRIME TUTORIUM Die Programmiersprache BASIC

Wie halte ich Ordnung auf meiner Festplatte?

1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden.

Objektorientierung: Klassen und Objekte

Taylorentwicklung der k ten Dimension

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

CodeSaver. Vorwort. Seite 1 von 6

Webalizer HOWTO. Stand:

Fragebogen: Rätoromanisch

Installation OMNIKEY 3121 USB

1.1.1 Test Überschrift

Inventarverwaltung mit Access 2007/10

Abwesenheitsnotiz im Exchange Server 2010

Modul CTO Barcode für Windows Seite 1

Ihr Ideen- & Projektmanagement-Tool

Einführung in die C++ Programmierung für Ingenieure

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen

1. Einführung Erstellung einer Teillieferung Erstellung einer Teilrechnung 6

Anleitung für die Hausverwaltung

Informatik I Debugging

SUDOKU - Strategien zur Lösung

Das DAAD-PORTAL. Prozess der Antragstellung in dem SAPbasierten Bewerbungsportal des DAAD.

Anleitung für die Teilnahme an den Platzvergaben "Studio II, Studio IV und Studio VI" im Studiengang Bachelor Architektur SS15

Grundlagen von Python

Grundlagen der Informatik

Vorgehensweise bei Lastschriftverfahren

Auswahlabfragen mit ACCESS

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Gezielt über Folien hinweg springen

3D-Konstruktion Brückenpfeiler für WinTrack (H0)

EndTermTest PROGALGO WS1516 A

Die Programmiersprache C99: Zusammenfassung

Transkript:

Höhere Datenstrukturen Programmierung I Einführung in Python, Beyond the Basics G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Eines der Features, das Python so mächtig macht (VHLL) Zwei große wichtige Klassen von höheren DS Sequenzen und Dictionaries Sequenzen repräsentieren geordnete Mengen von Objekte Sie werden mit natürlichen Zahlen indiziert Unterklassen: - Strings - Tupel - Listen Veränderbare (mutable) und nicht-veränderbare (immutable) Dictionary: "assoziative Datenstruktur" Prof. Dr. G. Zachmann Informatik 1 - WS 05/06 Einführung in Python, Teil 2 2 Strings Strings sind Zeichen-Sequenzen a = Python ist toll Zugriff auf die Zeichen erfolgt durch den Index-Operator [] b = a[3] # b = h Teilstrings erhält man mit dem Slice-Operator [i:j] c = a[3:5] # b = hon Strings lassen sich mit dem +-Operator konkatenieren d = a + sagt der Professor Strings sind in Python nicht veränderbar, wenn sie einmal festgelegt wurden # Folgendes ist in Python nicht möglich a = "Qython ist toll" a[0] = 'P' Strings sind eine (von mehreren) immutable sequence Klassen Operationen auf Strings s[i] s[i:j] len(s) min(s) max(s) Operationen auf Strings Ergibt Element i der Sequenz s Ergibt einen Teilbereich (slice) Ergibt die Anzahl der Elemente in s Ergibt Minimum Ergibt Maximum Prof. Dr. G. Zachmann Informatik 1 - WS 05/06 Einführung in Python, Teil 2 3 Prof. Dr. G. Zachmann Informatik 1 - WS 05/06 Einführung in Python, Teil 2 4 1

Listen / Arrays Operationen auf Listen Folge beliebiger und inhomogener Werte Beispiele (Listenliterale): studenten = [ Meier", Mueller", Schmidt ] l = [ 1, 2, 3 ] l = [ "null", "acht", 15 ] Elementenummerierung: von 0 bis Anzahl-1! Zugriff mit [] student_des_monats = studenten[2] studenten[0] = Becker Mit append() werden neue Elemente am Ende der Liste hinzugefügt studenten.append( Bach ) Operationen auf Listen s[i] Ergibt Element i der Sequenz s s[i:j] Ergibt einen Teilbereich (slice) len(s) Ergibt die Anzahl der Elemente in s min(s) Ergibt Minimum max(s) Ergibt Maximum s.append(x) Fügt neues Element x an das Ende der Liste s.extend(l) Fügt eine neue Liste l an das Ende von s s.count(x) Zählt das Vorkommen von x in s s.index(x) Liefert kleinsten Index i mit s[i] == x s.insert(i,x) Fügt x am Index i ein s.remove(x) Liefert Element i und entfernt es aus der Liste s.reverse() Invertiert die Reihenfolge der Elemente s.sort([cmpfunc]) Sortiert die Elemente Prof. Dr. G. Zachmann Informatik 1 - WS 05/06 Einführung in Python, Teil 2 5 Prof. Dr. G. Zachmann Informatik 1 - WS 05/06 Einführung in Python, Teil 2 6 Beispiel: Mischen einer Liste Erzeugen einer Liste von Zahlen mit range : Syntax: range([start],stop[,step]) Beispiel: x = range(0,100) # 0,..., 99 x = range(10) # 0,..., 9 for i in range(0,n): Bemerkung: es gibt keinen speziellen Datentyp Array! Array wäre Liste mit fester Größe Aufgabe: zufällige Permutation von (0,,N-1) erzeugen Beispiel import sys N = int( sys.argv[1] ) a = range( 0, N ) r = random.randint(0, i) a[r], a[i] = a[i], a[r] print a Prof. Dr. G. Zachmann Informatik 1 - WS 05/06 Einführung in Python, Teil 2 7 Prof. Dr. G. Zachmann Informatik 1 - WS 05/06 Einführung in Python, Teil 2 8 2

Mehrdimensionale Listen / Arrays Beispiel: Diffusion Limited Aggregation Listen können als Elemente auch selbst wieder Listen enthalten a = [1, "Dave", 3.14, ["Mark", 7, 9, [100, 101]], 10] a[1] # Ergibt "Dave". a[3][2] # Ergibt 9. a[3][3][1] # Ergibt 101. Modell für diffusionsbegrenztes Wachstum Grundlage ist die Brown'sche Molekularbewegung Beispiele: Anlagerung von Rußteilchen an Wänden und Kaminen Bildung von Fellzeichnungen bei Zebra, Tiger, Leopard,... Korallenwachstum Idee: Monte Carlo simulation. 1. Erzeuge einen Partikel an der launch site. 2. Der Partikel wandert zufällig durch das 2-D Gitter bis - er einen anderen Partikel berührt dann wird er dort angelagert - er das Gitter wieder verlässt 3. Gehe wieder zu 1. (0, 0) launch aggregate Prof. Dr. G. Zachmann Informatik 1 - WS 05/06 Einführung in Python, Teil 2 9 Prof. Dr. G. Zachmann Informatik 1 - WS 05/06 Einführung in Python, Teil 2 10 import Image N = 200 launch = N - 10; dla = [] b = [] for j in range( 0, N ): b.append(0) dla.append(b) for i in range(0, N): dla[i][0] = 1 im = Image.new("RGB", (N, N), (256, 256, 256) ) Erzeugen der 2D- Liste (Array) Die unterste Reihe initialisieren Prof. Dr. G. Zachmann Informatik 1 - WS 05/06 Einführung in Python, Teil 2 11 Prof. Dr. G. Zachmann Informatik 1 - WS 05/06 Einführung in Python, Teil 2 13 3

Tupel Hierarchie von Sequenz-Typen Tupel sind wie Listen eine geordnete Menge beliebiger Objekte Tupel sind wie Strings nicht veränderbar (immutable) Beispiel: Operationen: wie für Listen, ohne die verändernden Operationen Häufige Verwendung: Swap: t1 = (12, "17", 42) t2 = (t1, ) x, y = y,x # Tupel mit 1 Elem immutable sequence sequences mutable sequence Tupel String List Rückgabe mehrere Funktionswerte: return (x,y,z) # z.b. ein Punkt Dort wo in C ein struct verwendet worden wäre Prof. Dr. G. Zachmann Informatik 1 - WS 05/06 Einführung in Python, Teil 2 14 Prof. Dr. G. Zachmann Informatik 1 - WS 05/06 Einführung in Python, Teil 2 15 Dictionary Ein Dictionary ist ein assoziatives Array, bei dem Objekte mit Schlüsseln (Keys) indiziert werden (anstatt Integer) student = { "Name" : "Meier", "Matrikelnummer" : "123456", "Klausurnote" : 4 } Zugriff auf die Elemente erfolgt über den Index-Operator a = student["name"] student["klausurnote"] = 1 Wird oft (leider) Hash oder Map genannt Prof. Dr. G. Zachmann Informatik 1 - WS 05/06 Einführung in Python, Teil 2 16 Beispiel: "Chaos Game" mit Dictionary import Image import sys im = Image.new("RGB", (512, 512), (256, 256, 256) ) N = int( sys.argv[1] ) vertex = { "r" : (0.0,0.0), # dictionary of coords of vertices "g" : (512.0,0.0), "b" : (256.0,443.4) } x0, y0 = 0.0, 0.0 # start at "red" vertex r = random.random() if r < 0.333: x1, y1 = vertex["r"] elif r < 0.6667: x1, y1 = vertex["g"] else: x1, y1 = vertex["b"] x0 = ( x0 + x1 ) / 2.0 y0 = ( y0 + y1 ) / 2.0 im.putpixel ( (int(x), int(y)), (int(x), int(y), 0) ) alter Code im.show() Prof. Dr. G. Zachmann Informatik 1 - WS 05/06 Einführung in Python, Teil 2 17 4

Operationen auf Dictionaries Enthaltensein wird mit has_key() getestet if student.has_key( Name ) name = student[ Name ] else name = Mustermann Eine Schlüssel-Liste erhält man mit keys() l = student.keys() # liefert # [ Name, Matrikelnummer, Klausurnote ] Operationen auf Dicitonaries len(m) Ergibt die Anzahl der Elemente in m m[k] Ergibt Element von m mit Schlüssel k m[k] = x Setzt m[k] auf x del m[k] Entfernt m[k] aus m m.clear() Entfernt alle Elemente von m m.copy() Macht eine Kopie von m m.has_key(k) Ergibt 1, falls m einen Schlüssel k enthält, sonst 0 m.items() Ergibt eine Liste von Schlüssel-Wert-Paaren m.keys() Ergibt eine Liste aller Schlüssel in m m.values() Ergibt eine Liste aller Objekte in m Mit del entfernt man Elemente del student["klausurnote"] Prof. Dr. G. Zachmann Informatik 1 - WS 05/06 Einführung in Python, Teil 2 18 Prof. Dr. G. Zachmann Informatik 1 - WS 05/06 Einführung in Python, Teil 2 19 5