Informatik

Variablen in der Programmierung einfach erklärt

Variablen in der Programmierung einfach erklärt
Variablen in der Programmierung einfach erklärt
Für Quiz, Lückentext, Lernkarten und Fortschritt ist JavaScript nötig. Alle Inhalte und Lösungen bleiben direkt lesbar.

Eine Variable macht einen Wert unter einem Namen verfügbar. In imperativen Programmen kann eine Zuweisung den zugehörigen Wert verändern. Dabei wird zuerst die rechte Seite berechnet und erst danach das Ergebnis unter dem Namen links gespeichert.

Auf dieser Seite lernst du, Variablen anzulegen, Zuweisungen Schritt für Schritt auszuwerten und typische Fehler zu vermeiden.

Deine Lernziele

Hake ab, was du schon kannst — und komm am Ende hierher zurück!

Was eine Variable ist

Ein Programm verarbeitet Werte wie 25, 3.5, true oder "Hallo". Eine Variable gibt einem solchen Wert einen Namen. Dadurch kann das Programm den Wert später lesen und – je nach Programmiersprache und Programmierweise – verändern.

Definition

Variable

Eine Variable ist ein Name, über den ein Programm auf einen Wert oder ein Datenobjekt zugreift. Manche Sprachen beschreiben sie vereinfacht als benannten Speicherplatz. Das genaue Modell hängt von der Programmiersprache ab.

Das Kistenmodell hilft beim Einstieg: Auf der Kiste steht ein Name, in ihr liegt ein Wert. Es hat aber Grenzen. Bei einer Referenzvariable führt der Name nicht unmittelbar zum eigentlichen Objekt, sondern zu einer Referenz darauf.

Beispiel

Nach alter = 30 ist der Name alter mit dem Wert 30 verbunden. Die spätere Zuweisung alter = 31 ersetzt diesen Wert. Der Name bleibt gleich, sein Zustand ändert sich.

Eine Konstante unterscheidet sich davon: Ihr einmal festgelegter Wert soll beziehungsweise darf nicht erneut zugewiesen werden. In Java kennzeichnet zum Beispiel final int MAX_PUNKTE = 100; eine Konstante.

Teste dich
Frage 1 von 1LeichtWelche Aussage beschreibt eine Variable am besten?
Lösung: Ein Name, über den ein Programm auf einen Wert oder ein Datenobjekt zugreift — Eine Variable verbindet einen Namen mit einem verwendbaren Wert oder Datenobjekt. Die genaue technische Umsetzung hängt von der Sprache ab.
Wie eine Zuweisung den Zustand verändert

Das Zeichen = ist in vielen Programmiersprachen ein Zuweisungsoperator. Es bedeutet nicht dasselbe wie das Gleichheitszeichen in der Mathematik.

Bei x = x + 1 gehst du in dieser Reihenfolge vor:

  1. Lies rechts den aktuellen Wert von x.
  2. Addiere 1.
  3. Speichere das Ergebnis als neuen Wert von x.
Merke

Bei einer Zuweisung gilt: rechts lesen und berechnen, dann links speichern.

Der Variablenzustand zeigt, welcher Name gerade welchen Wert besitzt. Eine mögliche Kurzschreibweise ist {preis -> 100; rabatt -> 0}.

Beispiel

Ausgangszustand: {preis -> 0; rabatt -> 0; steuersatz -> 19}

Anweisungen:

  1. preis = 100
  2. rabatt = preis * 0.05
  3. preis = preis - rabatt

Auswertung:

  1. preis wird auf 100 gesetzt.
  2. Der aktuelle Preis wird gelesen: 100 * 0.05 = 5. Also erhält rabatt den Wert 5.
  3. Rechts wird mit den aktuellen Werten gerechnet: 100 - 5 = 95. Danach erhält preis den Wert 95.

Endzustand: {preis -> 95; rabatt -> 5; steuersatz -> 19}

Lückentext

Wähle in jeder Lücke die passende Form und prüfe anschließend deine Antworten.

Bei punkte = punkte + 3 wird zuerst der Wert von punkte gelesen. Dann wird der Ausdruck auf der Seite berechnet. Das Ergebnis wird anschließend unter dem Namen auf der Seite gespeichert.

