C# für Anfänger › Lektion 2.1

🎮 Level 3 · Dein Charakter bekommt Werte

Variablen und Datentypen in C#

Deine Heldin erreicht die Wolkeninsel. Wie heißt sie? Wie viele Lebenspunkte hat sie? Besitzt sie den Schlüssel? Heute speichert dein Programm diese Daten und verändert sie im Abenteuer.

  • ⏱ 45–60 Minuten
  • 🎯 Einstieg · Klasse 9–10
  • 🗝 Charakterprofil
Zwei jugendliche Abenteuerfiguren entdecken das Portal der Wolkeninsel

🎒 Deine neuen Skills

  • Variablen anlegen und Werte speichern.
  • string, int, double, char und bool auswählen.
  • Werte ändern, rechnen und Typfehler finden.
  • Deinen eigenen Spielcharakter programmieren.

Dein Startpunkt

Du kennst Console.WriteLine() und hast ein Konsolenprojekt.

Probiere die Codeblöcke einzeln in Program.cs aus. Im klassischen Projekt gehören sie in Main. Ersetze den vorherigen Beispielcode, damit Variablennamen nicht doppelt vorkommen.

Die Extra-Level kannst du später öffnen.

1

Das Spiel merkt sich deinen Namen

Eine Variable ist ein benannter Speicherplatz für einen Wert. Mit dem Namen verwendest du den Wert später wieder.

Program.cs · C#
string heldName = "PixelFox";
Console.WriteLine(heldName);

Die Ausgabe lautet PixelFox.

stringDer Typ: Hier speichern wir Text.
heldNameDer Variablenname.
=Weist einen Wert zu.
"PixelFox"Der Anfangswert.

Zwei Fachbegriffe

Die Variable mit Typ und Namen anzulegen heißt deklarieren. Einen Anfangswert zu vergeben heißt initialisieren. Unser Beispiel erledigt beides.

Quest 1: Deine Heldin bekommt einen Namen

Erstelle eine string-Variable heldName mit einem eigenen Namen. Gib sie aus.

🔓 Lösung und Erklärung öffnen
Program.cs · C#
string heldName = "Mira";
Console.WriteLine(heldName);

Ein anderer Name als Text ist ebenfalls richtig.

2

Fünf Datentypen für deinen Charakter

Der Typ legt fest, welche Werte die Variable speichern kann. Jeder dieser Werte hat eine andere Aufgabe:

string · Name als Text

Program.cs · C#
string heldName = "Mira";

Text steht in doppelten Anführungszeichen.

int · Ganze Lebenspunkte

Program.cs · C#
int leben = 100;

int speichert ganze Zahlen, auch negative.

double · Gewicht mit Nachkommastellen

Program.cs · C#
double gewicht = 2.5;

Im Quellcode ist der Dezimaltrenner ein Punkt. double speichert Gleitkommazahlen; manche Dezimalwerte werden nur näherungsweise dargestellt.

char · Ein Rangzeichen

Program.cs · C#
char rang = 'A';

Für einen einfachen Buchstaben verwenden wir einzelne Anführungszeichen.

bool · Ist der Schlüssel da?

Program.cs · C#
bool hatSchluessel = false;

Die Werte heißen true und false, ohne Anführungszeichen.

Quest 2: Wähle den passenden Typ

Welcher Typ passt zu Spieltitel, Goldmünzenzahl, Zeit in Sekunden mit Nachkommastellen, Kartenzeichen und der Frage, ob das Portal offen ist?

🔓 Lösung und Erklärung öffnen
  • Spieltitel: string
  • Goldmünzenzahl: int
  • Zeit: double
  • Ein einfaches Kartenzeichen: char
  • Portal offen: bool
3

Deine Lebenspunkte verändern sich

Eine Variable kann während des Programmlaufs verschiedene Werte erhalten. Wir ändern zunächst einen Namen:

Program.cs · C#
string heldName = "Mira";
Console.WriteLine(heldName);
heldName = "Alex";
Console.WriteLine(heldName);

Die Ausgabe zeigt zuerst Mira, danach Alex. Die Variable heißt weiterhin heldName und bleibt vom Typ string. Nur ihr Inhalt hat sich geändert.

Dasselbe funktioniert mit Zahlen. Nach einem Treffer bekommt die Variable leben einen neuen Wert:

Program.cs · C#
int leben = 100;
Console.WriteLine(leben);
leben = 80;
Console.WriteLine(leben);

Die Ausgabe zeigt 100 und danach 80. Die neue Zuweisung ersetzt den gespeicherten Wert.

Den Typ schreibst du beim Anlegen. Später reicht leben = 80;. Ein weiteres int leben im selben Gültigkeitsbereich würde die Variable doppelt deklarieren.

Checkpoint: Schlüssel gefunden?

Program.cs · C#
bool hatSchluessel = false;
Console.WriteLine(hatSchluessel);
hatSchluessel = true;
Console.WriteLine(hatSchluessel);

Sag beide Ausgaben voraus.

🔓 Lösung und Erklärung öffnen

Zuerst False, dann True. Im Code schreibst du die bool-Literale klein; diese Console-Ausgabe beginnt mit einem Großbuchstaben.

4

Gute Namen helfen beim Debuggen

Bei Namen unterscheiden wir zwei Fragen: Kann C# den Namen verwenden? Und versteht ein Mensch, was er bedeutet?

NameGültig?Begründung
punktzahlJaBeginnt mit einem Buchstaben und beschreibt den Inhalt.
punkt1JaEine Ziffer nach dem ersten Zeichen ist erlaubt.
_punktJaEin Unterstrich ist erlaubt.
2gewichtNeinBeginnt mit einer Ziffer.
portal offenNeinEnthält ein Leerzeichen.
gold-muenzenNeinDer Bindestrich ist das Minuszeichen.

Was bedeutet camelCase?

camel ist das englische Wort für Kamel. Die großen Anfangsbuchstaben im Inneren erinnern an kleine Höcker: hatSchluessel, ersterPunkt, lieblingsSpiel. Das erste Wort beginnt klein; weitere Wörter beginnen groß.

goldMuenzen verrät mehr als x. Für lokale Variablen nutzen wir camelCase, etwa hatSchluessel oder ersterBuchstabe.

  • Beginne in unseren Beispielen mit einem Buchstaben oder Unterstrich.
  • Ziffern sind danach erlaubt: punkt2.
  • Vermeide Leerzeichen und Bindestriche.
  • C# unterscheidet leben und Leben.
  • Reservierte Schlüsselwörter wie int verwenden wir nicht als Namen.

Bug-Hunt: Welche Namen sind kaputt?

Prüfe punkt2, 2punkte, hat Schluessel, gold-muenzen und _punkte.

🔓 Lösung und Erklärung öffnen

punkt2 und _punkte sind gültig. 2punkte beginnt mit einer Ziffer, hat Schluessel enthält ein Leerzeichen und gold-muenzen einen Bindestrich. Gute Alternativen: punkte2, hatSchluessel, goldMuenzen.

5

Loot sammeln und das Ergebnis speichern

Betrachte die Zeile gold = gold + 5; ganz langsam. Links und rechts kommt derselbe Name vor, aber die beiden Seiten haben verschiedene Aufgaben.

  1. Lies rechts den bisherigen Wert von gold: zum Beispiel 10.
  2. Berechne 10 + 5. Das Ergebnis ist 15.
  3. Speichere 15 in der Variablen links vom Gleichheitszeichen.

Der Ablauf ist also 10 → 10 + 5 → 15. Das Gleichheitszeichen weist den berechneten Wert zu. Es beschreibt hier keine mathematische Gleichung.

Du findest fünf Münzen. Eine Rechnung verändert den gespeicherten Wert erst, wenn du ihr Ergebnis zuweist.

Nur ausrechnen und anzeigen

Program.cs · C#
int gold = 10;
Console.WriteLine(gold + 5);
Console.WriteLine(gold);

Ausgabe: 15, dann 10. gold bleibt 10.

Den neuen Wert speichern

Program.cs · C#
int gold = 10;
gold = gold + 5;
Console.WriteLine(gold);

Ausgabe: 15. Erst wird rechts gerechnet, dann wird das Ergebnis links in gold gespeichert.

