Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
gf_informatik:programmieren_i_sca [2024-10-29 21:12] – [Aufgabe H5] scagf_informatik:programmieren_i_sca [2025-01-07 11:01] (aktuell) – [Programmieren I: Programmieren mit TurtleGraphics] sca
Zeile 1: Zeile 1:
-====== Programmieren I: Programmieren mit TurtleGraphics ======+====== Programmieren I: Grundlagen der Programmierung ======
  
 ++++Lernziele| ++++Lernziele|
  
 +   * Grundsätzlich: Ich schreibe meinen **Code clever und elegant**. Es geht nicht nur darum, ob der Code das macht, was er soll, sondern auch darum, *wie* der Code geschrieben wurde.\\ \\
    * Ich kann erklären, was eine **Variable** ist und passende Analogien machen.    * Ich kann erklären, was eine **Variable** ist und passende Analogien machen.
    * Ich kann erklären, wann und warum man Variablen verwenden sollte.    * Ich kann erklären, wann und warum man Variablen verwenden sollte.
Zeile 14: Zeile 15:
      * (Beachte: Bei Prüfungen wird nicht nur bewertet *ob* der Code korrekt funktioniert, sondern auch, wie elegant er programmiert wurde.)      * (Beachte: Bei Prüfungen wird nicht nur bewertet *ob* der Code korrekt funktioniert, sondern auch, wie elegant er programmiert wurde.)
    * Ich kann von der Benutzerin eine **Eingabe** verlangen und diese in einer Variable speichern.    * Ich kann von der Benutzerin eine **Eingabe** verlangen und diese in einer Variable speichern.
 +   * Ich kann die wichtigsten **Vergleichsoperatoren** verwenden, um Zahlen miteinande zu vergleichen
    * Ich kann **Verzweigungen** (if,if-else,if-elif-else) programmieren.    * Ich kann **Verzweigungen** (if,if-else,if-elif-else) programmieren.
    * Ich kann einfache **Konsolenprogramme** (Programme mit Eingabe und/oder Ausgabe aber *ohne Turtle*).    * Ich kann einfache **Konsolenprogramme** (Programme mit Eingabe und/oder Ausgabe aber *ohne Turtle*).
    * (Optional): Ich kann in **farbige Bilder** erstellen mit TurtleGraphics.    * (Optional): Ich kann in **farbige Bilder** erstellen mit TurtleGraphics.
 +
 +   * Ich kann mit den wichtigsten **mathematischen Operatoren** rechnen (`+,-,*,/,//,%,**`).
 +   * Ich kann den Zuweisungsoperataor `=` mit dem Vergleichsoperator `==` vergleichen.
 +   * Ich kann mit **f-Strings** arbeiten, zum Beispiel:
 +     * Mehrere Strings zusammenhängen
 +     * Werte von Variablen am richtigen Ort im String einsetzen
 +   * Ich kann **komplexere Grafiken** mit der Turtle elegant mit Schleifen programmieren, zum Beispiel:
 +     * spiralförmige Muster
 +     * sich wiederholende Muster (gleiches Symbol mehrfach nebeneinander)
 +   * Ich kann mit **while-Schleifen** einen Codeblock wiederholen lassen, z.B.:
 +     * Fix vorgegebene Anzahl Wiederholungen.
 +     * Zahlen herauf / herunter zählen.
 +   * Ich verwende **KEIN REPEAT** mehr. Nie mehr!
 +   * Ich kann mit **break** aus einer "Endlosschleife" ausbrechen.
  
  
Zeile 774: Zeile 790:
 Gib die ersten $100$ Zahlen der 7er-Reihe aus, also $7,14,21,\ldots$. Gib die ersten $100$ Zahlen der 7er-Reihe aus, also $7,14,21,\ldots$.
  
