Das erste Programm. 3.1 Hello World



Ähnliche Dokumente
Einführung zum Arbeiten mit Microsoft Visual C Express Edition

Wo möchten Sie die MIZ-Dokumente (aufbereitete Medikamentenlisten) einsehen?

Ihr erstes C#- Programm

Programme im Griff Was bringt Ihnen dieses Kapitel?

Installation und Inbetriebnahme von Microsoft Visual C Express

Installation OMNIKEY 3121 USB

Drucken aus der Anwendung

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7

Informationen zur Verwendung von Visual Studio und cmake

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

SRH - Kurzinformation

Zwischenablage (Bilder, Texte,...)

Mediator 9 - Lernprogramm

Stammdatenanlage über den Einrichtungsassistenten

Informatik 1 Tutorial

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Bedienungsanleitung Anlassteilnehmer (Vereinslisten)

Einführung in das Microsoft.NET-Framework. Programmiersprache C# 02: Visual Studio / Hello World. Boris Hülsmann

Produktschulung WinDachJournal

Informatik I Tutorial

Installationsanleitungen

Nach dem Einstecken des mdentity wird die Anwendung nicht gestartet

Möglichkeiten des Parallelbetriebs der VR-NetWorld Software Parallelbetrieb VR-NetWorld Software 4.4x und Version 5.0 ab der 2. Beta!

Microsoft Access 2010 Navigationsformular (Musterlösung)

Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Wie halte ich Ordnung auf meiner Festplatte?

Erstellen der Barcode-Etiketten:

OP-LOG

Meldung Lokale Anwendung inkompatibel oder Microsoft Silverlight ist nicht aktuell bei Anmeldung an lokal gespeicherter RWE SmartHome Anwendung

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Dokumentation zur Versendung der Statistik Daten

Daten-Synchronisation zwischen dem ZDV-Webmailer und Outlook ( ) Zentrum für Datenverarbeitung der Universität Tübingen

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

Gruppenrichtlinien und Softwareverteilung

Anton Ochsenkühn. amac BUCH VERLAG. Ecxel für Mac. amac-buch Verlag

Windows Vista Security

Netzwerkversion PVG.view

Serienbriefe schreiben mit Ratio - Adressen (Microsoft Word Versionen 8.0 und 9.0)

Einführung in die Java- Programmierung

Anzeige von eingescannten Rechnungen

Handbuch für Redakteure

Professionelle Seminare im Bereich MS-Office

Qt-Projekte mit Visual Studio 2005

Die Textvorlagen in Microsoft WORD und LibreOffice Writer

Terminabgleich mit Mobiltelefonen

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Enigmail Konfiguration

Automatisierung ( Fernsteuerung ) von Excel unter Microsoft Windows Tilman Küpper (tilman.kuepper@hm.edu)

Arbeiten mit UMLed und Delphi

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

Windows-Sicherheit in 5 Schritten. Version 1.1 Weitere Texte finden Sie unter

MULTIWEB Banking. Installation und Update unter Windows

Version 0.3. Installation von MinGW und Eclipse CDT

Installationsanleitung DIALOGMANAGER

Fraunhofer FOKUS ADPSW-INSTALLATION. Abiturdaten-Prüfsoftware. Version 3.0.1, 7. Mai 2013 FRAUNHOFER-INSTITUT FÜR OFFENE KOMMUNIKATIONSSYSTEME FOKUS

, dadurch wird der andere Modus eingestellt, also es sieht dann so aus

Wordpress: Blogbeiträge richtig löschen, archivieren und weiterleiten

Windows Server 2012 RC2 konfigurieren

Neue Schriftarten installieren

Stand: Adressnummern ändern Modulbeschreibung

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

Print2CAD 2017, 8th Generation. Netzwerkversionen

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Flash Videos einbinden

Erstellen von x-y-diagrammen in OpenOffice.calc

WinVetpro im Betriebsmodus Laptop

