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> | ||
| - | </ | ||
| - | ++++ | ||
| - | |||
| - | </ | ||