lehrkraefte:snr:informatik:bruehl-2022:auswahl

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:auswahl [2022/03/15 08:50]
Olaf Schnürer [Bonusaufgabe, Aufgabe 7]
lehrkraefte:snr:informatik:bruehl-2022:auswahl [2022/03/21 10:25] (current)
Olaf Schnürer [Lösungsvorschläge und Tafelanschriebe]
Line 1: Line 1:
 +~~NOTOC~~
 +
 ===== Lernziele heute ===== ===== Lernziele heute =====
  
Line 4: Line 6:
   * mit anderen Worten: Wir schreiben ein Zeichen- oder Mal-Programm!   * mit anderen Worten: Wir schreiben ein Zeichen- oder Mal-Programm!
   * "Bedingte Ausführung". Was ist ''if''-''else''-Selektion?    * "Bedingte Ausführung". Was ist ''if''-''else''-Selektion? 
- 
- 
- 
- 
- 
  
 ====== if-Selektion (Auswahl, Selektion, if-then-else-Struktur, Verzweigung) ====== ====== if-Selektion (Auswahl, Selektion, if-then-else-Struktur, Verzweigung) ======
Line 93: Line 90:
   * Verwende eine ''repeat''-Schleife und eine ''if''-''else''-Selektion.   * Verwende eine ''repeat''-Schleife und eine ''if''-''else''-Selektion.
  
-<hidden **Bonusaufgaben:** (bitte ausklappen)>+<hidden **Bonusteilaufgaben:** (bitte ausklappen)>
   * Verändere die Strecke ''s'', um die sich die Kröte vorwärts bewegt, zufällig um $+1$ oder $-1$. (Die Turtle akzeptiert auch ''forward(-2)'' und geht dann eben 2 Pixel rückwärts.)   * Verändere die Strecke ''s'', um die sich die Kröte vorwärts bewegt, zufällig um $+1$ oder $-1$. (Die Turtle akzeptiert auch ''forward(-2)'' und geht dann eben 2 Pixel rückwärts.)
   * Sorge dafür, dass ''s'' stets zwischen 0 und 20 liegt.   * Sorge dafür, dass ''s'' stets zwischen 0 und 20 liegt.
Line 113: Line 110:
   * Bonusfrage: Geht dasselbe auch nur mit ''if''?   * Bonusfrage: Geht dasselbe auch nur mit ''if''?
  
-<WRAP left round box 48%>+<WRAP left round box 40%>
 <code python> <code python>
 from gturtle import *       # Die ersten beiden Zeilen dienen nur dazu, dass der Befehl getKeyWait() bekannt ist. from gturtle import *       # Die ersten beiden Zeilen dienen nur dazu, dass der Befehl getKeyWait() bekannt ist.
Line 141: Line 138:
 </code> </code>
 </WRAP> </WRAP>
-<WRAP right round box 48%>+<WRAP right round box 40%>
 <code python> <code python>
 from gturtle import * from gturtle import *
Line 208: Line 205:
 Die erwünschte Lösung verwendet die obige "elegante" ''if''-''elif''-...-''elif''-''else''-Variante der Selektion. Die erwünschte Lösung verwendet die obige "elegante" ''if''-''elif''-...-''elif''-''else''-Variante der Selektion.
  
-<hidden **Bonusaufgaben:** (bitte ausklappen)>+<hidden **Bonusteilaufgaben:** (bitte ausklappen)>
 Erweitere dein Zeichenprogramm! Hier einige Vorschläge: Erweitere dein Zeichenprogramm! Hier einige Vorschläge:
   * Tasten ''r'', ''g'', ''b'', ''w'' verändern die Zeichenfarbe auf Rot, Gelb, Grün und Weiss.   * Tasten ''r'', ''g'', ''b'', ''w'' verändern die Zeichenfarbe auf Rot, Gelb, Grün und Weiss.
Line 246: Line 243:
   * Der Vergleich einer "Text-Variablen" ''s'' mit einer Zeichenkette geht mit ''s == "St. Gallen"'' bzw. mit ''s != "St. Gallen"''. Statt Text-Variable sagt man auch "string"   * Der Vergleich einer "Text-Variablen" ''s'' mit einer Zeichenkette geht mit ''s == "St. Gallen"'' bzw. mit ''s != "St. Gallen"''. Statt Text-Variable sagt man auch "string"
  