🔓 Lösung und Erklärung öffnen

Extra: Abkürzungen

Program.cs · C#
gold += 5; // gold = gold + 5;
leben -= 10; // leben = leben - 10;

Diese Operatoren lernst du später genauer kennen.

Quest 3: Folge der Energie

Program.cs · C#
int energie = 50;
Console.WriteLine(energie);
energie = energie + 20;
Console.WriteLine(energie);
energie = energie - 15;
Console.WriteLine(energie);

Notiere die drei Ausgaben vor dem Start.

🔓 Lösung und Erklärung öffnen

50, 70 und 55. Jede Zuweisung speichert den neuen Wert.

6

🐛 Der Typ muss zum Wert passen

Die Schreibweise entscheidet mit darüber, welcher Typ ein Wert ist. 100 ist eine ganze Zahl. "100" ist ein Text mit drei Zeichen. Für einen Menschen sehen sie ähnlich aus; C# behandelt sie unterschiedlich.

Wenn du einer int-Variablen direkt einen string zuweisen willst, meldet der Compiler typischerweise CS0029. Die Meldung erklärt, dass string nicht automatisch in int umgewandelt werden kann.

int leben = "100"; führt zu einem Compilerfehler. In Anführungszeichen ist 100 ein Text; int erwartet eine ganze Zahl.

Program.cs · C#
int leben = 100;
string lebenAlsText = "100";

Beide Zeilen sind gültig. Für Zahlenrechnungen muss ein als Text gespeicherter Wert zuerst passend umgewandelt werden. Das folgt in der Eingabe-Lektion.

Repariere die Ausrüstung

Program.cs · C#
int gold = "7";
double 2gewicht = 4.5;
bool portal offen = true;
char rang = "A";
🔓 Lösung und Erklärung öffnen
Program.cs · C#
int gold = 7;
double gewicht2 = 4.5;
bool portalOffen = true;
char rang = 'A';

Die Zahl braucht keine Anführungszeichen. Der Name beginnt mit einem Buchstaben und enthält kein Leerzeichen. char verwendet einfache Anführungszeichen.

Extra-Level: Kleine Überraschungen

🔓 Lösung und Erklärung öffnen

Ganzzahlige Division

Program.cs · C#
int gold = 5;
int spieler = 2;
Console.WriteLine(gold / spieler);

Die Ausgabe ist 2. Bei int / int wird der Nachkommateil abgeschnitten.

Program.cs · C#
int gold = 5;
double spieler = 2;
Console.WriteLine(gold / spieler);

Jetzt ergibt die Rechnung 2,5. Ein Operand ist double. Je nach Spracheinstellung zeigt die Konsole 2,5 oder 2.5. Im Quellcode bleibt der Dezimaltrenner ein Punkt.

Extra-Quest: Teile das Loot

Was ergibt 5 / 2 mit zwei int-Werten? Ändere das Beispiel für ein Ergebnis von 2,5.

🔓 Lösung und Erklärung öffnen
Program.cs · C#
int gold = 5;
double spieler = 2;
Console.WriteLine(gold / spieler);

Mit zwei int-Werten wäre das Ergebnis 2.

🔓 Lösung und Erklärung öffnen

Zeichen und Codewerte

Program.cs · C#
int codeWert = 65;
char zeichen = (char)codeWert;
Console.WriteLine(zeichen);

Es erscheint A. char speichert eine UTF-16-Codeeinheit. Die einfachen lateinischen Buchstaben haben dieselben Werte wie in ASCII. Manche Zeichen, etwa bestimmte Emojis, benötigen mehrere Codeeinheiten.

Extra-Quest: Das nächste Zeichen

Program.cs · C#
char rang = (char)66;
Console.WriteLine(rang);

Welcher Buchstabe erscheint?

🔓 Lösung und Erklärung öffnen

B. Für diese Buchstaben gehört zum Wert 65 ein A und zum Wert 66 ein B.

7

Dein erstes Charakterprofil

Die Daten liegen zunächst direkt im Quellcode. Es gibt noch keine Eingabe durch den Spieler. So kannst du dich ganz auf Variablen und ihre Typen konzentrieren.

