Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| lehrkraefte:snr:altes-material:bruehl-ein-ausgabe-variablen [2022/02/27 07:51] – created Olaf Schnürer | lehrkraefte:snr:altes-material:bruehl-ein-ausgabe-variablen [2022/02/27 08:16] (current) – [Bonusaufgaben (Textausgabe)] Olaf Schnürer | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Ein- und Ausgabe, Variablen ====== | ||
| + | |||
| + | ==== Zum Aufwärmen: Wiederholung etc. ==== | ||
| + | Besprechung der Hausaufgabe. | ||
| + | |||
| + | [[lehrkraefte: | ||
| + | |||
| + | ==== Lernziele heute ==== | ||
| + | |||
| + | |||
| + | * Wie geht Ein- und Ausgabe in Python? | ||
| + | * Wie speichert man Daten und verarbeitet sie? | ||
| + | |||
| + | ==== Tipp des Tages ==== | ||
| + | |||
| + | * :-) Lernen geht am besten durch Spielen! :-) | ||
| + | * :-) Beim Programmieren immer Sachen ausprobieren, | ||
| + | |||
| + | ===== Unser Programmier-Ziel heute ===== | ||
| + | |||
| + | <WRAP center round important 100%> | ||
| + | Ein (kurzes und flexibles) Programm entwerfen, das die folgende " | ||
| + | <WRAP left round box 100%> | ||
| + | {{: | ||
| + | </ | ||
| + | |||
| + | ☞ | ||
| + | <hidden Naive Lösung> | ||
| + | Natürlich kann man das "von Hand" machen und alle Linien selbst zeichnen. | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | === Diskussion und Analyse des Problems === | ||
| + | Z. B. | ||
| + | * Wie lang ist welche Linie? | ||
| + | * Was sollte die Schildkröte können? Welche Fähigkeit fehlt ihr bisher? | ||
| + | |||
| + | ===== Lernen am Beispiel und durch Demonstration ===== | ||
| + | |||
| + | Wir schreiben gemeinsam ein Programm((Das du später mehr oder weniger auf dieser Seite finden wirst.)) und ich erkläre dabei möglichst viel (per Einzelschritt-Debugging durchgehen; Tabelle mit Namen und Werten und Typen der Variablen). | ||
| + | |||
| + | <WRAP center round info> | ||
| + | **Variablen** dienen dem Speichern von Daten, insbesondere von Zahlen und Zeichenketten/ | ||
| + | * Jede Variable hat einen Namen und einen Wert. | ||
| + | * Mit dem Zeichen " | ||
| + | * Der Befehl '' | ||
| + | * Existiert die Variable '' | ||
| + | * Rechts vom Gleichheitszeichen sind auch Ausdrücke erlaubt, die '' | ||
| + | * Jede Variable hat einen Typ, etwa den Typ '' | ||
| + | * Ein- und Ausgabe und weiteres ist in den Kommentaren im Programm in der nachfolgenden Aufgabe erklärt. | ||
| + | </ | ||
| + | |||
| + | ==== Wiederholungsaufgabe ==== | ||
| + | |||
| + | <WRAP center round todo> | ||
| + | Unten steht mehr oder weniger das Programm, das wir gerade geschrieben haben, aber mit Zusatzkommentaren (falls ich mündlich etwas vergessen habe...). | ||
| + | Führe es im Einzelschrittmodus aus und lies alle Kommentare. Bei jedem Schritt ändert sich etwas in Tigerjython, | ||
| + | |||
| + | <code python> | ||
| + | # Ausgabe von Zeichenketten | ||
| + | print(" | ||
| + | |||
| + | print(" | ||
| + | print(" | ||
| + | # Ausgabe von Zahlen und Rechnen mit Zahlen | ||
| + | print(5) | ||
| + | print(5+4) | ||
| + | print(5*3) | ||
| + | print(5/2) | ||
| + | |||
| + | |||
| + | print(" | ||
| + | print(" | ||
| + | # Mit Variablen kann man Zahlen wie -2, -1, 0, 1, 2, ... 42 speichern. | ||
| + | # Das Gleichheitszeichen ist ein Zuweisungszeichen: | ||
| + | # Der Variablen x wird der Wert rechts des Gleichheitszeichens zugewiesen. | ||
| + | x = 2 | ||
| + | print(x) | ||
| + | |||
| + | # Man kann mit Variablen rechnen. | ||
| + | print(3*x) | ||
| + | |||
| + | # Variablen können wilde Namen haben. | ||
| + | meinFreund_Nummer17a = 3 * x + 5 | ||
| + | # Es ist Konvention, dass Variablen mit einem Kleinbuchstaben anfangen. | ||
| + | # Die meisten Sonderzeichen wie *, +, !, = in Variablennamen sind verboten, | ||
| + | # denn sie werden anderweitig verwendet. | ||
| + | # Auch bereits belegte Namen wie " | ||
| + | print(meinFreund_Nummer17a) | ||
| + | abc = meinFreund_Nummer17a / x | ||
| + | print(abc) | ||
| + | |||
| + | # Wie schon oben verwendet, hat das Gleichheitszeichen | ||
| + | # beim Programmieren eine Zuweisungsfunktion. | ||
| + | # Die nächste Programmzeile weist der bereits existierenden Variablen x einen neuen Wert zu. | ||
| + | # Der Ausdruck rechts des Gleichheitszeichens wird (unter Verwendung des | ||
| + | # " | ||
| + | x = x+1 | ||
| + | # Beachte, dass x hier sowohl rechts als auch links des | ||
| + | # Zeichens " | ||
| + | # | ||
| + | # Achtung: | ||
| + | # In der Mathematik ist die obige Gleichung relativ uninteressant: | ||
| + | # Später: Die mathematische Abfrage auf Gleichheit wird mit " | ||
| + | |||
| + | print(x) | ||
| + | |||
| + | x= meinFreund_Nummer17a-x | ||
| + | print(x) | ||
| + | |||
| + | # Jede Variablen hat nicht nur einen Namen und einen Wert, sondern auch einen Typ. | ||
| + | print(" | ||
| + | print(" | ||
| + | |||
| + | print(type(x)) | ||
| + | print(type(meinFreund_Nummer17a)) | ||
| + | print(type(abc)) | ||
| + | |||
| + | print(" | ||
| + | print(" | ||
| + | |||
| + | # Eingabe von Integers, also Zahlen ohne Komma. | ||
| + | # Die mit Anführungszeichen markierte Zeichenkette wird angezeigt. | ||
| + | # Zurückgeliefert wird die eingegebene Zahl. | ||
| + | eingegebeneZahl = inputInt(" | ||
| + | # Oft ist es wie hier getan sinnvoll, sprechende Variablennamen zu verwenden. | ||
| + | # Dann erinnert man sich sofort, was gemeint ist. | ||
| + | print(eingegebeneZahl) | ||
| + | |||
| + | k = inputFloat(" | ||
| + | print(k) | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ==== Aufgaben ==== | ||
| + | |||
| + | <WRAP center round todo 100> | ||
| + | |||
| + | **HAUSAUFGABE für die 1AFG:** | ||
| + | |||
| + | Abgabe bis **spätestens Sonntagabend 23:59 Uhr** vor der nächsten Doppellektion über den folgenden Link: | ||
| + | |||
| + | * [[https:// | ||
| + | |||
| + | |||
| + | Schreibe ein Programm, das vom Benutzer zwei Zahlen einliest (integer oder float, wie du willst) und ihre Summe und ihr Produkt ausgibt. | ||
| + | Eine Beispielausgabe des Programms könnte lauten: | ||
| + | <code text> | ||
| + | Salü! | ||
| + | ----------------------------- | ||
| + | Eingegeben Zahlen: | ||
| + | 13 | ||
| + | und | ||
| + | -3 | ||
| + | ***************************** | ||
| + | Summe dieser Zahlen: | ||
| + | 10 | ||
| + | Produkt dieser Zahlen: | ||
| + | -29 | ||
| + | ----------------------------- | ||
| + | Uf Wiederluege! | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | </ | ||
| + | |||
| + | <WRAP center round todo 100%> | ||
| + | |||
| + | **HAUSAUFGABE für die 1CFP (oder eine der nachfolgenden Aufgaben): | ||
| + | |||
| + | Abgabe bis **spätestens Sonntagabend 23:59 Uhr** vor der nächsten Doppellektion über den folgenden Link: | ||
| + | |||
| + | * [[https:// | ||
| + | |||
| + | Schreibe ein Programm, das eine Zahl (zwischen 1 und 10) entgegennimmt und die entsprechende Spalte in der Kleinen-Einmaleins-Tabelle ausgibt. | ||
| + | |||
| + | Bei Eingabe 7 sollte die Ausgabe so aussehen: | ||
| + | <code text> | ||
| + | 7 | ||
| + | 14 | ||
| + | 21 | ||
| + | 28 | ||
| + | 35 | ||
| + | 42 | ||
| + | 49 | ||
| + | 56 | ||
| + | 63 | ||
| + | 70 | ||
| + | </ | ||
| + | Bemerkung: Es geht ohne '' | ||
| + | <hidden Hinweis:> | ||
| + | |||
| + | ---- | ||
| + | |||
| + | Bonusaufgabe (Seerosenfläche auf einem (unendlich grossen) See verdoppelt sich jede Woche): Verändere das Programm so, dass zuerst die eingegebene Zahl ausgegeben wird und dann von jeder Zeile zur nächsten eine Verdopplung stattfindet. | ||
| + | Statt einer Verdopplung (= Multiplikation mit 2) kannst du auch mit einem beliebigen anderen Wachstumsfaktor, | ||
| + | </ | ||
| + | |||
| + | |||
| + | <WRAP center round todo 100%> | ||
| + | Turtle-Exkurs: | ||
| + | |||
| + | Für die angegebenen Werte soll also ein 7-Eck mit Seitenlänge 100 (in Pixel) gezeichnet werden. | ||
| + | Wenn man stattdessen '' | ||
| + | <code python> | ||
| + | from gturtle import * | ||
| + | makeTurtle() | ||
| + | |||
| + | n = 7 | ||
| + | s = 100 | ||
| + | |||
| + | ?????? | ||
| + | ?????? | ||
| + | ?????? | ||
| + | </ | ||
| + | |||
| + | Bemerkung: Wenn du '' | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ==== Zusammenfassung ==== | ||
| + | |||
| + | <hidden Erst selbst überlegen!> | ||
| + | * Ein- und Ausgabe (per Text oder Grafik) dienen der Kommunikation mit dem Computer. | ||
| + | * Variablen sorgen dafür, dass der Computer (oder die Schildkröte :-)) sich etwas merken kann, also ein Gedächtnis hat! | ||
| + | * Variablen beeinflussen die Programmausführung und sorgen dafür, dass das Programm flexibel auf verschiedene Eingaben reagieren kann. | ||
| + | * Variablen haben einen Namen, einen Wert und einen Typ. | ||
| + | </ | ||
| + | |||
| + | === Key take-aways === | ||
| + | |||
| + | <hidden Erst selbst überlegen!> | ||
| + | * Eingabe von Zahlen per '' | ||
| + | * Ausgabe per print(...), etwa von Zeichenketten per '' | ||
| + | * Variablen werden mit '' | ||
| + | </ | ||
| + | ==== Bonusaufgaben (Textausgabe) ==== | ||
| + | |||
| + | <WRAP center round todo 100%> | ||
| + | Schreibe ein Programm, das eine positive Zahl entgegennimmt und die Summe aller Zahlen von 1 bis zu dieser Zahl ausrechnet. | ||
| + | |||
| + | Beispiel: Bei Eingabe 9 sollte als Ergebnis 45 ausgegeben werden, denn $1+2+3+4+5+6+7+8+9=45$. Die Ausgabe sollte also etwa so aussehen: | ||
| + | < | ||
| + | Die Summe aller Zahlen von 1 bis | ||
| + | 9 | ||
| + | ist | ||
| + | 45 | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <WRAP center round todo 100%> | ||
| + | Schreibe ein Programm, das das Kleine Einmaleins als Tabelle ausgibt. Die Tabelle darf wild aussehen: | ||
| + | <code text> | ||
| + | 1 2 3 4 5 6 7 8 9 10 | ||
| + | 2 4 6 8 10 12 14 16 18 20 | ||
| + | 3 6 9 12 15 18 21 24 27 30 | ||
| + | 4 8 12 16 20 24 28 32 36 40 | ||
| + | 5 10 15 20 25 30 35 40 45 50 | ||
| + | 6 12 18 24 30 36 42 48 54 60 | ||
| + | 7 14 21 28 35 42 49 56 63 70 | ||
| + | 8 16 24 32 40 48 56 64 72 80 | ||
| + | 9 18 27 36 45 54 63 72 81 90 | ||
| + | 10 20 30 40 50 60 70 80 90 100 | ||
| + | </ | ||
| + | |||
| + | Benötigtes Zusatzwissen: | ||
| + | * Mit '' | ||
| + | * Mit '' | ||
| + | </ | ||
| + | |||
| + | ===== Zurück zur Turtle und zum Spiralproblem ===== | ||
| + | |||
| + | <WRAP center round todo 100%> | ||
| + | Zeichne mit der Turtle wie folgt eine Spirale. | ||
| + | |||
| + | Nach jeder $90^\circ$-Rechtsabbiegung geht die Turtle 10 Pixel weiter geradeaus als zuvor. | ||
| + | |||
| + | Am Anfang geht sie '' | ||
| + | |||
| + | Insgesamt soll die Turtle '' | ||
| + | |||
| + | Bonusaufgabe (freiwillig): | ||
| + | </ | ||
| + | |||
| + | |||
| + | <WRAP center round todo> | ||
| + | **Hausaufgabe (die eventuell schon während der Lektion erledigt werden kann)** | ||
| + | |||
| + | Schreibe ein Programm, das vom Benutzer eine Zahl '' | ||
| + | |||
| + | Farbe und Stiftdicke darfst du beliebig wählen. Die Stiftdicke darf auch von Quadrat zu Quadrat unterschiedlich sein. | ||
| + | |||
| + | Für '' | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Abgabe bis **spätestens Sonntagabend 23:59 Uhr** vor der nächsten Doppellektion über den folgenden Link: | ||
| + | |||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | <hidden Hinweis:> | ||
| + | Verwende eine '' | ||
| + | |||
| + | Damit die Quadrate alle ihren Mittelpunkt in der Mitte haben: Gehe jeweils mit '' | ||
| + | |||
| + | Bonus (freiwillig): | ||
| + | </ | ||
| + | |||
| + | ==== Bonusaufgabe (Grafikausgabe) ==== | ||
| + | |||
| + | <WRAP center round todo 100%> | ||
| + | Verändere das Programm für die Spirale so, dass der Winkel statt der Strecke nach jedem Abbiegen um eine fest Grösse, etwa $1^\circ$, verkleinert (oder vergrössert) wird. | ||
| + | |||
| + | Du kannst natürlich auch Winkel und Strecke gleichzeitig verändern. | ||
| + | |||
| + | Spiele herum: Verschiedene Längen und Abbiegewinkel am Anfang. Verschieden Winkel- und Längenvergrösserungen. | ||
| + | |||
| + | Du solltest etwa ein solches Bild erzeugen können (Strecke konstant, Winkelverkleinerung um $1^\circ$): | ||
| + | |||
| + | {{: | ||
| + | </ | ||
| + | |||
| + | ===== 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 ''#'' | ||
| + | |||
| + | Link bereitstellen SORRY ONEDRIVE MACHT GERADE PROBLEME | ||
| + | |||
| + | |||
| + | ===== Lösungsvorschläge ===== | ||
| + | |||
| + | <hidden Produkt und Summe> | ||
| + | <code python> | ||
| + | WIRD HAUSAUFGABE, | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <hidden Spalte kleines Einmaleins> | ||
| + | <code python> | ||
| + | WIRD HAUSAUFGABE, | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <hidden $n$-Eck> | ||
| + | <code python> | ||
| + | einzufuegen | ||
| + | </ | ||
| + | </ | ||
| + | | ||
| + | |||
| + | === Bonusaufgaben === | ||
| + | |||
| + | <hidden Summe der Zahlen von 1 bis zu eingegebener Zahl> | ||
| + | <code python> | ||
| + | n = inputInt(" | ||
| + | summe = 0 | ||
| + | i = 0 | ||
| + | repeat n: | ||
| + | i = i + 1 | ||
| + | summe = summe + i | ||
| + | print(" | ||
| + | print(n) | ||
| + | print(" | ||
| + | print(summe) | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <hidden Kleines Einmaleins> | ||
| + | <code python> | ||
| + | x = 0 | ||
| + | repeat 10: | ||
| + | x = x+1 | ||
| + | y=0 | ||
| + | s = "" | ||
| + | repeat 10: | ||
| + | y = y+1 | ||
| + | s = s + str(x*y) + " | ||
| + | # Die vorige Zeile auskommentieren und die nächste entkommentieren, | ||
| + | # wenn man eine anständige Tabelle will. | ||
| + | # Dies verwendet " | ||
| + | # s = s + (" | ||
| + | print(s) | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ===== Link zur Kursseite ===== | ||
| + | |||
| + | [[lehrkraefte: | ||