einstieg:variablen
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
— | einstieg:variablen [2024/08/31 12:03] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Variablen ====== | ||
+ | ===== Variablen in der Mathematik ===== | ||
+ | |||
+ | Ihr kennt das Wort " | ||
+ | $$x\in \mathbb{R}$$ | ||
+ | Oft interessiert man sich in der Mathematik dafür, für welche Belegungen der Variable $x$ eine Aussage, z.B. | ||
+ | $$ 3\cdot x + 2 = x + 10$$ | ||
+ | wahr ist. Die Menge dieser Zahlen nennt man **Lösungsmenge** $\mathbb{L}$. Im gegebenen Beispiel ist $\mathbb{L} = \{4\}$. \\ \\ | ||
+ | ;-) Jetzt, wo Ihr Euch in Erinnerung gerufen habt, was der Begriff " | ||
+ | |||
+ | <WRAP center round info 60%> | ||
+ | **Variablen in der Informatik unterscheiden sich deutlich von Variablen in der Mathematik und (da kann ich Dich beruhigen!) sie sind viel einfacher zu verstehen!** | ||
+ | </ | ||
+ | |||
+ | ===== Variablen in der Informatik ===== | ||
+ | <WRAP center round tip 80%> | ||
+ | Eine **Variable** ist ein benannter Speicherplatz. Jede Variable hat einen **Bezeichner** (also einen Namen) und einen **Datentyp**. Der Datentyp legt fest, welche Werte die Variable speichern kann. \\ \\ | ||
+ | Vor der ersten Verwendung einer Variable müssen wir sie **deklarieren**. Dazu schreiben wir einfach den Datentyp der Variablen und dahinter den Bezeichner. \\ \\ | ||
+ | **Beispiel: | ||
+ | <code java> | ||
+ | int a; | ||
+ | </ | ||
+ | Die hier deklarierte Variable trägt den Bezeichner '' | ||
+ | </ | ||
+ | |||
+ | ==== Beispiel 1: Wertzuweisung, | ||
+ | |||
+ | Führe das Programm in Einzelschritten aus ("Step over": {{: | ||
+ | * zunächst mit offenem Tab " | ||
+ | * dann mit offenem Tab " | ||
+ | Beobachte genau, was jede einzelne der Programmanweisungen bewirkt! | ||
+ | |||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | int a; // Deklaration der Variable a | ||
+ | a = 12; // Wertzuweisung | ||
+ | |||
+ | // Auswertung von Termen | ||
+ | println(a); | ||
+ | println(3*a + 5); | ||
+ | |||
+ | // Im Unterschied dazu: Ausgabe einer Zeichenkette: | ||
+ | println(" | ||
+ | println(" | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | == Erklärung der einzelnen Anweisungen == | ||
+ | <code learnj [enable_line_numbers=" | ||
+ | int a; | ||
+ | </ | ||
+ | Diese Anweisung **deklariert** die Variable '' | ||
+ | <code learnj [enable_line_numbers=" | ||
+ | a = 12; | ||
+ | </ | ||
+ | Diese Anweisung hat es in sich: Das Gleichheitszeichen '' | ||
+ | <WRAP center round tip 80%> | ||
+ | Möchte man in Java den Wert zweier Terme **vergleichen**, | ||
+ | </ | ||
+ | <code learnj [enable_line_numbers=" | ||
+ | println(a); | ||
+ | </ | ||
+ | Diese Anweisung schreibt nicht den Buchstaben a in die Ausgabe, sondern den **Wert des Terms** '' | ||
+ | Will man den Buchstaben a ausgeben, dann verwendet man die Anweisung '' | ||
+ | <WRAP center round tip 80%> | ||
+ | Ist ein Text in Gänsefüßchen (''"'' | ||
+ | Schreibt man etwas nicht in Anführungszeichen, | ||
+ | </ | ||
+ | <code learnj [enable_line_numbers=" | ||
+ | println(3*a + 5); | ||
+ | </ | ||
+ | Der Text '' | ||
+ | |||
+ | <code learnj [enable_line_numbers=" | ||
+ | println(" | ||
+ | println(" | ||
+ | </ | ||
+ | Die Texte ''" | ||
+ | |||
+ | ==== Beispiel 2: Rätsel ==== | ||
+ | |||
+ | Schau' Dir das Programm zuerst an, ohne es zu starten. Überlege Dir bei jedem Programmschritt: | ||
+ | * Welche Variablen gibt es gerade? | ||
+ | * Welche Werte haben sie gerade? | ||
+ | |||
+ | Was meinst Du: Welche Werte geben die '' | ||
+ | |||
+ | Führe dann das Programm in Einzelschritten aus ("Step over": {{: | ||
+ | |||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | int a; // Deklaration der Variable a | ||
+ | a = 5; // Wertzuweisung | ||
+ | |||
+ | int b; // Deklaration der Variable b | ||
+ | b = a + 3; | ||
+ | |||
+ | println(a); | ||
+ | println(b); | ||
+ | |||
+ | a = b * 2; | ||
+ | println(a); | ||
+ | println(b); | ||
+ | |||
+ | </ | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | == Erklärung der einzelnen Anweisungen == | ||
+ | In der folgenden Tabelle zeige ich Dir, welche Variablen es nach Ausführung der einzelnen Anweisungen gibt und welche Werte sie tragen. | ||
+ | ^Anweisung^Variablen und deren Werte^Erklärung^ | ||
+ | |int a; | a: 0 | '' | ||
+ | |a = 5; | a: 5 | Der Variablen '' | ||
+ | |int b; | a: 5 \\ b: 0 | '' | ||
+ | |b = a + 3; | a: 5 \\ b: 8 | Der Term '' | ||
+ | |println(a) | a: 5 \\ b : 8 | Der Wert von '' | ||
+ | |println(b) | a: 5 \\ b : 8 | Der Wert von '' | ||
+ | |a = b * 2; | a: 16 \\ b: 8 | Der Term '' | ||
+ | |println(a) | a: 16 \\ b : 8 | Der Wert von '' | ||
+ | |println(b) | a: 16 \\ b : 8 | Der Wert von '' | ||
+ | |||
+ | ===== Wie kann ich mir eine Variable vorstellen? ===== | ||
+ | Stell Dir eine Variable am besten als beschriftete Schachtel vor, in der **genau ein** Wert (im Fall einer Variablen vom Typ '' | ||
+ | {{ : | ||
+ | Eine Wertzuweisung (z.B. '' | ||
+ | {{ : | ||
+ | ==== Beispiel 3: Erhöhung des Wertes einer Variablen ==== | ||
+ | |||
+ | Jetzt wird es geheimnisvoll: | ||
+ | |||
+ | < | ||
+ | |||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | int a; // Deklaration der Variable a | ||
+ | a = 37; // Wertzuweisung | ||
+ | |||
+ | a = a + 1; // Erhöht den Wert der Variablen um 1 | ||
+ | |||
+ | println(a); | ||
+ | |||
+ | </ | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | <WRAP center round info 80%> | ||
+ | Bei der Ausführung der Anweisung '' | ||
+ | Die Anweisung '' | ||
+ | **Wichtig: | ||
+ | Der Computer versucht **nicht**, die Gleichung $a = a + 1$ zu lösen (deren Lösungsmenge leer ist), denn '' | ||
+ | </ | ||
+ | |||
+ | <WRAP center round tip 60%> | ||
+ | Beim Programmieren kommt es sehr oft vor, dass der Wert einer Variable um einen konstanten Wert erhöht werden muss, daher gibt es dafür eine Kurzschreibweise. Statt '' | ||
+ | **Spezialfall: | ||
+ | Soll der Wert einer Variablen um '' | ||
+ | Das Erniedrigen einer Variable geht übrigens entsprechend. '' | ||
+ | <code java> | ||
+ | b--; | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | === Probiere es gleich hier aus: === | ||
+ | |||
+ | < | ||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | int a; // Deklaration der Variable a | ||
+ | a = 12; | ||
+ | |||
+ | a += 7; // Der Wert von a wird um 7 erhöht. | ||
+ | println(a); | ||
+ | |||
+ | a--; // Der Wert von a wird um 1 erniedrigt. | ||
+ | println(a); | ||
+ | |||
+ | a++; // Der Wert von a wird um 1 erhöht. | ||
+ | println(a); | ||
+ | |||
+ | a = a *3; // Der Wert von a wird verdreifacht. | ||
+ | println(a); | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | ===== Deklaration und Wertzuweisung in einem Aufwasch ===== | ||
+ | Oft deklariert man eine neue Variable und weist ihr gleich danach ihren Startwert zu, z.B. | ||
+ | <code learnj> | ||
+ | int k; | ||
+ | k = 14; | ||
+ | </ | ||
+ | Diese beiden Anweisungen darf man zu einer einzigen zusammenfassen: | ||
+ | <code learnj> | ||
+ | int k = 14; | ||
+ | </ | ||
+ | <WRAP center round info 80%> | ||
+ | **Form der Bezeichner: | ||
+ | Die Namen der Variablen (wir Informatiker sagen **Bezeichner** dazu, //englisch: identifier// | ||
+ | **Beispiele für gültige Variablenbezeichner: | ||
+ | '' | ||
+ | </ | ||
+ | ===== Tastatureingabe ===== | ||
+ | <WRAP center round info 80%> | ||
+ | Mit der Anweisungen '' | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | int zahl = Input.readInt(" | ||
+ | print(" | ||
+ | print(zahl * zahl); | ||
+ | print(", | ||
+ | println(-zahl); | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Ein letztes Beispiel ===== | ||
+ | Zum Schluss nochmal ein Rätsel: Welche Zahl gibt das Programm aus? | ||
+ | < | ||
+ | <div class=" | ||
+ | |||
+ | <script type=" | ||
+ | int zahl = 14; | ||
+ | int n = 8; | ||
+ | |||
+ | n = zahl + n; | ||
+ | |||
+ | zahl += 3; | ||
+ | zahl *= 2; | ||
+ | |||
+ | n += zahl; | ||
+ | |||
+ | println(n); | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | </ | ||
einstieg/variablen.txt · Zuletzt geändert: 2024/08/31 12:03 von 127.0.0.1