lehrkraefte:snr:informatik:bruehl-2022:ein-und-ausgabe-variablen

Ein- und Ausgabe, Variablen

Besprechung der Hausaufgabe.

Quiz zum letzten Mal

  • Wie geht Ein- und Ausgabe in Python?
  • Wie speichert man Daten und verarbeitet sie?
  • :-) Lernen geht am besten durch Spielen! :-)
  • :-) Beim Programmieren immer Sachen ausprobieren, den Code leicht verändern, kreativ sein! So kann man viel lernen. :-)

Wir schreiben gemeinsam ein Programm1) und ich erkläre dabei möglichst viel (per Einzelschritt-Debugging durchgehen; Tabelle mit Namen und Werten und Typen der Variablen).

Variablen dienen dem Speichern von Daten, insbesondere von Zahlen und Zeichenketten/Text.

  • Jede Variable hat einen Namen und einen Wert.
  • Mit dem Zeichen “=” weist man einer Variablen einen Wert zu. Wenn die Variable noch nicht existiert, wird sie erzeugt.
  • Der Befehl x = 3 erzeugt eine Variable (mit Namen) x und Wert 3, wenn es noch keine Variable x gibt.
  • Existiert die Variable x bereits, so weist x = 3 der Variablen x den Wert 3 zu.
  • Rechts vom Gleichheitszeichen sind auch Ausdrücke erlaubt, die x enthalten, etwa x = 3 * x + 2 oder x = 3 * x + y. Dann wird der Ausdruck rechts des Gleichheitszeichens berechnet (dabei wird der “alte” Wert von x verwendet) und zum “neuen” Wert der Variablen x.
  • Jede Variable hat einen Typ, etwa den Typ int alias integer, also “normale” Zahl, oder den Typ float alias floating point, also Fliesskommazahl, d.h. Kommazahl.
  • Ein- und Ausgabe und weiteres ist in den Kommentaren im Programm in der nachfolgenden Aufgabe erklärt.

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, entweder im Ausgabefenster unten oder in der “Variablentabelle” rechts. Versuche, jeden einzelnen Schritt zu verstehen. Du darfst gerne Teile des Programms verändern. Bei Fragen melden!

# Ausgabe von Zeichenketten
print("Grüezi zäme!")
 
print("------------------")
print("Zahlen")
# Ausgabe von Zahlen und Rechnen mit Zahlen
print(5)
print(5+4)
print(5*3)
print(5/2)
 
 
print("------------------")
print("Variablen")
# 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", "penUp" etc. sind verboten.
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 
# "alten" Werts von x) berechnet. Das Ergebnis ist der neue Wert von x.
x = x+1
# Beachte, dass x hier sowohl rechts als auch links des 
# Zeichens "=" auftaucht.
#
# Achtung:
# In der Mathematik ist die obige Gleichung relativ uninteressant: Sie ist für keinen Wert von x erfüllt.
# Später: Die mathematische Abfrage auf Gleichheit wird mit "==" geschrieben.
 
print(x)
 
x= meinFreund_Nummer17a-x
print(x)
 
# Jede Variablen hat nicht nur einen Namen und einen Wert, sondern auch einen Typ.
print("------------------")
print("Der Typ einer Variablen")
 
print(type(x))
print(type(meinFreund_Nummer17a))
print(type(abc))
 
print("------------------")
print("Eingabe von Zahlen")
 
# Eingabe von Integers, also Zahlen ohne Komma.
# Die mit Anführungszeichen markierte Zeichenkette wird angezeigt.
# Zurückgeliefert wird die eingegebene Zahl. 
eingegebeneZahl = inputInt("Gib eine Zahl ein!")
# Oft ist es wie hier getan sinnvoll, sprechende Variablennamen zu verwenden.
# Dann erinnert man sich sofort, was gemeint ist.
print(eingegebeneZahl)
 
k = inputFloat("Gib eine Kommazahl (oder eine 'normale' Zahl) ein!")
print(k)

HAUSAUFGABE für die 1AFG:

Abgabe bis spätestens Sonntagabend 23:59 Uhr vor der nächsten Doppellektion über den folgenden Link:

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:

Salü!
-----------------------------
Eingegeben Zahlen:
13
und
-3
*****************************
Summe dieser Zahlen:
10
Produkt dieser Zahlen:
-29
-----------------------------
Uf Wiederluege!

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:

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:

