Samstag, 17. November 2012

Erstes C#-Programm

Hallo zusammen!

Im letzten Post habe ich euch gezeigt, wie ihr die nötigen Programme zum Programmieren mit Visual C# herbekommt, in diesem Post werden wir ein kleines C#-Programm schreiben.

(Fast) Jeder Programmierer hat nach einer alten Tradition mit einer Konsolenanwendung, auf der der Text "Hello World!" ausgegeben wird, angefangen. Auch wir halten uns an diese Tradition. Also los!

Startet bitte Visual Studio 2012 Express für Windows Desktop. Es erscheint die Startseite, auf der ihr die Möglichkeit habt, ein neues Projekt zu starten. Selbiges geht auch über das Dateimenü. Wählt im nun erscheinenden Dialog unter "Installiert", "Vorlagen", "Visual C#", "Windows" die Projektvorlage "Konsolenanwendung" aus und benennt sie nach einem Namen eurer Wahl (z.B. "Erstes Programm" oder "HelloWorld"). Klickt dann auf den Button "OK".


So erstellt ihr ein neues Konsolenprojekt in Visual Studio 2012 Express für Windows Desktop
Daraufhin erstellt Visual Studio 2012 Express für Windows Desktop (ab jetzt "Visual Studio") euch ein neues Projekt, was eine Weile dauern kann. Die Startseite verschwindet und ihr seht an deren Stelle folgenden Code:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ErstesProgramm
{
    class Program
    {
        static void Main(string[] args)
        {
        }
    }
}
 
Bevor wir anfangen, müssen wir die Entwicklungsumgebung (IDE) noch anpassen. Dazu klicken wir im Menü erst auf "Extras", dann auf "Optionen", woraufhin sich ein Dialogfeld öffnet. In diesem klicken wir auf den Pfeil links neben "Text-Editor", klicken dann auf "Alle Sprachen" und aktivieren das Häkchen bei "Zeilennummern". Um die Einstellung zu speichern, ist ein einfacher Klick auf "OK" notwendig.
Außerdem klicken wir im Menüpunkt "Ansicht" auf "Fehlerliste", woraufhin im unteren Programmfensterteil die selbige angedockt und sichtbar wird.

Zusammen mit den anderen Dateien, die sich im Projektmappenexplorer (rechts) befinden, bildet die C#-Codedatei schon ein ausführbares Programm. Ihr könnt es ja mal ausprobieren, indem ihr entweder im Menüpunkt "Debuggen" auf "Debugging starten", auf den grünen Pfeil klickt oder indem ihr F5 auf der Tastatur drückt. Doch viel zu sehen ist nicht. Bei besonders schnellen Computern ist nichts festzustellen, bei etwas langsameren sieht man ein Konsolenfenster, welches sich öffnet und ganz schnell wieder schließt. Genau das wollen wir jetzt ändern, indem wir einen Text auf der Konsole ausgeben und danach so lange warten, bis der Benutzer eine beliebige Taste drückt.