-<hidden **Bonusaufgabe:** (bitte ausklappen)>+<hidden **Bonusteilaufgabe:** (bitte ausklappen)>
 Der Benutzer soll nun bei jeder falsch beantworteten Frage zwei weitere Versuche haben. Versuche, dies mit einer ''repeat 3:''-Schleife zu realisieren.  Der Benutzer soll nun bei jeder falsch beantworteten Frage zwei weitere Versuche haben. Versuche, dies mit einer ''repeat 3:''-Schleife zu realisieren. 
  
 Hinweis: Verwende eine Variable, die ''0'' (oder ''False'') ist, wenn die Frage noch nicht richtig beantwortet ist. Sonst wird sie ''1'' (oder ''True''). Hinweis: Verwende eine Variable, die ''0'' (oder ''False'') ist, wenn die Frage noch nicht richtig beantwortet ist. Sonst wird sie ''1'' (oder ''True'').
 +
 +Alternativ geht es auch mit einer ''while''-Schleife.
 </hidden> </hidden>
  
Line 259: Line 258:
 Du hast die Wahl: Du hast die Wahl:
   * Aufgabe 5 oder   * Aufgabe 5 oder
-  * Aufgabe 4 mit mindestens drei der Bonusaufgaben (oder ähnlich schwierigen Sachen deiner Wahl) +  * Aufgabe 4 mit mindestens drei der Bonusteilaufgaben (oder ähnlich schwierigen Sachen deiner Wahl) 
-  * Aufgabe 2 mit mindestens drei der Bonusaufgaben (oder ähnlichen schwierigen Sachen deiner Wahl)+  * Aufgabe 2 mit mindestens drei der Bonusteilaufgaben (oder ähnlichen schwierigen Sachen deiner Wahl) 
 +  * eine der beiden nachfolgenden Bonusaufgaben, also Aufgabe 6 oder Aufgabe 7
  
 <hidden Hier ist der Anfang der Lösung von Aufgabe 4, falls jemand das in der Lektion noch nicht geschafft hatte. Bitte ausklappen.> <hidden Hier ist der Anfang der Lösung von Aufgabe 4, falls jemand das in der Lektion noch nicht geschafft hatte. Bitte ausklappen.>
Line 383: Line 383:
 </hidden> </hidden>
  
-<hidden Aufgabe 2>+<hidden Aufgabe 2: Zufällige Bewegung>
 {{:lehrkraefte:snr:informatik:bruehl-2022:brownsche-bewegung-flussdiagramm-cropped.jpg?400|Flussdiagramm dazu}} {{:lehrkraefte:snr:informatik:bruehl-2022:brownsche-bewegung-flussdiagramm-cropped.jpg?400|Flussdiagramm dazu}}
 <code python> <code python>
Line 403: Line 403:
 </hidden> </hidden>
  
