Kapitel 3 Ihr erstes C#- Programm C# Mit einfachen Beispielen programmieren ISBN 3-8272-6426-X In diesem Kapitel werden Sie Ihr erstes kleines C#-Programm erstellen und ausführen.
Ihr Erfolgsbarometer Das können Sie schon: Die Entwicklungsschritte zum ausführbaren Programm 12 Die Bedeutung des.net Framework für C#-Programme 20 Das lernen Sie neu: Kompilieren und Ausführen eines C#-Programms 46 41
Eingabe des Quelltextes Unser erstes Programm soll sich darin erschöpfen, einen Text auf den Bildschirm auszugeben. Wir werden den Benutzer über den Bildschirm begrüßen, Sie können aber auch jeden beliebigen anderen Text, der Ihnen gerade einfällt, verwenden. Oder Sie schreiben das berühmte»hallo Welt«-Programm. Berühmt deshalb, weil nahezu jeder Autor eines Programmierbuches es als Einführungsprogramm verwendet, seitdem es Anfang der 70-er Jahre in einem Lehrbuch von Kernighan und Ritchie über die Programmiersprache C stand. Wir wollen den Benutzer lediglich mit dem Wort»HALLO«begrüßen. Bevor wir daran gehen, uns Gedanken über das Aussehen unseres Quellcodes zu machen, brauchen wir zunächst einen Editor. Wir verwenden den Editor unseres Betriebssystems, Notepad. 1 Starten Sie Ihren Editor. Sie können Notepad über die Startleiste mit dem Befehl START/PROGRAMME/ ZUBEHÖR/EDITOR aufrufen. Abbildung 3.1: Starten des Windows-Editors 42
Eingabe des Quelltextes Es gibt bereits eine Reihe spezieller C#-Editoren, die Sie sich aus dem Internet herunterladen können. Sie können bei der Programmierung hilfreich sein, da viele für C# gedachte Editoren nützliche Funktionen besitzen, wie zum Beispiel Syntaxhervorhebung, bessere bzw. automatische Formatierungsmöglichkeiten, teilweise Kontrolle von Syntaxfehlern usw. Es spricht aber Einiges dafür, diese erst dann zu verwenden, wenn Sie schon etwas mit C# vertraut und offen für andere Inhalte sind. Wenn Sie aber jetzt schon mit einem anderen Editor als Notepad arbeiten möchten, hindert Sie das nicht. Die Beispiele können Sie ohne Unterschied ebenso nachvollziehen. Nach dem Start von Notepad sollte sich folgendes Bild ergeben: Abbildung 3.2: Hier beginnt die Programmierarbeit Genau hier beginnt unsere Programmierarbeit und hier endet sie auch im Wesentlichen, wenn wir unseren Quelltext eingegeben und die Datei als C#-Datei abgespeichert haben. 43
Die Lösung im Voraus Wir gehen davon aus, dass Sie nicht länger auf Ihr erstes Programm warten wollen und die einzelnen Schritte von der Eingabe des Quellcodes über dessen Kompilierung bis zur Programmausführung schnell kennen lernen möchten. Daher sei hier schon einmal der vollständige Quellcode dargestellt. Denjenigen, denen mehr daran gelegen ist, den Quellcode zunächst zu verstehen, sei es anheim gestellt, einen Ausflug zum Kapitel 4 zu machen und danach wieder hierher zurückzukehren. 1 Geben Sie folgenden Quelltext in Ihren Editor ein: using System; class FirstClass public static void Main() Console.WriteLine("HALLO"); Das vollständige Listing unseres ersten Programms Wie gesagt, bewirkt das Programm die Ausgabe HALLO auf dem Bildschirm. Wenn Sie einen anderen Ausgabetext wünschen, geben Sie statt dem Wort HALLO zwischen den beiden doppelten Anführungszeichen den gewünschten Text ein. Der vollständige Quellcode eines Programms, welches den Benutzer z.b. mit den Worten Willkommen bei CSharp begrüßt, würde demnach so aussehen: using System; class FirstClass public static void Main() Console.WriteLine("Willkommen bei CSharp"); Bitte vermeiden Sie einen Zeilenumbruch innerhalb des Ausgabetextes. Wenn dieser zu lang wird, dann benutzen Sie nacheinander die Programmbefehle Console.Write("Ausgabetext"); und Console.WriteLine ("Ausgabetext");. Das Ganze sieht dann so aus: 44
Eingabe des Quelltextes using System; class FirstClass public static void Main() Console.Write("Willkommen bei"); Console.WriteLine(" CSharp"); Denken Sie in diesem Fall daran, dass Leerzeichen, welche innerhalb der Zeichenfolge stehen, ebenfalls auf den Bildschirm ausgegeben werden. Es hat also auch Auswirkungen auf die Bildschirmausgabe, wenn diese fehlen. So ist im obigen Quelltext ein Leerzeichen vor dem Wort CSharp in der zweiten Ausgabeanweisung notwendig, da sonst auf dem Bildschirm die Wörter bei und CSharp nicht wie gewollt durch ein Leerzeichen getrennt, sondern als ein Wort dargestellt werden. Programmierstil Gewöhnen Sie sich schon jetzt an, die geschweiften Klammern und jeweils in eine eigene Zeile zu schreiben und die Programmierbefehle in die Zeilen, die zwischen einer öffnenden geschweiften Klammer und einer schließenden geschweiften Klammer stehen, um eine selbst festgelegte Anzahl von Stellen einzurücken. Dies ist zwar nicht zwingend notwendig, gehört aber zum guten Programmierstil, da es die Lesbarkeit Ihrer Quelltexte erhöht. Sie werden schon sehr bald feststellen, dass sich ein Quellcode wie oben dargestellt sehr viel leichter nachvollziehen und damit später auch leichter überarbeiten lässt, als derselbe Quelltext etwa in der Form: using System; class FirstClass public static void Main() Console.WriteLine("HALLO"); Auch diese Ausführung des Quellcodes wäre mit demselben Ergebnis kompilierbar. Aber schon bei diesem kleinen Programm wäre es auch für den geübten C#-Programmierer nicht leicht, auf den ersten Blick zu erkennen, welche Teile des Quelltextes zusammengehören. Wenn Sie das jetzt noch nicht überzeugt (weil es sich zum einen um ein sehr kleines Programm handelt und weil auch die besser lesbare Ausführung für Sie noch nicht nachvollziehbar ist, da Sie die Bedeutung der einzelnen Anweisungen noch nicht kennen), bitte ich Sie dennoch, meiner Empfehlung zu folgen und sich beide Quelltexte noch einmal anzuschauen, nachdem Sie das nächste Kapitel durchgearbeitet haben. 45
Wir werden die Anweisungen innerhalb zweier geschweifter Klammern immer um genau drei Leerstellen einrücken. Es bleibt Ihnen aber überlassen, für Ihre Programme eine andere Anzahl von Leerzeichen festzulegen, sie sollte aber im weiteren Quelltext konstant bleiben. Einige C#-Editoren, darunter der von Visual Studio.NET, führen diese Einrückungen automatisch durch. Hier ist noch einmal die lesbare Ausführung unseres Programms, in den Editor eingegeben: Kompilierung und Ausführung Nun wollen wir unser eben erstelltes C#-Programm übersetzen lassen und dann zur Ausführung bringen. Zuvor müssen wir obigen Quelltext noch als C#-Quellcode-Datei abspeichern. Der Ordnung halber raten wir Ihnen, sich für Ihre C#-Programme ein eigenes Unterverzeichnis mit Namen CSharp (unterhalb des Stammverzeichnisses) einzurichten. 46
Kompilierung und Ausführung Abbildung 3.3: Erstellen Sie ein separates Verzeichnis für Ihre C#-Programme. Ihr Laufwerksbuchstabe lautet vermutlich C:\. 1 Speichern Sie nun die Quelltext-Datei unter dem Namen FirstClass mit der Erweiterung.cs in Ihrem Programmverzeichnis ab. Abbildung 3.4: Speichern der Quellcode-Datei Bitte beachten Sie: Grundsätzlich ist der Name der Quelltext-Datei frei wählbar. Wir empfehlen Ihnen, die Datei so zu benennen wie die Klasse, welche die Hauptfunktion Main() enthält. Der Quellcode kann sich aus einer Vielzahl von Klassen zusammensetzen. Für den Anfang werden unsere Programme aber lediglich aus einer einzigen Klasse bestehen. Der Klassenname steht immer hinter dem Wort class und lautet im obigen Listing FirstClass. Jede C#-Quellcode-Datei muss die Erweiterung.cs tragen. Ein Tipp hierzu: wenn Sie sichergehen wollen, dass der Windows-Editor nicht von sich aus noch zusätzlich die Endung.txt anfügt, dann setzen Sie den Dateinamen zusammen mit der Erweiterung.cs wie im Bild unten in doppelte Anführungszeichen. 47
Abbildung 3.5: Setzen Sie den Dateinamen samt Erweiterung beim Speichern in doppelte Anführungszeichen. Nach dem Speichern erscheint in der Titelzeile des Editors der Name der Quellcode-Datei mit der Endung.cs. Abbildung 3.6: Nach dem Speichern Nun müssen wir diese Datei kompilieren. Für die weiteren Aktionen spielt es dabei keine Rolle, ob die Quellcode-Datei geöffnet oder geschlossen ist. 2 Begeben Sie sich auf die Befehlszeile. Für Windows-Betriebssysteme klicken Sie zum Öffnen der Eingabeaufforderung auf START, zeigen auf PROGRAMME/ZUBEHÖR und klicken dann auf EINGABEAUFFORDERUNG. 48
Kompilierung und Ausführung Hinweis Weitere Namen für die Eingabeaufforderung sind neben Befehlszeile DOS-Box, DOS-Fenster oder schlicht Konsole. Letztere Bezeichnung stammt noch aus den Urzeiten der Computertechnik. Oder Sie öffnen das Startmenü und klicken auf AUSFÜHREN... In der dann erscheinenden Dialogbox tippen Sie cmd in das Textfeld ein. Abbildung 3.7: Start der DOS-Box Wenn Sie nun den Dialog mit OK bestätigen, befinden Sie sich auf der Befehlszeile. Unser Laufwerksbuchstabe ist hier E:\, Ihr Stammverzeichnis ist möglicherweise C:\. Abbildung 3.8: Die Befehlszeile (DOS-Box) 3 Wechseln Sie in das Verzeichnis, in dem sich Ihre Quellcode-Datei (FirstClass.cs) befindet. In unserem Fall heißt das Verzeichnis, welches die zu kompilierende Quellcode-Datei enthält, CSharp (siehe Verzeichnisstruktur in der Abbildung weiter oben). Um in ein Unterverzeichnis zu wechseln, verwenden Sie den DOS-Befehl cd und geben nach einem Leerzeichen den Namen des Verzeichnisses an. 49
Abbildung 3.9: Wechsel ins C#-Programmverzeichnis Hier rufen wir nun den Compiler von C# auf, um den Intermediate Language Code zu erzeugen. Der Dateiname für das entsprechende Softwareprogramm heißt csc.exe. Die Datei befindet sich im Unterverzeichnis v1.0.3705 (der vollständige Pfad lautet bei uns: E:\WIN2000\Microsoft.NET\Framework\ v1.0.3705). Wenn Sie bei der Installation des.net Framework so vorgegangen sind, wie im letzten Kapitel beschrieben, so ist dieses Unterverzeichnis im Suchpfad enthalten, da die entsprechende Umgebungsvariable gesetzt bzw. erweitert wurde. Das heißt, Sie brauchen sich nicht um den Ort der Datei zu kümmern, da Sie den Compiler dann aus jedem Verzeichnis heraus aufrufen können. Wie Ihnen vielleicht bekannt ist, werden ausführbare Dateien mit der Endung.exe auf der Befehlszeile mit der Eingabe des bloßen Dateinamens (ohne Dateierweiterung!) und Tastendruck ( ) gestartet. Allerdings müssen wir hinter csc noch den Namen unserer Quellcode-Datei (mit Erweiterung!) eingeben, also csc FirstClass.cs 4 Geben Sie obigen Befehl auf der Konsole ein. Abbildung 3.10: Aufruf des C#-Compilers Da wir uns im Verzeichnis CSharp befinden (in dem unsere Quellcode-Datei enthalten ist) reicht die Angabe des Dateinamens aus. Wenn die Quellcode- Datei sich allerdings nicht im aktuellen Verzeichnis befindet, dann müssen Sie an dieser Stelle den vollständigen Pfad eingeben. Auch aus diesem Grund ist es zu empfehlen, ein eigenes Verzeichnis für alle C#-Quellcode- 50
Kompilierung und Ausführung Dateien einzurichten (wie wir das getan haben) und den Compiler dann in diesem Verzeichnis aufzurufen. Sie benötigen dann beim Compileraufruf weder Pfadangaben, noch müssen Sie zwischen mehreren Verzeichnissen hin und her wechseln. 5 Betätigen Sie nun die ( )-Taste. Damit setzen Sie die Kompilierung der Quellcode-Datei FirstClass.cs in Gang. Abbildung 3.11: Nach dem Kompilieren Sollten Sie nun Fehlermeldungen erhalten, überprüfen Sie bitte Ihren Quelltext, ändern die fehlerhaften Codeteile und speichern die Quellcode-Datei erneut ab. War die Kompilierung erfolgreich, dann befindet sich im Verzeichnis CSharp jetzt die ausführbare Datei für unser erstes C#-Programm. Diese hat den Namen FirstClass.exe. Die Quellcode-Datei FirstClass.cs ist natürlich nach wie vor vorhanden, sodass sich nunmehr zwei Dateien im Verzeichnis CSharp befinden. Tipp Mit dem DOS-Befehl CLS bzw. cls (hier brauchen Sie auf Groß- oder Kleinschreibung keine Rücksicht zu nehmen) können Sie den Bildschirm gemeint ist natürlich der Text in der DOS-Box löschen. CLS steht für Clear Screen. Nun wollen wir unser erstes Programm zur Ausführung bringen. 51
6 Starten Sie FirstClass.exe mit dem Befehl FirstClass. Abbildung 3.12: Das Programm FirstClass.exe wird gestartet. Nach Druck auf ( ) müssten Sie folgendes Bild zu sehen bekommen: Abbildung 3.13: Das Programm wurde ausgeführt. Unser Programm macht in diesem Fall genau das, wozu wir es bestimmt haben: es gibt die Zeichenfolge HALLO auf dem Bildschirm aus. Zur Wiederholung: auf der Festplatte Ihres Rechners befindet sich nun die Datei FirstClass.exe. Sie ist das Endprodukt Ihrer Programmierarbeit, die ausführbare Programm-Datei. Diese ist jedoch nicht unmittelbar vom Betriebssystem abrufbar, da sie aus einem Zwischencode, dem so genannten IL- Code besteht. Um FirstClass.exe erfolgreich ausführen zu können, muss auf dem Rechner das.net Framework installiert sein. Letzteres fungiert sozusagen als Mittler zwischen C#-Programm (gemeint ist die.exe-datei) und Betriebssystem (siehe Kapitel 2, Abschnitt»Besonderheiten bei der Kompilierung in C#«). Starten des Programms über den Windows-Explorer Natürlich ist es auch möglich, C#-Programme durch Doppelklick auf den Eintrag der.exe-datei im Windows-Explorer zu starten. Allerdings bekommen Sie auf diese Weise nach dem Start von FirstClass.exe nicht viel zu sehen, da Windows das Konsolenfenster nach Programmausführung sofort wieder schließt. Sie können sich jedoch damit behelfen, dass Sie als Haltebefehl die Anweisung Console.ReadLine(); wie folgt in Ihren Quelltext schreiben. 52
Eine kleine Erfolgskontrolle using System; class FirstClass public static void Main() Console.WriteLine("HALLO"); Console.ReadLine(); Nun wartet Ihr Programm auf eine mit ( ) abgeschlossene Eingabe, bevor es ohne die Eingabe weiter zu verwerten endet. Eine kleine Erfolgskontrolle 1. Woran lässt sich eine C#-Quellcode-Datei erkennen? 2. Wie lautet der Dateiname des C#-Compilers? 3. Mit welcher Befehlszeileneingabe setzen Sie die Kompilierung einer Quellcode-Datei namens XY.cs in Gang? 4. Welche Datei entsteht nach erfolgreicher Kompilierung von XY.cs? 53