Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
gf_informatik:programmieren_i_sca [2024-10-29 21:12] – [Aufgabe H5] sca | gf_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 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, | * (Beachte: Bei Prüfungen wird nicht nur bewertet *ob* der Code korrekt funktioniert, | ||
* 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, | * Ich kann **Verzweigungen** (if, | ||
* 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, | ||
+ | * 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 " | ||
Zeile 774: | Zeile 790: | ||
Gib die ersten $100$ Zahlen der 7er-Reihe aus, also $7, | Gib die ersten $100$ Zahlen der 7er-Reihe aus, also $7, | ||
- | ===== - 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, | ||
+ | |||
+ | 1. Schreibe den Code in eine **Endlosschleife**: | ||
+ | |||
+ | <code python> | ||
+ | while True: | ||
+ | # hier kommt der Codeblock, | ||
+ | # der wiederholt werden soll | ||
+ | </ | ||
+ | |||
+ | 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(" | ||
+ | if number == 42: | ||
+ | break | ||
+ | else: | ||
+ | print(" | ||
+ | |||
+ | print(" | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Aufgaben | ||
+ | |||
+ | Löse alle Aufgaben mit **while-Schleifen und break**. | ||
+ | |||
+ | === Aufgabe I1 === | ||
+ | |||
+ | **Negative Zahl:** Die Benutzerin soll solange aufgefordert, | ||
+ | |||
+ | === Aufgabe I2 === | ||
+ | |||
+ | **Code für Geheimtür: | ||
+ | |||
+ | === 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, | ||
+ | |||
+ | |||
+ | ===== 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!" | ||
+ | |||
+ | {{: | ||
+ | |||
+ | |||
+ | === Aufgabe: 5er-Reihe === | ||
+ | |||
+ | Gib alle Zahlen der 5er Reihe aus im Bereich $5, | ||
+ | |||
+ | === 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, | ||
+ | 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 | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Anspruchsvoll ==== | ||
+ | |||
+ | === Aufgabe: Lord of the Rings === | ||
+ | |||
+ | Erzeuge das folgende Bild auf clevere Art und Weise. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | *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 2> | ||
++++Aufgaben H| | ++++Aufgaben H| | ||
Zeile 1463: | Zeile 1565: | ||
</ | </ | ||
+ | ++++ | ||
- | === Aufgabe | + | ++++Aufgaben I| |
+ | |||
+ | === Aufgabe | ||
<code python> | <code python> | ||
- | </code> | + | while True: |
+ | number = input(" | ||
+ | if number | ||
+ | break | ||
+ | else: | ||
+ | print(" | ||
+ | print(" | ||
+ | </ | ||
- | === Aufgabe | + | === Aufgabe |
<code python> | <code python> | ||
+ | while True: | ||
+ | eingabe = input(" | ||
+ | if eingabe == " | ||
+ | print(" | ||
+ | break | ||
+ | else: | ||
+ | print(" | ||
</ | </ | ||
- | + | === Aufgabe | |
- | === Aufgabe | + | |
<code python> | <code python> | ||
- | </ | + | summe = 0 |
- | + | while True: | |
- | === Aufgabe Hx === | + | |
- | + | if eingabe | |
- | <code python> | + | break |
+ | summe = summe + eingabe | ||
+ | print(f" | ||
+ | |||
+ | print(f" | ||
</ | </ | ||
- | === Aufgabe Hx === | + | ++++ |
- | <code python> | ||
- | </ | ||
- | ++++ | ||
- | |||
- | </ | ||