Skip to content
Snippets Groups Projects
Commit e645ecb9 authored by Prof. Dr. Robert Jäschke's avatar Prof. Dr. Robert Jäschke
Browse files

Einführung hinzugefügt

parent c41f6e95
No related branches found
No related tags found
No related merge requests found
%% Cell type:markdown id: tags:
# Seminar Problemorientierte Programmierung
Diese Notebooks sind im Wesentlichen eine Übersetzung der 2. Ausgabe des Buches "Think Python" von Allen B. Downey. Sie finden den originalen Text hier: __[gemeinsame Etherpad](http://url)__ http://greenteapress.com/wp/think-python-2e/.
## Lernziele und Ablauf diese Seminars
Unser Lernziel ist, dass Sie Programmieren lernen (mit Python :-). Bis dahin ist es ein weiter Weg. Der beste Tipp ist: üben, üben, üben
Das Seminar wird wie folgt ablaufen:
1. Sie arbeiten als Pair-Programming-Team diese Jupyter-Notebooks durch.
- Währenddessen bin ich für Sie da um Fragen zu beantworten und Probleme zu lösen
- Nutzen sie bitte auch das [gemeinsame Etherpad](http://url)__ für Codeschnipsel und allgemeine Probleme.
2. Nach ca. 15 Minuten unterbrechen wir das Programmieren und Sie wechseln die Rollen (NavigatorIn<->FahrerIn)
- Jetzt nutzen wir das [Etherpad](http://url) und besprechen Fragen und Probleme
3. Schritte 1. und 2. bis zum Ende des Seminars wiederholen
4. Zuhause arbeiten Sie gemeinsam das durch, was Sie im Seminar nicht geschafft haben. Dies gilt besonders für die Aufgaben
- Wir werden im Seminar entscheiden, bis zu welchem Notebook Sie kommen sollten.
## Tipps
- Arbeiten Sie die Notebooks selbständig im Team durch und probieren Sie möglichst viel aus. Seien Sie kreativ, neugierig und manchmal auch destruktiv. Denn auch durch Fehler lernen Sie.
- Sie können alles in Ihrem Notebook bearbeiten ... nutzen Sie diese Möglichkeit. Ergänzen Sie also Text, löschen Sie, was Sie überflüssig finden, fügen Sie Ihre eigenen Notizen oder Programme hinzu. Dieses Notebook kann Ihr "Portfolio" werden: eine Demonstration dessen, was Sie schon können.
- Denken Sie daran, alle Code-Blöcke auszuführen. "Unbekannter" Code führt in Jupyter häufig zu leicht vermeidbaren Fehlern.
- Falls Sie mal nicht weiterkommen: helfen Sie sich gegenseitig und versuchen Sie verschiedene Dinge. Schreiben Sie Ihr Problem z.B. einfach mal ganz genau hier im Notebook auf. Oft hilft das Aufschreiben eines Problems schon bei der Lösung eines Problems.
## Wiederkehrende Abschnitte:
- **Exkurse** sind Material, welches Sie sich nur anschauen brauchen, falls es Sie interessiert. Bitte schauen Sie sich die Exkurse eher zu Hause an, als während des Seminars, damit Sie vorwärts kommen. Die Inhalte der Exkurse sind nicht notwendig, um vorwärts zu kommen, aber hilfreich, um mehr zu lernen.
- **Debugging-Abschnitte** erklären, wie Sie Fehler finden und beheben können.
- **Glossar-Abschnitte** listen die Begriffe auf, die im Kapitel vermittelt wurden. Es ist eine gute Übung für zu Hause, jeden Begriff dort noch einmal in eigenen Worten zu definieren.
- Schließlich gibt es **Übungen**, diese sollten Sie unbedingt durchführen und erst fortfahren, wenn Sie die Aufgaben lösen konnten und verstanden haben.
## Hinweise zur Benutzung von Jupyter
- Sie kommen deutlich schneller vorwärts, wenn Sie Tastaturkürzel nutzen (und nicht die Maus). Im "Help"-Menü gibt es dazu den "Keyboard Shortcuts"-Eintrag. Sie können aber auch einfach die Tastenkombination `ESC h` drücken (das bedeutet: die `ESC`-Taste drücken und dann die Taste h). Wichtigste Kombinationen: `ESC b` fügt einen neuen Block ein, `STRG-ENTER` (oder `STRG-RETURN`, also `STRG` gedrückt halten und dann `RETURN` drücken) führt den aktuellen Block aus, `ESC m` ändert den Typ des aktuellen Blocks auf Markdown (und `ESC y` zu Python), usw.
- Alternativ können Sie auch die Knöpfe oben mit der Maus bedienen.
- Es gibt zwei Arten von Blöcken: "Code" ist für Python-Code, "Markdown" ist für Texte, die Sie mit Hilfe der [Markdown-Syntax](https://de.wikipedia.org/wiki/Markdown#Auszeichnungsbeispiele) formatieren können.
- Sie können auf Text doppelt klicken, um sich den Markdown-Quellcode anzuzeigen. Probieren Sie es mit diesem Text aus.
- Wenn Sie mal etwas "kaputtgespielt" haben, hilft es evtl., im "Kernel"-Menü den "Restart"-Eintrag auszuwählen.
- Mit der Funktion help können Sie in Python zu vielen Funktionen Hilfe erhalten. Die offizielle Python-Dokumentation finden Sie hier: https://docs.python.org/3/.
## Exkurs: Was mir an Python gefällt:
In dieser Rubrik, die normalerweise am Anfang eines Kapitels steht, möchte ich Ihnen zeigen, wofür ich Python nutze und warum ich es mag. Sie werden vielleicht noch nicht verstehen, was ich genau mache, aber Sie sehen damit schon einmal die Möglichkeiten von Python und können später darauf zurückgreifen. Da dies ein Exkurs ist, können Sie diese Rubrik gerne auch erst einmal überspringen.
Ich finde toll, dass ich mit Python ganz einfach Zufallsexperimente durchtesten kann. Das hilft mir, Stochastik besser zu verstehen. Z.B. das Würfeln mit zwei Würfeln:
%% Cell type:code id: tags:
```
import random # Zufallszahlen, siehe https://docs.python.org/3/library/random.html
# Werte initialisieren, größter möglicher Wert bei zwei Würfeln: 6+6=12
haeufigkeiten = [0 for i in range(13)]
wuerfe = 100000
for i in range(wuerfe):
# Würfelsumme für zwei Würfel zählen
haeufigkeiten[random.randrange(1,7) + random.randrange(1,7)] += 1
# Ergebnis als Tabelle ausgeben
print("Wir würfeln wiederholt mit zwei sechsseitigen Würfeln und addieren die Augenzahlen zusammen:")
print("Summe Augenzahlen:", "\t".join([str(i) for i in range(2,13)]), sep='\t')
print("Anzahl der Würfe:", "\t".join([str(i) for i in haeufigkeiten[2:]]), sep='\t')
print("Wahrscheinlichkeit:", "\t".join(["{:2.3f}".format(i/wuerfe) for i in haeufigkeiten[2:]]), sep='\t')
```
%% Cell type:markdown id: tags:
![RFC 1149.5 specifies 4 as the standard IEEE-vetted random number.](https://imgs.xkcd.com/comics/random_number.png)
([Random Number](https://xkcd.com/221/), Randall Munroe)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment