Taschenrechner

Konstantin Gastmann / pixelio.de

eine erste C# consolenapplication (Konsolenanwendung) habt ihr bereits erstellt, wenn ihr meinem Beitrag HelloWorld gefolgt seid. Außerdem habe ich euch gezeigt, wo ihr die Entwicklungsumgebung Visual Studio kostenlos bekommt und wie ihr eine erste Konsolenanwendung schreibt.
Dieser Beitrag soll euch zeigen wie ihr nun die nächste Konsolenapplikation erstellt. Diese Anwendung soll 2 ganzahlige Zahlen, einen Operator der Grundrechenarten: Addition (+), Subtraktion (-), Division (/), oder Multiplikation (x) einlesen Und das zugehörige Ergebnis ausgeben. Wenn du sowas noch nie gemacht hast, wirst du eine ganze Menge dabei lernen.
Als erstes musst du in Visual Studio wieder ein neues Projekt, vom Typ „Konsolenanwendung“ anlegen.
Deine Entwicklungsumgebung sollte jetzt wie folgt aussehen:

Jetzt gibst du der Anwendung einen Titel dazu rufst du wieder das Console Objekt auf und weißt der Eigenschaft Title einen Wert vom Datentyp string  zu, nämlich den Titel den dein Programm haben soll.

Console.Title = "Grundrechenarten";

Danach rufst du die Methode WriteLine auf um eine Zeile in die Konsole zu schreiben. Du schreibst jetzt am besten die Überschrift und Namen des Programms in die Konsole und ggf. kannst du die Ausgabe auch ein bisschen formatieren zum Beispiel so:

Console.WriteLine("Mein einfacher Taschenrechner von https://lerne-programmieren.com");          Console.WriteLine("-----------------------------------------------------------------------------------------------------------------------\n");

Als nächstes wollen wir dem Benutzer deiner Anwendung ermöglichen Zahlen einzugeben. Dazu fordern wir den Benutzer auf, damit er weiß wie er dein Programm zu bedienen hat dies geschieht mit der Write Methode auf dem Console Objekt:

Console.Write("Bitte gib die erste ganzzahlige Zahl ein:\t\t ");

Vielleicht fällt dir auf dass sich die Methode/Funktion von der zuvor genutzten etwas unterscheidet. Sie heißt jetzt Write anstatt WriteLine. Bei WriteLine springt der Cursor nach dem Ausführen des Befehls in eine neue Zeile. Bei Write bleibt er in der gleichen Zeile.

Jetzt brauchen wir noch eine Variable in der wir die Benutzereingabe speichern können. Wir werden der Einfachheit halber den Datentyp integer nutzen mit dem nur ganze Zahlen gespeichert werden können. Ihr könnt es aber auch mit einem Datentyp der Kommazahlen zulässt probieren, wie zum Beispiel double.

int ersteEingabe = 0;

Im nächsten Schritt wollen wir die Benutzereingabe auslesen. Dazu dient der Befehl ReadLine, der auf dem Console Objekt ausgeführt wird. Allerdings könnte man ja auch ungültige Zeichen wie Buchstaben oder Sonderzeichen eingeben, das würde zu einem Fehler führen. Um das zu verhindern, gibt es die Methode Int32.TryParse diese versucht einen Wert vom Datentyp string (in diesem Fall die Eingabe des Benutzers) in den Datentyp integer zu konvertieren, das bedeutet umzuwandeln. Als Parameter muss dieser Methode die Quelle, also in diesem Fall die Eingabe des Benutzers, und ein Ziel, in diesem Fall unsere grade erstellte Variable ersteEingabe angegeben werden.

Das sieht dann so aus:

Int32.TryParse(Console.ReadLine(), out ersteEingabe);

Durch den Befehl Console.ReadLine() wird außerdem die Anwendung solange gestoppt bis der Benutzer die Enter Taste betätigt und die Eingabe zurückgegeben.

Das Gleiche wollen wir für eine 2. Zahl tun:

Console.Write("Bitte gib die zweite ganzzahlige Zahl ein:\t\t ");
 int zweiteEingabe = 0;
 Int32.TryParse(Console.ReadLine(), out zweiteEingabe);

Man könnte jetzt noch den Rückgabewert der TryParse Methode abfragen um dann eine Fehlermeldung auszugeben, falls ein Wert eingegeben wurde der keine Zahl ist, aber der Einfachheit halber sehen wir hier davon ab.

Jetzt haben wir 2 Zahlen aber das Programm weiß noch nicht was es damit anfangen soll, der Operator fehlt noch, also wird dieser auch eingelesen:

Console.Write("Bitte gib einen gültigen Operator ein (+,-,*,/):\t ");
char numerischerOperator;
char.TryParse(Console.ReadLine(), out numerischerOperator);

Als Datentyp wurde hier character gewählt, also ein einzelnes Zeichen, der der Operator immer nur ein Zeichen hat.

Jetzt haben wir 2 Zahlen und einen Operator im Speicher, wir müssen also als nächstes das Ergebnis berechnen, dazu braucht man natürlich wieder eine Variable, gut verständliche Namen sind übrigens sehr wichtig beim Programmieren, also gewöhne es dir direkt an:

double ergebnis = 0;

Jetzt müssen wir entscheiden welche Rechenoperation ausgeführt werden muss. Hierzu müssen wir den Wert abfragen und dann entscheiden ob wir entweder die eine oder die andere Rechenoperation ausführen.

Der Befehl dazu heißt

if(Bedingung)
 {
 //Code der ausgeführt wird, wenn Bedingung erfüllt
 }
Else
 {
 //Code der ausgeführt wird, wenn Bedingung nicht erfüllt
 }