Lies zuerst die fünf Deklarationen. Suche dann im Ausgabeteil jeweils denselben Namen. Die Ausgabe holt den gespeicherten Wert über den Variablennamen.

Alle fünf Typen arbeiten zusammen. Write schreibt die Beschriftung; WriteLine ergänzt den Wert und beendet die Zeile.

Program.cs · C#
string heldName = "PixelFox";
int level = 7;
double gewicht = 2.5;
char rang = 'A';
bool hatSchluessel = false;

Console.Write("Held: ");
Console.WriteLine(heldName);
Console.Write("Level: ");
Console.WriteLine(level);
Console.Write("Gewicht: ");
Console.WriteLine(gewicht);
Console.Write("Rang: ");
Console.WriteLine(rang);
Console.Write("Schluessel: ");
Console.WriteLine(hatSchluessel);

Quest 4: Ein Level weiter

Erhöhe level um eins, ändere rang zu 'B' und setze hatSchluessel auf true. Schreibe diese Änderungen nach den Deklarationen und vor den Ausgaben.

🔓 Lösung und Erklärung öffnen
Program.cs · C#
level = level + 1;
rang = 'B';
hatSchluessel = true;

Es erscheinen Level 8, Rang B und True. Die Typen werden bei diesen neuen Zuweisungen nicht wiederholt.

🎮 Eigene Übungsrunde

Schließe die bisherigen Beispiele. Versuche die nächste Aufgabe mit eigenem Code. Öffne die Lösung erst, wenn du sie vergleichen möchtest.

1. Daten-Detektiv

Erstelle passende Variablen für deinen Spitznamen, dein Alter, die tägliche Bildschirmzeit in Stunden, den Anfangsbuchstaben deines Namens und die Frage, ob deine Hausaufgabe fertig ist.

Lösung und Erklärung anzeigen
Program.cs · C#
string spitzname = "Pixel";
int alter = 15;
double bildschirmZeit = 2.5;
char anfangsBuchstabe = 'P';
bool hausaufgabeFertig = true;

Für eine erste Lösung ist hier die Wahl der Typen entscheidend. Andere Namen und passende Werte sind richtig.

2. Mini-Mission: Erst vorhersagen, dann ändern

Program.cs · C#
int gold = 10;
Console.WriteLine(gold + 5);
Console.WriteLine(gold);

Notiere beide Ausgaben. Ergänze anschließend eine Zuweisung, sodass am Ende dauerhaft 15 in gold steht.

Lösung und Erklärung anzeigen

Die ursprünglichen Ausgaben sind 15 und 10. Die Berechnung in WriteLine verändert gold nicht.

Program.cs · C#
int gold = 10;
gold = gold + 5;
Console.WriteLine(gold);

Jetzt ist 15 in gold gespeichert.

👾 Boss-Challenge: Dein eigener Held

Erstelle einen Charakter mit Name, Lebenspunkten, Ausrüstungsgewicht, Rang und Schlüsselstatus. Verwende alle fünf Datentypen und beschrifte die Ausgaben.

Dein Held findet einen Heiltrank: Er erhält 20 Lebenspunkte. Zeige die Lebenspunkte davor und danach.

🔓 Lösung und Erklärung öffnen
Program.cs · C#
string heldName = "Mira";
int leben = 60;
double gewicht = 3.5;
char rang = 'B';
bool hatSchluessel = true;

Console.Write("Held: ");
Console.WriteLine(heldName);
Console.Write("Leben vorher: ");
Console.WriteLine(leben);
leben = leben + 20;
Console.Write("Leben nachher: ");
Console.WriteLine(leben);
Console.Write("Gewicht: ");
Console.WriteLine(gewicht);
Console.Write("Rang: ");
Console.WriteLine(rang);
Console.Write("Schluessel: ");
Console.WriteLine(hatSchluessel);

Die Lebenspunkte ändern sich von 60 auf 80. Alle fünf Typen kommen vor. Eigene Namen und passende Werte sind ebenfalls richtig.