CD einlegen (Moment warten) Die Aktion markieren, die durchgeführt werden soll. (in diesem Beispiel»Audio-CD-Wiedergabe)

1) Farbsteuergerät in der Nikobus-Software unter Modul zufügen hinzufügen.

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

Outlook und Outlook Express

Anleitung über den Umgang mit Schildern

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me

Tipps und Tricks zu den Updates

Objektorientiertes Programmieren mit Suse Linux

Hinweise zur Datensicherung für die - Prüfmittelverwaltung - Inhalt

AutoCAD Dienstprogramm zur Lizenzübertragung

Adobe Photoshop CS2, CS3, CS4, CS5 mit Auto-SoftProof-Ansicht

Lieferschein Dorfstrasse 143 CH Kilchberg Telefon 01 / Telefax 01 / info@hp-engineering.com

4 Aufzählungen und Listen erstellen

Microsoft Visual Studio Community 2015

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

2.4 Das erste C++-Programm *

Dokumentation IBIS Monitor

Ihr IT-Administrator oder unser Support wird Ihnen im Zweifelsfall gerne weiterhelfen.

Wie Sie mit Mastern arbeiten

1. Formulieren Sie den Algorithmus <Bedienung eines Getränkeautomaten> nach den oben genannten Kriterien.

2. Die eigenen Benutzerdaten aus orgamax müssen bekannt sein

Autoformat während der Eingabe

Objektorientierte Programmierung

ecaros2 - Accountmanager

Artikel Schnittstelle über CSV

1 Vom Problem zum Programm

Pfötchenhoffung e.v. Tier Manager

Transkript:

3 Das erste Programm Die ersten Schritte in einer Programmiersprache sind erfahrungsgemäß immer ein wenig»holprig«. In diesem Kapitel wird daher ein erstes Programm vorgestellt, an dem einige grundlegende Syntaxelemente der Sprache C# erläutert werden. Die Entwicklungsumgebung ist für diese kleine Applikation ohne Belang Sie können sowohl das Visual Studio verwenden als auch mit dem Notepad oder einem beliebigen anderen Texteditor arbeiten. 3.1 Hello World»Hello World «ist das wohl berühmteste Programm, das jemals erstellt wurde. Es existiert auf allen Plattformen und in allen Sprachen, und jeder Programmierer hat irgendwann einmal eine Version davon erstellt. Auch nahezu jedes Fachbuch greift auf eine Variante von»hello World«zurück, um die ersten Schritte in einer Programmiersprache zu erläutern. Dieses Buch folgt dieser Tradition, somit ist das erste Programm eine»hello World«-Variante mit dem Namen»Hello Console«.

