1.Tag - Informatik @ Uni Frankfurt

Werbung
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
Herunterladen