-===== - Mehr Aufgaben =====+===== - Endlosschleifen und Break ===== 
 + 
 +Eine While-Schleife wiederholt einen Codeblock solange, wie deren Bedingung erfüllt ist. Falls die Bedingung immer erfüllt ist, liegt eine **Endlosschleife** vor. Oft programmiert man aus Versehen eine Endlosschleife, es gibt aber auch viele Situationen, in denen dies erwünscht ist. Zum Beispiel will man typischerweise ein Game so lange spielen können, bis man keine Lust mehr hat (oder einem die Eltern zwingen, aufzuhören). Man verfolgt dann beim Programmieren den folgenden Ansatz: 
 + 
 +1. Schreibe den Code in eine **Endlosschleife**: 
 + 
 +<code python> 
 +while True: 
 +    # hier kommt der Codeblock, 
 +    # der wiederholt werden soll 
 +</code> 
 + 
 +2. Sobald der Codeblock aber doch abgebrochen werden soll (z.B. wegen GameOver oder beim erfolgreichen Abschliessen des Spiels oder weil die Benutzerin keine Lust mehr hat), schreibt man das Keyword `break`. Dies **bricht die Schleife per sofort ab**. 
 + 
 +Beispiel: Die Benutzerin soll aufgefordert werden, die nerdigste Zahl der Welt (also $42$) einzugeben: "Gib die nerdigste Zahl der Welt ein". Sobald sie $42$ eingegeben hat, soll die Schleife abgebrochen und der Benutzerin gratuliert werden: 
 + 
 +<code python> 
 +while True: 
 +    number = input("Gib die nerdigste Zahl der Welt ein"
 +    if number == 42: 
 +        break 
 +    else: 
 +        print("Leider nicht, versuche es noch einmal"
 + 
 +print("Gratuliere, du hast die richtige Zahl, 42, eingegeben!"
 +</code> 
 + 
 + 
 +==== Aufgaben I ==== 
 + 
 +Löse alle Aufgaben mit **while-Schleifen und break**. 
 + 
 +=== Aufgabe I1 === 
 + 
 +**Negative Zahl:** Die Benutzerin soll solange aufgefordert, eine negative Zahl einzugeben, bis sie es geschafft hat. Gibt sie eine falsche Zahl ein, soll sie erneut aufgefordert werden. 
 + 
 +=== Aufgabe I2 === 
 + 
 +**Code für Geheimtür:** Der Benutzer soll aufgefordert werden, das geheime Passwort ("spaghetti") einzugeben. Gibt er es falsch ein, wird ausgegeben "Zugang verweigert". Macht er es richtig, wird "Zugang gewährt" ausgegeben und der Code abgebrochen. 
 + 
 +=== Aufgabe I3 === 
 + 
 +**Unendliche Summe:** Die Benutzerin soll unendlich oft hintereinander aufgefordert werden, eine Zahl einzugeben. Die neu eingegebene Zahl wird zu den bisherigen hinzuaddiert und das aktuelle Resultat ausgegeben. 
 + 
 +Um das Programm abzubrechen, kann die Benutzerin "q" (für Quit) eingeben. 
 + 
 + 
 +===== Zusatzaufgaben ===== 
 + 
 +Löse die Aufgaben so elegant wie möglich. Verwende z.B. wann immer möglich Schleifen. 
 + 
 +==== Basic ==== 
 + 
 +=== Aufgabe: Wiederholen === 
 + 
 +Bart hat mal seine Carbonara wieder mit Rahm gekocht! Zur Strafe muss er 100x "Kein Rahm in die Carbonara!" schreiben. Da du ein Herz für Bart hast, möchtest du ihm helfen und ihm einen Code schreiben, der ihm die Arbeit abnimmt (auch wenn er seine Strafe eigentlich verdient hat). 
 + 
 +{{:gf_informatik:carbonara_bart.png?400|}} 
 + 
 + 
 +=== Aufgabe: 5er-Reihe === 
 + 
 +Gib alle Zahlen der 5er Reihe aus im Bereich $5,10,...,500$. 
 + 
 +=== Aufgabe: Summe gerader Zahlen === 
 + 
 +Berechne die Summe aller gerader Zahlen von $2$ bis und mit $100$. 
 + 
 +=== Aufgabe: Unendlicher Zähler === 
 + 
 +Im Sekundentakt soll herauf gezählt werden: $1,2,3,4,5,...$. 
 +Um einen Delay von 1s einzubauen, gehe wie folgt vor: 
 +<code python> 
 +import time # importiere ganz oben im Code 
 +... 
 +time.sleep(1) # Befehl, dass für 1s soll pausieren 
 +</code> 
 + 
 + 
 +==== Anspruchsvoll ==== 
 + 
 +=== Aufgabe: Lord of the Rings === 
 + 
 +Erzeuge das folgende Bild auf clevere Art und Weise. 
 + 
 +{{:gf_informatik:the_rings.png?400|}} 
 + 
 +*Tipp:* Verwende zwei ineinander verschachtelte Schleifen. 
 + 
 + 
 ===== Lösungen ===== ===== Lösungen =====
  
Zeile 1255: Zeile 1361:
 ++++ ++++
  
-<nodisp 2> 
  
 ++++Lösungen G| ++++Lösungen G|
Zeile 1391: Zeile 1496:
 ++++ ++++
  
-</nodisp> 
- 
-<nodisp 2> 
  
 ++++Aufgaben H| ++++Aufgaben H|
Zeile 1463: Zeile 1565:
 </code> </code>
  
 +++++
  
-=== Aufgabe Hx ===+++++Aufgaben I| 
 + 
 +=== Aufgabe I1 ===
  
 <code python> <code python>
-</code>+while True: 
 +    number = input("Gib eine negative Zahl ein."
 +    if number 0: 
 +        break 
 +    else: 
 +        print("Falsch. Try again!")
  
 +print("Korrekt!")
 +</code>
  
-=== Aufgabe Hx ===+=== Aufgabe I2 ===
  
 <code python> <code python>
 +while True:
 +    eingabe = input("Gib das geheime Passwort ein")
 +    if eingabe == "Spaghetti":
 +        print("Korrekt. Zutritt gewährt")
 +        break
 +    else:
 +        print("Falsch. Zugang verweigert. Try again!")
 </code> </code>
  
- +=== Aufgabe I3 ===
-=== Aufgabe Hx ===+
  
 <code python> <code python>
-</code>+summe = 0
  
- +while True: 
-=== Aufgabe Hx ==+    eingabe input("Gib Zahl ein, die dazu addiert werden soll. Abbrechen mit 'q'."
- +    if eingabe == 'q': 
-<code python>+        break 
 +    summe summe + eingabe 
 +    print(f"Die Summe bisher ist: {summe}") 
 +     
 +print(f"Die finale Summe ist: {summe}")
 </code> </code>
  
  
-=== Aufgabe Hx ===+++++
  
-<code python> 
-</code> 
  
  
-++++ 
- 
-</nodisp> 
  
  • gf_informatik/programmieren_i_sca.1730236363.txt.gz
  • Zuletzt geändert: 2024-10-29 21:12
  • von sca