Kapitel 3 Das erste Programm Die Voraussetzung hierfür ist ein installiertes.net Framework SDK. Die Version ist an dieser Stelle noch nicht relevant, da es sich aber um ein Buch zu.net 4.0 handelt, ist es aus verständlichen Gründen sinnvoll, auch.net in der Version 4.0 zu installieren. Sollten Sie das Visual Studio oder Visual C# Express installiert haben, wird.net gleich mit installiert. 3.1.1 Der Pfad zum.net Framework Allein der Quellcode macht noch kein ausführbares Programm, denn er muss noch kompiliert werden. Sofern Sie mit dem Visual Studio oder Visual C# Express arbeiten, ist das kein Problem, weil Sie direkt aus der Entwicklungsumgebung heraus kompilieren können. Um Ihnen zu zeigen, dass die Entwicklungsumgebung zum Kompilieren nicht zwingend benötigt wird, soll dieses erste Beispielprogramm aber von Hand kompiliert werden. Der Name des Compilers ist csc.exe, und er befindet sich im Framework-Verzeichnis. Dieses unterscheidet sich je nach Framework-Version:»» C:\Windows\Microsoft.NET\Framework\v2.0.50727 für.net 2.0, 32 Bit»» C:\Windows\Microsoft.NET\Framework\v3.5 für.net 3.5, 32 Bit»» C:\Windows\Microsoft.NET\Framework\v4.0 für.net 4.0 32 Bit Die 64-Bit-Versionen finden Sie (sofern Sie einen 64-Bit-Rechner besitzen) im Unterverzeichnis Framework64 statt Framework. Für.NET 3.0 gibt es übrigens keinen eigenen Compiler, diese Erweiterung des.net Frameworks war lediglich ein Zusatz zu.net 2.0 und nutzt den gleichen Compiler. Im angegebenen Pfad befinden sich noch weitere kleine Hilfsprogramme. Die meisten dieser Programme sollten im Menü Extras des Visual Studio zu finden sein, möglicherweise aber nicht alle. Sie können aber weitere (auch eigene) hinzufügen. Permanente Einstellung des Pfads Um den Compiler nun von jeder beliebigen Stelle des Systems aus aufrufen zu können, muss dieser der PATH-Systemvariablen hinzugefügt werden. Wenn Sie eine der Entwicklungsumgebungen installiert haben, ist dieser Schritt nicht zwingend notwendig. Diese bringen nämlich eine spezielle Eingabeaufforderung mit, bei der vor dem Start eine kleine Batch-Datei ausgeführt wird, die den Pfad temporär einstellt. Die sogenannte Visual Studio-Eingabeaufforderung finden Sie im Startmenü unter Programme Microsoft Visual Studio 10 Visual Studio Tools Visual Studio Eingabeaufforderung. Innerhalb dieser Konsole sind alle Tools des Visual Studio erreichbar, nicht nur die Compiler, und Sie müssen nicht in den Pfadeinstellungen wursteln. Dennoch wird aus Gründen der Vollständigkeit auch der zweite Weg gezeigt. Die Einstellmöglichkeit für die Pfadvariable finden Sie in der Systemsteuerung. Öffnen Sie dort das Programm System. Alternativ können Sie auch im Startmenü auf den Eintrag Arbeitsplatz (unter Windows XP) bzw. Computer (unter Windows Vista und Windows 7) rechtsklicken und Eigenschaften auswählen. Unter Windows Vista bzw. Windows 7 erscheint zunächst der Action Manager. Dort müssen Sie dann noch den Link Erweiterte Systemeinstellungen anklicken, um zum gleichen Dialog zu gelangen wie unter Windows XP. Die Abbildungen 3.1 und 3.2 zeigen die Dialoge. 102

Hello World Abbildung 3.1: Der Action-Manager von Windows 7 mit dem Menüpunkt Erweiterte Systemeinstellungen Abbildung 3.2: Der Button für die Umgebungsvariablen 103

Kapitel 3 Das erste Programm Abbildung 3.3: Die einzustellende Variable Nach einem Klick auf den Button Umgebungsvariablen erscheint der Dialog zum Einstellen des Pfads, zu sehen in Abbildung 3.3. Die zu ändernde Variable ist Path. Achten Sie darauf, dass Sie auf keinen Fall Änderungen vornehmen, sondern nur den Pfad zu dem auf Ihrem Rechner installierten.net Framework hinzufügen. 3.1.2 Der Quelltext Nach langen Vorbereitungen ist es nun endlich Zeit, den ersten Programmcode einzugeben. Starten Sie einen Texteditor Ihrer Wahl, und fügen Sie die folgenden Zeilen ein: public class HelloConsole public static void Main( string[] args ) System.Console.WriteLine( "Hello Console C#" ); System.Console.ReadLine(); Listing 3.1: Ein einfaches Hello World-Programm Achten Sie genau auf die Schreibweise. C# unterscheidet wie alle C-typischen Sprachen zwischen Großund Kleinschreibung. Speichern Sie die Datei dann in einem Verzeichnis Ihrer Wahl unter dem Namen HelloConsole.cs ab. Achten Sie darauf, dass Sie die Datei als reinen Text abspeichern und dass auch die Endung korrekt ist. Vor allem das Notepad von Windows tendiert dazu, trotz angegebener Endung noch ein.txt anzuhängen. Um das zu verhindern, ändern Sie im Speichern-Dialog die Filteranzeige auf Alle Dateien und geben die Endung manuell an. 104

