Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| lehrkraefte:snr:informatik:bruehl-2022:ein-und-ausgabe-variablen [2022/02/28 08:20] – [Lösungsvorschläge] Olaf Schnürer | lehrkraefte:snr:informatik:bruehl-2022:ein-und-ausgabe-variablen [2022/03/17 07:13] (current) – Olaf Schnürer | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ~~NOTOC~~ | ||
| + | |||
| + | ====== 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, | ||
| + | |||
| + | |||
| + | ===== 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 '' | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ===== Lösungsvorschläge ===== | ||
| + | |||
| + | <hidden Produkt und Summe> | ||
| + | <code python> | ||
| + | print(" | ||
| + | x = input(" | ||
| + | # input ist es egal, ob Kommazahl oder Nichtkommazahl oder Text. | ||
| + | # Man kann dies statt inputFloat oder inputInt verwenden. | ||
| + | y = input(" | ||
| + | |||
| + | print(" | ||
| + | print(x) | ||
| + | print(" | ||
| + | print(y) | ||
| + | print("" | ||
| + | |||
| + | print(" | ||
| + | print(x+y) | ||
| + | print(" | ||
| + | print(x*y) | ||
| + | |||
| + | print("" | ||
| + | print(" | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <hidden Spalte kleines Einmaleins> | ||
| + | <code python> | ||
| + | x = inputInt(" | ||
| + | |||
| + | vielfaches = 0 | ||
| + | repeat 10: | ||
| + | vielfaches = vielfaches + x | ||
| + | print(vielfaches) | ||
| + | | ||
| + | # Alternative Lösung: | ||
| + | # | ||
| + | # print(" | ||
| + | # i = 0 | ||
| + | # repeat 10: | ||
| + | # i = i + 1 | ||
| + | # | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <hidden $n$-Eck> | ||
| + | <code python> | ||
| + | from gturtle import * | ||
| + | makeTurtle() | ||
| + | |||
| + | n = 7 | ||
| + | s = 100 | ||
| + | |||
| + | repeat(n): | ||
| + | forward(s) | ||
| + | right(360/ | ||
| + | </ | ||
| + | </ | ||
| + | | ||
| + | |||
| + | === 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: | ||