Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
No results found
Show changes
Commits on Source (374)
Showing
with 5550 additions and 123 deletions
* Seminar Problemorientierte Programmierung * Seminar Problemorientierte Programmierung
Hier finden Sie die Jupyter-Notebooks für das Seminar. Die Notebooks Dieses Projekt enthält Jupyter-Notebooks für einen
sind im Wesentlichen eine Übersetzung der 2. Ausgabe des Buches [[http://greenteapress.com/wp/think-python-2e/][Think Python-Programmierkurs. Die Notebooks sind im Wesentlichen eine
Python]] von Allen B. Downey. Es gibt das Buch auch in einer offiziellen Übersetzung der 2. Ausgabe des Buches [[http://greenteapress.com/wp/think-python-2e/][Think Python]] von
deutschen Übersetzung mit dem Titel /Programmieren lernen mit Python/. Allen B. Downey. Es gibt das Buch auch in einer offiziellen deutschen
Übersetzung mit dem Titel /Programmieren lernen mit Python/.
Sie finden die Notebooks im Ordner [[file:notebooks/][notebooks]]. Sie können sich die Sie finden die Notebooks im Ordner [[file:notebooks/][notebooks]]. Sie können sich die
Notebooks hier ansehen aber nicht ausführen. Dazu müssen Sie sie Notebooks hier in GitLab ansehen aber nicht ausführen. Dazu müssen Sie
herunterladen und in Jupyter öffnen. Klicken Sie dazu auf der Seite sie herunterladen und in Jupyter öffnen. Klicken Sie dazu auf der
mit dem jeweiligen Notebook *mit der rechten Maustaste* auf den Button Webseite mit dem jeweiligen Notebook auf den Button "Download" und
"Open Raw" und speichern Sie die geöffnete Datei, indem Sie "*Ziel speichern Sie es als Datei:
speichern unter ...*" (oder "Link speichern unter ...") wählen:
[[file:img/open_raw.png]]
/(Hinweis: dies funktioniert oft nicht im Edge-Browser, verwenden Sie [[file:img/download.png]]
also ggf. Firefox, Chrome oder Opera.)/
Alternativ können Sie auch direkt hier die Dateien herunterladen, Alternativ können Sie die Notebooks auch direkt hier herunterladen,
indem Sie mit der rechten Maustaste auf die Links klicken und /Ziel indem Sie mit der rechten Maustaste auf die Links klicken und /Ziel
speichern unter.../ wählen: speichern unter.../ wählen:
- [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar00.ipynb][Einführung]] - [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar00.ipynb][Einführung]]
- [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar01.ipynb][1: Die ersten Programme]] - [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar01.ipynb][1: Operatoren, Ausdrücke, Typen]]
- [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar02.ipynb][2: Variablen, Ausdrücke und Anweisungen]] - [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar02.ipynb][2: Variablen und Anweisungen]]
- [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar03.ipynb][3: Funktionen]] - [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar03.ipynb][3: Funktionen]]
- [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar03extra.ipynb][3 extra: reguläre Ausdrücke]] - [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar04.ipynb][4: Turtle: Schnittstellenentwurf]]
- [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar04.ipynb][4: Fallstudie: Schnittstellenentwurf]]
- [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar05.ipynb][5: Verzweigungen und Rekursion]] - [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar05.ipynb][5: Verzweigungen und Rekursion]]
- [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar06.ipynb][6: Ertragreiche Funktionen]]
- [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar07.ipynb][7: Iteration und Suche]]
- [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar08.ipynb][8: Reguläre Ausdrücke und Zeichenketten]]
- [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar09.ipynb][9: Listen]]
- [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar10.ipynb][10: Assoziative Datenfelder]]
- [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar11.ipynb][11: Tupel]]
Merken Sie sich, wo Sie die Dateien gespeichert haben und navigieren Merken Sie sich, wo Sie die Dateien gespeichert haben und navigieren
Sie dann mit Jupyter zu diesem Ordner, um sie zu öffnen. Sie dann mit Jupyter zu diesem Ordner, um sie zu öffnen.
[[file:img/cc-by-nc.png]] Dieses Seminar ist als freies Werk unter der [[file:img/cc-by-nc.png]] Dieser Kurs ist als freies Werk unter der Lizenz
Lizenz [[http://creativecommons.org/licenses/by-nc/3.0/][Creative Commons Attribution-NonCommercial 3.0 Unported]] [[http://creativecommons.org/licenses/by-nc/3.0/][Creative Commons Attribution-NonCommercial 3.0 Unported]] verfügbar. Sie
verfügbar. Sie dürfen die Inhalte kopieren, verteilen und verändern, dürfen die Inhalte kopieren, verteilen und verändern, solange Sie die
solange Sie die Urheber nennen und sie nicht für kommerzielle Zwecke Urheber nennen und sie nicht für kommerzielle Zwecke nutzen.
nutzen.
** Tipps zur Einrichtung von Python und Jupyter ** Tipps zur Einrichtung von Python und Jupyter
*** Allgemeine Hinweise *** Allgemeine Hinweise
- Wir werden durchgängig Python 3 nutzen. Daher bitte darauf achten, - Im Kurs wird durchgängig Python 3 benutzt. Daher bitte darauf
keine alte Python-Version (2.6, 2.7, etc.) zu installieren. Am achten, keine alte Python-Version (2.6, 2.7, etc.) zu
besten mindestens Python 3.5.3 benutzen, aktuellere Versionen sind installieren. Am besten mindestens Python 3.5.3 benutzen, aktuellere
auch ok. Versionen sind auch ok.
- Helfen Sie sich gegenseitig bei der Installation und unterstützen - Helfen Sie sich gegenseitig bei der Installation und unterstützen
Sie sich bei Problemen. Benutzen Sie auch gerne das Forum bei einem Sie sich bei Problemen. Benutzen Sie auch gerne das Forum bei einem
spezifischen Problem, um Hilfe von Ihren Kommilitonen zu spezifischen Problem, um Hilfe von Ihren Kommiliton*innen zu
erhalten. Wenn niemand helfen kann, helfen wir Ihnen! erhalten. Wenn niemand helfen kann, helfen wir Ihnen.
*** Windows *** Windows
- [[https://www.anaconda.com/distribution/]] - [[https://www.anaconda.com/download]]
- [[http://technivore.org/posts/2016/02/27/windows-jupyter-three-ways.html]] - [[https://technivore.org/2016/02/27/python-jupyter-windows/]]
*** Linux *** Linux
- Je nach Distribution das passende Paket installieren, z.B. in Debian mittels ~apt-get install python3-notebook~. - Je nach Distribution das passende Paket installieren, z.B. in Debian mittels ~apt-get install python3-notebook~.
- Anaconda enthält sowohl Jupyter Notebooks, als auch Python 3.5 oder 3.6 Kernel und einige wichtige Python-Bibliotheken wie z.B. Numpy. - Anaconda enthält sowohl Jupyter Notebooks, als auch Python 3.5 oder 3.6 Kernel und einige wichtige Python-Bibliotheken wie z.B. Numpy.
- Die Python-Version 3.6 ist hier zu finden: [[https://www.anaconda.com/download/#linux]] - Die aktuelle Anaconda-Distribution ist hier zu finden: [[https://www.anaconda.com/download/#linux]]
- Die Python-Version 3.5 hier: [[https://docs.anaconda.com/anaconda/faq#how-do-i-get-anaconda-with-python-3-5]] - Ältere Anaconda-Distributionen finden sich hier: [[https://docs.anaconda.com/free/anaconda/reference/packages/oldpkglists/]]
- Hier Hilfestellung zur Instalation von Conda: [[https://docs.anaconda.com/anaconda/install/linux]] - [[https://docs.anaconda.com/anaconda/install/linux][Hilfestellungen zur Installation von Conda]]
*** Mac *** Mac
- Ananconda für Mac, wählen Sie Python 3.6 aus: [[https://www.anaconda.com/download/#macos]] - Die aktuelle Anaconda-Distributon finden sich hier: [[https://www.anaconda.com/download/#macos]]
- Mac OS X Installations-Hilfe: [[https://docs.anaconda.com/anaconda/install/mac-os#macos-graphical-install]] - Mac OS X Installations-Hilfe: [[https://docs.anaconda.com/anaconda/install/mac-os#macos-graphical-install]]
** Hinweise zu GitLab ** Hinweise zu GitLab
Das System, auf dem Sie diese Seite gerade lesen und in dem Sie die Das System, auf dem Sie diese Seite gerade lesen und in dem Sie die
Notebooks finden, nennt sich *GitLab* und ist eine professionelle Notebooks finden, nennt sich *GitLab* und ist eine professionelle
Umgebung zur kollaborativen Softwareentwicklung. Hier können Umgebung zur kollaborativen Softwareentwicklung. Hier können
Programmierer Quellcode abspeichern, Änderungen verfolgen und Programmierer*innen Quellcode abspeichern, Änderungen verfolgen und
rückgängig machen, Fehler melden und Code dokumentieren. rückgängig machen, Fehler melden und Code dokumentieren.
Wenn Sie *Fehler* in den Jupyter-Notebooks finden oder *Hinweise zur Wenn Sie *Fehler* in den Jupyter-Notebooks finden oder *Hinweise zur
...@@ -87,9 +87,10 @@ der Versionsverwaltungssoftware [[https://de.wikipedia.org/wiki/Git][Git]] vertr ...@@ -87,9 +87,10 @@ der Versionsverwaltungssoftware [[https://de.wikipedia.org/wiki/Git][Git]] vertr
** Ressourcen rund um Python ** Ressourcen rund um Python
- Ein freier Python-Kurs (auf Englisch), ebenfalls basierend auf - Ein [[http://introtopython.org/][freier Python-Kurs]] (auf Englisch), ebenfalls basierend auf
Jupyter-Notebooks: http://introtopython.org/ Jupyter-Notebooks.
- Die offizielle Dokumentation für Python 3: - Die [[https://docs.python.org/3/][offizielle Dokumentation für Python 3]].
https://docs.python.org/3/ - Eine [[https://scm.cms.hu-berlin.de/ibi/notebooks][Sammlung interessanter Notebooks]] mit vielen Beispielen.
# https://github.com/jupyter/jupyter/wiki/A-gallery-of-interesting-Jupyter-Notebooks # https://github.com/jupyter/jupyter/wiki/A-gallery-of-interesting-Jupyter-Notebooks
This diff is collapsed.
img/by-nc-sa.png

21.9 KiB

This diff is collapsed.
img/download.png

12.8 KiB

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="100.69669mm"
height="8.1907139mm"
viewBox="0 0 100.69669 8.1907139"
version="1.1"
id="svg8"
inkscape:version="0.92.1 r15371"
sodipodi:docname="miami.svg">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.72960859"
inkscape:cx="203.74213"
inkscape:cy="-106.74516"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1009"
inkscape:window-x="0"
inkscape:window-y="34"
inkscape:window-maximized="1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-51.093229,-112.06629)">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;line-height:1.25;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="50.648811"
y="120.10715"
id="text4487"><tspan
sodipodi:role="line"
id="tspan4485"
x="50.648811"
y="120.10715"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#008000"
id="tspan4499">Mai <tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000"
id="tspan4507">+</tspan> <tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#0000ff"
id="tspan4511">im</tspan> <tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000"
id="tspan4505">=</tspan> M</tspan><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#0000ff"
id="tspan4489">i</tspan><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#008000"
id="tspan4501">a</tspan><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#0000ff"
id="tspan4491">m</tspan><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10.58333302px;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#008000"
id="tspan4503">i</tspan></tspan></text>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="66.814713mm"
height="18.179388mm"
viewBox="0 0 66.814712 18.179388"
version="1.1"
id="svg8"
inkscape:version="0.92.1 r15371"
sodipodi:docname="stapeldiagramm_delete_head.svg">
<defs
id="defs2">
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-1"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-9"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-1-1"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-9-0"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-1-9"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-9-01"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-1-1-4"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-9-0-8"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-1-1-8"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-9-0-2"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-1-1-4-7"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-9-0-8-7"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-1-1-8-2"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-9-0-2-3"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="2.8800823"
inkscape:cx="173.77873"
inkscape:cy="34.354748"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1009"
inkscape:window-x="0"
inkscape:window-y="34"
inkscape:window-maximized="1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-18.749159,-21.98923)">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;line-height:100%;font-family:arial;-inkscape-font-specification:arial;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="32.269779"
y="26.683567"
id="text4487"><tspan
sodipodi:role="line"
id="tspan4485"
x="32.269779"
y="26.683567"
style="stroke-width:0.26458332px">__main__</tspan><tspan
sodipodi:role="line"
x="32.269779"
y="30.916901"
style="stroke-width:0.26458332px"
id="tspan4489" /></text>
<text
id="text4495"
y="35.649231"
x="30.233728"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;line-height:100%;font-family:arial;-inkscape-font-specification:arial;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
id="tspan4493"
style="stroke-width:0.26458332px"
y="35.649231"
x="30.233728"
sodipodi:role="line">delete_head</tspan></text>
<rect
y="22.244329"
x="44.02486"
height="6.6522541"
width="19.798992"
id="rect4501"
style="opacity:0.99823531;fill:#aaccff;fill-opacity:0.60784314;stroke:#0067ff;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="25.371193"
x="70.026611"
height="14.664925"
width="15.404759"
id="rect4501-5"
style="opacity:0.99823531;fill:#aaccff;fill-opacity:0.60784314;stroke:#0067ff;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;line-height:100%;font-family:arial;-inkscape-font-specification:arial;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="53.946812"
y="26.815056"
id="text4501-1"><tspan
sodipodi:role="line"
x="53.946812"
y="26.815056"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;font-family:FreeMono;-inkscape-font-specification:'FreeMono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
id="tspan4499-9">letters</tspan></text>
<text
id="text4527-3"
y="29.887449"
x="71.979958"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;line-height:100%;font-family:arial;-inkscape-font-specification:arial;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
id="tspan4562-8"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;stroke-width:0.26458332px"
y="29.887449"
x="71.979958"
sodipodi:role="line">0 'a'</tspan><tspan
id="tspan4564-9"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;stroke-width:0.26458332px"
y="34.223423"
x="71.979958"
sodipodi:role="line">1 'b'</tspan><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;stroke-width:0.26458332px"
y="38.559395"
x="71.979958"
sodipodi:role="line"
id="tspan4649">2 'c'</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;line-height:1.25;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="69.611893"
y="24.56098"
id="text4653-5"><tspan
sodipodi:role="line"
id="tspan4651-3"
x="69.611893"
y="24.56098"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;font-family:FreeSans;-inkscape-font-specification:'FreeSans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332">Liste</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-1)"
d="m 75.15151,28.316854 h 3.164677"
id="path5544"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-1-1)"
d="m 75.15151,32.734211 h 3.164677"
id="path5544-8"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-1-9)"
d="m 75.15151,37.021426 h 3.164677"
id="path5544-3"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-1-1-4-7)"
d="m 63.156171,26.02983 5.892976,1.26671"
id="path5544-8-5-7"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-1-1-8-2)"
d="m 63.113662,34.667246 6.022895,-5.808479"
id="path5544-8-2-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<rect
y="31.209995"
x="44.02486"
height="6.6522541"
width="19.798994"
id="rect4501-7"
style="opacity:0.99823531;fill:#aaccff;fill-opacity:0.60784314;stroke:#0067ff;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;line-height:100%;font-family:arial;-inkscape-font-specification:arial;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="61.884323"
y="35.780724"
id="text4501-1-0"><tspan
sodipodi:role="line"
x="61.884323"
y="35.780724"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;font-family:FreeMono;-inkscape-font-specification:'FreeMono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
id="tspan4499-9-5">t</tspan></text>
</g>
</svg>
This diff is collapsed.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="53.864414mm"
height="53.997227mm"
viewBox="0 0 53.864416 53.997227"
version="1.1"
id="svg8"
inkscape:version="0.92.1 r15371"
sodipodi:docname="zustandsdiagramm_listen.svg">
<defs
id="defs2">
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4657"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Send"
orient="auto"
refY="0"
refX="0"
id="Arrow1Send"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4527"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-6"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-6"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-1"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-9"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-4"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-8"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-1-1"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-9-0"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-1-9"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-9-01"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-1-1-4"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-9-0-8"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-1-1-8"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-9-0-2"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="4.0130535"
inkscape:cx="44.35346"
inkscape:cy="101.54364"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1009"
inkscape:window-x="0"
inkscape:window-y="34"
inkscape:window-maximized="1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-21.859876,-20.187424)">
<rect
y="46.112503"
x="46.469715"
height="14.664926"
width="29.122076"
id="rect4501-3"
style="opacity:0.99823531;fill:#aaccff;fill-opacity:0.60784314;stroke:#0067ff;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="23.569387"
x="46.469715"
height="14.664926"
width="29.122076"
id="rect4501"
style="opacity:0.99823531;fill:#aaccff;fill-opacity:0.60784314;stroke:#0067ff;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;line-height:100%;font-family:arial;-inkscape-font-specification:arial;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="33.058067"
y="50.116528"
id="text4501"><tspan
sodipodi:role="line"
x="33.058067"
y="50.116528"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;font-family:FreeMono;-inkscape-font-specification:'FreeMono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
id="tspan4499">numbers →</tspan></text>
<text
id="text4527"
y="50.561028"
x="48.566994"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;line-height:100%;font-family:arial;-inkscape-font-specification:arial;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
id="tspan4525"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;font-family:FreeSans;-inkscape-font-specification:'FreeSans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332px"
y="50.561028"
x="48.566994"
sodipodi:role="line">0 42</tspan><tspan
id="tspan4562"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;font-family:FreeSans;-inkscape-font-specification:'FreeSans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332px"
y="54.896999"
x="48.566994"
sodipodi:role="line">1 ... 123</tspan><tspan
id="tspan4564"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;font-family:FreeSans;-inkscape-font-specification:'FreeSans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332px"
y="59.232971"
x="48.566994"
sodipodi:role="line"> 5</tspan></text>
<text
id="text4538"
y="72.002525"
x="35.596413"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;line-height:100%;font-family:arial;-inkscape-font-specification:arial;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
id="tspan4536"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:FreeMono;-inkscape-font-specification:FreeMono;stroke-width:0.26458332px"
y="72.002525"
x="35.596413"
sodipodi:role="line">empty →</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;line-height:100%;font-family:arial;-inkscape-font-specification:arial;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="33.058067"
y="27.505676"
id="text4501-1"><tspan
sodipodi:role="line"
x="33.058067"
y="27.505676"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;font-family:FreeMono;-inkscape-font-specification:'FreeMono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:0.26458332px"
id="tspan4499-9">cheeses →</tspan></text>
<text
id="text4527-3"
y="28.085644"
x="48.423061"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;line-height:100%;font-family:arial;-inkscape-font-specification:arial;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
id="tspan4562-8"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;stroke-width:0.26458332px"
y="28.085644"
x="48.423061"
sodipodi:role="line">0 'Cheddar'</tspan><tspan
id="tspan4564-9"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;stroke-width:0.26458332px"
y="32.421616"
x="48.423061"
sodipodi:role="line">1 'Edam'</tspan><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;stroke-width:0.26458332px"
y="36.757587"
x="48.423061"
sodipodi:role="line"
id="tspan4649">2 'Gouda'</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;line-height:1.25;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="47.055614"
y="45.055523"
id="text4653"><tspan
sodipodi:role="line"
id="tspan4651"
x="47.055614"
y="45.055523"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;font-family:FreeSans;-inkscape-font-specification:'FreeSans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332">Liste</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;line-height:1.25;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="47.055614"
y="22.759174"
id="text4653-5"><tspan
sodipodi:role="line"
id="tspan4651-3"
x="47.055614"
y="22.759174"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;font-family:FreeSans;-inkscape-font-specification:'FreeSans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332">Liste</tspan></text>
<rect
y="68.595818"
x="46.469715"
height="5.4563317"
width="29.122074"
id="rect4501-3-3"
style="opacity:0.99823531;fill:#aaccff;fill-opacity:0.60784314;stroke:#0067ff;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;line-height:1.25;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
x="47.055614"
y="67.247444"
id="text4653-6"><tspan
sodipodi:role="line"
id="tspan4651-2"
x="47.055614"
y="67.247444"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;font-family:FreeSans;-inkscape-font-specification:'FreeSans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332">Liste</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-1)"
d="m 51.594611,26.515048 h 3.164673"
id="path5544"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-1-1)"
d="m 51.594611,30.932405 h 3.164673"
id="path5544-8"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-1-9)"
d="m 51.594611,35.21962 h 3.164673"
id="path5544-3"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-1-1-4)"
d="m 51.594611,49.059898 h 3.164673"
id="path5544-8-5"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-1-1-8)"
d="m 51.594611,54.998824 3.164673,2.571296"
id="path5544-8-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 56.605343,51.834149 6.85679,3.296534"
id="path6262"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 56.605343,55.130679 6.85679,-3.296534"
id="path6262-0"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
</g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="25.289087mm"
height="11.247954mm"
viewBox="0 0 25.289088 11.247954"
version="1.1"
id="svg8"
inkscape:version="0.92.1 r15371"
sodipodi:docname="zustandsdiagramm_listen_ab.svg">
<defs
id="defs2">
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4657"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Send"
orient="auto"
refY="0"
refX="0"
id="Arrow1Send"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4527"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-6"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-6"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-1"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-9"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-4"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-8"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-1-1"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-9-0"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-1-9"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-9-01"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-1-1-4"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-9-0-8"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-1-1-8"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-9-0-2"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-1-1-2"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-9-0-24"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="20.119102"
inkscape:cx="47.790403"
inkscape:cy="21.255976"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="2560"
inkscape:window-height="1369"
inkscape:window-x="0"
inkscape:window-y="34"
inkscape:window-maximized="1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-46.337215,-23.436887)">
<rect
y="23.569387"
x="46.469715"
height="10.982954"
width="25.024088"
id="rect4501"
style="opacity:0.99823531;fill:#aaccff;fill-opacity:0.60784314;stroke:#0067ff;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text4527-3"
y="28.085644"
x="48.423061"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;line-height:100%;font-family:arial;-inkscape-font-specification:arial;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
id="tspan4562-8"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;stroke-width:0.26458332px"
y="28.085644"
x="48.423061"
sodipodi:role="line">a [1, 2, 3]</tspan><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;stroke-width:0.26458332px"
y="32.421616"
x="48.423061"
sodipodi:role="line"
id="tspan4649">b [1, 2, 3]</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-1-1)"
d="m 51.594611,30.932405 h 3.164673"
id="path5544-8"
inkscape:connector-curvature="0" />
<flowRoot
xml:space="preserve"
id="flowRoot4586"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:1.25;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
transform="matrix(0.26458333,0,0,0.26458333,21.859876,20.187424)"><flowRegion
id="flowRegion4588"><rect
id="rect4590"
width="220.03195"
height="158.98119"
x="-16.446329"
y="71.765808" /></flowRegion><flowPara
id="flowPara4592" /></flowRoot> <flowRoot
xml:space="preserve"
id="flowRoot4594"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:1.25;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
transform="matrix(0.26458333,0,0,0.26458333,21.859876,20.187424)"><flowRegion
id="flowRegion4596"><rect
id="rect4598"
width="270.1185"
height="170.94215"
x="-49.338989"
y="52.827614" /></flowRegion><flowPara
id="flowPara4600" /></flowRoot> <path
style="fill:none;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-1-1-2)"
d="m 51.594611,26.643405 h 3.164673"
id="path5544-8-7"
inkscape:connector-curvature="0" />
</g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="25.289087mm"
height="11.247954mm"
viewBox="0 0 25.289088 11.247954"
version="1.1"
id="svg8"
inkscape:version="0.92.1 r15371"
sodipodi:docname="zustandsdiagramm_listen_ab2.svg">
<defs
id="defs2">
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4657"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Send"
orient="auto"
refY="0"
refX="0"
id="Arrow1Send"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4527"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-6"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-6"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-1"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-9"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-4"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-8"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-1-1"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-9-0"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-1-9"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-9-01"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-1-1-4"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-9-0-8"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-1-1-8"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-9-0-2"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-1-1-3"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-9-0-4"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.0297756"
inkscape:cx="47.790402"
inkscape:cy="15.211968"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="2560"
inkscape:window-height="1369"
inkscape:window-x="0"
inkscape:window-y="34"
inkscape:window-maximized="1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-46.337215,-23.436887)">
<rect
y="23.569387"
x="46.469715"
height="10.982954"
width="25.024088"
id="rect4501"
style="opacity:0.99823531;fill:#aaccff;fill-opacity:0.60784314;stroke:#0067ff;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text4527-3"
y="28.085644"
x="48.423061"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;line-height:100%;font-family:arial;-inkscape-font-specification:arial;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
id="tspan4562-8"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;stroke-width:0.26458332px"
y="28.085644"
x="48.423061"
sodipodi:role="line">a </tspan><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;stroke-width:0.26458332px"
y="32.421616"
x="48.423061"
sodipodi:role="line"
id="tspan4649">b </tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-1-1)"
d="m 51.440471,27.026602 3.164673,1.209878"
id="path5544-8"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<flowRoot
xml:space="preserve"
id="flowRoot4586"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:1.25;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
transform="matrix(0.26458333,0,0,0.26458333,21.859876,20.187424)"><flowRegion
id="flowRegion4588"><rect
id="rect4590"
width="220.03195"
height="158.98119"
x="-16.446329"
y="71.765808" /></flowRegion><flowPara
id="flowPara4592" /></flowRoot> <flowRoot
xml:space="preserve"
id="flowRoot4594"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;line-height:1.25;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
transform="matrix(0.26458333,0,0,0.26458333,21.859876,20.187424)"><flowRegion
id="flowRegion4596"><rect
id="rect4598"
width="270.1185"
height="170.94215"
x="-49.338989"
y="52.827614" /></flowRegion><flowPara
id="flowPara4600" /></flowRoot> <text
id="text4527-3-4"
y="30.03414"
x="56.718792"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;line-height:100%;font-family:arial;-inkscape-font-specification:arial;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;stroke-width:0.26458332px"
y="30.03414"
x="56.718792"
sodipodi:role="line"
id="tspan4649-7">[1, 2, 3]</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-1-1-3)"
d="m 51.440471,31.226168 3.164673,-1.170426"
id="path5544-8-0"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
</g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="68.106049mm"
height="10.512571mm"
viewBox="0 0 68.106051 10.512571"
version="1.1"
id="svg8"
inkscape:version="0.92.1 r15371"
sodipodi:docname="zustandsdiagramm_zeichenketten.svg">
<defs
id="defs2">
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4657"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Send"
orient="auto"
refY="0"
refX="0"
id="Arrow1Send"
style="overflow:visible"
inkscape:isstock="true">
<path
id="path4527"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-6"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-6"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-1"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-9"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-4"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-8"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-1-1"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-9-0"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-1-9"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-9-01"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-1-1-4"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-9-0-8"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-1-1-8"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-9-0-2"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-1-1-2"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-9-0-5"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM-1-7"
style="overflow:visible"
inkscape:isstock="true">
<path
inkscape:connector-curvature="0"
id="path4657-9-4"
d="M 5.77,0 -2.88,5 V -5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="scale(0.4)" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="3.4071072"
inkscape:cx="201.47127"
inkscape:cy="19.750798"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="2560"
inkscape:window-height="1369"
inkscape:window-x="0"
inkscape:window-y="34"
inkscape:window-maximized="1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-9.539843,-23.436887)">
<rect
y="23.569387"
x="46.469715"
height="10.247571"
width="29.122074"
id="rect4501"
style="opacity:0.99823531;fill:#aaccff;fill-opacity:0.60784314;stroke:#0067ff;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<g
id="g5587">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;line-height:100%;font-family:arial;-inkscape-font-specification:arial;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="48.423061"
y="28.085644"
id="text4527-3"><tspan
sodipodi:role="line"
x="48.423061"
y="28.085644"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;stroke-width:0.26458332px"
id="tspan4562-8">a </tspan><tspan
id="tspan4649"
sodipodi:role="line"
x="48.423061"
y="32.421616"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;stroke-width:0.26458332px">b </tspan></text>
</g>
<path
style="fill:none;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-1)"
d="m 51.594611,26.515048 4.48483,1.491051"
id="path5544"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-1-1)"
d="m 51.594611,30.932405 4.48483,-1.448892"
id="path5544-8"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<g
id="g4736"
transform="translate(21.625262,1.9786091)">
<rect
style="opacity:0.99823531;fill:#aaccff;fill-opacity:0.60784314;stroke:#0067ff;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4501-9"
width="29.122074"
height="10.247571"
x="-11.952919"
y="21.590778" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;line-height:100%;font-family:arial;-inkscape-font-specification:arial;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="-9.9995728"
y="26.107035"
id="text4527-3-9"><tspan
sodipodi:role="line"
x="-9.9995728"
y="26.107035"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;stroke-width:0.26458332px"
id="tspan4562-8-4">a 'banana'</tspan><tspan
id="tspan4649-5"
sodipodi:role="line"
x="-9.9995728"
y="30.443007"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;stroke-width:0.26458332px">b 'banana'</tspan></text>
<path
inkscape:connector-curvature="0"
id="path5544-9"
d="M -6.828023,24.53644 H -3.66335"
style="fill:none;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-1-7)" />
<path
inkscape:connector-curvature="0"
id="path5544-8-3"
d="M -6.828023,28.953797 H -3.66335"
style="fill:none;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-1-1-2)" />
</g>
<g
transform="translate(9.4948368,2.1569433)"
id="g5587-1">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;line-height:100%;font-family:arial;-inkscape-font-specification:arial;text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="48.423061"
y="28.085644"
id="text4527-3-90"><tspan
id="tspan4649-6"
sodipodi:role="line"
x="48.423061"
y="28.085644"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:FreeSans;-inkscape-font-specification:FreeSans;text-align:start;text-anchor:start;stroke-width:0.26458332px">'banana' </tspan></text>
</g>
</g>
</svg>
This diff is collapsed.
Sie können sich die Notebooks hier ansehen aber nicht ausführen. Dazu * Seminar Problemorientierte Programmierung
müssen Sie sie herunterladen und in Jupyter öffnen. Klicken Sie dazu
auf der Seite mit dem jeweiligen Notebook *mit der rechten Maustaste*
auf den Button "Open Raw" und speichern Sie die geöffnete Datei, indem
Sie "*Ziel speichern unter ...*" (oder "Link speichern unter ...")
wählen:
[[file:../img/open_raw.png]] Dieses Projekt enthält Jupyter-Notebooks für einen
Python-Programmierkurs. Die Notebooks sind im Wesentlichen eine
Übersetzung der 2. Ausgabe des Buches [[http://greenteapress.com/wp/think-python-2e/][Think Python]] von
Allen B. Downey. Es gibt das Buch auch in einer offiziellen deutschen
Übersetzung mit dem Titel /Programmieren lernen mit Python/.
/(Hinweis: dies funktioniert oft nicht im Edge-Browser, verwenden Sie Sie finden die Notebooks im Ordner [[file:notebooks/][notebooks]]. Sie können sich die
also ggf. Firefox, Chrome oder Opera.)/ Notebooks hier in GitLab ansehen aber nicht ausführen. Dazu müssen Sie
sie herunterladen und in Jupyter öffnen. Klicken Sie dazu auf der
Webseite mit dem jeweiligen Notebook auf den Button "Download" und
speichern Sie es als Datei:
Alternativ können Sie auch direkt hier die Dateien herunterladen, [[file:img/download.png]]
Alternativ können Sie die Notebooks auch direkt hier herunterladen,
indem Sie mit der rechten Maustaste auf die Links klicken und /Ziel indem Sie mit der rechten Maustaste auf die Links klicken und /Ziel
speichern unter.../ wählen: speichern unter.../ wählen:
- [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar00.ipynb][Einführung]] - [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar00.ipynb][Einführung]]
- [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar01.ipynb][1: Die ersten Programme]] - [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar01.ipynb][1: Operatoren, Ausdrücke, Typen]]
- [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar02.ipynb][2: Variablen, Ausdrücke und Anweisungen]] - [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar02.ipynb][2: Variablen und Anweisungen]]
- [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar03.ipynb][3: Funktionen]] - [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar03.ipynb][3: Funktionen]]
- [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar03extra.ipynb][3 extra: reguläre Ausdrücke]] - [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar04.ipynb][4: Turtle: Schnittstellenentwurf]]
- [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar04.ipynb][4: Fallstudie: Schnittstellenentwurf]]
- [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar05.ipynb][5: Verzweigungen und Rekursion]] - [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar05.ipynb][5: Verzweigungen und Rekursion]]
- [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar06.ipynb][6: Ertragreiche Funktionen]]
- [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar07.ipynb][7: Iteration und Suche]]
- [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar08.ipynb][8: Reguläre Ausdrücke und Zeichenketten]]
- [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar09.ipynb][9: Listen]]
- [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar10.ipynb][10: Assoziative Datenfelder]]
- [[https://scm.cms.hu-berlin.de/ibi/python/raw/master/notebooks/seminar11.ipynb][11: Tupel]]
Merken Sie sich, wo Sie die Dateien gespeichert haben und navigieren
Sie dann mit Jupyter zu diesem Ordner, um sie zu öffnen.
[[file:img/cc-by-nc.png]] Dieser Kurs ist als freies Werk unter der Lizenz
[[http://creativecommons.org/licenses/by-nc/3.0/][Creative Commons Attribution-NonCommercial 3.0 Unported]] verfügbar. Sie
dürfen die Inhalte kopieren, verteilen und verändern, solange Sie die
Urheber nennen und sie nicht für kommerzielle Zwecke nutzen.
** Tipps zur Einrichtung von Python und Jupyter
*** Allgemeine Hinweise
- Im Kurs wird durchgängig Python 3 benutzt. Daher bitte darauf
achten, keine alte Python-Version (2.6, 2.7, etc.) zu
installieren. Am besten mindestens Python 3.5.3 benutzen, aktuellere
Versionen sind auch ok.
- Helfen Sie sich gegenseitig bei der Installation und unterstützen
Sie sich bei Problemen. Benutzen Sie auch gerne das Forum bei einem
spezifischen Problem, um Hilfe von Ihren Kommiliton*innen zu
erhalten. Wenn niemand helfen kann, helfen wir Ihnen.
*** Windows
- [[https://www.anaconda.com/download]]
- [[https://technivore.org/2016/02/27/python-jupyter-windows/]]
*** Linux
- Je nach Distribution das passende Paket installieren, z.B. in Debian mittels ~apt-get install python3-notebook~.
- Anaconda enthält sowohl Jupyter Notebooks, als auch Python 3.5 oder 3.6 Kernel und einige wichtige Python-Bibliotheken wie z.B. Numpy.
- Die aktuelle Anaconda-Distribution ist hier zu finden: [[https://www.anaconda.com/download/#linux]]
- Ältere Anaconda-Distributionen finden sich hier: [[https://docs.anaconda.com/free/anaconda/reference/packages/oldpkglists/]]
- [[https://docs.anaconda.com/anaconda/install/linux][Hilfestellungen zur Installation von Conda]]
*** Mac
- Die aktuelle Anaconda-Distributon finden sich hier: [[https://www.anaconda.com/download/#macos]]
- Mac OS X Installations-Hilfe: [[https://docs.anaconda.com/anaconda/install/mac-os#macos-graphical-install]]
** Hinweise zu GitLab
Das System, auf dem Sie diese Seite gerade lesen und in dem Sie die
Notebooks finden, nennt sich *GitLab* und ist eine professionelle
Umgebung zur kollaborativen Softwareentwicklung. Hier können
Programmierer*innen Quellcode abspeichern, Änderungen verfolgen und
rückgängig machen, Fehler melden und Code dokumentieren.
Wenn Sie *Fehler* in den Jupyter-Notebooks finden oder *Hinweise zur
Verbesserung* haben, können Sie diese im Menü links unter [[https://scm.cms.hu-berlin.de/ibi/python/issues][Issues]]
hinzufügen.
Fortgeschrittene können sich dieses Projekt auch auf ihrem eigenen
Rechner *mittels [[https://de.wikipedia.org/wiki/Git][Git]] klonen* und dann immer die aktuellste Version der
Notebooks herunterladen.
Sie können die Möglichkeiten des Systems später auch für Ihre *Haus-
oder Abschlussarbeiten* nutzen, indem Sie [[https://scm.cms.hu-berlin.de/projects/new][ein eigenes Projekt anlegen]]
und dort Ihre Dateien sicher abspeichern. Dazu sollten Sie sich mit
der Versionsverwaltungssoftware [[https://de.wikipedia.org/wiki/Git][Git]] vertraut machen.
** Ressourcen rund um Python
- Ein [[http://introtopython.org/][freier Python-Kurs]] (auf Englisch), ebenfalls basierend auf
Jupyter-Notebooks.
- Die [[https://docs.python.org/3/][offizielle Dokumentation für Python 3]].
- Eine [[https://scm.cms.hu-berlin.de/ibi/notebooks][Sammlung interessanter Notebooks]] mit vielen Beispielen.
# https://github.com/jupyter/jupyter/wiki/A-gallery-of-interesting-Jupyter-Notebooks
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
# 1. Hausaufgabe # 1. Hausaufgabe
Geben Sie diese Hausaufgabe gemeinsam mit Ihrem/r Partner/in ab. Füllen Sie dazu dieses Notebook aus und speichern Sie es ab (Disketten-Icon oben links). Laden Sie dann die Datei (hausaufgabe1.ipynb) in Moodle hoch. Verwenden Sie Kommentare im Python-Quellcode und Markdown-Textboxen im Jupyter-Notebook ([Syntax-Beispiele](https://de.wikipedia.org/wiki/Markdown#Auszeichnungsbeispiele)) um ihr Programm zu kommentieren. ### Bitte lesen Sie sich die nachfolgenden Hinweise zur Hausaufgabe gut durch.
Geben Sie diese Hausaufgabe gemeinsam als Pair Programming Gruppe ab. Füllen Sie dazu dieses Notebook aus und speichern Sie es ab (Disketten-Icon oben links). Laden Sie dann die Datei unter `Hausaufgabe 1` in Moodle hoch.
**Tipps und Anmerkungen**:
- Es reicht, wenn ein Gruppenmitglied die Hausaufgabe einreicht. Passen Sie auf, dass Sie in Moodle auf Abgabe drücken, damit es nicht nur ein Entwurf ist.
- Nutzen Sie das Wissen aus den bisher bearbeiteten Notebooks (1-3).
- Nutzen Sie http://pythontutor.com, um ihren Code nachvollziehen zu können und Fehler zu finden!
- Fügen Sie außerdem **kurze Kommentare** zu ihrem Code hinzu, mit denen Sie erklären, was die Funktion macht. Dies kann man durch zwei Varianten machen:
- inline-Kommentare (Code kommentieren): `#`
- Docstrings (Beschreibung der Funktion): `''' '''`
- Bitte ändern Sie den Dateinamen ihrer Hausaufgabe zu: **hausaufgabe1_nachnamePartnerIn1_nachnamePartnerIn2.ipynb**
- z.B. `hausaufgabe1_hachmeier_jaeschke.ipynb`
- Das können Sie einfach machen, indem Sie **jetzt** oben links auf `hausaufgabe1` klicken und den neuen Namen eingeben.
- Falls Sie **generative KI** in der Hausaufgabe genutzt haben wie bspw. ChatGPT: Dokumentieren Sie Ihre Nutzung. Geben Sie **alle** Eingaben an, die Sie in der jeweiligen Aufgabe verwendet haben und beschreiben Sie, welche Änderungen Sie vor Abgabe zur Anpassung an die jeweilige Aufgabe vornehmen mussten. Testen Sie Ihre Implementierung hier besonders gründlich und kommentieren Sie **jede Codezeile** sinnvoll. Bitte beachten Sie, dass sie vollständig für den generierten Code verantwortlich sind.
- Bei (Verständnis-)Fragen können Sie mich **frühzeitig** per E-Mail oder während der Sitzungen erreichen.
Wir wünschen viel Erfolg beim Lösen der Aufgaben! Wir wünschen viel Erfolg beim Lösen der Aufgaben!
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
## Aufgabe 1 ## Aufgabe 1
Was gibt jede der folgenden Anweisungen aus? Erklären Sie jeweils die Ausgabe. Was gibt jede der folgenden Anweisungen aus? Erklären Sie jeweils die Ausgabe.
- Welche Funktionen werden genutzt und was machen diese Funktionen? (die `print` -Funktion muss nicht erklärt werden). Achten Sie darauf, in welcher Reihenfolge die Anweisungen ausgeführt werden.
- Was ist die Ausgabe? Geben Sie Wert und Datentyp an.
- Nutzen Sie Kommentare wie im Beispiel beschrieben.
- Nutzen Sie **mehrere Zeilen pro Anweisung, damit Ihre Antwort in die Breite des Codeblocks passt** und man nicht hin- und herscrollen muss. (Sie finden heraus, was ich meine, wenn es passiert ;) )
Beispiel
```
print("a"+"b")
# zwei Zeichenketten werden durch den Operator "+" verkettet
# Ausgabe: "ab", Datentyp: Zeichenkette/string
```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` ``` python
print(2 + 3) print(2 + 3)
#
#
print(2.2 + 3.3) print(2.2 + 3.3)
#
#
```
%% Cell type:code id: tags:
``` python
print('2' + '3') print('2' + '3')
#
#
print('2.2' + '3.3') print('2.2' + '3.3')
#
#
```
%% Cell type:code id: tags:
``` python
print(str(2) + str(3)) print(str(2) + str(3))
#
#
print(str(2.2) + str(3.3)) print(str(2.2) + str(3.3))
#
#
```
%% Cell type:code id: tags:
``` python
print(int('2') + int('3')) print(int('2') + int('3'))
#
#
print(int('2' + '3')) print(int('2' + '3'))
#
#
```
%% Cell type:code id: tags:
``` python
print(float('2') + float('3')) print(float('2') + float('3'))
#
#
print(float('2' + '3')) print(float('2' + '3'))
#
#
```
%% Cell type:code id: tags:
``` python
print(int(2.6 + 2.6)) print(int(2.6 + 2.6))
#
#
print(int(2.6) + int(2.6)) print(int(2.6) + int(2.6))
#
#
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
## Aufgabe 2 ## Aufgabe 2
**Tipp**: Wichtig bei den folgenden Aufgaben ist der Umgang mit Zeichenketten und der `print`-Funktion. Das haben Sie in den seminar-Notebooks schon gelernt. Gehen Sie diese zu Beginn der Hausaufgabe noch einmal durch und achten Sie, mit welchen **Operatoren** man Zeichenketten zusammenfügen und verketten kann.
### Aufgabe 2a
Ihre Aufgabe ist es, eine Funktion `boxprint` zu implementieren, die eine als Argument übergegebene Zeichenkette innerhalb einer Box ausgibt. Die horizontalen Linien der Box sollen durch `-` erzeugt werden, die vertikalen Linien durch `|` und die Ecken durch `+`. Zwischen der Zeichenkette und dem linken und rechten Rand der Box soll jeweils genau ein Leerzeichen stehen. Ihre Aufgabe ist es, eine Funktion `boxprint` zu implementieren, die eine als Argument übergegebene Zeichenkette innerhalb einer Box ausgibt. Die horizontalen Linien der Box sollen durch `-` erzeugt werden, die vertikalen Linien durch `|` und die Ecken durch `+`. Zwischen der Zeichenkette und dem linken und rechten Rand der Box soll jeweils genau ein Leerzeichen stehen.
Beispiel: Bei Übergabe des Arguments `Hello World!` soll die Funktion folgende Ausgabe erzeugen: Beispiel: Bei Übergabe des Arguments `Hello World!` soll die Funktion folgende Ausgabe erzeugen:
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
``` ```
+--------------+ +--------------+
| Hello World! | | Hello World! |
+--------------+ +--------------+
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Überlegen Sie zunächst, wie Sie das Problem lösen könnten und beschreiben Sie hier kurz ihre Überlegungen bzw. ihr Vorgehen: Überlegen Sie zunächst, wie Sie das Problem lösen könnten und beschreiben Sie hier kurz ihre Überlegungen bzw. ihr Vorgehen:
- -
- -
- -
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` ``` python
# Implementieren Sie hier ihre Funktion def boxprint(zeichenkette):
'''Die Funktion nimmt eine Zeichenkette entgegen und gibt
die Zeichenkette innerhalb einer Textbox aus.
'''
pass # Diese Zeile können Sie bei der Implementierung löschen
```
%% Cell type:code id: tags:
# Testen Sie hier ihre Funktion; fügen Sie auch eigene Tests hinzu ``` python
# Funktionsaufrufe
boxprint("Hello World!") boxprint("Hello World!")
boxprint("Dieser Text muss auch in die Box passen.") boxprint("Das Reh springt hoch, das Reh springt weit. Warum auch nicht, es hat ja Zeit.")
```
%% Cell type:code id: tags:
``` python
# Schreiben Sie hier zwei Funktionsaufrufe der Funktion mit eigenen Argumenten
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
### Aufgabe 2b
Mit dem Linux-Programm [cowsay](https://en.wikipedia.org/wiki/Cowsay) kann man verschiedene Tiere "Sprüche klopfen" lassen: Mit dem Linux-Programm [cowsay](https://en.wikipedia.org/wiki/Cowsay) kann man verschiedene Tiere "Sprüche klopfen" lassen:
``` ```
________ ________
< Muuuh! > < Muuuh! >
-------- --------
\ ^__^ \ ^__^
\ (oo)\_______ \ (oo)\_______
(__)\ )\/\ (__)\ )\/\
||----w | ||----w |
|| || || ||
``` ```
Schreiben Sie eine Funktion `stegosay`, die einen als Argument übergebenen Text folgendermaßen ausgibt: Schreiben Sie eine Funktion `stegosay`, die einen als Argument übergebenen Text folgendermaßen ausgibt:
``` ```
___________________________ ___________________________
( Wo bleibt mein Frühstück? ) ( Wo bleibt mein Frühstück? )
--------------------------- ---------------------------
o . . o . .
o / `. .' ' o / `. .' '
o .---. < > < > .---. o .---. < > < > .---.
o | \ \ - ~ ~ - / / | o | \ \ - ~ ~ - / / |
_____ ..-~ ~-..-~ _____ ..-~ ~-..-~
| | \~~~\.' `./~~~/ | | \~~~\.' `./~~~/
--------- \__/ \__/ --------- \__/ \__/
.' O \ / / \ ' .' O \ / / \ '
(_____, `._.' | } \/~~~/ (_____, `._.' | } \/~~~/
`----. / } | / \__/ `----. / } | / \__/
`-. | / | / `. ,~~| `-. | / | / `. ,~~|
~-.__| /_ - ~ ^| /- _ `..-' ~-.__| /_ - ~ ^| /- _ `..-'
| / | / ~-. `-. _ _ _ | / | / ~-. `-. _ _ _
|_____| |_____| ~ - . _ _ _ _ _> |_____| |_____| ~ - . _ _ _ _ _>
``` ```
Nutzen Sie dazu Ihre bei der Programmierung von `boxprint` gesammelte Erfahrung. Nutzen Sie dazu Ihre bei der Programmierung von `boxprint` gesammelte Erfahrung. Auch hier soll das Argument eine variable Länge aufweisen können, die "Sprechbox" soll sich anpassen.
**Achung**: Die Denkblase ist verschieden zu der Sprachblase auf Aufgabe 2a.
**Tipp**: Man kann den Stegosaurus im Editiermodus kopieren, Sie müssen nicht jedes Zeichen selbst abtippen.
Durch
```
'''
Dinoabbildung Zeile 1
Dinoabbildung Zeil 2
...
Dinoabbildung Zeile ...
'''
```
können Sie den Dino vollständig im Editormodus dieses Blocks herauskopieren und in Ihre Funktion einfügen.
Freiwillige Erweiterung für Fortgeschrittene: Erweitern Sie die Funktion um ein Argument, mit dem eine maximale Breite (Anzahl Zeichen) übergeben werden kann, so dass die ausgegebene Box nicht breiter ist. Implementieren Sie dann die Behandlung von Zeichenketten, die länger als die vorgegebene Breite sind. Sie haben zwei Möglichkeiten: a) die Zeichenkette abschneiden, b) die Zeichenkette umbrechen. Entscheiden Sie sich für eine der beiden Varianten. Hinweis: auf die ersten `k` Zeichen einer Zeichenkette `s` können Sie mittels `s[0:k]` zugreifen. Analog können Sie auf das 2. bis 4. Zeichen mittels `s[1:4]` zugreifen, usw. Freiwillige Erweiterung für Fortgeschrittene: Erweitern Sie die Funktion um ein Argument, mit dem eine maximale Breite (Anzahl Zeichen) übergeben werden kann, so dass die ausgegebene Box nicht breiter ist. Implementieren Sie dann die Behandlung von Zeichenketten, die länger als die vorgegebene Breite sind. Sie haben zwei Möglichkeiten: a) die Zeichenkette abschneiden, b) die Zeichenkette umbrechen. Entscheiden Sie sich für eine der beiden Varianten. Hinweis: auf die ersten `k` Zeichen einer Zeichenkette `s` können Sie mittels `s[0:k]` zugreifen. Analog können Sie auf das 2. bis 4. Zeichen mittels `s[1:4]` zugreifen, usw.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` ``` python
print("""
o . .
o / `. .' '
o .---. < > < > .---.
o | \ \ - ~ ~ - / / |
_____ ..-~ ~-..-~
| | \~~~\.' `./~~~/
--------- \__/ \__/
.' O \ / / \ '
(_____, `._.' | } \/~~~/
`----. / } | / \__/
`-. | / | / `. ,~~|
~-.__| /_ - ~ ^| /- _ `..-'
| / | / ~-. `-. _ _ _
|_____| |_____| ~ - . _ _ _ _ _>
""")
```
%% Cell type:code id: tags:
``` python
def stegosay(z):
'''Diese Funktion nimmt eine Zeichenkette entgegen und gibt
die Zeichenkette innerhalb einer Denkblase eines Dinos wieder aus.
In dieser Funktion soll der Dinosaurier inklusive der Denkblase ausgegeben werden.
'''
pass # Diese Zeile können Sie bei der Implementierung löschen
```
%% Cell type:code id: tags:
``` python
# Testen Sie hier ihre Funktion; fügen Sie auch eigene Tests hinzu
stegosay("Wo bleibt mein Frühstück?")
stegosay("Auf einem Baum, da saß ein Specht. Der Baum war hoch, dem Specht war schlecht.")
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
## Aufgabe 3 ## Aufgabe 3
### Aufgabe 3a
Schreiben Sie eine Funktion `sinprint`, die die Sinusfunktion (`math.sin`) im Bereich zwischen 0 und 2π um 90° gedreht ausgibt, also ungefähr so: Schreiben Sie eine Funktion `sinprint`, die die Sinusfunktion (`math.sin`) im Bereich zwischen 0 und 2π um 90° gedreht ausgibt, also ungefähr so:
``` ```
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
``` ```
Hinweise: Hinweise:
- Sie können die Aufgabe auch ohne eine Schleife lösen, aber schöner ist es mit einer Schleife. Sie kennen die Syntax und Semantik der `while`-Schleife schon aus der Vorlesung. Sie funktioniert in Python genau so, wie sie für den Pseudocode definiert wurde. - Lösen Sie diese Aufgabe mit Hilfe einer Schleife. Sie kennen die Syntax und Semantik der `while`-Schleife schon aus der Vorlesung. Sie funktioniert in Python genau so, wie sie für den Pseudocode definiert wurde.
- Sie müssen selbst entscheiden, wieviele Werte Sie im verlangten Intervall berechnen. Die Kurve oben wurde mit einem Rasterabstand von 0.2 berechnet (d.h., für die Werte 0, 0.2, 0.4, 0.6, ..., 6.2). - Sie müssen selbst entscheiden, wieviele Werte Sie im verlangten Intervall berechnen. Die Kurve oben wurde z.B. mit einem Rasterabstand von 0.2 berechnet (d.h., für die Werte 0, 0.2, 0.4, 0.6, ..., 6.2). Dies können Sie übernehmen.
- Denken Sie daran, dass Sie mit der `int`-Funktion eine Gleitkommazahl in eine ganze Zahl umwandeln können (der Dezimalanteil wird abgeschnitten).
- Damit Sie die Funktion `math.sin` nutzen können, müssen Sie anfangs das `math`-Modul importieren. - Damit Sie die Funktion `math.sin` nutzen können, müssen Sie anfangs das `math`-Modul importieren.
- Folgende Probleme müssen gelöst werden:
- Umwandeln von Gleitkommazahlen in Ganzzahlen
- Umwandeln von negativen in positive Zahlen
- Nutzen Sie die `print`-Funktion, um die **Sternchen** (*) an verschiedenen Stellen zu zeichnen.
- Falls Sie das Problem nicht lösen können, fragen Sie im Seminar nach. Dort können Sie wertvolle Tipps erhalten.
%% Cell type:code id: tags:
``` python
# Beispiel einer einfachen while-Schleife
i = 0
while i < 5:
print(i)
i = i + 1
```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` ``` python
import math
def sinprint(): def sinprint():
# Implementieren Sie hier die Funktion sinprint '''Diese Funktion zeichnet eine Sinus-Kurve ohne eine plot-Bibliothek.'''
pass # Diese Zeile können Sie bei der Implementierung löschen
sinprint() # Testaufruf
```
%% Cell type:code id: tags:
``` python
# Funktionsaufruf
sinprint()
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
### Aufgabe 3b
Ändern Sie die Funktion `sinprint`, so dass eine beliebige Funktion gezeichnet werden kann. Diese Funktion sollte als Argument übergeben werden können. Also beispielsweise so: Ändern Sie die Funktion `sinprint`, so dass eine beliebige Funktion gezeichnet werden kann. Diese Funktion sollte als Argument übergeben werden können. Also beispielsweise so:
```python ```python
funcprint(math.sin) funcprint(math.sin)
``` ```
Ändern Sie gleich auch den Namen der Funktion zu `funcprint`, da sie ja jetzt nicht nur die Sinusfunktion ausgeben kann. (In der 2. Aufgabe des 3. Jupyter-Notebooks haben wir die Funktion `do_twice` kennengelernt - dort sehen Sie, wie Sie Funktionen als Argumente übergeben und verwenden können.) Ändern Sie gleich auch den Namen der Funktion zu `funcprint`, da sie ja jetzt nicht nur die Sinusfunktion ausgeben kann. (In der 2. Aufgabe des 3. Jupyter-Notebooks haben wir die Funktion `do_twice` kennengelernt - dort sehen Sie, wie Sie Funktionen als Argumente übergeben und verwenden können.)
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` ``` python
# Implementieren Sie hier die Funktion funcprint import math
def funcprint(func):
'''Diese Funktion nimmt den Parameter `func` entgegen, der ein Funktionsobjekt repräsentiert und zeichnet
die Funktionskurve
'''
pass # Diese Zeile können Sie bei der Implementierung löschen
```
%% Cell type:code id: tags:
# Testen Sie hier die Funktion funcprint ``` python
funcprint(math.erf) # Funktionsaufruf
funcprint(math.sin)
funcprint(math.cos)
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
### Aufgabe 3c
Wenn alles geklappt hat, enthält Ihre Funktion jetzt einige Werte, die als Literale angegeben sind, z.B. Wenn alles geklappt hat, enthält Ihre Funktion jetzt einige Werte, die als Literale angegeben sind, z.B.
- den Anfangs- und Endwert des Intervalls, in dem die Funktion gezeichnet werden soll - den Anfangs- und Endwert des Intervalls, in dem die Funktion gezeichnet werden soll
- die Schrittweite - die Schrittweite
- die Skalierung (Vergrößerung)
- die Verschiebung des Nullpunkts - die Verschiebung des Nullpunkts
- Skalierung in Richtung der x-Achse (Stauchung, Streckung)
- Skalierung in Richtung der y-Achse (Stauchung, Streckung)
Erweitern Sie die Funktion `funcprint`, so dass alle diese Werte als Argumente übergeben werden können.
Fangen Sie mit einem Parameter an und versuchen Sie nach und nach alle Parameter einzusetzen. Falls die nicht funktioniert, rufen Sie Ihre Funktion mit den Parametern auf, die funktionieren.
%% Cell type:code id: tags:
Ändern Sie die Funktion `funcprint`, so dass alle diese Werte als Argumente übergeben werden können. Testen Sie die Funktion dann mit der Funktion `math.log` als Argument. Dafür müssen Sie den Anfangswert so ändern, dass 0 nicht enthalten ist (da der Logarithmus von 0 nicht definiert ist). ``` python
import math
def funcprint_advanced(func, start, end, step, shift, scale_y):
'''Diese Funktion nimmt den Parameter `func` entgegen, der ein Funktionsobjekt repräsentiert und zeichnet
die Funktionskurve. Zudem nimmt die Funktion mehrere Parameter entgegen, die die Kurve verändern können.
'''
pass # Diese Zeile können Sie bei der Implementierung löschen
```
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` ``` python
# Funktionsrauf
funcprint_advanced(math.cos, 2, 10, 0.1, 30, 5)
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
![Smiley](https://upload.wikimedia.org/wikipedia/commons/0/0f/Face-glasses.svg) ![Smiley](https://upload.wikimedia.org/wikipedia/commons/0/0f/Face-glasses.svg)
%% Cell type:markdown id: tags:
![CC-BY-NC](https://scm.cms.hu-berlin.de/ibi/python/-/raw/master/img/cc-by-nc.png)
Dieses Notebook ist als freies Werk unter der Lizenz [Creative Commons Attribution-NonCommercial 3.0 Unported](http://creativecommons.org/licenses/by-nc/3.0/) verfügbar. Sie dürfen die Inhalte kopieren, verteilen und verändern, solange Sie die Urheber nennen und sie nicht für kommerzielle Zwecke nutzen.
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
notebooks/pics/pile_triangle.png

2.27 KiB