Dazu müssen wir erst mal die Konsole überhaupt ansprechen. Dazu schreiben wir zwischen die geschweiften Klammern nach "static void Main(string[] args)" das engl. Wort für Konsole, also "Console". Sobald wir den ersten Buchstaben eingetippt haben, erscheint ein Fenster neben ihm und zeigt uns einige mit dem Buchstaben "C" beginnenden Wörter, wie z.B. "char", "case", usw. Diese praktische Hilfe nennt sich IntelliSense. Wir schreiben entweder ein "O" nach dem "C", wodurch die Auswahl weiter eingeschränkt wird, oder wir navigieren mit Hilfe der Pfeiltasten zum Eintrag "Console". Sobald das Wort markiert ist, drücken wir die Enter-Taste, wodurch das Wort automatisch mit korrekter Recht- und Groß- und Kleinschreibung vervollständigt wird. Wichtig in C# ist die Groß- und Kleinschreibung! Das Wort "Console" wird in hellblauer Schriftfarbe dargestellt, da es eine statische Klasse ist, womit wir uns aber noch später beschäftigen werden. Somit haben wir die Konsole schon einmal angesprochen. Jetzt müssen wir nur noch einen Text auf ihr ausgeben. Dazu geben wir einen Punkt (.) direkt nach "Console" ein, woraufhin sich IntelliSense wieder meldet und eine Reihe von Vorschlägen anbietet. Wir tippen das Wort "WriteLine" ein und bestätigen mit Enter. Nun werden in der Fehlerliste allerdings zwei Fehler angezeigt. Anscheinend fehlt noch irgendetwas, was auch klar wird, wenn man bedenkt, dass der Computer wissen muss, was er auf die Konsole schreiben soll. "WriteLine" ist eine Methode, also ein Befehl, der interne Variablen verändert, nutzt oder erstellt (wir beschäftigen uns noch später damit). Jede Methode wird mit einer runden Klammer auf und einer nachfolgenden runden Klammer zu abgeschlossen, also schreiben wir das schon mal hin. Wo kommt jetzt der Text hin, den wir schreiben wollen? Zwischen die Klammern und zwar mit dem Präfix und dem Suffix ". Also lautet unser Befehl bis jetzt: "Console.WriteLine(""). Der Text kommt nun zwischen die Anführungszeichen: "Console.WriteLine("Hello World!"). Die Methode "WriteLine" schreibt diesen Text nun auf die Konsole und erzeugt danach einen Zeilenumbruch (neue Zeile), währen die Methode "Write", die euch vielleicht auch schon aufgefallen ist, nur den Text schreibt.
Doch noch immer gibt es einen Fehler in der Fehlerliste: "; erwartet". Das liegt daran, dass jeder C#-Befehl von einem Semikolon (;) abgeschlossen werden muss. Das ist ganz wichtig, denn das Programm ist nicht ausführbar ohne das Semikolon. Das Vergessen des Semikolons ist ein typischer Anfängerfehler, also Vorsicht!!!
Nun schreiben wir also erfolgreich Text auf die Konsole, aber ein erneutes Ausführen zeigt keine Veränderungen zum letzten Versuch auf. Ist ja auch klar, denn die Konsole wird geöffnet, dann wird der Text geschrieben und danach schließt sie sich wieder. Da die Computer heute so schnell sind, merken wir das gar nicht mehr. Wie also schaffen wir es, die Konsole so lange geöffnet zu lassen, bis der Benutzer das Ergebnis gesehen hat? Dazu machen wir uns die Methode "ReadKey" der Klasse "Console" zu nutze, die vom Benutzer einen Tastendruck einliest und zurückgibt. Dadurch bleibt die Konsole so lange offen, bis der Benutzer eine beliebige Taste auf der Tastatur drückt. Also erweitern wir unser Programm um diese Codezeile: "Console.ReadKey();", und ein erneuter Testlauf überzeugt uns von der Funktionalität des Programms.

Hier noch mal der gesamte Quellcode:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ErstesProgramm
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
                     Console.ReadKey();
        }
    }
}

Das war´s auch schon! Ich hoffe, euch hat der Post gefallen, Verbesserungsvorschläge könnt ihr gerne in die Kommentare schreiben! Im nächsten Post behandeln wir Variablen in C#, eine sehr wichtige und sinnvolle Sache, ohne die unser heutiges Programm auch nicht hätte laufen können.

Bis dahin,
Julian

2 Kommentare:

  1. Wie mache ich das nach : Console.ReadKey(); Das Programm nach drücken einer Taste nicht geschlossen wird sondern neu ausgeführt wird ?
    lg Julian :D

    AntwortenLöschen
    Antworten
    1. Du schreibst einfach das ganze Programm in eine Endlosschleife (oder eine Schleife, dir das Programm so lange wiederholt, wie du es willst. Für eine Endlosschleife bietet sich die while-Schleife an, also:

      ...
      while (true)
      {
      //Proramm
      Console.ReadKey();
      }

      Falls das Programm eine andere Anzahl durchlaufen werden soll, geht das am besten mit der for-Schleife (s. nachfolgende Posts)
      Viele Grüße

      Löschen