~~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]]