Wann ist dein Projekt fertig?

  • Der Code lässt sich kompilieren und läuft.
  • Alle fünf Typen kommen vor.
  • Mindestens ein gespeicherter Wert verändert sich.
  • Eine Rechnung verwendet eine Variable.
  • Du erkennst in der Ausgabe, zu welcher Angabe jeder Wert gehört.

Extra-Idee: Wähle Namen und Werte, die zu deinem eigenen Abenteuer passen. Eine Weltraumfigur kann Sauerstoff und Treibstoff besitzen; ein Waldabenteuer arbeitet vielleicht mit Energie und gesammelten Schlüsseln.

🏆 Skill freigeschaltet: Dein Programm speichert einen Charakter und verändert seine Werte.

8

🏁 Checkpoint: Was sitzt schon?

Name, Typ oder Wert?

Erkläre string, heldName und "Mira" in string heldName = "Mira";.

🔓 Lösung und Erklärung öffnen

string ist der Typ, heldName der Name und "Mira" der Anfangswert.

Ein Buchstabe, zwei Typen

Wie unterscheiden sich 'A' und "A"?

🔓 Lösung und Erklärung öffnen

'A' ist ein char. "A" ist ein string mit einem Buchstaben.

Ausgabe oder Änderung?

Program.cs · C#
int gold = 10;
Console.WriteLine(gold + 5);
gold += 2;
Console.WriteLine(gold);

Welche Zahlen erscheinen?

🔓 Lösung und Erklärung öffnen

15 und 12. Die erste Rechnung wird nur angezeigt. += 2 verändert gold.

Darf eine Ziffer im Namen stehen?

Ist punkt2 ein gültiger Variablenname? Warum?

Lösung und Erklärung anzeigen

Ja. Der Name beginnt mit einem Buchstaben. Eine Ziffer darf danach vorkommen.

Was bewirkt +=?

In gold steht 10. Was passiert bei gold += 5;?

Lösung und Erklärung anzeigen

gold erhält den Wert 15. Die Zeile entspricht gold = gold + 5;.

Warum ist das ein Typfehler?

Erkläre den Fehler in int alter = "15";.

Lösung und Erklärung anzeigen

int erwartet eine ganze Zahl. "15" ist wegen der Anführungszeichen ein string. Richtig für ein Zahlenalter: int alter = 15;.

Extra-Checkpoint: 5 / 2

Welches Ergebnis entsteht, wenn beide Werte int sind?

Lösung und Erklärung anzeigen

2. Bei der Ganzzahldivision wird der Nachkommateil abgeschnitten.

Deine Merkliste

  • Eine Variable hat einen Namen, einen Typ und einen gespeicherten Wert.
  • Beim Anlegen: Typ name = wert;
  • Beim Ändern: name = neuerWert;
  • string speichert Text, int ganze Zahlen, double Gleitkommazahlen, char eine UTF-16-Codeeinheit und bool true oder false.
  • Eine Rechnung allein ändert den gespeicherten Wert nicht. Dafür brauchst du eine Zuweisung.
  • Der Typ beeinflusst auch, welche Operationen möglich sind und welches Ergebnis sie liefern.

Deutsch–Ungarisch als Sprachhilfe

die Variable – változó
der Datentyp – adattípus
der Wert – érték
die Zuweisung – értékadás
deklarieren – deklarálni, létrehozni
initialisieren – kezdőértéket adni

Heute musst du noch keine Zeichencodes auswendig wissen. Wichtig sind passende Typen, verständliche Namen und das Verändern eines Werts.

Für Lehrkräfte: Unterricht und Lehrplanbezug

Die Lektion adaptiert die ungarische Ausgangslektion. Der gemeinsame Spielkontext verbindet Variablen, Zuweisungen und einfache Rechnungen. Zeichenkodierung und Ganzzahldivision sind optionale Vertiefungen.

Eine konkrete Zuordnung zum ungarischen NAT und zu österreichischen oder deutschen Lehrplänen wird separat anhand der jeweiligen Vorgaben dokumentiert.

Als Nächstes: Eingaben mit ReadLine()

Bald entscheidet der Spieler selbst über seinen Namen.

Zur Übersicht →

← Vorherige Lektion: .NET und C#

Grundlage: Magyar változat →

Technische Referenzen