Programmierkurs Python I



Ähnliche Dokumente
Java I Vorlesung 1 Einführung in Java

Informatik Java-Programmierkurs im Rahmen der Berufs- u. Studienorientierung für Schüler. Joliot-Curie-Gymnasium GR 2010 Nico Steinbach

I.1 Die Parrot Assemblersprache

Programmieren in Haskell Einführung

Erwin Grüner

Grundbegriffe der Informatik

Primzahlen und RSA-Verschlüsselung

Einführung in PHP. (mit Aufgaben)

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Allgemeines. Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C. #include <stdio.h>

Funktionale Programmierung (in Clojure)

Grundlagen der Theoretischen Informatik, SoSe 2008

1. Formulieren Sie den Algorithmus <Bedienung eines Getränkeautomaten> nach den oben genannten Kriterien.

1. Einführung. 2. Alternativen zu eigenen Auswertungen. 3. Erstellen eigener Tabellen-Auswertungen

Algorithmik II. SS 2003 Prof. Dr. H. Stoyan Lehrstuhl für Informatik 8 ( Künstliche Intelligenz) stoyan@informatik.uni-erlangen.

1 topologisches Sortieren

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!.

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

Softwareentwicklung Allgemeines und prozedurale Konstrukte

Übung Theoretische Grundlagen

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

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

BIA-Wissensreihe Teil 4. Mind Mapping Methode. Bildungsakademie Sigmaringen

GEONET Anleitung für Web-Autoren

Wir machen neue Politik für Baden-Württemberg

1. Einführung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

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

Arbeiten mit UMLed und Delphi

Auktionen erstellen und verwalten mit dem GV Büro System und der Justiz Auktion

Tipps und Tricks zu den Updates

Installationshinweise für OpenOffice Portable auf einem Wechseldatenträger Stand: 27. März 2003 LS Stuttgart, Kaufmännische ZPG

Bin Packing oder Wie bekomme ich die Klamotten in die Kisten?

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

Übungsaufgaben Tilgungsrechnung

Was ist Logische Programmierung?

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Anleitung über den Umgang mit Schildern

Papierverbrauch im Jahr 2000

Meet the Germans. Lerntipp zur Schulung der Fertigkeit des Sprechens. Lerntipp und Redemittel zur Präsentation oder einen Vortrag halten

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

Anleitung zur Installation des Printservers

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

8 Design Patterns. Events

Erstellen von x-y-diagrammen in OpenOffice.calc

Kontrollstrukturen - Universität Köln

VibonoCoaching Brief -No. 18

J.6 Programmierung eingebetteter Systeme

Bildquelle:

Software- und Druckerzuweisung Selbstlernmaterialien

Mathematischer Vorbereitungskurs für Ökonomen

IT-Basics 2. DI Gerhard Fließ

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

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester

Studie Autorisierungsverfahren Online-Banking n = 433, Befragungszeitraum: Februar bis März 2014

Wie halte ich Ordnung auf meiner Festplatte?

Monatstreff für Menschen ab 50 Temporäre Dateien / Browserverlauf löschen / Cookies

Statuten in leichter Sprache

Informationen zum neuen Studmail häufige Fragen

Konzepte der Informatik

Algorithmen und Programmieren II Einführung in Python

Leichte-Sprache-Bilder

Nicht kopieren. Der neue Report von: Stefan Ploberger. 1. Ausgabe 2003

RSA-Verschlüsselung. Verfahren zur Erzeugung der beiden Schlüssel:

Informationsblatt Induktionsbeweis

Copyright Sophie Streit / Filzweiber / Fertigung eines Filzringes mit Perlen!

Informationen zum Ambulant Betreuten Wohnen in leichter Sprache

Übungsaufgaben zur Programmiersprache Python

C++ Tutorial: Timer 1

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Konzentration auf das. Wesentliche.

Word 2010 Schnellbausteine

ONLINE-AKADEMIE. "Diplomierter NLP Anwender für Schule und Unterricht" Ziele

Kompilieren und Linken

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Einführung in die Programmiersprache Python

Pfötchenhoffung e.v. Tier Manager

Objektorientierte Programmierung. Kapitel 0: Begrüssung

4.1 Wie bediene ich das Webportal?

Einführung zum Arbeiten mit Microsoft Visual C Express Edition

So versprüht man digitalen Lockstoff

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

Anlegen eines Speicherbereichs mit DB, DW eleganter in Kombination mit EQU, Timer-Interrupt

Haben Sie über elektronisches Schließfachmanagement nachgedacht? Ein Schließfach ist ohne ein solides Schloss nicht komplett.

Evangelisieren warum eigentlich?

Modellierung und Programmierung 1

Das Festkomitee hat die Abi-Seite neu konzipiert, die nun auf einem (gemieteten) Share Point Server

Beweisbar sichere Verschlüsselung

Autoformat während der Eingabe

