lehrkraefte:snr:informatik:bruehl-2022:schleifen

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lehrkraefte:snr:informatik:bruehl-2022:schleifen [2022/03/28 08:14] – [Aufgabe 1, erste Erfahrungen mit ''while''-Schleifen] Olaf Schnürerlehrkraefte:snr:informatik:bruehl-2022:schleifen [2022/03/29 14:57] (current) – [Aufgabe 1, erste Erfahrungen mit ''while''-Schleifen] Olaf Schnürer
Line 1: Line 1:
 +~~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]]
 +