Hello World Kompilieren und Starten Das Programm ist nun bereits fertig zum Kompilieren. Starten Sie entweder die Eingabeaufforderung (sollten Sie vorher den Pfad zum.net Framework fest eingestellt haben) oder die Visual Studio-Eingabeaufforderung. Wechseln Sie in das Verzeichnis, in dem Sie die Datei abgespeichert haben. Sollte es sich dabei um ein Verzeichnis unterhalb von Eigene Dateien handeln, ist dessen Position abhängig vom verwendeten Betriebssystem und in der Regel über den Windows Explorer ermittelbar. Geben Sie zum Kompilieren Folgendes ein: csc HelloConsole.cs Abbildung 3.4: Das Programm, fertig kompiliert und ausgeführt Groß- und Kleinschreibung sind hier nicht relevant, unter Windows wird sie nicht unterschieden. Nach dem Aufruf des Compilers müssen Sie nun nur noch die Datei HelloConsole.exe aufrufen. Die Ausgabe zeigt Abbildung 3.4. Zur besseren Lesbarkeit innerhalb des Buches wurden die Farben für die Ausgabe in der Eingabeaufforderung geändert. Weiße Schrift auf schwarzem Grund lässt sich zwar auf dem Bildschirm recht gut lesen, beim Buchdruck allerdings ist diese Kombination nicht besonders vorteilhaft. Falls Sie die Änderungen ebenfalls vornehmen wollen, können Sie das im Eigenschaften-Dialog der Eingabeaufforderung (system-menü eigenschaften Farben bzw. systemmenü eigenschaften standardwerte) tun. HINWEIS 3.1.3 Analyse des Programms.NET ist ein vollständig objektorientiertes System und arbeitet daher mit Klassen und Objekten. Tatsächlich ist es nicht möglich, irgendwelche Daten oder Funktionalitäten außerhalb von Klassen bzw. Datentypen zu definieren. Es gibt also keine»freilaufenden«funktionen. Die Zeile public class HelloConsole definiert eine sogenannte Klasse. Innerhalb dieser können nun Funktionalitäten oder Daten untergebracht werden. Der Gültigkeitsbereich der Klasse, also ihr Anfang und ihr Ende, sind durch geschweifte Klam- 105