Objektorientierte Programmierung

Produktionsplanung und steuerung (SS 2011)

1.Unterschied: Die Übungen sind nicht von deinem Mathe-Lehrer...

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Psychologie im Arbeitsschutz

Installation OMNIKEY 3121 USB

Algorithmen mit Python

Stadt radio Orange Dein Fenster auf Orange 94.0

Informatik 1 Tutorial

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

Transkript:

Programmierkurs Python I Michaela Regneri 2009-10-30 (Folien basieren auf dem gemeinsamen Kurs mit Stefan Thater, der für diese Vorlesung auf Alexander Kollers Java-Kurs basierte) Organisatorisches Wöchentliche Übungen (wichtig!) in Teams von max. drei Studenten. Jeder Student muss die Übung selbst kommentieren und erklären können Prüfungsvoraussetzung: 50% der Übungspunkte Größeres Programmierprojekt nach etwa der Hälfte des Kurses (50% der Endnote) Klausur am Ende des Semesters (50% der Endnote) 2

Was heißt Programmieren? Der Programmierer will ein Problem auf systematische Weise lösen. Ein Algorithmus ist eine abstrakte, detaillierte Berechnungsvorschrift, die das Problem löst. Ein Programm ist eine Darstellung des Algorithmus in einer konkreten Programmiersprache. Ein Programm kann mit verschiedenen Eingaben ausgeführt werden. 3 Einige Probleme Berechnung von arithmetischen Funktionen Was ist der kürzeste Weg in einem Graphen? Computerlinguistische Probleme: morphologische Analyse, Taggen, grammatische Analyse (Parsen), Alltägliches: Wie komme ich vom Bett zur Uni? - Teilproblem: Anziehen 4

Algorithmen Kochrezepte, die Schritt für Schritt beschreiben, wie das Problem gelöst wird Sollten für alle Eingaben, die das Problem vorsieht funktionieren Müssen in endlich vielen Schritten fertig werden Granularität der Einzelschritte hängt davon ab, was als offensichtliche Schritte akzeptiert wird 5 Ein Algorithmus für Anziehen Gehe zum Kleiderschrank. Nimm eine frische Unterhose. Stecke die Beine durch die Löcher. Nimm ein frisches T-Shirt. Stecke Kopf und Arme durch die passenden Löcher. Binde den rechten Schuh. 6

Algorithmus für größte Zahl gegeben eine Liste list von n natürlichen Zahlen; gesucht ist die größte Zahl in list möglicher Algorithmus: - merke dir die erste Zahl in list als aktuelles Maximum - betrachte nacheinander die 2-te bis letzte Zahl in list - vergleiche die betrachtete Zahl mit dem aktuellen Maximum - ist die Zahl größer, ändere das Maximum auf den Wert der Zahl - das gespeicherte Maximum ist nach Ansehen aller Zahlen in list die größte Zahl aus list 7 Programme sind konkrete Implementierungen eines Algorithmus in einer Programmiersprache verwenden Konstruktionen der Programmiersprache, um intuitive Begriffe präzise zu machen - Schleifen, Bedingungen, Variablen, Einzelne Schritte hängen von Programmiersprache und verfügbaren Funktionen ab. 8

Größte Zahl in Python merke dir die erste Zahl in list als aktuelle größte Zahl gehe der Reihe nach durch die 2-te bis letzte Zahl in list ist die aktuelle Zahl größer als die bisherige größte (max), dann merke dir die aktuelle als die neue größte Zahl am Ende ist der gespeicherte Wert von max die größte Zahl in list max = list[0] i = 1 while i < len(list): if liste[i] > max: max = liste[i] i = i + 1 Vorsicht: Wir haben den Spezialfall missachtet, dass die Liste auch leer sein kann. 9 Effiziente Algorithmen Manche Algorithmen lösen ein Problem effizienter als andere (mit weniger Zeit- oder Speicherverbrauch) Beispiel: Finde die zwei größten Zahlen in list - Algorithmus #1: Berechne zunächst die größte Zahl; dann lösche sie aus L und berechne ein weiteres mal die größte Zahl - Algorithmus #2: Verwende zwei Variablen, um die aktuell beiden größten Zahlen zu speichern 10

Programmiersprachen Es gibt eine sehr breite Auswahl an verschiedenen Programmiersprachen CPU versteht sehr eingeschränkten Befehlssatz, der für Menschen unbequem ist Programmiersprachen verbergen Komplexität und stellen abstraktere Konstrukte zur Verfügung - Verfolgen verschiedene Ziele - unterstützen verschiedene Programmierstile - haben verschiedene Vor- und Nachteile. 11 Programmierparadigma Imperativ: Programme sind streng geordnete Sequenzen von Anweisungen. (Algol, Fortran, Pascal, Java, C++) Deklarativ: Programm-Code spezifiziert das Problem so, dass sich die eigentliche Berechnung der Lösung ergibt - Funktional: Programme sind Funktionen (vergleichbar mit math. Funktionen), die aus einer Eingabe eine Rückgabe berechnen und ggf. aus einfacheren Funktionen zusammengesetzt sind (SML, Lisp, Haskell) - Logisch: das Programm besteht aus einer Menge von Axiomen; ein Programmaufruf versucht, die Eingabe zu beweisen (Prolog) 12

