Herzlich Willkommen! Vorsemesterkurs Quick-Start 2010 Vorlesung 1 Organisatorisches Alle Infos rund um den Vorkurs gibt es auf http://tiny.cc/vorkurs Diese Folien findet ihr unter http://tiny.cc/folien1 Material zum Praxisteil Es gibt ein Skript zum Vorkurs: http://tiny.cc/Skript Bücher: Bilder: Bol.de Fragen, fragen, fragen! Wenn euch etwas unklar ist - Hand heben, Frage stellen! http://www.flickr.com/photos/21339969@N04/2072240793 Agenda 1. Programmieren, wie geht das? 2. Daten und Datentypen 3. Unser erstes eigenes Programm 4. Arbeiten mit Linux Programmieren http://media.techeblog.com/images/_funnykeyboards_1.jpg Python • Ist eine Hochsprache: o Das heißt, sie abstrahiert das Vorgehen im Computer. o Abstrahieren heißt vereinfachen! • Der Interpreter übersetzt sie in seine Maschinensprache. • http://python.org/ > Download > Release Python 2.7 Der Interpreter Arbeiten mit dem Interpreter Die drei spitzen Klammern (">>>") sind ein Hinweis, an den Programmierer, dass er Anweisungen eingeben kann. Geben wir etwas ein, antwortet der Interpreter i.d.R.: In diesem Fall mit einer Fehlermeldung. Was bedeutet "Invalid Syntax"? Der Interpreter hat den Befehl nicht verstanden. Fehler können vor allem am Anfang frustrieren. Hier findet ihr Hilfe: ... Vorkurs Forum: http://fsinf-forum.de/viewforum.php?f=16 Tutoren Mailingliste: [email protected] Programmieren Programmieren heißt, eine Sprache zu lernen, die der Computer versteht. Diese Sprache hat eine Syntax, die bestimmt was man in der Sprache schreiben kann, und eine Semantik die bestimmt was der Computer tun soll. Die Syntax lernen ist relativ einfach. Die Semantik zu beherrschen erfordert viel Übung. Schreiben von Programmen Python Programme, das sind eine Reihe von Python Befehlen, gespeichert in einer Texdatei, mit der Endung ".py". Das Ausführen funktioniert dann so: Das ist nicht immer so... In vielen Sprachen muss der Quelltext erst übersetzt werden. Man nennt diesen Vorgang kompilieren und das entstehende Programm Kompilat. X http://xkcd.com/303/ Agenda 1. ✓ Programmieren, wie geht das? 2. Daten und Datentypen 3. Unser erstes eigenes Programm 4. Arbeiten mit Linux Datentypen Ein Computer funktioniert (stark vereinfacht) so: Daten Magic Daten Was kann man mit einem Datum machen? Das hängt davon ab, was für ein Typ Datum es ist... Datentypen Python unterstützt viele praktische Datentypen: Zahlen Zeichenketten (Strings) und viele andere mehr... Listen von Dingen ... und wenn das nicht reicht? Reichen diese Datentypen nicht, kann man eigene zusammenbauen. Das lernt ihr in PRG-1 :-) http://www.flickr.com/photos/s3a/1460563846 Jetzt: Nummern Wahrheitswerte Morgen: Zeichenketten Listen (von Dingen) Zahlen (Integer und Float) Python kennt v. A. zwei Arten von Zahlen: Zahlen ohne Komma Sog. Integer (Ganzzahl) >>> 4 Zahlen mit Komma Sog. Float (Fließkommazahl) >>> 4.0 Richtig echter Python Code!! Der englische Sprachraum (und deshalb viele Programmiersprachen) verwenden den Punkt als Dezimaltrenner, kein Komma! Rechnen mit Zahlen Man sagt zu einem Computer nicht umsonst "Rechner": Addition >>> 67+2 69 Subtraktion >>> 5-2 3 Multiplikation >>> 4*6 24 Potenz >>> 2**5 32 Modulo (Divisionsrest) Division >>> 6%4 2 >>> 20/6 3 Huch? http://www.flickr.com/photos/e2/2333259787 Moment mal... >>> 20/6 3 Zwanzig durch Sechs ist doch eigentlich 3,333333333333333333333... Typen beim Rechnen Python unterscheidet die Typen Integer und Float! • Integer mit Integer ergibt Integer >>> 20/6 3 Nachkommastellen sind weg! • Ist aber eine der Zahlen ein Float >>> 20.0/6 3.3333333333333335 http://www.flickr.com/photos /nhuisman/3168683736/ Vorrang Bei mehr als zwei Rechenoperationen in einer Zeile wird der Ausdruck nach folgenden Regeln ausgewertet: Wie in der Mathematik gilt Punkt vor Strich: >>> 3 + 4 * 5 23 Aber geklammerte Ausdrücke haben Vorrang: >>> (3 + 4) * 5 35 http://www.flickr.com/photos/ henteaser/274494784/ Vergleichen Interessanter wird es wenn wir Zahlen miteinander vergleichen... Aber sind 1 und 1.0 nicht gleich für Python? Aus: Head First Servlets and JSP Fragen wir den Interpreter! Fragen wir den Interpreter! Yikes! Wieder ein Fehler. Das "=" ist KEINE Vergleichsoperation, sondern in vielen Programmiersprachen für etwas anderes reserviert. So geht es richtig... Verwende "==" um herauszufinden ob zwei Dinge gleich sind. Tipp: Das funktioniert nicht nur bei Zahlen ;-) Wir können außerdem fragen ob: >>> 1 >= 2 Die Zahl 1 größer oder gleich der Zahl 2 ist. >>> 1 <= 2 Die Zahl 1 kleiner oder gleich der Zahl 2 ist. >>> 1 != 2 Die Zahl 1 nicht gleich der Zahl 2 ist. (Tipp: Auch das funktioniert mit anderen Dingen als Zahlen) Zurück zur Frage... Sind nun 1 und 1.0 für Python gleich? Der Interpreter antwortet: True! Ist das ein “Ja”? Wahrheitswerte (Boolean) Das Ergebnis eines Vergleichs ist ein Wahrheitswert. Wenn eine Python-Aussage wahr ist, wie z.B. 1 == 1, hat sie den Wahrheitswert True (wahr), sonst False (falsch). In Python heißt der Datentyp bool nach dem englischen Philosophen und Mathematiker George Boole, der sich stark mit Wahrheitswerten beschäftigte. http://en.wikipedia.org/wiki/George_Boole Wahrheitswerte (Boolean) Wahrheitswerte können miteinander kombiniert werden: Konjunktion (Und-Operator) Disjunktion (Oder-Operator) >>> True and True True >>> True or True True >>> True and False False >>> True or False True >>> False and True False >>> False or True True >>> False and False False >>> False or False False Wahrheitswerte (Boolean) und Wahrheitswerte können negiert werden: >>> not False True >>> not True False Das lässt sich auch mit anderen Operationen kombinieren >>> True and not False True >>> not True or False False Strings in Kurzform Wir werden Strings morgen noch im Detail behandeln. Programme ganz ohne Text sind aber langweilig. Um Python zu zeigen, dass der Text nicht als Anweisung sondern zur Verarbeitung bestimmt ist, wird er in " oder ' gesetzt. >>> "Ich bin NICHT der Messias!" 'Ich bin NICHT der Messias!' Alles weitere über Strings erzählen wir morgen - Versprochen! Agenda 1. ✓ Programmieren, wie geht das? 2. ✓ Daten und Datentypen 3. Unser erstes eigenes Programm 4. Arbeiten mit Linux Ich wünschte ich hätte ein Programm, das mir sagt, ob meine Zahl x durch y teilbar ist. Aus "Head First Servlets and JSP" Wir wollen ihren Wunsch erfüllen Eine Zahl teilt eine andere, wenn der Rest (Modulo) 0 ist. >>> 5 % 3 == 0 Beachte: Rechnungen werden VOR Vergleichen ausgeführt. Aber wenn wir ein Programm schreiben wollen müssen wir: • Daten zwischenspeichern • den Nutzer nach den Zahlen fragen • dem Nutzer das Ergebnis ausgeben • und alle Anweisungen in eine Textdatei schreiben Duplikate im Code Es kommt oft vor, dass wir bestimmte Werte in einem Programm immer wieder verwenden. (Stell dir ein Programm vor, das 100 Zahlen auf Teilbarkeit durch 2 testet) Und nun stell' dir vor der Wert würde sich ändern. Du müsstest JEDE Stelle an der du ihn verwendest anpassen. (In unserem Beispiel an 100 Stellen. Yikes!) Variablen zur Rettung! V Variablen sind wie Blumentöpfe Zuerst gibt man etwas hinein. Dann kann man dem Computer sagen: "Guck' in dem blauen Topf nach" Variablen speichern einen Wert und geben ihm einen Namen. Variablen: Ein Beispiel Das "Eintopfen" eines Wertes geschieht wie folgt: >>> blauer_blumentopf = 30 + 2 JETZT verwenden wir "=", aber um Werten Namen zu geben. Fragen wir nun nach dem Namen der Variable: >>> blauer_blumentopf 32 Sagt uns der Interpreter den Wert dieser. In der Informatik sagen wir aber "zuweisen" (Engl. "assign") statt "eintopfen". Das klingt professioneller. Variablen: Weitere Beispiele Wie einen Blumentopf kann man auch Variablen wiederverwenden, indem man ihnen andere Werte zuweist. Der alte Wert wird dabei überschrieben. >>> >>> 42 >>> >>> 21 meaning_of_life = 42 meaning_of_life meaning_of_life = meaning_of_life / 2 meaning_of_life Variablen: Auswertung >>> blauer_blumentopf = blauer_blumentopf / 2 Das funktioniert, weil der Interpreter zuerst den Teil rechts vom "=" auswertet: blauer_blumentopf / 2 ... und dann das Ergebnis an den Variablennamen zuweist. Fehlermeldungen... Fragen wir nach einem Namen, den es noch nicht gibt ... Regeln für Variablennamen Variablen können euer Programm leichter lesbar machen, ... wenn ihr ihnen SINNVOLLE Namen gebt. Python erlaubt jede Kombination aus Buchstaben, Nummern und Unterstrichen (_), die nicht mit einer Zahl beginnt. Konvention ist es Worte in Variablennamen mit mehr als einem Wort durch einen Unterstrich zu trennen. >>> meaning_of_life = 42 # Guter Name! >>> var001 = 42 # Mieser Name! >>> 001var = 42 # Fehlermeldung! Noch mehr Fehlermeldungen... Folgende Namen gehören dem Interpreter: and as assert break class continue def del elif else except exec finally for from global if import in is lambda not or pass print raise return try while with yield Wenn ihr sie als Variablennamen verwenden wollt, wird er sauer und wirft mit einer Fehlermeldung nach euch. Moment mal... Was bedeutet eigentlich diese seltsame Raute? >>> meaning_of_life = 42 # Guter Name! Die Raute leitet einen Kommentar ein. Alles ab der Raute bis zum Zeilenumbruch wird vom Interpreter ignoriert. Durch Kommentare kannst du deinen Code durch andere leichter lesbar machen. # ↵ Die Checkliste • • • • ✓ Daten zwischenspeichern den Nutzer nach den Zahlen fragen dem Nutzer das Ergebnis ausgeben und alle Anweisungen in eine Textdatei schreiben Den Nutzer nach Zahlen fragen Funktionen Um die Nutzerdaten abzufragen müssen wir eine in Python eingebaute Funktion verwenden. Python-Funktionen sind nicht immer das gleiche wie mathematische Funktionen! Das Verwenden einer Funktion geht so: >>> funktionsname() Wenn du eine Funktion im interaktiven Interpreter aufrufst, wird das Ergebnis der Funktion (man spricht dem einem Rückgabewert) dort ausgegeben. Funktionen (Fortsetzung) Manchen Funktionen kann man einen oder mehrere Parameter mitgeben, die ihr Verhalten oder ihre Ausgabe beeinflussen. Man schreibt in diesem Fall die Eingabe an die Funktion zwischen die Klammern: >>> funktionsname(der_parameter) Alles weitere über Funktionen erfahrt ihr morgen! Die input-Funktion http://www.flickr.com/photos/ julesstoop/304301165/ Die Funktion input() hält die Ausführung des Programms an und wartet auf die Eingabe des Nutzers. Den Wert den der Nutzer eingegeben hat speichern wir so: >>> user_eingabe = input() als würde statt input() der Wert der Eingabe dort stehen. Die input-Funktion (Fortsetzung) Wir wollen dem Nutzer sagen, was er eingeben soll. Die input() Funktion unterstützt deshalb auch einen Parameter, der die übergebene Meldung vor dem Eingabefeld ausgibt. Das Funktioniert dann wie folgt: >>> user_eingabe = input("Wie alt bist du? ") Die Checkliste • • • • ✓ Daten zwischenspeichern ✓ den Nutzer nach den Zahlen fragen dem Nutzer das Ergebnis ausgeben und alle Anweisungen in eine Textdatei schreiben Die print-Funktion Die Funktion print(text) gibt den übergebenen String für den Nutzer sichtbar aus. http://www.flickr.com/photos/d3us/4245882362/ Python-Programme Sobald wir Anweisungen in einer Datei ausführen, müssen wir dem Interpreter explizit durch die print() Funktion sagen, was er ausgeben soll. Eingaben von Nutzern können wir dann durch die input() Funktion entgegennehmen und in Variablen speichern. Die Checkliste • • • • ✓ Daten zwischenspeichern ✓ den Nutzer nach den Zahlen fragen ✓dem Nutzer das Ergebnis ausgeben und alle Anweisungen in eine Textdatei schreiben Live demo And now for something completely different ... (Linux) Agenda 1. ✓ Programmieren, wie geht das? 2. ✓ Daten und Datentypen 3. ✓ Unser erstes eigenes Programm 4. Arbeiten mit Linux Erfahrungen mit Linux? http://www.flickr.com/photos/martino881980/3325246407 Wer erinnert sich an DOS? http://de.wikipedia.org/wiki/MS-DOS Linux hat zwar auch eine GUI... ... aber vieles geschieht im "Terminal" Mit dem Terminal kannst du... • • • • • • • Programme starten Verzeichnisse anlegen/löschen Den Computer ausschalten Python installieren Computer fernwarten Pizza bestellen (Link) ... Kurzum: Fast alles machen. Du öffnest es so: Du öffnest es so: Du öffnest es so: Terminal-Befehle Die folgenden Befehle sind hilfreich für die Übung: python Startet den Python Interpreter. Wenn du keine Datei zur Ausführung angibst, erwartet er deine Anweisungen. idle Startet den mit Python gelieferten Editor "IDLE". Diesen werden wir für unsere Übungen verwenden. pwd Steht für "print working directory". Gibt das Verzeichnis aus, in dem du gerade bist. ls Steht für "list directory". Gibt den Inhalt des Verzeichnisses aus, in dem du gerade bist. cd Steht für "change directory". (Tipp: Das Verzeichnis über dem jetzigen ist "..") Wechselt in das Verzeichnis das du nach dem Befehl angibst. mkdir Steht für "make directory". Erstellt ein Verzeichnis mit dem Namen den du nach dem Befehl angibst.. rmdir Steht für "remove directory". Löscht das Verzeichnis mit dem Namen den du nach dem Befehl angibst.. Vielen Dank für eure Aufmerksamkeit Übungen beginnen um 14:00 Uhr in den Fischer-Räumen