7
14
21
28
35
42
49
56
63
70

Bemerkung: Es geht ohne repeat-Struktur, aber deutlich eleganter mit repeat. Versuche, diese Lösung zu finden!

Hinweis:

Hinweis:

Verwende repeat 10: und ausserdem eine Variable vielfaches, die anfangs Null ist und in jeder Wiederholung um die eingegebene Zahl erhöht und ausgegeben wird.


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, etwa 1.3, multiplizieren. Dies simulert exponentielles Wachstum.

Turtle-Exkurs: Ersetze die drei letzten Zeilen des folgenden Programms so, dass es ein regelmässiges n-Eck mit Seitenlänge s zeichnet.

Für die angegebenen Werte soll also ein 7-Eck mit Seitenlänge 100 (in Pixel) gezeichnet werden. Wenn man stattdessen n = 13 und s = 80 schreibt, soll ein 13-Eck mit Seitenlänge 80 gezeichnet werden.

from gturtle import *
makeTurtle()
 
n = 7
s = 100
 
??????
??????
??????

Bemerkung: Wenn du n = 360 setzt und s klein wählst, bekommst du (fast) einen Kreis.

Erst selbst überlegen!

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

Erst selbst überlegen!

Erst selbst überlegen!

  • Eingabe von Zahlen per inputInt(“…”), Eingabe von Kommazahlen per inputFloat(“…”). Einfacher geht es mit input(“…”), jedoch kann der Benutzer dann auch Zeichenketten (= Text) eingeben und eventuell führt das zum Absturz des Programms.
  • Ausgabe per print(…), etwa von Zeichenketten per print(“Grüezi”) oder von Zahlen per print(2 * x + 3).
  • Variablen werden mit x = … erzeugt bzw. verändert.

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

Schreibe ein Programm, das das Kleine Einmaleins als Tabelle ausgibt. Die Tabelle darf wild aussehen:

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 str(x) wandelt man eine Integer-Variable x in eine Zeichenkette um.
  • Mit + kann man Zeichenketten hintereinanderhängen. Beispiel print(“Hallo ” + “Welt!”).

Produkt und Summe

Produkt und Summe

print("Salü")
x = input("Gib eine Zahl ein:")   
# input ist es egal, ob Kommazahl oder Nichtkommazahl oder Text.
# Man kann dies statt inputFloat oder inputInt verwenden.
y = input("Gib eine weitere Zahl ein:")
 
print("Die eingegebenen Zahlen sind")
print(x)
print("und")
print(y)
print("") # Gibt eine leere Zeichenkette aus. Da "print(..)" nach der Ausgabe immer in die nächste Zeile geht, gibt dies eine Leerzeile aus.
 
print("Die Summe dieser beiden Zahlen ist")
print(x+y)
print("Das Produkt dieser beiden Zahlen ist")
print(x*y)
 
print("")
print("Uf Wiederluege!")

Spalte kleines Einmaleins

Spalte kleines Einmaleins

x = inputInt("Gib eine Zahl ein!")
 
vielfaches = 0
repeat 10:
    vielfaches = vielfaches + x
    print(vielfaches)
 
# Alternative Lösung:
#
# print("------------")
# i = 0
# repeat 10:
#     i = i + 1
#     print(i * x)

$n$-Eck

$n$-Eck

from gturtle import *
makeTurtle()
 
n = 7
s = 100
 
repeat(n):
    forward(s)
    right(360/7)

Bonusaufgaben

Summe der Zahlen von 1 bis zu eingegebener Zahl

Summe der Zahlen von 1 bis zu eingegebener Zahl

n = inputInt("Gib eine Zahl ein!")
summe = 0
i = 0
repeat n:
    i = i + 1
    summe = summe + i
print("Die Summe aller Zahlen von 1 bis")
print(n)
print("ist")
print(summe)

Kleines Einmaleins

Kleines Einmaleins

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 "formatierte Ausgabe".        
#        s = s + ("%4d" % (x*y))
    print(s)

1)
Das du später mehr oder weniger auf dieser Seite finden wirst.
  • lehrkraefte/snr/informatik/bruehl-2022/ein-und-ausgabe-variablen.txt
  • Last modified: 2022/03/17 08:13
  • by Olaf Schnürer