Ich habe es folgendermaßen umgesetzt:

if (numerischerOperator.Equals('+'))
{
     ergebnis = ersteEingabe + zweiteEingabe;
}
else if (numerischerOperator.Equals('-'))
{
    ergebnis = ersteEingabe - zweiteEingabe;
}
else if (numerischerOperator.Equals('*'))
{
   ergebnis = ersteEingabe * zweiteEingabe;
}
else if (numerischerOperator.Equals('/'))
{
  ergebnis = ersteEingabe / zweiteEingabe;
}
else
{                Console.WriteLine("-----------------------------------------------------------------------------------------------------------------------");
Console.WriteLine("Fehler, du hast keinen gültigen Operanden eingegeben!");
Console.WriteLine("Beliebige Taste zum Beenden drücken!");                Console.ReadKey();
Environment.Exit(0);
}

 

Die Rechenoperation wird ausgeführt und das Ergebnis in die ergebnisvariable geschrieben. Der letzte Elseblock wird ausgeführt wenn keine der vorherigen Bedingungen erfüllt wurde, also wenn im Operator ein Zeichen steht das weder +,-,* noch / ist. Der Befehl Environment.Exit(0); beendet das Programm und die 0 als Parameter teilt dem Betriebssystem mit, dass das Programm ordnungsgemäß heruntergefahren wurde.

Danach kommt der Code um das Ergebnis in der Konsole auszugeben:

Console.WriteLine("-----------------------------------------------------------------------------------------------------------------------");
Console.WriteLine("Das Ergebnis ist:\t\t\t\t\t {0}", ergebnis);
Console.WriteLine("Beliebige Taste zum Beenden drücken!");            Console.ReadKey();

Die Zeichenfolge {0} ist ein Platzhalter für den Wert einer Varibale, der dort ausgegeben werden soll. In diesem Fall das Ergebnis. Man gibt diese Variable nach einem Komma an. Man könnte auch mehrere Platzhalter einfügen dies kann man dann durchnummerieren {0}{1} {2} usw. und die Variablenwerte werden in der angegebenen Reihenfolge eingesetzt. Hast du noch Fragen, dann lass es mich in den Kommentaren wissen?!

Übrigens, wenn ihr Visual Studio nutzt eine Klasse, Methode, oder Objekt markiert und dann F1 drückt öffnet sich die Microsoft Dokumentation dazu.

Hier der gesamte Quellcode:

using System;

namespace Grundrechenarten
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Title = "Grundrechenarten";
            Console.WriteLine("Mein einfacher Taschenrechner von https://lerne-programmieren.com");
            Console.WriteLine("-----------------------------------------------------------------------------------------------------------------------\n");

            Console.Write("Bitte gib die erste ganzzahlige Zahl ein:\t\t ");
            int ersteEingabe = 0;
            Int32.TryParse(Console.ReadLine(), out ersteEingabe);

            Console.Write("Bitte gib die zweite ganzzahlige Zahl ein:\t\t ");
            int zweiteEingabe = 0;
            Int32.TryParse(Console.ReadLine(), out zweiteEingabe);

            Console.Write("Bitte gib einen gültigen Operator ein (+,-,*,/):\t ");
            char numerischerOperator;
            char.TryParse(Console.ReadLine(), out numerischerOperator);

            double ergebnis = 0;
            if (numerischerOperator.Equals('+'))
            {
                ergebnis = ersteEingabe + zweiteEingabe;
            }
            else if (numerischerOperator.Equals('-'))
            {
                ergebnis = ersteEingabe - zweiteEingabe;
            }
            else if (numerischerOperator.Equals('*'))
            {
                ergebnis = ersteEingabe * zweiteEingabe;
            }
            else if (numerischerOperator.Equals('/'))
            {
                ergebnis = ersteEingabe / zweiteEingabe;
            }
            else
            {
                Console.WriteLine("-----------------------------------------------------------------------------------------------------------------------");
                Console.WriteLine("Fehler, du hast keinen gültigen Operator eingegeben!");
                Console.WriteLine("Beliebige Taste zum Beenden drücken!");
                Console.ReadKey();
                Environment.Exit(0);
            }
            Console.WriteLine("-----------------------------------------------------------------------------------------------------------------------");
            Console.WriteLine("Das Ergebnis ist:\t\t\t\t\t {0}", ergebnis);
            Console.WriteLine("Beliebige Taste zum Beenden drücken!");
            Console.ReadKey();
        }
    }
}

 

Weiterführende Literatur, für Anfänger gut geeignet in C# oder in C:

Grundkurs C: C-Programmierung verständlich erklärt

C# 6 mit Visual Studio 2015: Das umfassende Handbuch: Spracheinführung, Objektorientierung, Programmiertechniken

3 Antworten auf „Taschenrechner“

  1. Das Programm funktioniert bei mir leider nicht, auch nicht, wenn ich den Code von hier direkt kopiere. Jedes mal, wenn das Wort operator vorkommt, zeigt das Programm an, dass dort ein „,“ fehlt. Außerdem werden bei .Equals immer Fehler angezeigt und mmit den Klammern ist auch irgendetwas nicht in ordnung. Ich bin totale Anfängerin und habe überhaupt keine Ahnung, was das Problem sein könnte. Habe ich vielleicht die falsche Projektvorlage gewählt? Ich habe die Konsolen-App Vorlage verwendet.

  2. Hi Anonymous,

    du hast Recht es scheint so dass der Variablenname „operator“ nun nicht mehr verwendet werden darf. Ändere diesen bitte an allen stellen in einen anderen Namen zB „numerischerOperator“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.