Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ~~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 <WRAP center round info 100%> 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 * <del>''for''-Schleifen - das kommt nach den Oster-Ferien</del> </WRAP> ===== ''while''-Schleifen ===== <WRAP center round box 100%> Motivierende Beispiele: <code text> Solange Suppenteller nicht leer: Iss einen Löffel Suppe! Putze deine Zähne! </code> Was ist hier das Problem? <code text> Solange Suppenteller nicht leer: Schreibe eine Email! Putze deine Zähne! </code> </WRAP> <WRAP center round info 100%> 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): <code python> while <Ausführ-Bedingung>: # der sogenannte Kopf der Schleife <Code-Block, der so lange wiederholt ausgeführt wird, # der sogenannte Körper der Schleife wie die Ausführ-Bedingung erfüllt ist. Dieser Code-Block ist um vier Leerschläge eingerückt> </code> 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. </WRAP> ===== Aufgabe 1, erste Erfahrungen mit ''while''-Schleifen ===== <WRAP center round todo 100%> **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? * <del>Was passiert, wenn du die Zeile ''x = x + 3'' löschst (oder mit ''#'' auskommentierst)? </del> <code python> x = 0 while x < 20: print(x) x = x + 3 </code> Bearbeite dann die nächste Aufgabe. </WRAP> ===== Aufgabe 2, selbst ein Programm mit ''while''-Schleife schreiben ===== <WRAP center round todo 100%> **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. </WRAP> ===== Aufgabe 3, Quadratzahlen ausgeben ===== <WRAP center round todo 100%> **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. <code text> 1 4 9 16 25 36 49 64 81 100 121 144 169 </code> Bearbeite dann die nächste Aufgabe. </WRAP> ===== Aufgabe 4, Turtle-Steuerung (etwas schwieriger) ===== <WRAP center round todo 100%> **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. </WRAP> ===== Bonusaufgabe, Zahlen aufsummieren ===== <WRAP center round todo 100%> **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: <code text> Die Summe der Zahlen von 1 bis 10 ist 55 </code> </WRAP> ===== Hausaufgabe ===== <WRAP center round todo 100%> 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 <WRAP center round box 60%> MeinVorname.MeinNachname@ksbg.ch </WRAP> (Meine Brühl-Email-Adresse und Teams checke ich etwas seltener. Mein Name steht unten rechts auf dieser Seite.) </WRAP> ===== Zusammenfassung ===== <hidden Erst selbst überlegen!> * Ich weiss, wie eine ''while''-Schleife funktioniert und kann sie sinnvoll einsetzen. </hidden> ===== 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 ===== <hidden Aufgabe 1> 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. </hidden> <hidden Aufgabe 2> <code python> x = 5 while x <= 19: print(x) x = x + 1 </code> </hidden> <hidden Aufgabe 3> <code python> a = input("Gib eine Zahl ein:") x = 1 while x <= a: print(x * x) x = x + 1 </code> </hidden> <hidden Aufgabe 4> <code python> 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?") </code> </hidden> <hidden Bonusaufgabe> <code python> 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) </code> </hidden> ===== Link zur Kursseite ===== [[lehrkraefte:snr:informatik:bruehl-2022:|Zur Kursseite]] lehrkraefte/snr/informatik/bruehl-2022/schleifen.txt Last modified: 2022/03/29 16:57by Olaf Schnürer