-<hidden zu ergänzen>+<hidden Aufgabe 3: getKeyWait() und if-elif-...-elif-else kennenlernen> 
 +Das Programm wartet auf einen Tastendruck und speichert diesen in der Variablen ''taste'' und gibt den Wert von ''taste'' aus. Je nach Eingabe wird dann in der verschachtelten ''if''-Struktur entschieden, was ausgegeben wird. 
 + 
 +Der Befehl ''input("...")'' nimmt eine Eingabe (die auch aus mehreren Zeichen bestehen kann) entgegen; die Eingabe muss mit der Return-Taste oder Klicken auf den Ok-Button abgeschlossen werden. 
 +Der Befehl ''getKeyWait()'' wartet auf den nächsten Tastendruck (nur ein Zeichen); die Eingabe wird nicht mit Return o. ä. abgeschlossen. 
 + 
 +Es geht auch nur mit ''if'', z. B. wie folgt. Beachte, dass die letzte ''if''-Selektion deutlich komplizierter geworden ist!
 <code python> <code python>
 +from gturtle import *       # Die ersten beiden Zeilen dienen nur dazu, dass der Befehl getKeyWait() bekannt ist.
 +makeTurtle()                # Ohne sie funktioniert das Programm leider nicht.
 +
 +taste = getKeyWait()          
 +print(taste)
 +
 +if taste == "a":
 +    print("a wie Anna")
 +if taste == "b":
 +    print("b wie Berta")
 +if taste == "c":
 +    print("c wie Caesar")
 +if taste == "d":
 +    print("d wie Daniel")
 +if taste == "e":
 +    print("E wie Emil")
 +if taste != "a" and taste != "b" and taste != "c" and taste != "d" and taste != "e":                 
 +    print("Du hast keine der Tasten a, b, c, d, e gedrückt.")
 +
 +dispose()     # Schliesst das Turtle-Fenster.
 </code> </code>
 +</hidden>
 +
 +<hidden Aufgabe 4: Ferngesteuerte Turtle>
 +<code python>
 +from gturtle import *
 +makeTurtle("black")
 +
 +taste = " "                         # oder irgendetwas anderes ungleich "e"
 +
 +                                    # Die folgende sogenannte "while"-Schleife funktioniert 
 +                                    # ähnlich wie eine repeat-Schleife: Der 
 +                                    # eingerückte Code-Block wird solange wiederholt
 +                                    # ausgeführt, wie die angegebene Bedingung gilt.
 +                                    # englisch WHILE = deutsch SOLANGE  
 +s = 10
 +
 +while taste != "e":  
 +    taste = getKeyWait()
 +
 +    if taste == "i":
 +        forward(s)
 +    elif taste == "j":
 +        left(60)
 +    elif taste == "k":
 +        backward(s)
 +    elif taste == "l":
 +        right(60)
 +    elif taste == "p":
 +        s = s + 1 
 +    elif taste == "m":
 +        s = s - 1
 +    elif taste == "w":
 +        winkel = input("Bitte Winkel eingeben. ")
 +        right(winkel)    
 +    elif taste == "h":
 +        home()
 +    elif taste != "e":
 +        print("Taste ohne Funktion.")
 +
 +dispose()
 +</code>
 +</hidden>
 +
 +<hidden Aufgabe 5: Quiz>
 +<code python>
 +n = 0 # Anzahl korrekter Antworten.
 +
 +a = input("Wie viele Kantone hat die Schweiz?")
 +if a == 26:                                     # Achtung, manche haben hier a == "26" geschrieben. Jedoch: Der Befehl "input" speichert eine Zahleingabe wie 26 als Zahl, nicht als String!
 +    print("Korrekt!")
 +    n = n + 1
 +else:
 +    print("Leider falsch. Die richte Antwort wäre 26 gewesen.")
 +    
 +b = input("Wie viele Einwohner hat die Schweiz ungefähr in Millionen?")
 +if b == 8 or b == 9:
 +    print("Korrekt!")
 +    n = n + 1
 +else:
 +    print("Leider falsch. Die richte Antwort wäre 8 oder 9 gewesen.")
 +
 +c = input("In welcher Stadt sitzt die Schweizer Regierung?")
 +if c == "Bern":
 +    print("Korrekt!")
 +    n = n + 1
 +else:
 +    print("Leider falsch. Die richte Antwort wäre Bern gewesen.")
 +
 +print("Anzahl korrekter Antworten:")
 +print(n)
 +
 +if n > 2: 
 +    print("Sehr gut!")
 +elif n == 0:
 +    print("Sehr schlecht!")
 +</code>
 +    
 +Und hier die Bonus-Variante (die ersten beiden Fragen per ''repeat'', die dritte per ''while'', damit du zwei Möglichkeiten siehst):
 +<code python>
 +n = 0 # Anzahl korrekter Antworten.
 +v = 0 # Anzahl falsche Versuche
 +
 +eingabeStimmt = 0
 +repeat 3:
 +    if eingabeStimmt == 0:
 +        a = input("Wie viele Kantone hat die Schweiz?")
 +        if a == 26:
 +            print("Korrekt!")
 +            n = n + 1
 +            eingabeStimmt = 1
 +        else:
 +            print("Leider falsch.")
 +            v = v + 1
 +if eingabeStimmt == 0:
 +    print("Alle drei Versuche falsch. Die richte Antwort wäre 26 gewesen.")
 +
 +print(20 * "-" + " Neue Frage " + 20 * "-")
 +eingabeStimmt = 0
 +repeat 3:
 +    if eingabeStimmt == 0:
 +        b = input("Wie viele Einwohner hat die Schweiz ungefähr in Millionen?")
 +        if b == 8 or b == 9:
 +            print("Korrekt!")
 +            n = n + 1
 +            eingabeStimmt = 1
 +        else:
 +            print("Leider falsch.")
 +            v = v + 1
 +if eingabeStimmt == 0:
 +    print("Alle drei Versuche falsch. Die richte Antwort wäre 8 oder 9 gewesen.")
 +
 +# Und nun die Variante mit der while-Schleife
 +
 +
 +print(20 * "-" + " Neue Frage " + 20 * "-")
 +nochVersuche = 3 # Anzahl der Versuche, die der Antwortende noch hat.
 +
 +while nochVersuche > 0:
 +    c = input("In welcher Stadt sitzt die Schweizer Regierung?")
 +    nochVersuche = nochVersuche - 1
 +    if c == "Bern":
 +        print("Korrekt!")
 +        n = n + 1
 +        nochVersuche = 0
 +    else:
 +        print("Leider falsch.")
 +        v = v + 1
 +if c != "Bern":
 +    print("Alle drei Versuche falsch. Die richte Antwort wäre Bern gewesen.")
 +
 +
 +print(20 * "-" + " Auswertung " + 20 * "-")
 +print("Anzahl korrekt beantworteter Fragen:")
 +print(n)
 +print("Anzahl Fehlversuche:")
 +print(v)
 +
 +if n == 3 and v == 0: 
 +    print("Sehr gut!")
 +else:
 +    print("Du kannst dich noch steigern!"         
 +</code>    
 </hidden> </hidden>
  
  • lehrkraefte/snr/informatik/bruehl-2022/auswahl.1647330645.txt.gz
  • Last modified: 2022/03/15 08:50
  • by Olaf Schnürer