Kapitel 3 Das erste Programm HINWEIS mern definiert. Die öffnende geschweifte Klammer kennzeichnet den Beginn der Klasse, die schließende geschweifte Klammer das Ende. Geschweifte Klammern kennzeichnen sogenannte Codeblöcke. Alles, was innerhalb eines Codeblocks deklariert wird, ist nur innerhalb dieses Codeblocks gültig. Codeblöcke treten an vielen Stellen in C# auf, z. B. bei Schleifen, bei Verzweigungen, aber auch bei Methoden (Funktionen) oder Datentypen. Das Wörtchen public im Kopf der Klassendeklaration bedeutet, dass der Zugriff auf diese Klasse öffentlich ist. Wäre die Klasse in einer DLL und Sie würden diese DLL nutzen, könnten Sie auf die Funktionalität dieser Klasse zugreifen. Man nennt diese Bezeichner auch Modifizierer oder englisch Modifier. Im Verlaufe des Buchs werden Sie noch weitere kennenlernen. Die Methode Innerhalb der Klasse befindet sich eine sogenannte Methode namens Main(). Diese Methode hat den folgenden Aufbau: public static void Main( string[] args ) System.Console.WriteLine( "Hello Console C#" ); System.Console.ReadLine(); Sie finden hier wieder einen Modifizierer, der die Methode als öffentlich kennzeichnet. Der Zugriff auf diese Methode ist daher von außerhalb der Klasse erlaubt. Jede dieser Methoden hat einen Rückgabewert, dessen Datentyp unmittelbar vor dem Methodennamen angegeben wird. Diese Rückgabewerte sind das Ergebnis der Methode, beispielsweise wenn diese eine Berechnung durchführt. In diesem Fall ist es void, was letztlich bedeutet, dass kein Wert zurückgeliefert wird. Das mag am Anfang ein wenig verwirrend wirken, ist aber letzten Endes konsequent. Anstatt unterscheiden zu müssen, ob eine Methode einen Wert zurückliefert oder nicht (und sich gegebenenfalls zwei unterschiedliche syntaktische Varianten merken zu müssen), hat eine Methode einfach immer einen Rückgabewert, der allerdings wie in diesem Fall leer (void) sein kann. Verständlicherweise macht es keinen Sinn, Funktionalitäten anzubieten, wenn diese nicht auch Daten entgegennehmen können. Das geschieht über Parameter, und in diesem Fall ist ein solcher Parameter vorhanden. Es handelt sich um ein string-array. Der Datentyp string steht für eine Zeichenkette. Ein Array fasst mehrere Daten des gleichen Typs zusammen und ermöglicht den Zugriff auf diese über einen Indexwert (eine Zahl). Es besteht allerdings kein Zwang, die übergebenen Werte auch zu verwenden..net ist nicht nur objektorientiert, es ist auch ein typsicheres System, und alle Sprachen, die.net verwenden, sind ebenfalls typsicher. Typsicherheit bedeutet kurz erklärt, dass alle Daten auch einen Datentyp haben. Eine Zahl ohne Nachkommastellen beispielsweise ist in der Regel in int, eine Zeichenkette hat den Datentyp string und eine Zahl mit Nachkommastellen den Datentyp double. Es gibt noch weitere, mehr zu Datentypen erfahren Sie im Kapitel 4 ab Seite 115. Anfang und Ende der Methode werden wieder durch und gekennzeichnet. Innerhalb der Methode befinden sich zwei Anweisungen. Die erste Anweisung gibt eine Zeichenkette auf der Konsole aus, die zweite wartet auf eine Eingabe (sonst wäre das Programm ja gleich wieder beendet). 106

Hello World Die Methode, die die Ausgabe vornimmt, ist WriteLine(). Ihr wird der Wert übergeben, der ausgegeben werden soll, in diesem Fall eine Zeichenkette. Da, wie bereits angesprochen, Methoden nicht frei im Gelände herumlaufen können, muss sie zu einer Klasse gehören. Diese Klasse heißt Console und ist eine sogenannte statische Klasse. Solche Klassen können unmittelbar verwendet werden, ohne dass vorher ein Objekt erzeugt werden muss. Auch über die unterschiedlichen Arten von Klassen erfahren Sie in diesem Buch noch mehr. Namespaces Vor dem Klassennamen steht noch System. Dabei handelt es sich um einen sogenannten Namespace. Namespaces sind ein wichtiges Element, sowohl bei der Programmierung als auch im.net Framework. Es handelt sich dabei um eine Kategorisierung der einzelnen Datentypen im.net Framework, die Sie auch in eigenen Programmen verwenden können. Und das hat durchaus einen tieferen Sinn. Das.NET Framework ist enorm umfangreich. Aufgrund der Tatsache, dass meist mehrere.net Frameworks auf einem Rechner installiert sind, lässt sich die Anzahl der Datentypen nicht mehr 100 % genau bestimmen, eine Zählung bei einer Standardinstallation des Visual Studio 2010 ergab jedoch einen Wert über 95000 Datentypen. Wären diese nun nicht unterteilt (in Namespaces), wäre es sehr schwer, den gerade benötigten Datentyp zu finden, und, was noch schlimmer ist, das System müsste immer vollständig in den Speicher geladen werden. Durch die Unterteilung in Namespaces ist es möglich, nur die DLLs und Namespaces zu laden, die wirklich benötigt werden. Die Klasse Console befindet sich im Namespace System. Damit ist jetzt auch klar, wie der Aufruf der Methode WriteLine() zustande kommt: <Namespace>.<Klassenname>.<Methodenname>( <Parameter> ); System.Console.WriteLine ( "... " ); Abschluss einer Methode In jeder Sprache muss es für den Compiler eine Möglichkeit geben, das Ende einer Anweisung zu erkennen. Im Falle von C# wird das Ende einer Anweisung durch ein Semikolon gekennzeichnet. Anweisungen können daher auch über mehrere Zeilen gehen. Der Code des Beispiels kann demnach auch folgendermaßen geschrieben werden: public class HelloConsole public static void Main( string[] args ) System.Console.WriteLine( "Hello Console C#" ); System.Console.ReadLine(); Bei der Ausführung gibt es hier keinen Unterschied. Auch eine Trennung an den Punkt-Operatoren, die Namespace, Klasse und Methode verbinden, ist möglich. Nicht möglich ist jedoch eine Trennung innerhalb einer Zeichenkette, da der Compiler dann nicht weiß, wie er damit umgehen soll. 107

