From 31715da813c60e88e3692ee335d2eb15377725e5 Mon Sep 17 00:00:00 2001 From: Laborratte5 Date: Wed, 15 May 2024 00:00:47 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20Add=20section=20about=20"Z=C3=A4hlschle?= =?UTF-8?q?ifen"=20to=20chapter=20"Schleifen"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/01_grundlagen.ipynb | 123 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) diff --git a/src/01_grundlagen.ipynb b/src/01_grundlagen.ipynb index e21667e..859275d 100644 --- a/src/01_grundlagen.ipynb +++ b/src/01_grundlagen.ipynb @@ -592,6 +592,129 @@ "else:\n", " print(\"x ist größer als 5\")" ] + }, + { + "cell_type": "markdown", + "id": "f46a9e10-24ff-4d7f-a31b-3a1c5d47df61", + "metadata": { + "editable": false, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "## Schleifen\n", + "\n", + "Manchmal möchte man bestimmte Anweisungen mehrfach ausführen.\n", + "Die einfachste Möglichkeit, dies zu tun ist, die Anweisung mehrfach anzugeben." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2756a1e1-ce6e-4a1c-b594-9574483bbaa3", + "metadata": { + "editable": false, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "print(\"Ich möchte drei mal ausgegebe werden\")\n", + "print(\"Ich möchte drei mal ausgegebe werden\")\n", + "print(\"Ich möchte drei mal ausgegebe werden\")" + ] + }, + { + "cell_type": "markdown", + "id": "edd8e955-81f9-495f-bd14-faf11d40d970", + "metadata": { + "editable": false, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "Wenn wir den gleichen Text aber 15 mal ausgeben wollen, macht es nicht mehr so viel Spaß die gleiche Zeile 15 mal zu schreiben.\n", + "Zusätzlich ist ein wichtiges Gebot bei dem schreiben von Code \"DRY\" (Don't repeat yourself), oder auf Deutsch \"Wiederhole dich nicht\".\n", + "Das ist wichtig, da man sonst bei nachträglichen Änderungen daran denken muss, die Änderung bei allen Wiederholungen durchzuführen.\n", + "Wenn das ursprüngliche Schreiben dieses Codes allerdings schon eine Weile her ist, ist die Wahrscheinlichkeit diese Änderung an einer Stelle zu vergessen sehr hoch und das führt dann zu Fehlern (Bugs). \n", + "Außerdem möchten wir bestimmte Teile des Programms gegebenenfalls solange ausführen, bis eine bestimmte Bedingung erfüllt ist.\n", + "(Beispielsweise möchten wir solange warten, bis ein Knopf gedrückt wird)\n", + "\n", + "Um diese Problem zu lösen, gibt es sogenannte Schleifen.\n", + "Typischerweise unterscheidet man zwei Arten von Schleifen:\n", + "- Zählschleifen\n", + "- while-Schleife (while = solange)\n", + "\n", + "### Zählschleifen\n", + "\n", + "Zählschleifen eignen sich, wenn man Anweisungen eine vor der Ausführen festgelegte Anzahl oft wiederholen möchte.\n", + "Eine Zählschleife oder auch `for` Schleife genannt, wird in Python folgendermaßen realisiert:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "06b14767-7839-4af3-bcbb-8dd579548496", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "for i in range(15):\n", + " print(\"Ich bin der\", i, \"te Schleifendurchlauf\")" + ] + }, + { + "cell_type": "markdown", + "id": "34e079dc-90cf-4a51-b477-cbd57c50ef55", + "metadata": { + "editable": false, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "Hierbei fallen zwei Dinge auf, zum einen hat man in dem sogenannten Rumpf der Schleife (die darauf folgenden eingerückten Codezeilen) Zugriff auf die Anzahl der bisherigen Durchläufe der Schleife.\n", + "Zum anderen sieht man, dass Computer typischerweise bei 0 anfangen zu zählen. \n", + "Bei Schleifen gilt, wie auch bei der Verzweigung, alle Zeilen die nach der Schleifendefinition (`for ...`) um vier Leerzeichen eingerückt sind, zählen zu dem Rumpf der Schleife und werden für jeden Schleifendurchlauf nacheinander ausgeführt.\n", + "Mithilfe der `range()` Funktion kann man die Anzahl der Schleifendurchläufe bestimmen. \n", + "Jetzt wollen wir die LED unseres Mikrocontrollers zehn mal blinken lassen.\n", + "Da der Mikrocontroller die Schleife so schnell ausführen würde, dass unser Auge das Blinken gar nicht mehr Wahrnimmt, verlangsamen wir die Ausführung künstlich.\n", + "Mit der `time.sleep()` Funktion kann man (in Sekunden) angeben, wie lange der Mikrocontroller warten soll, bis er mit der nächsten Anweisung weiter macht.\n", + "Ergänzt dazu in folgendem Codeblock die fehlenden Stellen (die grünen Kommentaren helfen euch)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "df0c3b19-582c-4e15-beab-7fae169b099f", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "import time\n", + "for i in range(10):\n", + " # LED anschalten\n", + " time.sleep(0.5) # Warte eine halbe Sekunde\n", + " # LED ausschalten\n", + " time.sleep(0.5) # Warte eine halbe Sekunde" + ] } ], "metadata": {