Prozedural vs. Objektorientiert Prozedural: Die wesentliche Gliederungseinheit des Programms ist die Prozedur, d.h. Gruppe von Anweisungen (C, SML) Objektorientiert: Die wesentliche Gliederungseinheit ist die Klasse, d.h. Repräsentation eines Objekts mit Sammlung von Methoden (Java, C++, Smalltalk) 13 Python Python ist eine objektorientierte Programmiersprache, d.h. objetktorientierte Programmierung wird konsequent unterstützt. Allerdings wird man nicht gezwungen, objektorientiert zu programmieren: Man kann auch prozedural und (teilweise) funktional programmieren. 14

Interpretiert vs. kompiliert Programmiersprachen sind dafür da, dass Menschen Algorithmen bequem aufschreiben können. Programm-Quelltexte können nicht direkt vom Computer ausgeführt werden. Zu einer Programmiersprache gehört deshalb Software, die Programme für Computer ausführbar macht. - Interpreter oder Compiler 15 Interpretation Interpreter sind Programme, die den Quelltext Anweisung für Anweisung ausführen. Beliebt z.b. für Skriptsprachen wie Perl. Programm-Quelltext Interpreter Eingabe Betriebssystem / CPU 16

Kompilation Compiler sind Programme, die den Quelltext in ein direkt ausführbares Maschinenprogramm übersetzen. Beliebt z.b. für C, C++ usw. Programm-Quelltext Compiler Compile-Zeit kompiliertes Programm Eingabe Laufzeit Betriebssystem / CPU 17 Interpretation vs. Kompilation Interpretation ist (teilweise deutlich) langsamer, da Interpreter selbst Rechenzeit verbraucht. Ein Compiler wendet einmal Zeit bei der Kompilation auf. Danach wird das Programm direkt ( nativ ) von der CPU sehr effizient ausgeführt. Ein kompiliertes Programm läuft nur auf einer einzigen Plattform (Betriebssystem + CPU). Der Quelltext muss daher auf neuen Plattformen neu kompiliert werden und ggf. angepasst werden (Portierung). Das ist oft problematisch. 18

Python-Ausführung Python-Programme werden zunächst in Byte-Code kompiliert, der dann von einer virtuellen Maschine interpretiert wird die Art der Virtuellen Maschine hängt von der Python- Implementierung ab (Standard: C, gibt auch Java,.NET...) Python kann auch als interpretierte Sprache benutzt werden 19 Python - allgemein Der Name kommt von Monty Python Python basierte ursprünglich auf der Lehrprogrammiersprache ABC ABC war für ambitionierte Anwender ohne Programmierkenntnisse entworfen ABC wurde damit auch als übersichtliche, einfache Sprache entworfen Python war ursprünglich ein ABC-Ausschnitt mit ein paar praktischen (aber komplexeren) zusätzlichen Konstrukten Besonderer Fokus: Einfache Datei-Handhabung 20

Vorzüge von Python Einfache Syntax ( gut lesbare Programme) Sehr flexibel, wenige Verbote (viel Konvention) Datei-Handhabung volle Unicode-Unterstützung beliebig große (!) Ganzzahlen bequeme Umsetzung regulärer Ausdrücke 21 Unser erstes Programm: Hello, World! Unser erstes Python-Programm (Datei: hello.py): print( Hello, World! ) Ausführen des Programms von der Kommandozeile: > python hello.py 22

Python Interaktiv > python3 Python 3.0.1+ (r301:69556, Apr 15 2009, 15:59:22) [GCC 4.3.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> print("hello World") Hello World >>> 23 24 as taught by xkcd.com

Lösungswege Problem Problem formulierbar? NEIN funktionierender Status? NEIN alles neu, C&P, dann +X JA JA GOOGLE Problem gelöst? JA NEIN Problem formulierbar? NEIN problem. Stellen eingrenzen JA NEIN funktionierender Status? JA fragen! Juhu! 25 Literatur Viele Tutorials & komplette Doku unter www.python.org: (auf Deutsch z,.b. http://python.net/~gherman/ publications/tut-de/online/tut/ ) Das Python-Tutorial: http://tutorial.pocoo.org/ VIdeo-Tutorial (ungetestet): http://showmedo.com/ videotutorials/series?name=hrcwu3mb5 Für Leute, die schon Programmieren können: Dive Into Python (http://www.diveintopython.org/) Viele Bücher; falls eins hinzugezogen wird, bitte auf Python 3 achten (SULB leider unterversorgt hier) 26