Kapitel 3 Das erste Programm HINWEIS HINWEIS Die Methode ReadLine() Die Anweisung System.Console.ReadLine() hat lediglich die Aufgabe, auf eine Eingabe zu warten (nicht nur auf einen Tastendruck). Sie liefert einen Wert vom Typ string zurück. Wie Sie sehen können, wird dieser zurückgelieferte Wert hier nicht verwendet, er entschwindet ins Nirwana. Ganz gleich, welche Eingabe Sie tätigen, es ist nicht von Belang. Genauer gesagt wartet die Anwendung also darauf, dass der Benutzer eine der Tasten (Enter) oder ( ) drückt. Die runden Klammern am Ende der Methode ReadLine() sind nicht optional. Sie müssen stets geschrieben werden, ob nun Parameter übergeben werden oder nicht. Sie dienen der Unterscheidung zwischen Methoden und einem anderen Bestandteil von Datentypen, den Eigenschaften. Diese verhalten sich nach außen hin wie Variablen und haben keine runden Klammern am Ende. 3.1.4 Besonderheiten zur Methode Main() Die im Programm verwendete Methode Main() ist eine besondere Methode. Sie kann in mehreren Varianten existieren, von denen jede einzelne gültig ist: public static void Main()... public static void Main( string[] args )... public static int Main()... public static int Main( string args )... Die Methode Main() ist der sogenannte Einsprungpunkt des Programms. Jedes.NET-Programm (ohne Ausnahme) beginnt mit der ersten Anweisung der Methode Main() und endet, wenn diese komplett abgearbeitet wurde. Das gilt für alle Sprachen und alle Arten von Applikationen. Da diese Methode den Punkt angibt, an dem die Applikation beginnt, kann es sie innerhalb der Anwendung auch nur ein einziges Mal geben. Tatsächlich kann es die Methode Main() mehrfach im Programm geben, Sie müssen dem Compiler dann aber mitteilen, welche der Main()-Methoden verwendet werden soll. Von dieser Möglichkeit wird in der Praxis allerdings kaum Gebrauch gemacht. Die unterschiedlichen Varianten der Methode Main() haben die Aufgabe, dem Entwickler das größtmögliche Maß an Flexibilität zu verleihen. Der optionale übergebene Parameter args vom Typ string[] (string- Array) enthält, wenn angegeben, die Kommandozeilenparameter die an die Applikation übergeben wurden. Kommandozeilenparameter finden nicht nur in Konsolenapplikationen Anwendung, sie werden auch in Windows-Anwendungen verwendet, um beispielsweise bei einem Doppelklick auf eine Datei die dazugehörige Anwendung zu starten und die Datei gleich mit zu übergeben. Der ebenfalls optional zu verwendende Rückgabewert vom Typ int (einer Ganzzahl) ist der sogenannte Errorcode des Programms. Ist das Programm fehlerfrei durchgelaufen, wird hier der Wert 0 zurückgeliefert. Andere Werte bedeuten, dass es beim Programmlauf einen Fehler gab. Das Visual Studio erstellt eine Main()-Methode für Sie, wenn Sie ein neues Projekt anlegen. Darin befindet sich mitunter sogar bereits Code. In WPF-Anwendungen gibt es eine Besonderheit, hier können Sie normalerweise nicht auf die Methode Main() zugreifen, weil diese beim Kompilieren automatisch generiert wird. Sie existiert jedoch. Und mit ein klein wenig manuellem Eingreifen ist es auch möglich, eine eigene Main()-Methode zu verwenden. 108

