Grundlagen Teil 1 - Ganzzahlen
Im letzten Abschnitt haben wir uns mit dem Variablentyp string beschäftigt.
Jedoch ist offensichtlich, dass es hier noch einige andere Typen von Variablen geben muss.
In diesem Abschnitt widmen wir uns den int Variablen. Der Name int kommt von Integer, was auf Deutsch nichts anders als Ganzzahl bedeutet.
Die int Variable
Definieren (Festlegen) einer int Variable erfolgt identisch dem einer string Variable und funktioniert mit folgendem Code:
Der Name einer int Variabel befolgt die gleichen Regeln, wie die einer string Variable.
Nochmal zur Erinnerung:
- muss Anfangen mit einem Buchstaben oder _
- danach auch Zahlen erlaubt
- Groß / Kleinschreibung ist relevant
Jedoch gibt es einen Unterschied zum Speichern eines Wertes in einer int Variable.
Dies erfolgt zwar wie bei der string Variabel mit einem = Zeichen, jedoch wird hier der zugewiesene Wert nicht in Anführungsstrichen geschrieben.
Als Programmcode sieht dies folgendermaßen aus:
Ein Detail, dass im vorherigen Abschnitt nicht erwähnt wurde, ist dass es nur beim Definieren (Festlegen) einer Variable notwendig ist int/string vor dem Variablennamen zu schreiben.
Daher ist es möglich in einer Zeile eine Variable zu definieren (festzulegen) und ihr in der nächsten Zeile einen Wert zu geben ohne das anschreiben von int/string.
Des Weiteren ist der Wert einer Variable veränderbar und kann wieder überschrieben werden.
Als Programmcode würde dies folgendermaßen aussehen:
variablenName = 123;
int Variablen in der Konsole ausgeben
Dies erfolgt einfacher als man es sich vielleicht denken möge.
Hierzu kommt wieder die Console.WriteLine() Methode zum Einsatz.
Im letzten Abschnitt hatten wir diese Methode dazu genutzt einen string auszugeben.
Identisch funktioniert dies mit int Variablen. Mit anderen Worten ausgedrückt, Console.WriteLine() kann nicht nur Variablen vom Typ string ausgeben,
sondern auch Variablen vom Typ int.
Hier zwei Programmcodeausschnitte, welche das gleiche Ergebnis liefern würden:
Console.WriteLine(variablenName);
Nun gut, wir sind dazu imstande int Variablen (Ganzzahlen) auszugeben, jedoch wäre es doch von Vorteil wenn es die Möglichkeit gebe, auch int Variablen (Ganzzahlen) wie
string Variablen aus der Konsole einzulesen.
Wir erinnern uns an Console.ReadLine(), diese Methode gibt uns die Eingabe als Text zurück, dies ist allerdings nicht kompatibel mit int Variablen.
Hierfür stellt C# eine Befehl zur Verfügung, welcher dieses Problem löst. Dafür ist es allerdings notwendig eine weitere Klasse einzuführen.
Die Convert Klasse
In vorherigen Abschnitt hatten wir eine kurze Beschreibung zum Thema Klassen.
Dabei hatten wir Klassen als Schublade mit mehreren Fächern beschrieben. In diesem Fall handelt es sich um die Klasse (Schublade) Convert.
Wie der Name der Klasse (Schublade) auf Deutsch übersetzt schon sagt, handelt es sich dabei um eine Klasse (Schublade), welche uns Methoden (Fächer/Funktionen)
zum Konvertieren / Umwandeln zur Verfügung stellt.
Wir picken uns jetzt eine Methode heraus, die unseren Zweck erfüllt:
Offensichtlich dient diese Methode, dem Umwandeln von Text (Stringvariablen) in int Variablen,
dies lässt sich bereits einfach anhand des Namens der Methode erkennen.
Der Name setzt sich aus folgenden Teilen zusammen, "To" auf deutsch zu/auf, "Int" was den Zielvariablentyp angibt (aus Gründen der Lesbarkeit groß geschrieben beginnt)
und 32, was mit dem Speicherplatz zusammenhängt, momentan aber nicht von belangen ist.
Dieses Muster wird uns im späteren Verlauf immer wieder verfolgen und ist mit Englisch Grundkenntnissen einfach verständlich.
Die Verwendung dieser Methode ist recht simpel.
Man stellt sich diese Methode einfach wie die Methode Console.WriteLine(Text) vor, nur anstatt, dass der Text an die Konsole weitergegeben wird,
gibt diese Methode, den konvertierten Text an eine Variable weiter.
Im Quellcode repräsentiert diese Methode, also eine int Variable. Hingegen dazu,
repräsentiert die Console.ReadLine() Methode eine string Variable.
Kombiniert man diese Eigenschaften, lässt sich damit eine Ganzzahl einlesen.
Nun konstruieren wir uns ein Beispiel, um die Funktionsweise besser zu verstehen.
Beispiel: int Variablen einlesen und ausgeben
In diesem Abschnitt haben wir alles nötige theoretisch behandelt.
Nun programmieren wir ein Programm, welches es uns ermöglicht eine Zahl einzugeben und danach wieder auszugeben.
Ablauf eines solchen Programms:
- erstellen einer string Variable und Einlesen einer Zeile (darauf achten nur eine Ganzzahl einzugeben, ansonsten führt es zu einem Programmabsturz)
- erstellen einer int Variable
- konvertieren der string Variable und Abspeichern in der int Variable mittels =
- Ausgeben der int Variable
Als vollständiges Programm sieht dieses Beispiel folgendermaßen aus:
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Projekt1
{
class Program
{
static void Main(string[] args)
{
string eingeleseneZeile = Console.ReadLine();
int gewandelteZeile;
gewandelteZeile = Convert.ToInt32(eingeleseneZeile);
Console.WriteLine(gewandelteZeile);
Console.ReadLine();
}
}
}
Wenn wir das Programm jetzt ausführen (mit F5 oder dem grünen Pfeil), läuft das Programm folgendermaßen ab
und sollte aussehen wie auf dem Bild, bei einer Eingabe von 123 gefolgt von einem Enter:
Es ist offensichtlich, dass für dieses Beispiel keine int Variable (Ganzzahlen) notwendig ist, jedoch erklärt es einfach einige Zusammenhänge.
Natürlich könnte man wieder einige Zeilen zusammenfassen, als Beispielen fassen wir folgende drei Zeilen zu einer zusammen:
int gewandelteZeile;
gewandelteZeile = Convert.ToInt32(eingeleseneZeile);
Zusammengefasst ergibt das folgendes:
Übungsbeispiel
Um das gelernte zu vertiefen ein einfaches Beispiel.
Angabe
- zwei int Variablen mit den Variablennamen zahl1 und zahl2 Definieren
- für jede der zwei int Variblen einen Wert von der Konsole einlesen (!Convertieren!)
- den folgenden vordefinierten Text ausgeben: "Jetzt erfolgt die Ausgabe der Variablen";
- die int Variable zahl2 ausgeben
- die int Variable zahl1 ausgeben
Für die Lösung hier klicken. Bei Fragen und Problemen, bitte das Forum benutzen.
Lösung:using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Projekt1
{
class Program
{
static void Main(string[] args)
{
int zahl1 = Convert.ToInt32(Console.ReadLine());
int zahl2 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Jetzt erfolgt die Ausgabe der Variablen");
Console.WriteLine(zahl2);
Console.WriteLine(zahl1);
Console.ReadLine();
}
}
}
Mögliche Fehler
Wieder betrachten wir das Verhalten von Visual C# bei einem typischen Fehler.Als Beispiel wählen wir diesmal das Verhalten, wenn man versucht eine int Variable einen string abzuspeichern (nicht während das Programm ausgeführt wird).
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Projekt1
{
class Program
{
static void Main(string[] args)
{
int testVariable = "Testtext";
Console.ReadLine();
}
}
}
Jetzt bekommen wir folgende Fehlermeldung in der Fehlerliste angezeigt:(je nach Formatierung kann die Zeile / Spalte variieren)
Beschreibung | Datei | Zeile | Spalte | Projekt |
---|---|---|---|---|
Eine implizite Konvertierung vom Typ "string" in "int" ist nicht möglich. | Program.cs | 12 | 32 | Projekt1 |
Diese Fehlermeldung bedeutet nichts anderes, als dass Visual C# den Text nicht automatisch in eine Ganzzahl umwandeln kann. Bei diesem Beispiel würde auch die Convert.ToInt32(Text) Methode kein Ergebnis liefern, da sich "Testtext" nicht in eine Zahl umwandeln lässt.