Lösungen: Lücke 1: alte; Lücke 2: rechten; Lücke 3: linken. Eine Zuweisung liest zuerst die rechte Seite vollständig aus. Erst danach verändert sie das Ziel links.
Teste dich
Frage 1 von 1MittelVor x = x + 4 gilt {x -> 6}. Welcher Zustand gilt danach?
Lösung: {x -> 10} — Rechts ergibt sich 6 + 4 = 10. Dieser Wert wird anschließend links unter x gespeichert.
Deklaration, Initialisierung und Datentyp

In statisch typisierten Sprachen wie Java wird eine Variable meist ausdrücklich deklariert. Dabei werden ihr Datentyp und Name gegeben.

Definition

Deklaration

Eine Deklaration führt eine Variable mit Namen und Datentyp ein. Das Java-Beispiel int anzahl; deklariert die Variable anzahl.

Die Initialisierung ist die erste Zuweisung eines Wertes. int anzahl = 5; verbindet Deklaration und Initialisierung in einer Anweisung. Später kann anzahl = 6; einen neuen Wert zuweisen, ohne die Variable erneut zu deklarieren.

Der Datentyp legt fest, welche Werte und Operationen zulässig sind. Häufige Java-Typen sind:

TypBeispielwertBedeutung
int42ganze Zahl
double3.5Gleitkommazahl
booleantrueWahrheitswert
char'A'einzelnes Zeichen
String"Hallo"Text; in Java ein Referenztyp

Java ist statisch typisiert: Der Typ einer Variable wird bei der Deklaration festgelegt. In dynamisch typisierten Sprachen wie Python oder JavaScript wird der Typ eines Wertes zur Laufzeit bestimmt; ein Name kann dort nacheinander mit Werten verschiedener Typen verbunden sein.

Gut zu wissen

Initialisiere Variablen möglichst vor ihrer ersten Verwendung. So besitzt die Variable einen definierten Anfangswert, und Fehler durch einen fehlenden oder ungeeigneten Wert werden vermieden.

Teste dich
Frage 1 von 2LeichtWas ist in int punkte = 12; die Initialisierung?
Lösung: Die erste Zuweisung des Wertes 12 — Die Anweisung deklariert punkte als int und initialisiert die Variable zugleich mit 12.
Frage 2 von 2MittelWarum ist int punkte = "zwölf"; in Java nicht zulässig?
Lösung: Der Textwert passt nicht zum festgelegten Typ int. — int ist für ganze Zahlen vorgesehen. "zwölf" ist dagegen ein String.
Wo eine Variable sichtbar ist

Der Geltungsbereich, auch Scope genannt, ist der Programmabschnitt, in dem eine Variable sichtbar und nutzbar ist.

Definition

Lokale und globale Variable

Eine lokale Variable gehört zu einem begrenzten Block oder einer Funktion. Eine globale Variable ist in einem wesentlich größeren Bereich des Programms erreichbar.

Lokale Variablen helfen dir, Zusammenhänge überschaubar zu halten. Gleichnamige Variablen in anderen Bereichen müssen nicht dieselbe Variable sein. Ein lokaler Name kann außerdem einen gleichnamigen globalen Namen verdecken.

Globale Variablen wirken bequem, weil viele Programmteile direkt auf sie zugreifen können. Genau das kann aber Fehler verursachen: Verschiedene Stellen können denselben Wert unbemerkt verändern. Halte den Geltungsbereich deshalb möglichst eng.

Die Lebensdauer ist nicht dasselbe wie der Scope. Sie bezeichnet den Zeitraum, in dem der benötigte Speicher existiert. Eine lokale Variable wird gewöhnlich bei einem Funktionsaufruf neu angelegt und beim Verlassen der Funktion wieder entfernt. Einzelne Sprachkonstrukte können davon abweichen.

Auch der Name sollte seine Aufgabe zeigen. anzahlSchueler ist meist verständlicher als a. Mehrteilige Java-Namen werden üblicherweise in camelCase geschrieben.

Teste dich
Frage 1 von 1MittelWarum sind unnötig globale Variablen fehleranfällig?
Lösung: Mehrere Programmteile können denselben Wert schwer nachvollziehbar verändern. — Je größer der zugängliche Bereich ist, desto mehr Stellen können den Wert beeinflussen. Ein enger Scope erleichtert das Nachvollziehen.
Werte verfolgen und sicher tauschen