Hello World, Variante 2 3.2 Hello World, Variante 2 In einer zweiten Variante des Hello-World-Programms soll eine Eingabe des Benutzers ausgewertet werden. Die Auswertung besteht in diesem Fall allerdings nur aus der Ausgabe des eingegebenen Textes. Zusätzlich sollen auch das aktuelle Datum und die aktuelle Zeit ausgegeben werden. Datum und Zeit sind Daten des Typs DateTime, der sich wie auch der Datentyp Console im Namespace System befindet. DateTime.Now liefert das aktuelle Datum und die aktuelle Zeit. Now ist keine Methode, sondern eine sogenannte Eigenschaft. Daher werden hier auch keine Klammern angegeben. Der Benutzer soll nun seinen Namen eingeben, der danach gemeinsam mit Datum und Zeit wieder ausgegeben wird. Selbstverständlich sollte das Programm so freundlich sein und ihn höflich zu dieser Eingabe auffordern. Den Quelltext zeigt Listing 3.2. Auch bei diesem Beispiel genügt ein herkömmlicher Texteditor für die Eingabe. Achten Sie wieder auf die Groß-/Kleinschreibung. using System; public class HelloConsole2 public static void Main() Console.Write( "Bitte geben Sie Ihren Namen ein: " ); string name = Console.ReadLine(); string result = String.Format( "Hallo 0, es ist jetzt 1 am 2", name, DateTime.Now.ToLongTimeString(), DateTime.Now.ToLongDateString() ); Console.WriteLine( result ); Console.ReadLine(); Listing 3.2: Hello World in der Variante 2 Abbildung 3.5: Die Ausgabe des Programms 109

Kapitel 3 Das erste Programm Speichern Sie das Programm wieder unter einem beliebigen Namen ab, und kompilieren Sie es. Das funktioniert ebenso wie beim vorangegangenen Beispiel, hier gibt es keinen Unterschied. Wohl aber bei der Ausgabe, die Abbildung 3.5 zeigt. Zunächst schreibt das Programm die Zeile»Bitte geben Sie Ihren Namen ein«auf den Bildschirm. Die Eingabe erfolgt direkt dahinter. Schließlich wird der Name gemeinsam mit Datum und Zeit ausgegeben. 3.2.1 Analyse des Programms Am Quelltext fällt auf, dass die Aufrufe der einzelnen Methoden Write(), WriteLine() und ReadLine() nun ohne die Angabe des Namespace System erfolgen. Der Grund hierfür ist die erste Zeile des Programms: using System; using ist ein Schlüsselwort, das dem Compiler mitteilt, dass in dieser Datei der Namespace System verwendet wird und im Falle der Verwendung von Datentypen automatisch in diesem Namespace nach den Datentypen gesucht werden soll. Damit muss der Namespace nicht mehr explizit bei jedem Aufruf angegeben werden, was eine große Erleichterung ist. Die using-anweisung funktioniert nur mit Namespaces und ist nur gültig in der Datei, in der sie angewendet wird. Auf ähnliche Art eine komplette Klasse einzubinden ist in C# nicht möglich. Auch mehrere Namespaces auf einen Schlag einzubinden funktioniert nicht, für jeden Namespace muss eine einzelne using-anweisung angegeben werden. Die Klassendeklaration sowie die Deklaration der Methode kennen Sie bereits. Hier wurde die Variante von Main() gewählt, bei der weder Rückgabewert noch Parameterübergabe existieren. Innerhalb von Main() wird es jetzt aber interessant. Der erste Befehl schreibt wieder einen Text auf die Konsole, fügt diesem aber keinen Zeilenumbruch an. Das ist der Unterschied zwischen den Methoden Write() und WriteLine(). Auf die Ausgabe folgt nun die Eingabe eines Wertes mittels Console.ReadLine(). Da Write() keinen Zeilenumbruch erzeugt, erfolgt die Eingabe direkt hinter dem ausgegebenen Text, bezieht diesen aber nicht mit ein. Die Zeile string name = Console.ReadLine(); liest einen Text in den Speicher und weist diesen der Variablen name zu. Der Datentyp steht in C# also bei der Deklaration vor dem Namen der Variablen. Da es sich um eine Variable innerhalb einer Methode handelt (eine sogenannte lokale Variable), wird kein Modifizierer benötigt. Diese Variable ist ausschließlich innerhalb der Methode gültig, und ein Zugriff von außerhalb ist nicht möglich. Die nächste Anweisung ist der interessanteste Teil des Programms, denn hier wird die Ausgabe formatiert. Die Methode String.Format() ist eine sogenannte statische Methode. Sie dient, wie der Name schon sagt, der Formatierung einer Zeichenkette. Von diesen Formatierungen gibt es recht viele (und auch die hier gewünschte Ausgabe hätte ebenso gut auf andere Art erreicht werden können). Die einfachste Variante sehen Sie im Beispiel. Zunächst wird der Methode ein sogenannter Formatierungsstring übergeben. In diesem 110

