feat: Add section about "Zählschleifen" to chapter "Schleifen"

This commit is contained in:
Laborratte5 2024-05-15 00:00:47 +02:00
parent 7f19c3fd70
commit 31715da813
Signed by: Laborratte5
GPG key ID: 3A30072E35202C02

View file

@ -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": {