Eine Zuweisung kopiert bei einfachen Werten den Wert, der zu diesem Zeitpunkt rechts gelesen wird.

Beispiel

Nach first = 7 und second = first besitzen beide Namen den Wert 7. Wird danach first = 9 ausgeführt, bleibt second bei 7. Die spätere Änderung von first führt die frühere Zuweisung nicht erneut aus.

Bei Referenzvariablen kann die Situation anders wirken: Zwei Variablen können auf dasselbe Objekt verweisen. Dann kann eine Änderung am Objekt über beide Referenzen sichtbar sein. Das ist von einer neuen Zuweisung an einen der Namen zu unterscheiden.

Beim Tauschen zweier Werte darfst du den ersten Wert nicht zu früh überschreiben.

Beispiel

Ausgangszustand: {preis1 -> 44; preis2 -> 12}

Mit einer Hilfsvariable:

  1. hilf = preis1
  2. preis1 = preis2
  3. preis2 = hilf

Nach Schritt 1 bewahrt hilf den alten Wert 44. Schritt 2 setzt preis1 auf 12. Schritt 3 übernimmt den geretteten Wert in preis2.

Endzustand: {preis1 -> 12; preis2 -> 44; hilf -> 44}

Teste dich
Frage 1 von 2MittelNach a = 3, b = a und a = 8: Welche Werte gelten?
Lösung: a ist 8, b ist 3. — Die zweite Anweisung kopiert den aktuellen Wert von a nach b. Danach wird nur a verändert.
Frage 2 von 2SchwerWarum braucht die gezeigte Tauschfolge hilf?
Lösung: Sie bewahrt den alten Wert von preis1, bevor dieser überschrieben wird. — Ohne Zwischenspeicher wäre der alte Wert von preis1 nach preis1 = preis2 nicht mehr unter preis1 verfügbar.
Karteikasten
Karteikasten

Überlege zuerst selbst und drehe die Karte anschließend zum Prüfen um.

Alles auf einen Blick
Mindmap
  • Variable
    • verbindet einen Namen mit einem Wert oder Datenobjekt
    • besitzt je nach Sprache einen Datentyp
    • ist nur in ihrem Scope sichtbar
  • Zuweisung
    • liest und berechnet zuerst die rechte Seite
    • speichert danach das Ergebnis links
    • verändert den Variablenzustand
  • Sicher programmieren
    • früh initialisieren
    • verständliche Namen wählen
    • Geltungsbereich eng halten
    • Zwischenwerte vor dem Überschreiben sichern
Abschluss-Check
Teste dich
Frage 1 von 3LeichtWelche Reihenfolge gilt bei ergebnis = preis + steuer?
Lösung: preis und steuer lesen, addieren, Ergebnis unter ergebnis speichern — Eine Zuweisung wertet immer zuerst den rechten Ausdruck aus und aktualisiert danach das Ziel links.
Frage 2 von 3MittelEs gilt {preis -> 200; steuersatz -> 19; endpreis -> 0}. Danach folgen steuersatz = 7, steuer = preis * steuersatz / 100 und endpreis = preis + steuer. Wie lautet der Endzustand?
Lösung: {preis -> 200; steuersatz -> 7; steuer -> 14; endpreis -> 214} — Nach dem Überschreiben gilt steuersatz = 7. Deshalb ist steuer = 200 * 7 / 100 = 14 und anschließend endpreis = 200 + 14 = 214. preis bleibt unverändert.
Frage 3 von 3SchwerEin Programm verwendet überall die globale Variable wert. Welche Verbesserung macht Änderungen am ehesten nachvollziehbar?
Lösung: Passende lokale Variablen verwenden und benötigte Werte gezielt übergeben — Lokale Variablen begrenzen, wo ein Wert gelesen oder verändert werden kann. Gezielte Übergaben machen Abhängigkeiten sichtbar.

Wenn du den Abschluss-Check erklären kannst, beherrschst du das zentrale Ablaufmuster: Zustand lesen, rechte Seite berechnen, links speichern und den neuen Zustand prüfen.

Passend dazu