|
1 | 1 | \lesson{Variablen} |
2 | 2 |
|
3 | | -Wir wollen uns jetzt Zeilen 7 bis 10 von \texttt{helloyou.cpp} anschauen: |
4 | | -\cppsect{helloyou.cpp}{7}{10} |
| 3 | +Das Programm \texttt{variablen.cpp} erzählt von ihrem Tag. |
| 4 | +Compilier es und guck dir die Ausgabe an. |
5 | 5 |
|
6 | | -Bisher haben wir uns nicht sehr darum gekümmert, wie genau dieser Teil |
7 | | -funktioniert. Das wollen wir nun korrigieren. Beginnen wir mit Zeile 7. |
| 6 | +\inputcpp{variablen.cpp} |
8 | 7 |
|
9 | | -Was hier passiert ist, dass eine Variable definiert wird. Eine Variable ist im |
10 | | -Wesentlichen ein reservierter Bereich im \emph{Hauptspeicher}, in dem ihr Daten |
11 | | -ablegen könnt und der einen bestimmten Namen (in diesem Fall \texttt{eingabe}) |
12 | | -hat. Damit der Computer weiß, wie dieser Speicherbereich zu interpretieren ist |
13 | | -(wir erinnern uns: Der Computer kennt keine Buchstaben oder Zahlen, nur „an“ |
14 | | -und „aus“), hat jede Variable einen Typ (in diesen Fall \texttt{std::string}, |
15 | | -was einfach eine Folge von Buchstaben ist). |
| 8 | +Da immer wieder das gleiche Wort \glqq{}wundervoll\grqq{} benutzt wird, wurde es in eine sogenannte \emph{Variable} ausgelagert. |
| 9 | +Eine Variable ist ein Wert der mit einem Namen benannt wird. |
| 10 | +Dabei findet die Zuweisung durch ein \cppinline{=} statt, dem Namen auf der linken Seite des Gleichheitszeichen wird der Wert auf der rechten Seite zugewiesen. |
| 11 | +Im Programm selbst ist es dann so, als würde der Wert an der Stelle des Namens stehen. |
16 | 12 |
|
17 | | -Um einen string anzulegen gibt es noch eine andere Methode: So genannte |
18 | | -\emph{String-literals}. Das ist z.B. das \verb|"Hallo "| in Zeile 10. |
19 | | -Überall, wo ihr ein String-literal benutzen könnt, könnt ihr auch eine |
20 | | -String-Variable benutzen (und umgekehrt) |
| 13 | +Der Wert einer Variable kann sich im Laufe des Programmes verändern. |
| 14 | +Durch Hinzufügen der Zeile \cppinline{beschreibung = "langweilig";} wird hinter dieser Zeile anstelle von \glqq{}wundervoll\grqq{} nun \glqq{}langweilig\grqq{} ausgegeben. |
| 15 | +Ähnlich kann wie in \texttt{helloyou.cpp} der Wert von Variablen durch \cppinline{std::cin >> beschreibung} die Benutzerin eingeben werden. |
21 | 16 |
|
22 | | -Um Zeile 10 in Gänze zu verstehen, stellt euch die Pfeile (\verb|<<|) am Besten |
23 | | -als „Schiebeoperatoren“ vor, die das, was auf der Rechten Seite steht in das, |
24 | | -was auf der linken Seite steht „Schieben“. \texttt{std::cout} ist selbst eine |
25 | | -Variable, die bestimmte Dinge tut, wenn etwas „in sie hineingeschoben wird“, |
26 | | -nämlich, es auf der Konsole auszugeben. |
27 | | - |
28 | | -Wir schieben also zunächst den String \verb|"Hallo "| auf die Konsole, |
29 | | -anschließend den String, der in der Variable \texttt{eingabe} gespeichert ist, |
30 | | -anschließend ein \texttt{std::endl}, was ein (Betriebssystem abhängiger) |
31 | | -Zeilenumbruch ist. |
32 | | - |
33 | | -Was jetzt noch fehlt ist offensichtlich Zeile 8. Das ist, wo wir tatsächlich |
34 | | -eine Usereingabe holen. Wieder stellen wir uns die Pfeile als Schiebeoperatoren |
35 | | -vor, sie schieben jetzt etwas aus \texttt{std::cin} nach \texttt{eingabe}. |
36 | | -Genauso, wie \texttt{std::cout} etwas formatiert auf die Konsole schiebt, zieht |
37 | | -\texttt{std::cin} etwas formatiert aus der Konsole, je nachdem, wo man es |
38 | | -hinschiebt. In diesen Fall schieben wir es in einen String, es wird also ein |
39 | | -String (separiert durch Leerzeichen oder Zeilenumbrüche) gelesen und in die |
40 | | -Variable eingabe geschoben. |
41 | | - |
42 | | -Statt uns Strings aus der Konsole zu ziehen, können wir ihnen auch direkt |
43 | | -String-Literals \emph{zuweisen}, wie es hier passiert: |
44 | | -\inputcpp{strings.cpp} |
| 17 | +Variablen haben immer einen bestimmten \emph{Datentypen}. |
| 18 | +In unserem Beispiel handelt es sich um \cppinline{std::string}. |
| 19 | +Der Datentyp wird bei dem Erstellen -- also der ersten Zuweisung -- vor dem Namen angeben. |
| 20 | +Dieser wird benötigt, damit der Computer weiß, um was für eine Art Wert es sich handelt -- ein Text sollte anders behandelt werden als eine Zahl. |
| 21 | +Beispielsweise kann man zwei Zahlen miteinander multiplizieren, für Texte ergibt das allerdings keinen Sinn. |
| 22 | +In der Lektion Arithmetik lernen wir mehr über Zahlen und deren Eigenheiten. |
45 | 23 |
|
46 | 24 | \textbf{Praxis:} |
47 | 25 | \begin{enumerate} |
48 | | - \item Was passiert, wenn ihr nach Zeile 8 eine weitere Zuweisung an |
49 | | - \texttt{hallo} macht? |
50 | | - \item Definiert euch eine weiter \texttt{std::string} Variable und lest ein |
51 | | - weiteres Wort darin ein (vielleicht ein Nachname?) |
| 26 | + \item Was passiert, wenn ihr \cppinline{beschreibung} in Zeile 5 ein anderes Wort zuweist? |
| 27 | + \item Definiert eine weitere Variable und schreibt einen weiteren Satz. |
52 | 28 | \end{enumerate} |
53 | 29 |
|
54 | 30 | \textbf{Spiel:} |
55 | 31 | \begin{enumerate} |
56 | 32 | \item Was passiert, wenn ihr euch im Namen einer Variable „vertippt“? |
57 | | - \item Definiert euch zwei \texttt{std::string} Variablen, weißt ihnen |
58 | | - irgendwelche String-literals zu und versucht, die Summe von beiden |
59 | | - Strings auszugeben. |
60 | | - \item Was passiert, wenn ihr eine \texttt{std::string} Variable definiert, |
| 33 | + \item Definiert euch zwei \cppinline{std::string} Variablen, weist ihnen |
| 34 | + irgendwelchen Text zu, versucht, sie zu addieren und das Ergebnis auszugeben. |
| 35 | + \item Was passiert, wenn ihr eine \cppinline{std::string} Variable definiert, |
61 | 36 | ihr aber nichts zuweist und dann versucht, sie auszugeben? |
62 | 37 | \end{enumerate} |
0 commit comments