~~NOTOC~~
====== Schleifen ======
Besprechung der Hausaufgabe (bei 1c evtl. Quiz besprechen).
===== Lernziele heute =====
* ''while''-Schleifen kennenlernen (bereits informell im Zeichenprogramm verwendet)
* ... und wie man diese sinnvoll verwendet
In Python gibt es drei Arten von Schleifen alias Möglichkeiten, einen Code-Block mehrmals auszuführen:
* ''repeat''-Schleifen ((Genaugenommen gibt es diese Struktur nur in unserem "Java-Dialekt" Jython von Python.)) - diese kennen wir bereits seit der ersten Doppellektion.
* ''while''-Schleifen - diese lernen wir heute kennen
* ''for''-Schleifen - das kommt nach den Oster-Ferien
===== ''while''-Schleifen =====
Motivierende Beispiele:
Solange Suppenteller nicht leer:
Iss einen Löffel Suppe!
Putze deine Zähne!
Was ist hier das Problem?
Solange Suppenteller nicht leer:
Schreibe eine Email!
Putze deine Zähne!
Eine ''while''-Schleife wird mit dem Schlüsselwort ''while'' (für deutsch //solange//) eingeleitet und hat die folgende Struktur (beachte den Doppelpunkt und die Einrückung):
while : # der sogenannte Kopf der Schleife
Vergleich mit ''if''-Selektion: Wenn man ''while'' durch ''if'' ersetzt, wird der eingerückte Code-Block genau einmal durchgeführt, wenn die Ausführ-Bedingung erfüllt ist. Bei der ''while''-Schleife wird dieser solange ausgeführt, wie die Ausführbedingung erfüllt ist.
===== Aufgabe 1, erste Erfahrungen mit ''while''-Schleifen =====
**Einzelarbeit, ca. 8 Minuten**
* Teste das folgende Programm.
* Was passiert und warum passiert dies, wenn du die letzte Zeile nicht einrückst?
* Was passiert, wenn du die beiden letzten Zeile miteinander vertauschst?
* Was passiert, wenn du die Zeile ''x = x + 3'' löschst (oder mit ''#'' auskommentierst)?
x = 0
while x < 20:
print(x)
x = x + 3
Bearbeite dann die nächste Aufgabe.
===== Aufgabe 2, selbst ein Programm mit ''while''-Schleife schreiben =====
**Einzelarbeit, ca. 5 Minuten**
Schreibe ein Programm (mit einer ''while''-Schleife), das alle Zahlen zwischen 5 und 19 (einschliesslich der beiden Grenzen 5 und 19) ausgibt.
Bearbeite dann die nächste Aufgabe.
===== Aufgabe 3, Quadratzahlen ausgeben =====
**Einzelarbeit, ca. 5 Minuten**
Schreibe ein Programm (mit einer ''while''-Schleife), das vom Benutzer eine Zahl ''a'' einliest und die Quadrate aller Zahlen zwischen 1 und ''a'' ausgibt. Bei Eingabe 13 soll die Ausgabe wie folgt aussehen:
Hinweis: Schreibe zuerst ein Programm, dass alle Zahlen von 1 bis ''a'' ausgibt. Ändere es danach so, dass statt jeder Zahl deren Quadrat ausgegeben wird.
1
4
9
16
25
36
49
64
81
100
121
144
169
Bearbeite dann die nächste Aufgabe.
===== Aufgabe 4, Turtle-Steuerung (etwas schwieriger) =====
**Einzelarbeit, ca. 10 Minuten**
Schreibe mit Hilfe einer ''while''-Schleife ein Programm, um die Turtle zu steuern. Das Programm soll den Benutzer jeweils zur Eingabe eines Wortes auffordern.
* Gibt der Benutzer ''links'' ein, soll die Turtle 50 Schritte vorwärts gehen und sich dann um 90 Grad nach links drehen.
* Gibt der Benutzer ''rechts'' ein, soll die Turtle 50 Schritte vorwärts gehen und sich dann um 90 Grad nach rechts drehen.
* Gibt der Benutzer ''Ende'' ein, so soll das Programm enden.
* Bei allen andere Eingaben soll im Ausgabefenster (das Fenster in Tigerjython unter dem Programmcode) ''unbekannter Befehl'' ausgegeben werden.
===== Bonusaufgabe, Zahlen aufsummieren =====
**Einzelarbeit, ca. 10 Minuten**
Schreibe mit Hilfe einer ''while''-Schleife ein Programm, das vom Benutzer eine Zahl entgegennimmt und die Summe aller Zahlen von 1 bis zu dieser Zahl ausrechnet.
Beispiel: Bei Eingabe 10 soll die Ausgabe lauten:
Die Summe der Zahlen von 1 bis
10
ist
55
===== Hausaufgabe =====
Lerne auf die Prüfung!
* Beachte die Lösungsvorschläge, die stets am Ende der Web-Seiten stehen, meist in "Ausklapp-Boxen". Verwende eventuell das Einzelschrittverfahren, um die Programme besser zu verstehen.
* Die Lernziele und Hinweise zur Prüfungsvorbereitung stehen am [[lehrkraefte:snr:informatik:bruehl-2022#hinweise_zur_vorbereitung|Ende der Hauptseite]].
* Bitte melden, wenn Lösungen fehlen oder unklar sind oder sonstige Fragen aufkommen. Am schnellsten geht das über meine Email-Adresse an der Kanti am Burggraben
MeinVorname.MeinNachname@ksbg.ch
(Meine Brühl-Email-Adresse und Teams checke ich etwas seltener. Mein Name steht unten rechts auf dieser Seite.)
===== Zusammenfassung =====
* Ich weiss, wie eine ''while''-Schleife funktioniert und kann sie sinnvoll einsetzen.
===== Fragebox - auch zum Besprechen von Programmen während der Lektion (NICHT für Hausaufgaben) =====
Bitte einfach am Anfang des Programms oder der eingereichten Datei die Frage aufschreiben (mit oder ohne Hashtag ''#'' als Kommentareinleitungszeichen am Zeilenanfang).
[[https://bldsg-my.sharepoint.com/:f:/g/personal/olaf_schnuerer_ksbg_ch/EmLIcTN64lJIlEKu0EyiDYoBg9smMusTs1nVj04-F1tEFQ|Link zur Fragebox]]
===== Lösungsvorschläge =====
Es wird jeweils nur der eingerückte Code-Block mehrfach ausgeführt. Wie immer werden die Zeilen der Reihe nach von oben abgearbeitet.
* Nur einmal am Ende wird der Wert der Variablen ''x'' ausgegeben.
* Jeweils zuerst Ausgabe, dann Erhöhung um 3. Erste Ausgabe ist dann 0.
* Endlosschleife, da die Bedingung ''x < 20'' immer gilt, da sich ''x'' innerhalb der Schleife nicht ändert.
x = 5
while x <= 19:
print(x)
x = x + 1
a = input("Gib eine Zahl ein:")
x = 1
while x <= a:
print(x * x)
x = x + 1
from gturtle import *
makeTurtle()
eingabe = input("Was soll ich tun?")
while eingabe != "Ende":
if eingabe == "links":
forward(50)
left(90)
elif eingabe == "rechts":
forward(50)
right(90)
else:
print("unbekannter Befehl")
eingabe = input("Was soll ich tun?")
a = input("Gib eine Zahl ein:")
summe = 0
x = 1
while x <= a:
summe = summe + x
x = x + 1
print("Die Summe der Zahlen von 1 bis")
print(a)
print("ist")
print(summe)
===== Link zur Kursseite =====
[[lehrkraefte:snr:informatik:bruehl-2022:|Zur Kursseite]]