Fazit enthalten sind Platzhalter: 0, 1 und 2. Nachfolgend werden die Werte übergeben, die anstelle der Platzhalter eingefügt werden sollen. Der erste Wert wird an der Position von 0 eingesetzt, der zweite an der Position von 1 usw. Dadurch entsteht die endgültige Zeichenkette. DateTime.Now liefert das aktuelle Datum und die aktuelle Zeit. Beide Bestandteile werden hier gemeinsam geliefert, können aber getrennt behandelt oder ausgegeben werden. Das passiert im Beispiel über die beiden Methoden ToLongTimeString() bzw. ToLongDateString(). Beachten Sie, dass diese Methoden Bestandteil des Datentyps DateTime sind. DateTime.Now ist eine Eigenschaft, die einen Wert vom Typ DateTime zurückliefert. Auf diesen zurückgelieferten Wert werden dann die Methoden angewendet. Methoden sind in.net immer Bestandteil eines Datentyps, genauer gesagt des Datentyps, zu dem sie passen. Die Zusammenfassung von Daten und der dazugehörigen Funktionalität ist eines der Konzepte, an die Sie sich bei der objektorientierten Programmierung gewöhnen müssen. 3.3 Fazit Mit zwei einfachen Programmen wurden ein kleiner Teil der Syntax von C# sowie einige grundlegende Elemente vorgestellt. Die Erklärungen der beiden Beispielprogramme sind natürlich nicht umfassend und erklären nicht alles, aber wenn dem so wäre, dann wäre ja auch dieses Buch ein wenig dünner, als es ist. Sie haben bereits erfahren, dass es Datentypen gibt, dass Sie Variablen verwenden können und dass sämtliche Funktionalität ausschließlich innerhalb von Datentypen, meist innerhalb von Klassen, existiert. Da die Anzahl der verfügbaren Funktionalitäten enorm umfangreich ist, empfiehlt sich der Einsatz einer Entwicklungsumgebung wie dem Visual Studio oder Visual C# Express. Darin enthalten ist eine IntelliSense genannte Hilfsfunktion, die die verfügbaren Methoden und Eigenschaften auflistet. Bei der Programmierung ist gerade dieses Feature unverzichtbar. In den nächsten Kapiteln werden die einzelnen Bestandteile eines C#-Programms genauer beleuchtet. Die grundlegenden Elemente sind hierbei Datentypen und Variablen, weshalb diese auch als erste beleuchtet werden. 111