76
Leseprobe Jeder kann programmieren lernen! Thomas Theis führt Sie gekonnt in die Grundlagen von C# ein und macht Sie mit Visual Studio ver- traut. Probieren Sie es gleich aus! Außerdem enthält diese Leseprobe die Lösung zu Kapitel 1 und 2, das Inhaltsverzeichnis und das ge- samte Stichwortverzeichnis des Buches. Thomas Theis Einstieg in C# mit Visual Studio 2015 – Ideal für Programmiereinsteiger geeignet 553 Seiten, broschiert, 4. Auflage 2015 24,90 Euro, ISBN 978-3-8362-3705-5 www.rheinwerk-verlag.de/3814 »Einführung« »Grundlagen« »Lösungen« Inhaltsverzeichnis Index Der Autor Leseprobe weiterempfehlen Wissen, wie’s geht.

Einstieg in C# mit Visual Studio 2015 – Ideal für ... die Grundlagen von C# ein und macht Sie mit Visual Studio ver-traut. Probieren Sie es gleich aus! Außerdem enthält diese

  • Upload
    dangnhu

  • View
    213

  • Download
    1

Embed Size (px)

Citation preview

  • LeseprobeJeder kann programmieren lernen! Thomas Theis fhrt Sie gekonnt in die Grundlagen von C# ein und macht Sie mit Visual Studio ver-traut. Probieren Sie es gleich aus! Auerdem enthlt diese Leseprobe die Lsung zu Kapitel 1 und 2, das Inhaltsverzeichnis und das ge-samte Stichwortverzeichnis des Buches.

    Thomas Theis

    Einstieg in C# mit Visual Studio 2015 Ideal fr Programmiereinsteiger geeignet553 Seiten, broschiert, 4. Auflage 2015 24,90 Euro, ISBN 978-3-8362-3705-5

    www.rheinwerk-verlag.de/3814

    Einfhrung Grundlagen Lsungen

    Inhaltsverzeichnis

    Index

    Der Autor

    Leseprobe weiterempfehlen

    Know-how fr Kreative.Wissen, wies geht.

    https://www.rheinwerk-verlag.de/einstieg-in-c-mit-visual-studio-2015_3814/?GPP=lpnmailto:?body=Leseproben-Empfehlung:%20%C2%BBEinstieg%20in%20C#%20mit%20Visual%20Studio%202015%20%E2%80%93%20Ideal%20f%C3%BCr%20Programmiereinsteiger%20geeignet%C2%AB%20von%20Rheinwerk,%20http://gxmedia.galileo-press.de/leseproben/3814/leseprobe_rheinwerk_einstieg_csharp_mit_visual_studio_2015.pdf&subject=Leseprobe:%20%C2%BBEinstieg%20in%20C#%20mit%20Visual%20Studio%202015%20%E2%80%93%20Ideal%20f%C3%BCr%20Programmiereinsteiger%20geeignet%C2%AB

  • 15

    1Kapitel 1

    Einfhrung

    In diesem Kapitel erlernen Sie anhand eines ersten Projekts den Umgang

    mit der Entwicklungsumgebung und den Steuerelementen. Anschlieend

    werden Sie in der Lage sein, Ihr erstes eigenes Windows-Programm zu

    erstellen.

    C#C# ist eine objektorientierte Programmiersprache, die von Microsoft im

    Zusammenhang mit dem .NET Framework eingefhrt wurde. Mithilfe der

    Entwicklungsumgebung Visual Studio 2015 knnen Sie unter anderem in

    der Sprache C# programmieren. Visual Studio 2015 ist der Nachfolger von

    Visual Studio 2013. Innerhalb von Visual Studio stehen Ihnen noch weitere

    Sprachen zur Programmentwicklung zur Verfgung.

    1.1 Aufbau dieses Buchs

    BeispieleDieses Buch vermittelt Ihnen zunchst einen einfachen Einstieg in die Pro-

    grammierung mit C# und Visual Studio 2015. Die Bearbeitung der Beispiele

    und das selbststndige Lsen der vorliegenden bungsaufgaben helfen

    dabei. Dadurch werden Sie schnell erste Erfolgserlebnisse haben, die Sie

    zum Weitermachen motivieren. In spteren Kapiteln werden Ihnen dann

    zunehmend auch komplexere Themen vermittelt.

    GrundlagenVon Anfang an wird mit anschaulichen Windows-Anwendungen gearbei-

    tet. Die Grundlagen der Programmiersprache und die Standardelemente

    einer Windows-Anwendung, wie Sie sie schon von anderen Windows-Pro-

    grammen her kennen, werden gemeinsam vermittelt. Die Anschaulichkeit

    einer Windows-Anwendung hilft dabei, den eher theoretischen Hinter-

    grund der Programmiersprache leichter zu verstehen.

    3705.book Seite 15 Dienstag, 8. September 2015 3:39 15

  • 1 Einfhrung

    16

    1.2 Visual Studio 2015

    Community-Version Fr dieses Buch wird die frei verfgbare Entwicklungsumgebung Visual

    Studio Community 2015 eingesetzt. Sie knnen sie unter Windows 7 bis ein-

    schlielich Windows 10 nutzen. Diese Version von Visual Studio knnen

    Sie bei Microsoft herunterladen (www.visualstudio.com/de-de) und auf

    Ihrem PC installieren. Eine Installationsanleitung finden Sie in Anhang A.

    Die Projekte in diesem Buch wurden unter Windows 10 bearbeitet. Auch

    die Screenshots sind unter dieser Windows-Version entstanden.

    Visual Studio 2015 bietet eine komfortable Entwicklungsumgebung. Sie

    umfasst einen Editor zur Erstellung des Programmcodes, einen Compiler

    zur Erstellung der ausfhrbaren Programme, einen Debugger zur Fehlersu-

    che und vieles mehr. Eine Anleitung zur Installation finden Sie im Anhang.

    Statt der hier empfohlenen Community-Version knnen Sie alternativ

    auch verschiedene frei verfgbare Express-Versionen von Visual Studio

    2015 nutzen. Sie knnen sie von der Microsoft-Internetseite per Web-

    Installer auf Ihrem Rechner installieren.

    Noch eine Anmerkung in eigener Sache: Fr die Hilfe bei der Erstellung die-

    ses Buchs bedanke ich mich beim Team des Rheinwerk Verlags, besonders

    bei Anne Scheibe.

    Thomas Theis

    1.3 Mein erstes Windows-Programm

    Anhand eines ersten Projekts werden Sie nun die verschiedenen Schritte

    durchlaufen, die zur Erstellung eines einfachen Programms mit C# in

    Visual Studio notwendig sind. Das Programm soll nach dem Aufruf

    zunchst so aussehen wie in Abbildung 1.1 gezeigt.

    Abbildung 1.1 Erstes Programm nach dem Aufruf

    3705.book Seite 16 Dienstag, 8. September 2015 3:39 15

    1.4 Visual Studio-Entwicklungsumgebung

    17

    1Nach Bettigung des Buttons Hallo soll sich dann der Text in der obersten

    Zeile entsprechend verndern (siehe Abbildung 1.2).

    Abbildung 1.2 Nach einem Klick auf den Button Hallo

    1.4 Visual Studio-Entwicklungsumgebung

    Whrend der Projekterstellung werden Sie die Visual Studio-Entwicklungs-

    umgebung Schritt fr Schritt kennenlernen.

    1.4.1 Ein neues Projekt

    Nach dem Aufruf des Programms Visual Studio Community 2015 mssen

    Sie zur Erstellung eines neuen C#-Projekts den Menpunkt Datei Neues

    Projekt Installiert Vorlagen Visual C# Windows Forms-

    Anwendung auswhlen. Als Projektname bietet die Entwicklungsumge-

    bung den Namen WindowsFormsApplication1 an, dieser sollte der ber-

    sichtlichkeit halber gendert werden, zum Beispiel in MeinErstes.

    Es erscheinen nun einige Elemente der Entwicklungsumgebung. Folgende

    sind besonders wichtig:

    Form Das Benutzerformular (engl. Form) enthlt die Oberflche fr den Benut-zer des Programms (siehe Abbildung 1.3).

    Abbildung 1.3 Benutzerformular

    Toolbox Der Werkzeugkasten (engl. Toolbox) enthlt die Steuerelemente frden Benutzer, mit denen er den Ablauf des Programms steuern kann. Sie

    3705.book Seite 17 Dienstag, 8. September 2015 3:39 15

  • 1 Einfhrung

    18

    werden vom Programmentwickler in das Formular eingefgt (siehe

    Abbildung 1.4).

    Abbildung 1.4 Der Werkzeugkasten mit verschiedenen

    Kategorien von Steuerelementen

    Eigenschaften-

    Fenster

    Das Eigenschaften-Fenster (engl. Properties Window) dient demAnzeigen und ndern der Eigenschaften von Steuerelementen inner-

    halb des Formulars durch den Programmentwickler (siehe Abbildung

    1.5). Ich empfehle Ihnen, sich die Eigenschaften in alphabetischer Rei-

    henfolge anzeigen zu lassen. Bettigen Sie dazu einfach unter Form1

    das zweite Symbol von links.

    Abbildung 1.5 Eigenschaften-Fenster

    Projektmappen-

    Explorer

    Der Projektmappen-Explorer (engl. Solution Explorer) zeigt das geff-nete Projekt und die darin vorhandenen Elemente (siehe Abbildung 1.6).

    Abbildung 1.6 Projektmappen-Explorer

    3705.book Seite 18 Dienstag, 8. September 2015 3:39 15

    1.4 Visual Studio-Entwicklungsumgebung

    19

    1Elemente

    anzeigen

    Sollte der Werkzeugkasten, das Eigenschaften-Fenster oder der Pro-

    jektmappen-Explorer nicht angezeigt werden, dann knnen Sie das be-

    treffende Element ber das Men Ansicht einblenden. Ist das Formular

    nicht sichtbar, blenden Sie es einfach ber einen Doppelklick auf den Na-

    men (Form1.cs) im Projektmappen-Explorer ein. Sollten die Eigenschaf-

    ten eines Steuerelements nicht im bereits sichtbaren Eigenschaften-

    Fenster angezeigt werden, dann markieren Sie zunchst den Namen der

    Formulardatei (Form1.cs) im Projektmappen-Explorer und anschlie-

    end das betreffende Steuerelement.

    Anfangs schreiben Sie nur einfache Programme mit wenigen Elementen,

    daher bentigen Sie den Projektmappen-Explorer jetzt noch nicht. Es

    empfiehlt sich, das Eigenschaften-Fenster nach oben zu vergrern.

    1.4.2 Einfgen von Steuerelementen

    Label, ButtonZunchst sollen drei Steuerelemente in das Formular eingefgt werden:

    ein Bezeichnungsfeld (Label) und zwei Befehlsschaltflchen (Buttons). Ein

    Bezeichnungsfeld dient im Allgemeinen dazu, feste oder vernderliche

    Texte auf der Benutzeroberflche anzuzeigen. In diesem Programm soll

    das Label einen Text anzeigen. Ein Button dient zum Starten bestimmter

    Programmteile oder, allgemeiner ausgedrckt, zum Auslsen von Ereignis-

    sen. In diesem Programm sollen die Buttons dazu dienen, den Text anzu-

    zeigen bzw. das Programm zu beenden.

    Allgemeine Steuer-

    elemente

    Um ein Steuerelement einzufgen, ziehen Sie es mithilfe der Maus aus

    dem Werkzeugkasten an die gewnschte Stelle im Formular. Alle Steuer-

    elemente finden sich im Werkzeugkasten unter Alle Windows Forms.

    bersichtlicher ist jedoch der Zugriff ber Allgemeine Steuerelemente

    (engl. Common Controls), siehe Abbildung 1.7.

    Abbildung 1.7 Allgemeine Steuerelemente im Werkzeugkasten

    3705.book Seite 19 Dienstag, 8. September 2015 3:39 15

  • 1 Einfhrung

    20

    Steuerelement

    auswhlen

    Ein Doppelklick auf ein Steuerelement im Werkzeugkasten fgt es

    ebenfalls in die Form ein. Position und Gre des Elements knnen an-

    schlieend noch verndert werden. Dazu whlen Sie das betreffende

    Steuerelement vorher durch Anklicken aus (siehe Abbildung 1.8). Ein ber-

    flssiges Steuerelement knnen Sie durch Auswhlen und Drcken der

    Taste (Entf) entfernen.

    Abbildung 1.8 Ausgewhlter Button

    Die Gre und andere Eigenschaften des Formulars selbst knnen Sie

    ebenfalls verndern. Dazu whlen Sie es vorher durch Anklicken einer

    freien Stelle im Formular aus.

    1.4.3 Arbeiten mit dem Eigenschaften-Fenster

    Die eingefgten Steuerelemente haben zunchst einheitliche Namen und

    Aufschriften, diese sollten Sie allerdings zur einfacheren Programment-

    wicklung ndern. Es haben sich bestimmte Namenskonventionen einge-

    brgert, welche die Lesbarkeit erleichtern. Diese Namen beinhalten den

    Typ (mit drei Buchstaben abgekrzt) und die Aufgabe des Steuerelements

    (mit groem Anfangsbuchstaben).

    cmd, txt, lbl, ... Ein Button (eigentlich Command Button), der die Anzeige der Zeit auslsen

    soll, wird beispielsweise mit cmdZeit bezeichnet. Weitere Vorsilben sind txt

    (Textfeld/TextBox), lbl (Bezeichnungsfeld/Label), opt (Optionsschaltfl-

    che/RadioButton), frm (Formular/Form) und chk (Kontrollkstchen/Check-

    Box).

    Zur nderung des Namens eines Steuerelements muss es zunchst ausge-

    whlt werden. Das knnen Sie entweder durch Anklicken des Steuerele-

    ments auf dem Formular oder durch Auswahl desselben aus der Liste am

    oberen Ende des Eigenschaften-Fensters tun.

    Eigenschaften-

    Fenster

    Im Eigenschaften-Fenster werden alle Eigenschaften des ausgewhlten

    Steuerelements angezeigt. Die Liste ist zweispaltig: In der linken Spalte

    steht der Name der Eigenschaft, in der rechten ihr aktueller Wert. Die

    3705.book Seite 20 Dienstag, 8. September 2015 3:39 15

    1.4 Visual Studio-Entwicklungsumgebung

    21

    1Eigenschaft (Name) steht am Anfang der Liste der Eigenschaften. Die

    betreffende Zeile whlen Sie durch Anklicken aus und geben hier den

    neuen Namen ein. Nach Besttigung mit der Taste () ist die Eigenschaft

    gendert (siehe Abbildung 1.9).

    Abbildung 1.9 Button nach der Namensnderung

    TextDie Aufschrift von Buttons, Labels und Formularen ist in der Eigenschaft

    Text angegeben. Sobald diese Eigenschaft verndert wird, erscheint die ver-

    nderte Aufschrift in dem betreffenden Steuerelement. Auch der Name

    und die Aufschrift des Formulars sollten gendert werden. Im Folgenden

    sind die gewnschten Eigenschaften fr die Steuerelemente dieses Pro-

    gramms in Tabellenform angegeben, siehe Tabelle 1.1.

    StartzustandHiermit legen Sie den Startzustand fest, also die Eigenschaften, welche die

    Steuerelemente zu Beginn des Programms bzw. eventuell whrend des

    gesamten Programms haben sollen. Viele Eigenschaften knnen Sie auch

    Typ Eigenschaft Einstellung

    Formular Text Mein erstes Programm

    Button Name cmdHallo

    Text Hallo

    Button Name cmdEnde

    Text Ende

    Label Name lblAnzeige

    Text (leer)

    BorderStyle FixedSingle

    Tabelle 1.1 Steuerelemente mit Eigenschaften

    3705.book Seite 21 Dienstag, 8. September 2015 3:39 15

  • 1 Einfhrung

    22

    noch whrend der Laufzeit des Programms durch den Programmcode ver-

    ndern.

    Bei einem Label ergibt die Einstellung der Eigenschaft BorderStyle auf

    FixedSingle einen Rahmen. Zur nderung auf FixedSingle klappen Sie die

    Liste bei der Eigenschaft auf und whlen den betreffenden Eintrag aus,

    siehe Abbildung 1.10. Zur nderung einiger Eigenschaften mssen Sie

    gegebenenfalls ein Dialogfeld aufrufen.

    Abbildung 1.10 Label nach der nderung von Name

    und BorderStyle

    Im Label soll zunchst der Text (leer) erscheinen. Hierzu whlen Sie den

    vorhandenen Text durch Anklicken aus und ndern ihn.

    Liste der Steuer-

    elemente

    Sie finden alle in diesem Formular vorhandenen Steuerelemente in der

    Liste, die sich am oberen Ende des Eigenschaften-Fensters ffnen lsst.

    Dabei zeigt sich ein Vorteil der einheitlichen Namensvergabe: Die Steuer-

    elemente des gleichen Typs stehen immer direkt untereinander.

    1.4.4 Speichern eines Projekts

    Alles speichern Die Daten eines C#-Projekts werden innerhalb von Visual Studio in ver-

    schiedenen Dateien gespeichert. Zum Speichern des gesamten Projekts

    verwenden Sie den Menpunkt Datei Alles Speichern. Diesen Vorgang

    sollten Sie in regelmigen Abstnden durchfhren, damit keine nderun-

    gen verloren gehen knnen.

    3705.book Seite 22 Dienstag, 8. September 2015 3:39 15

    1.4 Visual Studio-Entwicklungsumgebung

    23

    1Die in diesem Skript angegebenen Namen erleichtern eine schnelle und

    eindeutige Orientierung und das sptere Auffinden von lteren Pro-

    grammen.

    1.4.5 Das Codefenster

    EreignisDer Ablauf eines Windows-Programms wird im Wesentlichen durch das

    Auslsen von Ereignissen durch den Benutzer gesteuert. Er lst z. B. die

    Anzeige des Texts Hallo aus, indem er auf den Button Hallo klickt. Der

    Entwickler muss dafr sorgen, dass aufgrund dieses Ereignisses auch tat-

    schlich der gewnschte Text angezeigt wird. Zu diesem Zweck schreibt er

    Programmcode und ordnet diesen Code dem Ereignis zu. Der Code wird in

    einer so genannten Ereignismethode abgelegt.

    EreignismethodeZum Schreiben einer Ereignismethode fhren Sie am besten einen Dop-

    pelklick auf dem betreffenden Steuerelement aus. Daraufhin erscheint das

    Codefenster. Zwischen der Formularansicht und der Codeansicht knnen

    Sie anschlieend ber die Menpunkte Ansicht Code bzw. Ansicht

    Designer hin- und herschalten. Das ist auch ber die Registerkarten ober-

    halb des Formulars bzw. des Codefensters mglich (siehe Abbildung 1.11).

    Abbildung 1.11 Registerkarten

    Nach erfolgtem Doppelklick auf den Button Hallo erscheinen im Code-

    fenster die folgenden Eintrge:

    using System;using System.Windows.Forms;

    namespace MeinErstes{

    public partial class Form1 : Form{

    3705.book Seite 23 Dienstag, 8. September 2015 3:39 15

  • 1 Einfhrung

    24

    public Form1(){

    InitializeComponent();}

    private void cmdHallo_Click(object sender, EventArgs e){}

    }}

    Listing 1.1 Projekt MeinErstes, Button Hallo, ohne Code

    Zur Erluterung:

    Grundstzlich gilt, dass Sie sich nicht von der Vielzahl der automatischerzeugten Zeilen und den noch unbekannten Inhalten abschrecken las-

    sen sollten.

    Zunchst das Wichtigste: Innerhalb der geschweiften Klammern { } derEreignismethode cmdHallo_Click() wird spter Ihr eigener Programm-

    code hinzugefgt.

    Zu den anderen Bestandteilen (die erst spter fr das eigene Programmie-

    ren wichtig werden):

    Namensraum C# ist eine objektorientierte Sprache. Ein wichtiges Element objektori-entierter Sprachen sind die so genannten Klassen. Klassen erffnen wei-

    tere Programmiermglichkeiten. Namensrume wiederum beinhalten

    zusammengehrige Klassen.

    using In obigem Listing knnen Sie erkennen, dass einige Programmzeilen,die mit using beginnen, bereits entfernt wurden. Das Schlsselwort

    using dient zum Einbinden von Namensrumen in das aktuelle Projekt.

    Da wir die Klassen in diesen Namensrumen nicht bentigen, wurden

    die betreffenden Zeilen entfernt.

    Seit der Version 2015 von Visual Studio werden solche berflssigen Ele-mente in grauer Schriftfarbe dargestellt. Falls sich der Cursor in einer der

    betreffenden Zeilen befindet, erscheint links von der Zeile eine gelbe

    Glhbirne. Platzieren Sie den Mauszeiger ber dieser Glhbirne, knnen

    Sie sich Hinweise dazu anzeigen lassen, wie die berflssigen Elemente

    ganz entfernt werden knnen.

    3705.book Seite 24 Dienstag, 8. September 2015 3:39 15

    1.4 Visual Studio-Entwicklungsumgebung

    25

    1namespace Oberhalb von public partial class ... und von private void ... erschei-

    nen auerdem seit Visual Studio 2015 automatisch weitere Informatio-

    nen zur Klasse Form1 und ihren Elementen in kleiner grauer Schrift, wie

    zum Beispiel 0 references oder 3 references. Auch diese knnen wir

    zunchst noch ignorieren.

    Dieses erste Projekt verfgt ber einen eigenen Namensraum (engl.namespace), daher namespace MeinErstes.

    public partial class Alle Elemente des aktuellen Formulars Form1 stehen innerhalb derffentlich zugnglichen Klasse Form1, daher public class Form1. Ein Teil

    der Elemente steht in dieser Datei, ein anderer Teil, der ebenfalls auto-

    matisch erzeugt wurde, steht in einer anderen, hier nicht sichtbaren

    Datei, daher der Zusatz partial (dt. teilweise).

    Die Methode InitializeComponent() beinhaltet Programmzeilen, diedas Aussehen und Verhalten der Steuerelemente des Programms be-

    stimmen.

    private void Der Zusatz private bedeutet, dass die Ereignismethode cmdHalloClick()nur in dieser Klasse bekannt ist. Mit void wird gekennzeichnet, dass

    diese Methode lediglich etwas ausfhrt, aber kein Ergebnis zurck-

    liefert.

    Auf weitere Einzelheiten dieser automatisch erzeugten Bestandteilewird zu einem spteren Zeitpunkt eingegangen, da es hier noch nicht

    notwendig ist und eher verwirren wrde.

    Der anfnglich ausgefhrte Doppelklick fhrt immer zu dem Ereignis, das

    am hufigsten mit dem betreffenden Steuerelement verbunden wird.

    ClickDas ist beim Button natrlich das Ereignis Click. Zu einem Steuerelement

    gibt es aber auch noch andere mgliche Ereignisse.

    Bei den nachfolgenden Programmen werden nicht mehr alle Teile des Pro-

    grammcodes im Buch abgebildet, sondern nur noch

    die Teile, die vom Entwickler per Codeeingabe erzeugt werden,

    und die Teile des automatisch erzeugten Codes, die wichtig fr das allge-meine Verstndnis sind.

    Den vollstndigen Programmcode knnen Sie aber jederzeit betrachten,

    wenn Sie die Beispielprojekte laden bzw. ausprobieren.

    3705.book Seite 25 Dienstag, 8. September 2015 3:39 15

  • 1 Einfhrung

    26

    1.4.6 Schreiben von Programmcode

    In der Methode cmdHallo_Click() soll eine Befehlszeile eingefgt werden,

    sodass sie anschlieend wie folgt aussieht:

    private void cmdHallo_Click(object sender, EventArgs e){

    lblAnzeige.Text = "Hallo";}

    Listing 1.2 Projekt MeinErstes, Button Hallo, mit Code

    Der Text muss in Anfhrungszeichen gesetzt werden, da C# sonst an-

    nimmt, dass es sich um eine Variable mit dem Namen Hallo handelt.

    Anweisung Der Inhalt einer Methode setzt sich aus einzelnen Anweisungen zusam-

    men, die nacheinander ausgefhrt werden. Die vorliegende Methode ent-

    hlt nur eine Anweisung; in ihr wird mithilfe des Gleichheitszeichens eine

    Zuweisung durchgefhrt.

    Zuweisung Bei einer Zuweisung wird der Ausdruck rechts vom Gleichheitszeichen aus-

    gewertet und der Variablen, der Objekteigenschaft oder der Steuerelement-

    eigenschaft links vom Gleichheitszeichen zugewiesen. Die Zeichenkette

    Hallo wird der Eigenschaft Text des Steuerelements lblAnzeige mittels fol-

    gender Schreibweise Steuerelement.Eigenschaft = Wert zugewiesen. Das

    fhrt dann zur Anzeige des Werts.

    Nach dem Wechsel auf die Formularansicht knnen Sie das nchste Steuer-

    element auswhlen, fr das eine Ereignismethode geschrieben werden soll.

    Code editieren Innerhalb des Codefensters kann Text mit den gngigen Methoden der

    Textverarbeitung editiert, kopiert, verschoben und gelscht werden.

    In der Ereignismethode cmdEnde_Click() soll der folgende Code stehen:

    private void cmdEnde_Click(object sender, EventArgs e){

    Close();}

    Listing 1.3 Projekt MeinErstes, Button Ende

    Close() Die Methode Close() dient dem Schlieen eines Formulars. Da es sich um

    das einzige Formular dieses Projekts handelt, wird dadurch das Programm

    beendet und die gesamte Windows-Anwendung geschlossen.

    3705.book Seite 26 Dienstag, 8. September 2015 3:39 15

    1.4 Visual Studio-Entwicklungsumgebung

    27

    1Dies waren einige Beispiele zur nderung der Eigenschaften eines Steuer-

    elements zur Laufzeit des Programms durch Programmcode. Sie erinnern

    sich: Zu Beginn hatten wir bereits die Starteigenschaften der Steuerele-

    mente im Eigenschaften-Fenster eingestellt.

    1.4.7 Kommentare

    Bei lngeren Programmen mit vielen Anweisungen gehrt es zum guten

    Programmierstil, Kommentarzeilen zu schreiben. In diesen Zeilen werden

    einzelne Anweisungen oder auch lngere Blcke von Anweisungen erlu-

    tert, damit Sie selbst oder auch ein anderer Programmierer sie spter leich-

    ter nachvollziehen knnen. Alle Zeichen innerhalb eines Kommentars

    werden nicht bersetzt oder ausgefhrt.

    /* Kommentar */Ein Kommentar beginnt mit der Zeichenkombination /*, endet mit der

    Zeichenkombination */ und kann sich ber mehrere Zeilen erstrecken.

    // KommentarEine andere Mglichkeit ergibt sich durch die Zeichenkombination //. Ein

    solcher Kommentar erstreckt sich nur bis zum Ende der Zeile.

    Der folgende Programmcode wurde beispielsweise um einen Kommentar

    ergnzt:

    private void cmdEnde_Click(object sender, EventArgs e){

    /* Diese Anweisung beendetdas Programm */

    Close();}

    Listing 1.4 Projekt MeinErstes, Button Ende, mit Kommentar

    Code auskommen-

    tieren

    Hier noch ein kleiner Trick: Sollen bestimmte Programmzeilen fr einen

    Test des Programms kurzfristig nicht ausgefhrt werden, knnen Sie sie

    auskommentieren, indem Sie die Zeichenkombination // vor die betreffen-

    den Zeilen setzen. Das geht sehr schnell, indem Sie die betreffende(n)

    Zeile(n) markieren und anschlieend das entsprechende Symbol im linken

    Bereich der Symbolleiste anklicken, siehe Abbildung 1.12. Rechts daneben

    befindet sich das Symbol, welches die Auskommentierung nach dem Test

    wieder rckgngig macht.

    3705.book Seite 27 Dienstag, 8. September 2015 3:39 15

  • 1 Einfhrung

    28

    Abbildung 1.12 Kommentar ein/aus

    1.4.8 Starten, Ausfhren und Beenden des Programms

    Programm starten Nach dem Einfgen der Steuerelemente und dem Erstellen der Ereignis-

    methoden ist das Programm fertig und kann gestartet werden. Dazu bet-

    tigen Sie den Start-Button in der Symbolleiste (dreieckiger grner Pfeil

    nach rechts). Alternativ starten Sie das Programm ber die Funktionstaste

    (F5) oder den Menpunkt Debuggen Debugging Starten. Das For-

    mular erscheint, und das Bettigen der Buttons fhrt zum programmier-

    ten Ergebnis.

    Programm beenden Zur regulren Beendigung eines Programms ist der Button mit der Auf-

    schrift Ende vorgesehen. Mchten Sie ein Programm whrend des Verlaufs

    vorzeitig abbrechen, knnen Sie auch den Ende-Button in der Symbolleiste

    (rotes Quadrat) bettigen.

    Fehler Tritt whrend der Ausfhrung eines Programms ein Fehler auf, werden Sie

    hierauf hingewiesen, und das Codefenster zeigt die entsprechende Ereig-

    nismethode sowie die fehlerhafte Zeile an. In diesem Fall beenden Sie das

    Programm, korrigieren den Code und starten das Programm wieder.

    Programm testen Es ist empfehlenswert, das Programm bereits whrend der Entwicklung

    mehrmals durch einen Aufruf zu testen und nicht erst, wenn das Pro-

    gramm vollstndig erstellt worden ist. Ein geeigneter Zeitpunkt dazu er-

    gibt sich zum Beispiel

    nach dem Einfgen der Steuerelemente und dem Zuweisen der Eigen-schaften, die Sie zu Programmbeginn bentigen, oder

    nach dem Erstellen jeder Ereignismethode.

    1.4.9 Ausfhrbares Programm

    .exe-Datei Nach erfolgreichem Test des Programms knnen Sie die ausfhrbare Datei

    (.exe-Datei) auch auerhalb der Entwicklungsumgebung aufrufen. Haben

    Sie an den Grundeinstellungen nichts verndert und die vorgeschlagenen

    Namen verwendet, findet sich die zugehrige .exe-Datei des aktuellen

    3705.book Seite 28 Dienstag, 8. September 2015 3:39 15

    1.4 Visual Studio-Entwicklungsumgebung

    29

    1Projekts im Verzeichnis Dokumente\Visual Studio 2015\Projects\MeinErs-

    tes\MeinErstes\bin\Debug. Das Programm kann also ganz normal im Win-

    dows-Explorer direkt ber Doppelklick gestartet werden.

    Die Weitergabe eines eigenen Windows-Programms auf einen anderen PC

    ist etwas aufwendiger. Dieser Vorgang wird in Abschnitt A.4 beschrieben.

    1.4.10 Schlieen und ffnen eines Projekts

    Projekt schlieenUm ein Projekt zu schlieen, whlen Sie den Menpunkt Datei Projekt-

    mappe schliessen. Falls Sie Vernderungen vorgenommen haben, wer-

    den Sie vorher gefragt, ob Sie diese nderungen speichern mchten.

    Wollen Sie die Projektdaten sicherheitshalber zwischendurch speichern, ist

    das ber den Menpunkt Datei Alles speichern mglich. Das ist bei

    lngeren Entwicklungsphasen sehr zu empfehlen.

    Projekt ffnenZum ffnen eines vorhandenen Projekts whlen Sie den Menpunkt

    Datei Projekt ffnen. Im darauffolgenden Dialogfeld Projekt ffnen

    whlen Sie zunchst das gewnschte Projektverzeichnis aus und anschlie-

    end die gleichnamige Datei mit der Endung .sln.

    Alle Beispielprojekte finden Sie auf www.rheinwerk-verlag.de/3814 unter

    Materialien zum Buch zum Download. Sollte eines der Projekte einmal

    nicht gestartet werden knnen, sollten Sie es ber den Menpunkt Erstel-

    len Projektmappe neu erstellen neu erstellen.

    1.4.11 bung

    bung NameErzeugen Sie ein Windows-Programm mit einem Formular, das zwei But-

    tons und ein Label beinhaltet (siehe Abbildung 1.13). Bei Bettigung des ers-

    ten Buttons erscheint im Label Ihr Name. Bei Bettigung des zweiten

    Buttons wird das Programm beendet. Namensvorschlge: Projektname

    Name, Buttons cmdMyName und cmdEnde, Label lblMyName.

    Abbildung 1.13 bung Name

    3705.book Seite 29 Dienstag, 8. September 2015 3:39 15

  • 1 Einfhrung

    30

    1.4.12 Empfehlungen fr Zeilenumbrche

    Zeilenumbruch Zeilenumbrche erhhen die Lesbarkeit des Programmcodes. Sie knnen

    jedoch nicht an jeder Stelle innerhalb einer Anweisung durchgefhrt wer-

    den. Nachfolgend werden einige Stellen empfohlen:

    nach einer ffnenden Klammer, wie bereits gezeigt

    vor einer schlieenden Klammer

    nach einem Komma

    nach den meisten Operatoren, also auch nach dem Zuweisungsoperator(=) hinter lblAnzeige.Text, siehe Abschnitt 2.2

    nach einem Punkt hinter einem Objektnamen, also auch nach demPunkt hinter dem Objektnamen lblAnzeige

    Auf keinen Fall drfen Sie einen Zeilenumbruch innerhalb einer Zeichen-

    kette durchfhren.

    1.5 Arbeiten mit Steuerelementen

    1.5.1 Steuerelemente formatieren

    Hilfslinien Zur besseren Anordnung der Steuerelemente auf dem Formular knnen

    Sie sie mithilfe der Maus nach Augenma verschieben. Dabei erscheinen

    automatisch Hilfslinien, falls das aktuelle Element horizontal oder vertikal

    parallel zu einem anderen Element steht.

    Mehrere Steuerele-

    mente markieren

    Weitere Mglichkeiten bieten die Menpunkte im Men Format. In vie-

    len Fllen mssen vorher mehrere Steuerelemente auf einmal markiert

    werden (siehe Abbildung 1.14).

    Abbildung 1.14 Mehrere markierte Elemente

    3705.book Seite 30 Dienstag, 8. September 2015 3:39 15

    1.5 Arbeiten mit Steuerelementen

    31

    1Das geschieht entweder

    durch Umrahmung der Elemente mit einem Rechteck, nachdem Siezuvor das Steuerelement Zeiger ausgewhlt haben, oder

    durch Mehrfachauswahl, indem Sie ab dem zweiten auszuwhlendenSteuerelement die ()-Taste (wie fr Grobuchstaben) oder die (Strg)-

    Taste gedrckt halten.

    Men Formatber das Men Format haben Sie anschlieend folgende Mglichkeiten

    zur Anpassung der Steuerelemente:

    Die ausgewhlten Steuerelemente knnen horizontal oder vertikalzueinander ausgerichtet werden (Men Format Ausrichten).

    Auch die horizontalen und/oder vertikalen Dimensionen der ausge-whlten Steuerelemente knnen angeglichen werden (Men Format

    Grsse angleichen).

    Einheitliche

    Abstnde

    Zudem knnen die horizontalen und vertikalen Abstnde zwischen denausgewhlten Steuerelementen angeglichen, vergrert, verkleinert

    oder entfernt werden (Men Format Horizontaler Abstand/Ver-

    tikaler Abstand).

    Die Steuerelemente knnen auerdem horizontal oder vertikal inner-halb des Formulars zentriert werden (Men Format auf Formular

    zentrieren).

    Sollten sich die Steuerelemente teilweise berlappen, knnen Sie ein-zelne Steuerelemente in den Vorder- bzw. Hintergrund schieben (Men

    Format Reihenfolge).

    Sie knnen alle Steuerelemente gleichzeitig gegen versehentliches Ver-schieben absichern (Men Format Steuerelemente Sperren). Diese

    Sperrung gilt nur whrend der Entwicklung des Programms.

    Abbildung 1.15 zeigt ein Formular mit drei Buttons, die alle linksbndig aus-

    gerichtet sind und den gleichen vertikalen Abstand voneinander haben.

    bung

    Laden Sie das Projekt MeinErstes aus Abschnitt 1.3, markieren Sie darin

    mehrere Steuerelemente, und testen Sie anschlieend die einzelnen Mg-

    lichkeiten des Format-Mens aus.

    3705.book Seite 31 Dienstag, 8. September 2015 3:39 15

  • 1 Einfhrung

    32

    Abbildung 1.15 Nach der Formatierung

    1.5.2 Steuerelemente kopieren

    Steuerelemente

    kopieren

    Zur schnelleren Erzeugung eines Projekts knnen vorhandene Steuerele-

    mente einschlielich aller ihrer Eigenschaften kopiert werden. Markieren

    Sie hierzu die gewnschten Steuerelemente, und kopieren Sie sie entweder

    ber das Men Bearbeiten Kopieren und das Men Bearbeiten Einfgen oder

    mit den Tastenkombinationen (Strg) + (C) und (Strg) + (V).

    Anschlieend sollten Sie die neu erzeugten Steuerelemente direkt umbe-

    nennen und an den gewnschten Positionen anordnen.

    bung

    Laden Sie das Projekt MeinErstes aus Abschnitt 1.3 und kopieren Sie ein-

    zelne Steuerelemente. Kontrollieren Sie anschlieend die Liste der vorhan-

    denen Steuerelemente im Eigenschaften-Fenster auf eine einheitliche

    Namensgebung.

    1.5.3 Eigenschaften zur Laufzeit ndern

    Size, Location Steuerelemente haben die Eigenschaften Size (mit den Komponenten

    Width und Height) und Location (mit den Komponenten X und Y) zur

    Angabe von Gre und Position. X und Y geben die Koordinaten der oberen

    linken Ecke des Steuerelements an, gemessen von der oberen linken Ecke

    des umgebenden Elements (meist das Formular). Smtliche Werte werden

    in Pixeln angegeben.

    3705.book Seite 32 Dienstag, 8. September 2015 3:39 15

    1.5 Arbeiten mit Steuerelementen

    33

    1Alle diese Eigenschaften knnen sowohl whrend der Entwicklungszeit als

    auch whrend der Laufzeit eines Projekts verndert werden. Zur nderung

    whrend der Entwicklungszeit knnen Sie die Eigenschaftswerte wie

    gewohnt im Eigenschaften-Fenster eingeben. Als Beispiel fr nderun-

    gen whrend der Laufzeit soll hingegen das folgende Programm (Projekt

    Steuerelemente) dienen (siehe Abbildung 1.16).

    Abbildung 1.16 Position und Gre bestimmen

    Zunchst ein Hinweis zu den bentigten Namensrumen, die oberhalb der

    Klasse eingebunden werden:

    using System;using System.Drawing;using System.Windows.Forms;...

    Listing 1.5 Projekt Steuerelemente, Namensrume

    Gegenber dem vorherigen Projekt ist noch der Namensraum System.Dra-

    wing hinzugekommen, der beim Zugriff auf Positions-, Gren- oder Farb-

    angaben bentigt wird. Die drei genannten Namensrume reichen bei

    vielen Projekten aus.

    Es wird nachfolgend generell nur der Teil des Programmcodes angezeigt,

    der verndert wurde:

    private void cmdPositionRel_Click(...){

    cmdTest.Location = new Point(cmdTest.Location.X + 20, cmdTest.Location.Y);

    }

    3705.book Seite 33 Dienstag, 8. September 2015 3:39 15

  • 1 Einfhrung

    34

    private void cmdPositionAbs_Click(...){

    cmdTest.Location = new Point(100, 200);}

    private void cmdGreRel_Click(...){

    cmdTest.Size = new Size(cmdTest.Size.Width + 20, cmdTest.Size.Height);

    }

    private void cmdGreAbs_Click(...){

    cmdTest.Size = new Size(50, 100);}

    Listing 1.6 Projekt Steuerelemente

    Zur Erluterung:

    Verkrzte

    Darstellung

    Der Kopfteil der einzelnen Methoden wurde aus Grnden der bersicht-lichkeit jeweils in verkrzter Form abgebildet. Das wird bei den meisten

    nachfolgenden Beispielen ebenfalls so sein, auer wenn es genau auf die

    Inhalte des Methodenkopfs ankommt.

    Das Formular enthlt fnf Buttons. Die oberen vier Buttons dienen derVernderung von Position und Gre des fnften Buttons.

    Die Position eines Elements kann relativ zur aktuellen Position oder aufabsolute Werte eingestellt werden. Das Gleiche gilt fr die Gre eines

    Elements.

    Bei beiden Angaben handelt es sich um Wertepaare (X/Y bzw. Breite/Hhe).

    new Point Zur Einstellung der Position dient die Struktur Point. Ein Objekt dieserStruktur liefert ein Wertepaar. In diesem Programm wird mit new jeweils

    ein neues Objekt der Struktur Point erzeugt, um das Wertepaar bereitzu-

    stellen.

    X, Y Bei Bettigung des Buttons Position Abs wird die Position des fnftenButtons auf die Werte X=100 und Y=200 gestellt, jeweils gemessen von der

    linken oberen Ecke des Formulars.

    Bei Bettigung des Buttons Position Rel wird die Position des fnftenButtons auf die Werte X = cmdTest.Location.X + 20 und Y = cmdTest.Loca-

    tion.Y gestellt. Bei X wird also der alte Wert der Komponente X um 20

    3705.book Seite 34 Dienstag, 8. September 2015 3:39 15

    1.5 Arbeiten mit Steuerelementen

    35

    1erhht, das Element bewegt sich nach rechts. Bei Y wird der alte Wert der

    Komponente Y nicht verndert, das Element bewegt sich somit nicht

    nach oben oder unten.

    Size Zur Einstellung der Gre dient die Struktur Size.

    Width, Height Bei Bettigung des Buttons Grsse Abs wird die Gre des fnftenButtons auf die Werte Width = 50 und Height = 100 gestellt.

    Bei Bettigung des Buttons Grsse Rel wird die Gre des fnftenButtons auf die Werte Width = cmdTest.Size.Width + 20 und Height = cmd-

    Test.Size.Height gestellt. Bei Width wird also der alte Wert der Kompo-

    nente Width um 20 erhht, das Element wird breiter. Bei Height wird

    der frhere Wert der Komponente Height nicht verndert, das Element

    verndert seine Hhe daher nicht.

    Nach einigen Klicks sieht das Formular aus wie das in Abbildung 1.17.

    Abbildung 1.17 Vernderung von Eigenschaften zur Laufzeit

    1.5.4 Vergabe und Verwendung von Namen

    Beachten Sie in allen Programmen, dass jedes Steuerelement seinen eige-

    nen, eindeutigen Namen hat und immer mit diesem Namen angesprochen

    werden muss. Besonders am Anfang passiert es erfahrungsgem hufig,

    dass ein Programm nur deshalb nicht zum gewnschten Erfolg fhrt, weil

    ein nicht vorhandener Name verwendet wurde. In diesem Zusammenhang

    mchte ich noch einmal auf die Namenskonventionen hinweisen:

    Buttons sollten Namen wie z. B. cmdEnde, cmdAnzeigen, cmdBerechnen usw.haben.

    Labels sollten Namen wie z. B. lblAnzeige, lblName, lblUhrzeit, lblBe-ginnDatum haben.

    3705.book Seite 35 Dienstag, 8. September 2015 3:39 15

  • 1 Einfhrung

    36

    Diese Namen liefern eine eindeutige Information ber Typ und Funktion

    des Steuerelements. Falls Sie beim Schreiben von Programmcode anschlie-

    end diese Namen z. B. vollstndig in Kleinbuchstaben eingeben, werden

    Sie nach Verlassen der Zeile darauf aufmerksam gemacht. Sie knnen so

    schnell erkennen, ob Sie tatschlich ein vorhandenes Steuerelement ver-

    wendet haben.

    1.5.5 Verknpfung von Texten, mehrzeilige Texte

    + und \n Es knnen mehrere Texte in einer Ausgabe mithilfe des Zeichens + mitein-

    ander verknpft werden. Falls Sie eine mehrzeilige Ausgabe wnschen,

    knnen Sie einen Zeilenvorschub mithilfe der Zeichenfolge "\n" (fr new

    line) erzeugen.

    Nachfolgend wird das Projekt Steuerelemente um ein Label ergnzt, in dem

    die aktuelle Position und Gre des Buttons angezeigt werden. Das soll

    nach Bettigung des Buttons Anzeige geschehen:

    private void cmdAnzeige_Click(...){

    lblAnzeige.Text = "Position: X: " + cmdTest.Location.X +", Y: " + cmdTest.Location.Y + "\n" + "Gre: Breite: " +cmdTest.Size.Width + ", Hhe: " + cmdTest.Size.Height;

    }

    Listing 1.7 Projekt Steuerelemente, mit Anzeige

    Nach einigen Klicks und der Bettigung des Buttons Anzeige sieht das For-

    mular aus wie das in Abbildung 1.18.

    Abbildung 1.18 Anzeige der Eigenschaften

    3705.book Seite 36 Dienstag, 8. September 2015 3:39 15

    1.5 Arbeiten mit Steuerelementen

    37

    11.5.6 Eigenschaft BackColor, Farben allgemein

    BackColorDie Hintergrundfarbe eines Steuerelements wird mit der Eigenschaft Back-

    Color festgelegt. Dabei knnen Sie die Farbe zur Entwicklungszeit leicht

    mithilfe einer Farbpalette oder aus Systemfarben auswhlen.

    ColorHintergrundfarben und andere Farben knnen Sie auch zur Laufzeit ein-

    stellen. Dabei bedienen Sie sich der Farbwerte, die Sie ber die Struktur

    Color auswhlen.

    Ein Beispiel, ebenfalls im Projekt Steuerelemente:

    private void cmdFarbe_Click(object sender, EventArgs e){

    BackColor = Color.Yellow;lblAnzeige.BackColor = Color.FromArgb(192, 255, 0);

    }

    Listing 1.8 Projekt Steuerelemente, mit Farben

    Zur Erluterung:

    Diese Struktur bietet vordefinierte Farbnamen als Eigenschaften, z. B.Yellow. Der Wert kann der Eigenschaft BackColor des Steuerelements

    zugewiesen werden, hier aber handelt es sich um das Formular selbst.

    FromArgb() Auerdem bietet die Struktur die Methode FromArgb(). Diese knnen Sieauf verschiedene Arten aufrufen. Eine dieser Arten erwartet genau drei

    Parameter, nmlich die Werte fr Rot, Grn und Blau jeweils zwischen 0

    und 255.

    Das Formular sieht nach der nderung der Eigenschaft Farbe aus wie das in

    Abbildung 1.19.

    Abbildung 1.19 Nach nderung der Eigenschaft Farbe

    3705.book Seite 37 Dienstag, 8. September 2015 3:39 15

  • 39

    2

    Kapitel 2

    Grundlagen

    In diesem Kapitel erlernen Sie auf anschauliche Weise die Sprach-

    grundlagen von C# in Verbindung mit den gngigen Steuerelementen

    von Windows-Programmen.

    In den folgenden Abschnitten lernen Sie wichtige Elemente der Program-

    mierung, wie Variablen, Operatoren, Verzweigungen und Schleifen, ge-

    meinsam mit wohlbekannten, hufig verwendeten Steuerelementen

    kennen.

    2.1 Variablen und Datentypen

    Variablen dienen der vorbergehenden Speicherung von Daten, die sich

    whrend der Laufzeit eines Programms ndern knnen. Eine Variable

    besitzt einen eindeutigen Namen, unter dem sie angesprochen werden

    kann.

    2.1.1 Namen, Werte

    NamensregelnFr die Namen von Variablen gelten in C# die folgenden Regeln:

    Sie beginnen mit einem Buchstaben.

    Sie knnen nur aus Buchstaben, Zahlen und einigen wenigen Sonderzei-chen (wie z. B. dem Unterstrich _ ) bestehen.

    Innerhalb eines Gltigkeitsbereichs darf es keine zwei Variablen mitdem gleichen Namen geben (siehe Abschnitt 2.1.4).

    Variablen erhalten ihre Werte durch Zuweisung per Gleichheitszeichen.

    Falls eine Variable als Erstes auf der rechten Seite des Gleichheitszeichens

    genutzt wird, muss ihr vorher ein Wert zugewiesen werden. Anderenfalls

    wird ein Fehler gemeldet.

    3705.book Seite 39 Dienstag, 8. September 2015 3:39 15

  • 2 Grundlagen

    40

    2.1.2 Deklarationen

    Neben dem Namen besitzt jede Variable einen Datentyp, der die Art der

    Information bestimmt, die gespeichert werden kann. Der Entwickler

    whlt den Datentyp danach aus, ob er Texte, Zahlen ohne Nachkomma-

    stellen, Zahlen mit Nachkommastellen oder z. B. logische Werte speichern

    mchte.

    Auswahl des

    Datentyps

    Auerdem muss er sich noch Gedanken ber die Gre des Bereichs ma-

    chen, den die Zahl oder der Text annehmen knnte, und ber die ge-

    wnschte Genauigkeit bei Zahlen. Im folgenden Abschnitt finden Sie eine

    Liste der gngigsten Datentypen.

    Variablen mssen in C# immer mit einem Datentyp deklariert werden. Das

    beugt Fehlern vor, die aufgrund einer falschen Verwendung der Variablen

    entstehen knnten.

    2.1.3 Datentypen

    Die wichtigsten von C# untersttzten Datentypen knnen in einige groe

    Gruppen unterteilt werden:

    Es gibt Datentypen zur Speicherung von ganzen Zahlen:

    den Datentyp byte, mit Werten von 0 bis 255

    den Datentyp short, mit Werten von 32.768 bis 32.767

    int den Datentyp int, mit Werten von 2.147.483.648 bis 2.147.483.647

    und den Datentyp long, mit Werten von 9.223.372.036.854.775.808 bis9.223.372.036.854.775.807

    Auerdem gibt es Datentypen zur Speicherung von Zahlen mit Nachkom-

    mastellen:

    den Datentyp float, mit einfacher Genauigkeit und Werten von ca. 3,4 1038 bis ca. 3,4 1038

    double den Datentyp double, mit doppelter Genauigkeit und Werten von ca. 1,7 10308 bis ca. 1,7 10308

    und den Datentyp decimal, mit variabler Genauigkeit und Werten von ca. 7,9 1028 bis ca. 7.9 1028

    3705.book Seite 40 Dienstag, 8. September 2015 3:39 15

    2.1 Variablen und Datentypen

    41

    2

    Einige weitere ntzliche Datentypen sind:

    der Datentyp bool, mit den Werten true oder false (wahr oder falsch)

    der Datentyp char, fr einzelne Zeichen

    string der Datentyp string, fr Zeichenketten mit variabler Lnge

    Im folgenden Beispiel werden Variablen dieser Typen deklariert, mit Wer-

    ten versehen und in einem Label angezeigt (Projekt Datentypen).

    private void cmdAnzeige_Click(...){

    /* Ganze Zahlen */byte By;short Sh;int It, Hex;long Lg;

    /* Zahlen mit Nachkommastellen */float Fl;double Db1, Db2, Exp1, Exp2;decimal De;

    /* Boolesche Variable, Zeichen, Zeichenkette */bool Bo;char Ch;string St;

    /* Ganze Zahlen */By = 200;Sh = 30000;It = 2000000000;Lg = 3000000000;Hex = 0x3a;

    /* Zahlen mit Nachkommastellen */Fl = 1.0f / 7;Db1 = 1 / 7;Db2 = 1.0 / 7;De = 1.0m / 7;Exp1 = 1.5e3;Exp2 = 1.5e-3;

    3705.book Seite 41 Dienstag, 8. September 2015 3:39 15

  • 2 Grundlagen

    42

    /* Boolesche Variable, Zeichen, Zeichenkette */Bo = true;Ch = 'a';St = "Zeichenkette";

    lblAnzeige.Text ="byte: " + By + "\n" + "short: " + Sh + "\n" +"int: " + It + "\n" + "long: " + Lg + "\n" +"(hexadezimale Zahl): " + Hex + "\n\n" +

    "float: " + Fl + "\n" + "double 1: " + Db1 + "\n" +"double 2: " + Db2 + "\n" + "decimal: " + De + "\n" +"(Exponent positiv): " + Exp1 + "\n" +"(Exponent negativ): " + Exp2 + "\n\n" +

    "bool: " + Bo + "\n" +"char: " + Ch + "\n" + "string: " + St;

    }

    Listing 2.1 Projekt Datentypen

    Nach Bettigung des Buttons stellt das Programm die Ausgabe wie in Abbil-

    dung 2.1 dar.

    Abbildung 2.1 Wichtige Datentypen

    Zur Erluterung:

    Deklaration Variablen werden mithilfe der Anweisung ;deklariert. Mehrere Variablen desselben Datentyps knnen, durch

    3705.book Seite 42 Dienstag, 8. September 2015 3:39 15

    2.1 Variablen und Datentypen

    43

    2

    Kommata getrennt, innerhalb einer Anweisung deklariert werden (z. B.

    int x, y;).

    Variablen knnen bereits bei der Deklaration einen Wert erhalten, zumBeispiel: short Sh = 30000;.

    Wertebereich Bei den Datentypen fr ganze Zahlen fhrt die Zuweisung einer zugroen Zahl zu einer berschreitung des Wertebereichs und zu einer

    Fehlermeldung.

    Hexadezimal Ganze Zahlen knnen auch in hexadezimaler Form zugewiesen werden,mithilfe von 0x zu Beginn der Zahl, gefolgt von den hexadezimalen

    Ziffern. Diese gehen von 0 bis 9, es folgen a (= dezimal 10), b (=11), c (=12),

    d (=13), e (=14) und f (=15). Ein Beispiel: 0x2f5 entspricht 2x162 + 15x161 +

    5x160 = 512 + 240 + 5 = 757.

    Zahlen mit Nach-

    kommastellen

    Die Datentypen fr Zahlen mit Nachkommastellen unterscheiden sichin ihrer Genauigkeit. Nachkommastellen mssen im Programmcode

    durch einen Dezimalpunkt abgetrennt werden. In der Ausgabe wird da-

    gegen ein Dezimalkomma dargestellt. Die Zuweisung einer zu groen

    Zahl fhrt zu einer Fehlermeldung. Die Zuweisung einer zu kleinen Zahl

    wiederum fhrt zur Anzeige von Unendlich (!) bzw. zu einer unge-

    nauen Speicherung.

    Division ganzer

    Zahlen

    Bei der Division von zwei ganzen Zahlen sollten Sie beachten, dass dieNachkommastellen abgeschnitten werden. Mchten Sie das nicht, ms-

    sen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkomma-

    stellen kennzeichnen, z. B. durch das Anhngen von .0: Statt 1 schreiben

    Sie 1.0.

    Krzel f und m float-Werte sollten mit einem f gekennzeichnet werden, decimal-Wertemit einem m. Damit erhlt die gesamte Division im vorliegenden Pro-

    gramm einen float- bzw. decimal-Wert.

    Exponential-

    schreibweise

    Sehr groe oder sehr kleine Zahlen knnen im Programmcode auch inder Exponentialschreibweise zugewiesen werden. Zwei Beispiele: 1.5e3

    fr 1500.0 oder 1.5e-3 fr 0.0015.

    true, false Werte fr den Datentyp bool werden mit true und false zugewiesen,aber mit True und False ausgegeben.

    Anfhrungszeichen Werte fr Zeichen mssen in einfachen Anfhrungszeichen und fr Zei-chenketten in doppelten Anfhrungszeichen angegeben werden.

    Die Datentypen int, double, bool und string werden am Hufigsten ein-gesetzt.

    3705.book Seite 43 Dienstag, 8. September 2015 3:39 15

  • 2 Grundlagen

    44

    bung

    bung

    Datentypen

    Schreiben Sie ein Programm, in welchem Ihre Adresse, Ihr Nach- und Vor-

    name, Alter und Gehalt jeweils in Variablen eines geeigneten Datentyps ge-

    speichert und anschlieend wie in Abbildung 2.2 ausgegeben werden.

    Abbildung 2.2 bung Datentypen

    2.1.4 Gltigkeitsbereich

    Lokal Variablen, die innerhalb einer Methode vereinbart wurden, haben ihre Gl-

    tigkeit nur in der Methode. Auerhalb der Methode sind sowohl Name als

    auch Wert der Variable unbekannt. Solche Variablen bezeichnet man daher

    auch als lokale Variablen. Sobald die Methode abgearbeitet wurde, steht

    der Wert auch nicht mehr zur Verfgung. Beim nchsten Aufruf der glei-

    chen Methode werden diese Variablen neu deklariert und erhalten neue

    Werte.

    Klassenweit gltig Variablen, die auerhalb von Methoden vereinbart werden, sind innerhalb

    der gesamten Klasse gltig, hier also innerhalb der Klasse des Formulars.

    Ihr Wert kann in jeder Methode gesetzt oder abgerufen werden und bleibt

    solange erhalten, wie das Formular im laufenden Programm existiert.

    private Diese klassenweit gltigen Variablen werden mit dem Schlsselwort pri-

    vate deklariert. Weitere Einzelheiten zu klassenweit gltigen Variablen fin-

    den Sie in Abschnitt 5.2. Sie sind auerhalb der Klasse nicht gltig.

    public Variablen, die mit dem Schlsselwort public vereinbart werden, sind f-

    fentlich. Damit sind sie auch auerhalb der jeweiligen Klasse, also z. B. auch

    in anderen Formularen gltig. Mehr dazu ebenfalls in Abschnitt 5.2.

    Gibt es in einem Programmabschnitt mehrere Variablen mit dem gleichen

    Namen, gelten die folgenden Regeln:

    Lokale Variablen mit gleichem Namen in der gleichen Methode sindnicht zulssig.

    3705.book Seite 44 Dienstag, 8. September 2015 3:39 15

    2.1 Variablen und Datentypen

    45

    2

    Ausblenden Eine klassenweit gltige Variable wird innerhalb einer Methode von ei-ner lokalen Variablen mit dem gleichen Namen ausgeblendet.

    Im folgenden Beispiel werden Variablen unterschiedlicher Gltigkeitsbe-

    reiche deklariert, an verschiedenen Stellen verndert und ausgegeben (Pro-

    jekt Gltigkeitsbereich):

    public partial class Form1 : Form{

    ...private int Mx = 0;

    private void cmdAnzeigen1_Click(...){

    int x = 0;Mx = Mx + 1;x = x + 1;lblAnzeige.Text = "x: " + x + " Mx: " + Mx;

    }

    private void cmdAnzeigen2_Click(...){

    int Mx = 0;Mx = Mx + 1;lblAnzeige.Text = "Mx: " + Mx;

    }}

    Listing 2.2 Projekt Gltigkeitsbereich

    Zur Erluterung:

    In der ersten Methode wird der Wert der klassenweit gltigen VariablenMx bei jedem Aufruf erhht. Die lokale Variable x wird immer wieder auf

    1 gesetzt (siehe Abbildung 2.3).

    Abbildung 2.3 Lokale und klassenweit gltige Variablen

    3705.book Seite 45 Dienstag, 8. September 2015 3:39 15

  • 2 Grundlagen

    46

    In der zweiten Methode blendet die lokale Variable Mx die gleichnamigeklassenweit gltige Variable aus. Die lokale Variable wird immer wieder

    auf 1 gesetzt (siehe Abbildung 2.4).

    Abbildung 2.4 Lokale Variable

    Startwert setzen Hinweis: Die Variablen wurden vor ihrer ersten Benutzung initialisiert,

    d. h., sie wurden mit einem Startwert besetzt.

    bung

    bung Gltig-

    keitsbereich

    Erstellen Sie ein Programm, in dem zwei Buttons, ein Label und drei Varia-

    blen eines geeigneten Datentyps eingesetzt werden:

    die klassenweit gltige Variable x

    die Variable y, die nur lokal in der Methode zum Click-Ereignis des ers-ten Buttons gltig ist

    die Variable z, die nur lokal in der Methode zum Click-Ereignis des zwei-ten Buttons gltig ist

    In der ersten Methode werden x und y jeweils um 0,1 erhht und angezeigt

    (siehe Abbildung 2.5).

    Abbildung 2.5 Ausgabe der ersten Methode nach einigen Klicks

    In der zweiten Methode werden x und z jeweils um 0,1 erhht und ange-

    zeigt (siehe Abbildung 2.6).

    3705.book Seite 46 Dienstag, 8. September 2015 3:39 15

    2.1 Variablen und Datentypen

    47

    2

    Abbildung 2.6 Ausgabe der zweiten Methode nach weiteren Klicks

    2.1.5 Konstanten

    Konstanten repr-

    sentieren Werte

    Konstanten sind vordefinierte Werte, die whrend der Laufzeit nicht ver-

    ndert werden knnen. Am besten geben Sie Konstanten aussagekrftige

    Namen, damit sie leichter zu behalten sind als die Werte, die sie reprsen-

    tieren. Konstanten werden an einer zentralen Stelle definiert und knnen

    an verschiedenen Stellen des Programms genutzt werden. Somit muss eine

    eventuelle nderung einer Konstanten zur Entwurfszeit nur an einer Stelle

    erfolgen. Der Gltigkeitsbereich von Konstanten ist analog zum Gltig-

    keitsbereich von Variablen.

    Integrierte

    Konstanten

    Zu den Konstanten zhlen auch die integrierten Konstanten. Auch sie re-

    prsentieren Zahlen, die aber nicht so einprgsam sind wie die Namen der

    Konstanten.

    Im folgenden Beispiel werden mehrere Konstanten vereinbart und genutzt

    (Projekt Konstanten):

    public partial class Form1 : Form{

    ...private const int MaxWert = 75;private const string Eintrag = "Picture";

    private void cmdKonstanten_Click(...){

    const int MaxWert = 55;const int MinWert = 5;lblAnzeige.Text = (MaxWert - MinWert) / 2 + "\n" + Eintrag;

    }}

    Listing 2.3 Projekt Konstanten, Teil 1

    3705.book Seite 47 Dienstag, 8. September 2015 3:39 15

  • 2 Grundlagen

    48

    Zur Erluterung:

    const Konstanten werden mithilfe des Schlsselworts const definiert.

    Die Konstanten MaxWert und Eintrag werden mit klassenweiter Gltig-keit festgelegt.

    Innerhalb der Methode werden die beiden lokalen Konstanten MaxWertund MinWert festgelegt. MaxWert blendet die klassenweit gltige Kon-

    stante gleichen Namens aus, wie Sie in Abbildung 2.7 sehen knnen.

    Abbildung 2.7 Konstanten

    2.1.6 Enumerationen

    Konstanten

    aufzhlen

    Enumerationen sind Aufzhlungen von Konstanten, die thematisch zu-

    sammengehren. Alle Enumerationen haben den gleichen Datentyp, der

    ganzzahlig sein muss. Bei der Deklaration werden ihnen Werte zugewiesen,

    am besten explizit. Innerhalb von Visual Studio gibt es fr C# zahlreiche

    vordefinierte Enumerationen. hnlich wie bei den integrierten Konstan-

    ten sind die Namen der Enumerationen und deren Elemente besser lesbar

    als die durch sie reprsentierten Zahlen.

    Ein Beispiel: Die Enumeration DialogResult ermglicht dem Programmie-

    rer, die zahlreichen mglichen Antworten des Benutzers beim Einsatz von

    Windows-Standarddialogfeldern (Ja, Nein, Abbrechen, Wiederholen,

    Ignorieren, ...) anschaulich einzusetzen.

    Im folgenden Programm wird mit einer eigenen und einer vordefinierten

    Enumeration gearbeitet (ebenfalls im Projekt Konstanten):

    public partial class Form1 : Form{

    ...private enum Farbe : int{

    Rot = 1, Gelb = 2, Blau = 3

    3705.book Seite 48 Dienstag, 8. September 2015 3:39 15

    2.1 Variablen und Datentypen

    49

    2

    }

    private void cmdEnumeration1_Click(...){

    lblAnzeige.Text = "Farbe: " + Farbe.Gelb +" " + (int)Farbe.Gelb;

    }

    private void cmdEnumeration2_Click(...){

    lblAnzeige.Text = "Sonntag: " + DayOfWeek.Sunday + " " +(int)DayOfWeek.Sunday + "\n" + "Samstag: " +DayOfWeek.Saturday + " " + (int)DayOfWeek.Saturday;

    }}

    Listing 2.4 Projekt Konstanten, Teil 2

    Zur Erluterung:

    Klassenweit gltig Es wird die Enumeration Farbe vom Datentyp int vereinbart. Da es sichum einen Typ handelt und nicht um eine Variable oder Konstante, muss

    sie auerhalb von Methoden vereinbart werden. Damit ist sie automa-

    tisch fr die gesamte Klasse gltig.

    Cast (int) In der ersten Ereignismethode wird ein Element der eigenen Enumera-tion Farbe verwendet. Zunchst wird der Name des Elements ausgege-

    ben: Gelb. Die Zahl, welche das Element reprsentiert, kann erst nach

    einer Umwandlung in den entsprechenden Datentyp ausgegeben wer-

    den. Diese Umwandlung wird mithilfe eines Casts vorgenommen: (int)

    (siehe Abbildung 2.8).

    Abbildung 2.8 Erste Enumeration

    DayOfWeek In der zweiten Ereignismethode werden zwei Elemente der vordefi-nierten Enumeration DayOfWeek verwendet, siehe Abbildung 2.9. Sie

    3705.book Seite 49 Dienstag, 8. September 2015 3:39 15

  • 2 Grundlagen

    50

    knnen sie zur Ermittlung des Wochentags eines gegebenen Datums

    verwenden.

    Abbildung 2.9 Zweite Enumeration

    2.2 Operatoren

    Zum Zusammensetzen von Ausdrcken werden in C#, wie in jeder anderen

    Programmiersprache auch, Operatoren verwendet. In diesem Buch wur-

    den schon die Operatoren = fr Zuweisungen und + fr Verkettungen ge-

    nutzt.

    Prioritt Es gibt verschiedene Kategorien von Operatoren. Vorrangregeln (Priorit-

    ten) sind fr die Reihenfolge der Abarbeitung zustndig, falls mehrere Ope-

    ratoren innerhalb eines Ausdrucks verwendet werden. Diese Vorrang-

    regeln finden Sie weiter unten in diesem Abschnitt. Falls Sie sich bei der

    Verwendung dieser Regeln nicht sicher sind, empfiehlt es sich, die Reihen-

    folge durch eigene Klammersetzung explizit festzulegen.

    2.2.1 Rechenoperatoren

    Rechenoperatoren Rechenoperatoren dienen der Durchfhrung von Berechnungen, siehe Ta-

    belle 2.1.

    Operator Beschreibung

    + Addition

    - Subtraktion oder Negation

    * Multiplikation

    / Division

    Tabelle 2.1 Rechenoperatoren

    3705.book Seite 50 Dienstag, 8. September 2015 3:39 15

    2.2 Operatoren

    51

    2

    GanzzahldivisionBei der Division von zwei ganzen Zahlen sollten Sie beachten, dass die

    Nachkommastellen abgeschnitten werden. Wenn Sie das nicht mchten,

    mssen Sie zumindest eine der beiden Zahlen als Zahl mit Nachkomma-

    stellen kennzeichnen, z. B. durch Anhngen von .0: Statt 5 schreiben Sie

    also 5.0.

    ModuloDer Modulo-Operator % berechnet den Rest einer Division. Einige Beispiele

    sehen Sie in Tabelle 2.2.

    ++, --Die Operatoren ++ und -- dienen als Schreibabkrzung und sollen mithilfe

    des Projekts Rechenoperatoren erlutert werden:

    private void cmdAnzeigen1_Click(...){

    int x = 5;x++;++x;x = x + 1;lblA.Text = "Ergebnis: " + x;

    }

    private void cmdAnzeigen2_Click(...){

    int x = 5;lblA.Text = "Ergebnis: " + x++;

    }

    % Modulo

    ++ Erhhung um 1

    -- Verminderung um 1

    Operator Beschreibung

    Tabelle 2.1 Rechenoperatoren (Forts.)

    Ausdruck Ergebnis Erklrung

    19% 4 3 19 durch 4 ist 4 Rest 3

    19.5% 4.2 2.7 19,5 durch 4,2 ist 4 Rest 2,7

    Tabelle 2.2 Modulo-Operator

    3705.book Seite 51 Dienstag, 8. September 2015 3:39 15

  • 2 Grundlagen

    52

    private void cmdAnzeigen3_Click(...){

    int x = 5;lblA.Text = "Ergebnis: " + ++x;

    }

    Listing 2.5 Projekt Rechenoperatoren

    Zur Erluterung:

    In der ersten Methode hat x zunchst den Wert 5. Der Wert kann mit ++xoder mit x++ oder mit x = x + 1 jeweils um 1 erhht werden. Anschlieend

    hat x dann den Wert 8.

    x++ In der zweiten Methode wird x zunchst ausgegeben und anschlieendum 1 erhht. Das liegt daran, dass der Operator ++ hinter x steht. In der

    Ausgabe sehen Sie noch den alten Wert 5, nach der Anweisungszeile er-

    hlt x den Wert 6.

    ++x In der dritten Methode wird x zunchst um 1 erhht und anschlieendausgegeben. In diesem Fall steht der Operator ++ vor x. In der Ausgabe

    sehen Sie den neuen Wert 6, nach der Anweisungszeile behlt x ebenfalls

    den Wert 6.

    x=x+1 Die Schreibweise x = x + 1; als eigene Anweisungszeile schafft hier Klar-heit.

    Fr den Operator -- gilt sinngem das Gleiche.

    Von links nach

    rechts

    Multiplikation und Division innerhalb eines Ausdrucks sind gleichrangig

    und werden von links nach rechts in der Reihenfolge ihres Auftretens aus-

    gewertet. Dasselbe gilt fr Additionen und Subtraktionen, wenn sie zusam-

    men in einem Ausdruck auftreten. Multiplikation und Division werden da-

    bei vor Addition und Subtraktion ausgefhrt.

    Klammern Mit Klammern kann diese Rangfolge jedoch auer Kraft gesetzt werden,

    damit bestimmte Teilausdrcke vor anderen Teilausdrcken ausgewertet

    werden. In Klammern gesetzte Operationen haben grundstzlich immer

    Vorrang. Innerhalb der Klammern gilt dann jedoch wieder die normale

    Rangfolge der Operatoren.

    Projekt Im Projekt Rechenoperatoren knnen Sie nun auch die beiden Berechnun-

    gen mit dem Operator % leicht selber nachvollziehen.

    3705.book Seite 52 Dienstag, 8. September 2015 3:39 15

    2.2 Operatoren

    53

    2

    bung

    bung Rechen-

    operatoren

    Berechnen Sie die beiden folgenden Ausdrcke, speichern Sie das Ergebnis

    in einer Variablen eines geeigneten Datentyps, und zeigen Sie es anschlie-

    end an:

    1. Ausdruck: 3 * 2.5 + 4 * 2

    2. Ausdruck: 3 * (-2.5 + 4) * 2

    2.2.2 Vergleichsoperatoren

    VergleichVergleichsoperatoren (siehe Tabelle 2.3) dienen dazu, festzustellen, ob be-

    stimmte Bedingungen zutreffen oder nicht. Das Ergebnis kann beispiels-

    weise zur Ablaufsteuerung von Programmen genutzt werden. In Abschnitt

    2.4 wird hierauf noch genauer eingegangen.

    Einige Beispiele sehen Sie in Tabelle 2.4.

    Operator Beschreibung

    < kleiner als

    grer als

    >= grer als oder gleich

    == gleich

    != ungleich

    Tabelle 2.3 Vergleichsoperatoren

    Ausdruck Ergebnis

    5 > 3 true

    3 == 3.2 false

    5 + 3 * 2 >= 12 false

    "Maier" == "Mayer" false

    Tabelle 2.4 Nutzung von Vergleichsoperatoren

    3705.book Seite 53 Dienstag, 8. September 2015 3:39 15

  • 2 Grundlagen

    54

    Projekt Alle Vergleiche innerhalb dieses Abschnitts knnen Sie auch mithilfe des

    Codes im Projekt Vergleichsoperatoren selber nachvollziehen.

    bung

    bung Vergleichs-

    operatoren

    Ermitteln Sie das Ergebnis der beiden folgenden Ausdrcke, speichern Sie

    es in einer Variablen eines geeigneten Datentyps, und zeigen Sie es an:

    1. Ausdruck: 12 3 >= 4 * 2.5

    2. Ausdruck: "Maier" != "Mayer"

    2.2.3 Logische Operatoren

    Logik Logische Operatoren dienen dazu, mehrere Bedingungen zusammenzufas-

    sen. Das Ergebnis kann ebenfalls etwa zur Ablaufsteuerung von Program-

    men genutzt werden (siehe hierzu auch Abschnitt 2.4). Die logischen Ope-

    ratoren sehen Sie in Tabelle 2.5.

    ! && || ^ Es seien die Variablen A = 1, B = 3 und C = 5 gesetzt. Die Ausdrcke in der ers-

    ten Spalte von Tabelle 2.6 ergeben dann jeweils die Ergebnisse in der zwei-

    ten Spalte.

    Operator Beschreibung Das Ergebnis ist true, wenn ...

    ! Nicht ... der Ausdruck false ist.

    && Und ... beide Ausdrcke true sind.

    || inklusives Oder ... mindestens ein Ausdruck true ist.

    ^ exklusives Oder ... genau ein Ausdruck true ist.

    Tabelle 2.5 Logische Operatoren

    Ausdruck Ergebnis

    !(A < B) false

    (B > A) && (C > B) true

    (B < A) || (C < B) false

    (B < A) ^ (C > B) true

    Tabelle 2.6 Ausdrcke mit logischen Operatoren

    3705.book Seite 54 Dienstag, 8. September 2015 3:39 15

    2.2 Operatoren

    55

    2

    ProjektAlle Berechnungen und Erluterungen innerhalb dieses Abschnitts kn-

    nen Sie auch mithilfe des Codes im Projekt LogischeOperatoren nachvoll-

    ziehen.

    bung

    bung Logische-

    Operatoren

    Ermitteln Sie das Ergebnis der beiden folgenden Ausdrcke, speichern Sie

    es in einer Variablen eines geeigneten Datentyps, und zeigen Sie es an:

    1. Ausdruck: 4 > 3 && 4 > 3

    2. Ausdruck: 4 > 3 || 4 > 3

    &, |Sie knnen auch die logischen bitweisen Operatoren & (statt &&) und | (statt

    ||) verwenden. Hierbei werden alle Teile des Vergleichsausdrucks ausge-

    wertet. Im Gegensatz dazu wird bei den Operatoren && und || die Auswer-

    tung abgebrochen, sobald sich der Wert des Ausdrucks nicht mehr vern-

    dern kann. Die Ergebnisse unterscheiden sich allerdings nur dann, wenn

    innerhalb des Vergleichsausdrucks Werte verndert werden, z. B. mit den

    Operatoren ++ oder --.

    2.2.4 Verkettungsoperator

    Umwandlung in

    Zeichenketten

    Der Operator + dient der Verkettung von Zeichenketten. Ist einer der Aus-

    drcke keine Zeichenfolge, sondern eine Zahl, wird er (wenn mglich) in ei-

    ne Zeichenfolge verwandelt. Das Gesamtergebnis ist dann wiederum eine

    Zeichenfolge. Beispiel:

    private void cmdAnzeige_Click(...){

    string a, b;double d;int x;

    b = "Hallo";d = 4.6;x = -5;a = b + " Welt " + d + " " + x + " " + 12;lblAnzeige.Text = a;// lblAnzeige.Text = x;

    }

    Listing 2.6 Projekt Verkettungsoperator

    3705.book Seite 55 Dienstag, 8. September 2015 3:39 15

  • 2 Grundlagen

    56

    Zur Erluterung:

    Die Zeichenkette a wird aus Variablen und Werten unterschiedlicher Da-tentypen zusammengesetzt.

    Die letzte Anweisung wurde auskommentiert, weil sie zu einem Fehlerfhrt. Die int-Variable x kann nicht direkt als Wert fr die Eigenschaft

    Text verwendet werden. Sie muss zunchst umgewandelt werden.

    Das Ergebnis ist in Abbildung 2.10 zu sehen.

    Ein weiteres Beispiel hierfr ist brigens bereits in Abschnitt 1.4.5 zufinden.

    Abbildung 2.10 Verkettung

    2.2.5 Zuweisungsoperatoren

    Zeichen = Den einfachsten Zuweisungsoperator, das Gleichheitszeichen, haben Sie

    bereits genutzt. Zur Verkrzung von Anweisungen gibt es aber noch weite-

    re Zuweisungsoperatoren. Eine Auswahl sehen Sie in Tabelle 2.7.

    Operator Beispiel Ergebnis

    = x = 7 x erhlt den Wert 7.

    += x += 5 Der Wert von x wird um 5 erhht.

    -= x -= 5 Der Wert von x wird um 5 verringert.

    *= x *= 3 Der Wert von x wird auf das Dreifache erhht.

    /= x /= 3 Der Wert von x wird auf ein Drittel verringert.

    %= x %= 3 x wird durch 3 geteilt, der Rest der Division wird x zugewiesen.

    += z += "abc" Die Zeichenkette z wird um den Text abc verlngert.

    Tabelle 2.7 Zuweisungsoperatoren

    3705.book Seite 56 Dienstag, 8. September 2015 3:39 15

    2.2 Operatoren

    57

    2

    2.2.6 Rangfolge der Operatoren

    PriorittEnthlt ein Ausdruck mehrere Operationen, werden die einzelnen Teilaus-

    drcke in einer bestimmten Rangfolge ausgewertet und aufgelst, die als

    Rangfolge bzw. Prioritt der Operatoren bezeichnet wird. Dabei gilt die in

    Tabelle 2.8 dargestellte Rangfolge.

    Je weiter oben die Operatoren in der Tabelle stehen, desto hher ist ihre

    Prioritt.

    KlammernWie schon bei den Rechenoperatoren erwhnt: Mit Klammern kann diese

    Rangfolge auer Kraft gesetzt werden, damit bestimmte Teilausdrcke vor

    anderen Teilausdrcken ausgewertet werden. In Klammern gesetzte Ope-

    rationen haben grundstzlich Vorrang. Innerhalb der Klammern gilt je-

    doch wieder die normale Rangfolge der Operatoren.

    bung

    bung OperatorenSind die Bedingungen in Tabelle 2.9 wahr oder falsch? Lsen Sie die Aufga-

    be mglichst ohne Zuhilfenahme des PC.

    Operator Beschreibung

    - ! negatives Vorzeichen, logisches Nicht

    * / % Multiplikation, Division, Modulo

    + - Addition, Subtraktion

    < > = Vergleichsoperatoren fr kleiner und grer

    == != Vergleichsoperatoren fr gleich und ungleich

    && logisches Und

    || logisches Oder

    Tabelle 2.8 Rangfolge der Operatoren

    Nr. Werte Bedingung

    1 a=5 b=10 a>0 && b!=10

    2 a=5 b=10 a>0 || b!=10

    3 z=10 w=100 z!=0 || z>w || w-z==90

    Tabelle 2.9 bung Operatoren

    3705.book Seite 57 Dienstag, 8. September 2015 3:39 15

  • 2 Grundlagen

    58

    2.3 Einfache Steuerelemente

    Windows-Programmierung mit C# innerhalb von Visual Studio besteht

    prinzipiell aus zwei Teilen: der Arbeit mit visuellen Steuerelementen und

    der Programmierung mit der Sprache. Beides soll in diesem Buch parallel

    vermittelt werden, um so die eher theoretischen Abschnitte zur Program-

    miersprache durch anschauliche Praxisbeispiele zu vertiefen.

    Daher wird in diesem Abschnitt mit vier weiteren Steuerelementen gear-

    beitet, bevor im nchsten Abschnitt die Verzweigungen zur Programm-

    steuerung vorgestellt werden: den Steuerelementen Panel, Zeitgeber, Text-

    feld und Zahlenauswahlfeld.

    2.3.1 Panel

    Container Ein Panel dient normalerweise als Container fr andere Steuerelemente. In

    unserem Beispiel wird es zur visuellen Darstellung eines Rechtecks und fr

    eine kleine Animation genutzt.

    Die Eigenschaften BackColor (Hintergrundfarbe), Location (Position) und

    Size (Gre) sind Ihnen schon von anderen Steuerelementen her bekannt.

    Mithilfe des nachfolgenden Programms im Projekt Panel wird ein Panel

    durch Bettigung von vier Buttons um 10 Pixel nach oben, unten, links

    oder rechts verschoben. Es hat die Gre 100 100 Pixel, die Startposition

    X=145 und Y=80 sowie eine eigene Hintergrundfarbe. Die Bewegung wird

    mithilfe der Struktur Point durchgefhrt.

    In Abbildung 2.11 und Abbildung 2.12 ist das Panel im Startzustand bzw.

    nach einigen Klicks zu sehen.

    4 z=10 w=100 z==11 && z>w || w-z==90

    5 x=1.0 y=5.7 x>=.9 && y=.9 && !(y0 && n2>0 || n1>n2 && n2!=17

    8 n1=1 n2=17 n1>0 && (n2>0 || n1>n2) && n2!=17

    Nr. Werte Bedingung

    Tabelle 2.9 bung Operatoren (Forts.)

    3705.book Seite 58 Dienstag, 8. September 2015 3:39 15

    2.3 Einfache Steuerelemente

    59

    2

    Abbildung 2.11 Panel, Startzustand

    Abbildung 2.12 Panel, nach ein paar Klicks

    Der Programmcode:

    private void cmdOben_Click(...){

    p.Location = new Point(p.Location.X, p.Location.Y - 10);}

    private void cmdLinks_Click(...){

    p.Location = new Point(p.Location.X - 10, p.Location.Y);}

    3705.book Seite 59 Dienstag, 8. September 2015 3:39 15

  • 2 Grundlagen

    60

    private void cmdRechts_Click(...){

    p.Location = new Point(p.Location.X + 10, p.Location.Y);}

    private void cmdUnten_Click(...){

    p.Location = new Point(p.Location.X, p.Location.Y + 10);}

    Listing 2.7 Projekt Panel

    2.3.2 Zeitgeber

    Timer-Intervall

    Enabled

    Ein Zeitgeber (Timer) erzeugt in festgelegten Abstnden Zeittakte. Diese

    Zeittakte sind Ereignisse, die der Entwickler mit verschiedenen Aktionen

    verbinden kann. Das zugehrige Ereignis heit Tick. Ein Zeitgeber kann wie

    jedes andere Steuerelement zum Formular hinzugefgt werden. Da es sich

    aber beim Zeitgeber um ein nicht sichtbares Steuerelement handelt, wird

    er unterhalb des Formulars angezeigt. Auch zur Laufzeit ist er nicht sicht-

    bar. Seine wichtigste Eigenschaft ist das Zeitintervall, in dem das Ereignis

    auftreten soll. Dieses Zeitintervall wird in Millisekunden angegeben. Die Ei-

    genschaft Enabled dient der Aktivierung bzw. Deaktivierung des Zeitgebers.

    Sie knnen sie zur Entwicklungszeit oder zur Laufzeit auf true oder false

    stellen.

    Im nachfolgenden Programm im Projekt Zeitgeber erscheint zunchst ein

    Formular mit zwei Buttons. Bettigen Sie den Start-Button, erscheint ein

    x in einem Bezeichnungsfeld. Alle 0,5 Sekunden erscheint automatisch ein

    weiteres x, siehe Abbildung 2.13. Dies wird durch den Timer gesteuert, bei

    welchem der Wert fr die Eigenschaft Interval auf 500 gesetzt wurde. Nach

    Bettigung des Stop-Buttons kommt kein weiteres x mehr hinzu.

    Abbildung 2.13 Nach einigen Sekunden

    3705.book Seite 60 Dienstag, 8. September 2015 3:39 15

    2.3 Einfache Steuerelemente

    61

    2

    Der zugehrige Code:

    private void cmdStart_Click(...){

    timAnzeige.Enabled = true;}

    private void cmdStop_Click(...){

    timAnzeige.Enabled = false;}

    private void timAnzeige_Tick(...){

    lblAnzeige.Text += "x";}

    Listing 2.8 Projekt Zeitgeber

    bung

    bung Panel-

    Zeitgeber

    Erstellen Sie eine Windows-Anwendung. In der Mitte eines Formulars sol-

    len zu Beginn vier Panels verschiedener Farbe der Gre 20 20 Pixel plat-

    ziert werden, siehe Abbildung 2.14.

    Abbildung 2.14 Startzustand

    Sobald ein Start-Button bettigt wird, sollen sich diese vier Panels diago-

    nal in ca. fnf bis zehn Sekunden zu den Ecken des Formulars bewegen, je-

    des Panel in eine andere Ecke (siehe Abbildung 2.15).

    3705.book Seite 61 Dienstag, 8. September 2015 3:39 15

  • 2 Grundlagen

    62

    Abbildung 2.15 Nach einigen Sekunden

    bung

    bung Kran Diese bung gehrt nicht zum Pflichtprogramm. Sie ist etwas umfangrei-

    cher, verdeutlicht aber die Mglichkeiten einer schnellen Visualisierung

    von Prozessen durch C# innerhalb von Visual Studio durch einige wenige

    Programmzeilen.

    Konstruieren Sie aus mehreren Panels einen Kran (Fundament, senkrech-

    tes Hauptelement, waagerechter Ausleger, senkrechter Haken am Ausle-

    ger). Der Benutzer soll die Mglichkeit haben, ber insgesamt acht Buttons

    die folgenden Aktionen auszulsen:

    Haken um 10 Pixel ausfahren bzw. einfahren

    Ausleger um 10 Pixel ausfahren bzw. einfahren

    Kran um 10 Pixel nach rechts bzw. links fahren

    Kran um 10 Pixel in der Hhe ausfahren bzw. einfahren

    Denken Sie daran, dass bei vielen Bewegungen mehrere Steuerelemente

    bewegt werden mssen, da der Kran sonst seinen Zusammenhalt verliert.

    Manche Aktionen resultieren nur aus Grenvernderungen (Eigenschaf-

    ten Width und Height), andere nur aus Ortsvernderungen (Location), wie-

    der andere aus beidem. In Abbildung 2.16 und Abbildung 2.17 sehen Sie den

    Kran im Startzustand bzw. nach einigen Klicks.

    Manche Bewegungen des Krans werden vermutlich wenig natrlich wir-

    ken. Mit zunehmendem Programmierwissen werden Sie dieses Problem

    spter aber beheben knnen.

    3705.book Seite 62 Dienstag, 8. September 2015 3:39 15

    2.3 Einfache Steuerelemente

    63

    2

    Abbildung 2.16 Startzustand

    Abbildung 2.17 Nach einigen Aktionen

    2.3.3 Textfelder

    EingabefeldEin Textfeld dient in erster Linie dazu, die Eingabe von Text oder Zahlen

    vom Benutzer entgegenzunehmen. Diese Eingaben werden in der Eigen-

    schaft Text des Textfelds gespeichert. Das Aussehen und das Verhalten ei-

    nes Textfelds werden u. a. durch folgende Eigenschaften bestimmt:

    MultiLine: Steht MultiLine auf true, knnen Sie bei der Eingabe und beider Anzeige mit mehreren Textzeilen arbeiten.

    ScrollBars: Sie knnen ein Textfeld mit vertikalen und/oder horizonta-len Bildlaufleisten zur Eingabe und Anzeige lngerer Texte versehen.

    3705.book Seite 63 Dienstag, 8. September 2015 3:39 15

  • 2 Grundlagen

    64

    MaxLength: Mit dieser Eigenschaft knnen Sie die Anzahl der Zeichen desTextfelds beschrnken. Ist keine Beschrnkung vorgesehen, kann das

    Textfeld insgesamt 32768 Zeichen aufnehmen.

    Passwort PasswordChar: Falls Sie fr diese Eigenschaft im Entwurfsmodus einPlatzhalterzeichen eingegeben haben, wird whrend der Laufzeit fr je-

    des eingegebene Zeichen nur dieser Platzhalter angezeigt. Diese Eigen-

    schaft wird vor allem bei Passwortabfragen verwendet.

    Der Inhalt eines Textfelds kann mit den gewohnten Mitteln (z. B. (Strg) +

    (C) und (Strg) + (V)) in die Zwischenablage kopiert bzw. aus der Zwischen-

    ablage eingefgt werden.

    Im nachfolgenden Programm im Projekt Textfelder kann der Benutzer in

    einem Textfeld einen Text eingeben. Nach Bettigung des Buttons Ausga-

    be wird der eingegebene Text in einem zusammenhngenden Satz ausge-

    geben (siehe Abbildung 2.18).

    Abbildung 2.18 Eingabe ins Textfeld

    Der Code lautet wie folgt:

    private void cmdAusgabe_Click(...){

    lblAusgabe.Text = "Sie haben '" + txtEingabe.Text +"' eingegeben";

    }

    Listing 2.9 Projekt Textfelder

    Zur Erluterung:

    In der Eigenschaft Text des Textfelds wird die Eingabe gespeichert. DieEigenschaft wird in einen lngeren Ausgabetext eingebettet.

    Zahlen eingeben Bei der Eingabe und Auswertung von Zahlen sind einige Besonderheiten zu

    beachten. Im nachfolgenden Programm, ebenfalls im Projekt Textfelder,

    3705.book Seite 64 Dienstag, 8. September 2015 3:39 15

    2.3 Einfache Steuerelemente

    65

    2

    kann der Benutzer in einem Textfeld eine Zahl eingeben. Nach Bettigung

    des Buttons Rechnen wird der Wert dieser Zahl verdoppelt, das Ergebnis

    wird in einem Label darunter ausgegeben:

    private void cmdRechnen_Click(...){

    double wert;wert = Convert.ToDouble(txtEingabe.Text);wert = wert * 2;lblAusgabe.Text = "Ergebnis: " + wert;

    }

    Listing 2.10 Projekt Textfelder, Zahleneingabe

    Zur Erluterung:

    ToDouble()Es soll dafr gesorgt werden, dass der Inhalt des Textfelds explizit in eine

    Zahl (mit mglichen Nachkommastellen) umgewandelt wird. Das errei-

    chen Sie mithilfe der Methode ToDouble() aus der Klasse Convert. Die Klasse

    Convert bietet eine Reihe von Methoden fr die Umwandlung (sprich Kon-

    vertierung) in andere Datentypen.

    Wenn eine Zeichenkette eingegeben wurde, die eine Zahl darstellt, wirdsie auf die oben angegebene Weise in eine Zahl umgewandelt, mit der

    dann gerechnet werden kann.

    Stellt die eingegebene Zeichenkette keine Zahl dar, kommt es zu einemLaufzeitfehler. Diese Situation sollten Sie natrlich vermeiden:

    Sie knnen dafr vorher berprfen, ob es sich bei der Zeichenkette

    um eine gltige Zahl handelt, und entsprechend reagieren. Das wird

    Ihnen mglich sein, sobald Sie die in Abschnitt 2.4 beschriebenen

    Verzweigungen zur Programmsteuerung beherrschen.

    Ausnahme-

    behandlung

    Allgemein knnen Sie Programme so schreiben, dass ein Programm-

    abbruch abgefangen wird. Dazu werden Sie in der Lage sein, sobald

    Sie die Ausnahmebehandlung (siehe hierzu Kapitel 3, Fehlerbehand-

    lung) anwenden knnen.

    Einige Beispiele:

    Abbildung 2.19 zeigt die Eingabe einer Zahl mit Nachkommastellen.

    3705.book Seite 65 Dienstag, 8. September 2015 3:39 15

  • 2 Grundlagen

    66

    Abbildung 2.19 Eingabe einer Zahl mit Nachkommastellen

    Debugging beenden Die Eingabe einer Zeichenkette, wie zum Beispiel abc, fhrt zur Anzeige

    einer nicht behandelten Ausnahme. Die Zeile, in welcher der Fehler auftritt,

    wird im Code markiert, damit der Fehler beseitigt werden kann (siehe Ab-

    bildung 2.20).

    Abbildung 2.20 Markierung der Fehlerzeile

    Es wird ein zustzliches Dialogfeld angezeigt. Wenn man darin nun den

    Button Weiter bettigt, wird das Programm beendet. Whlt man stattdes-

    sen den Button Unterbrechen, wird das Programm unterbrochen. Bei ei-

    nem unterbrochenen Programm knnen Sie die aktuellen Werte von Va-

    riablen kontrollieren, indem Sie die Maus ber diesen Variablen platzieren.

    Anschlieend muss das Programm ber den Menpunkt Debuggen De-

    bugging beenden beendet werden, bevor es neu gestartet werden kann.

    Die Eingabe einer Zahl, bei der ein Punkt anstelle eines Kommas zur Ab-

    trennung von Nachkommastellen eingegeben wird, fhrt zu einem ganz

    anderen Rechenergebnis, siehe Abbildung 2.21.

    3705.book Seite 66 Dienstag, 8. September 2015 3:39 15

    2.3 Einfache Steuerelemente

    67

    2

    Abbildung 2.21 Punkt vor den Nachkommastellen

    Der Punkt wird ignoriert und die Zahl 3,52 wird dementsprechend als 352

    interpretiert, was dann letztlich zu dem Ergebnis 704 fhrt.

    2.3.4 Zahlenauswahlfeld

    NumericUpDownDas Steuerelement Zahlenauswahlfeld (NumericUpDown) stellt eine andere

    Mglichkeit dar, Zahlenwerte an ein Programm zu bermitteln. Die Zah-

    lenwerte knnen innerhalb selbst gewhlter Grenzen und in selbst defi-

    nierten Schritten ber zwei kleine Pfeiltasten ausgewhlt werden. Sie kn-

    nen aber auch weiterhin wie bei einem Textfeld eingegeben werden.

    Wichtige Eigenschaften des Steuerelements sind:

    Value Value: bezeichnet zur Entwicklungszeit den Startwert und zur Laufzeitden vom Benutzer aktuell eingestellten Wert.

    Maximum, Minimum: bestimmen den grtmglichen Wert und den kleinst-mglichen Wert der Eigenschaft Value. Es handelt sich also um die Werte,

    die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten er-

    reicht werden knnen.

    Increment: Mit Increment wird die Schrittweite eingestellt, mit der sichder Wert (Eigenschaft Value) ndert, wenn der Benutzer eine der kleinen

    Pfeiltasten bettigt.

    DecimalPlaces: bestimmt die Anzahl der Nachkommastellen in der An-zeige des Zahlenauswahlfelds.

    ValueChangedDas wichtigste Ereignis dieses Steuerelements ist ValueChanged. Es tritt bei

    der Vernderung der Eigenschaft Value ein und sollte anschlieend zur

    Programmsteuerung verwendet werden.

    Im nachfolgenden Programm im Projekt ZahlenAufAb werden alle diese Ei-

    genschaften und das eben angesprochene Ereignis genutzt. Der Benutzer

    kann hierbei Zahlenwerte zwischen 5,0 und +5,0 in Schritten von 0,1 ber

    3705.book Seite 67 Dienstag, 8. September 2015 3:39 15

  • 2 Grundlagen

    68

    ein Zahlenauswahlfeld einstellen. Der ausgewhlte Wert wird unmittelbar

    in einem Label angezeigt (siehe Abbildung 2.22).

    Abbildung 2.22 Zahlenauswahlfeld

    Die Eigenschaften wurden im Eigenschaftenfenster wie folgt festgelegt:

    Value: Wert 2, die Anwendung startet also bei dem Wert 2,0 fr das Zah-lenauswahlfeld

    Maximum, Minimum: Werte 5 und +5

    Increment: Wert 0,1

    DecimalPlaces: Wert 1 zur Anzeige einer einzelnen Nachkommastelle

    Der Code lautet:

    private void numEingabe_ValueChanged(...){

    lblAusgabe.Text = "Wert: " + numEingabe.Value;}

    Listing 2.11 Projekt ZahlenAufAb

    2.4 Verzweigungen

    Der Programmcode wurde bisher rein sequenziell abgearbeitet, also eine

    Anweisung nach der anderen. Kontrollstrukturen ermglichen eine Steue-

    rung dieser Reihenfolge. Diese Kontrollstrukturen unterteilen sich in Ver-

    zweigungen und Schleifen. Verzweigungen gestatten es dem Programm,

    sich in verschiedene alternative Anweisungsblcke zu verzweigen.

    Es gibt die beiden Verzweigungsstrukturen if...else und switch...case.

    Diese Auswahlmglichkeiten bergeben anhand von Bedingungen die

    Programmausfhrung an einen bestimmten Anweisungsblock. Bedingun-

    gen werden mithilfe der bereits vorgestellten Vergleichsoperatoren er-

    stellt.

    3705.book Seite 68 Dienstag, 8. September 2015 3:39 15

    2.4 Verzweigungen

    69

    2

    2.4.1 if...else

    Eine Verzweigung mit if...else hat folgenden Aufbau:

    if (Bedingung){

    Anweisungen1}[ else{

    Anweisungen2} ]

    if...elseDie Bedingung wird ausgewertet, sie ist entweder wahr oder falsch (true

    oder false). Ist die Bedingung wahr, wird der erste Teil (Anweisungen1) aus-

    gefhrt. Ist die Bedingung nicht wahr und gibt es einen else-Teil, wird die-

    ser Teil (Anweisungen2) ausgefhrt. Der else-Teil ist optional.

    Ohne KlammernFalls es sich bei AnweisungenX nur um eine einzelne Anweisung handelt,

    knnen in diesem Teil der Verzweigung die geschweiften Klammern weg-

    gelassen werden.

    GeschachteltVerzweigungen knnen auch ineinander verschachtelt werden, falls es

    mehr als zwei Mglichkeiten fr den weiteren Programmverlauf gibt.

    Mehrere VergleicheEine Bedingung kann aus einem einfachen Ausdruck mit Vergleichsopera-

    toren bestehen oder aus mehreren Vergleichsausdrcken.

    Es folgen einige Beispiele im Projekt IfElse, siehe Abbildung 2.23. Die unter-

    suchten Zahlenwerte knnen ber Zahlenauswahlfelder eingestellt wer-

    den. Testen Sie die Mglichkeiten durch unterschiedliche Einstellungen

    der Zahlenauswahlfelder, bevor Sie einen der Buttons bettigen.

    Abbildung 2.23 Projekt IfElse

    if ohne elseZunchst ein if ohne else:

    private void cmdAnzeige1_Click(...){

    3705.book Seite 69 Dienstag, 8. September 2015 3:39 15

  • 2 Grundlagen

    70

    int x = (int)numX.Value;lblAnzeige.Text = "";

    if (x > 0){

    lblAnzeige.Text = "x ist grer als 0";numX.BackColor = Color.LightGreen;

    }}

    Listing 2.12 Projekt IfElse, Teil 1

    Zur Erluterung:

    Die int-Variable x erhlt den Wert, der im Zahlenauswahlfeld numX einge-stellt wurde. Da dieses Feld eine Variable vom Typ decimal liefert, muss

    der Wert zunchst mithilfe des Casts (int) umgewandelt werden.

    Das Label wird geleert.

    Nun zur eigentlichen Verzweigung: Falls der Wert von x grer als 0 ist,wird ein entsprechender Text ausgegeben. Auerdem wird das Zahlen-

    auswahlfeld hellgrn eingefrbt (siehe Abbildung 2.24).

    Da es sich um zwei Anweisungen handelt, mssen sie in geschweifteKlammern gesetzt werden.

    Falls der Wert von x kleiner oder gleich 0 ist, passiert nichts. Das Labelbleibt leer. Es gibt keinen else-Teil, in dem etwas ausgefhrt werden

    knnte.

    Einrckung Die Anweisungen innerhalb des if-Blocks werden eingerckt. Dadurchist das Programm leichter lesbar. Dies ist prinzipiell eine empfehlens-

    werte Vorgehensweise, insbesondere bei weiteren Verschachtelungen

    innerhalb des Programms.

    Abbildung 2.24 Bedingung trifft zu

    3705.book Seite 70 Dienstag, 8. September 2015 3:39 15

    2.4 Verzweigungen

    71

    2

    if-elseNun folgt ein if mit else. Es wird also in jedem Fall etwas ausgefhrt:

    private void cmdAnzeige2_Click(...){

    int x = (int)numX.Value;

    if (x > 0){

    lblAnzeige.Text = "x ist grer als 0";numX.BackColor = Color.LightGreen;

    }else{

    lblAnzeige.Text = "x ist kleiner als 0 oder gleich 0";numX.BackColor = Color.LightBlue;

    }}

    Listing 2.13 Projekt IfElse, Teil 2

    Zur Erluterung:

    Falls der Wert von x jetzt kleiner oder gleich 0 ist, wird auch etwas ausge-geben. Auerdem wird das Zahlenauswahlfeld nunmehr hellblau einge-

    frbt (siehe Abbildung 2.25).

    Da es sich auch im else-Teil um zwei Anweisungen handelt, mssen sieebenfalls in geschweifte Klammern gesetzt werden.

    Abbildung 2.25 Zweig mit else

    Ternrer OperatorDer ternre Operator ? : stellt eine alternative, verkrzte Schreibweise fr

    eine Verzweigung mit if-else dar. Nachfolgend dasselbe Beispiel wie im

    zweiten Teil des Projekts, diesmal jedoch mit dem ternren Operator:

    private void cmdAnzeige3_Click(...){

    3705.book Seite 71 Dienstag, 8. September 2015 3:39 15

  • 2 Grundlagen

    72

    int x = (int)numX.Value;

    lblAnzeige.Text = x > 0 ? "x > 0" : "x

  • 2 Grundlagen

    74

    Zur Erluterung:

    Nun werden beide Zahlenauswahlfelder ausgewertet.

    Logisches Und Falls beide Werte grer als 0 sind, wird der erste Text angezeigt.

    Falls einer der beiden Werte kleiner oder gleich 0 ist, wird der zweiteText angezeigt (siehe Abbildung 2.27).

    Da jeweils nur eine Anweisung ausgefhrt wird, knnen die geschweif-ten Klammern weggelassen werden.

    Abbildung 2.27 Logisches Und

    Logisches Oder Der logische Oder-Operator || liefert ein anderes Ergebnis:

    private void cmdAnzeige6_Click(...){

    int x = (int)numX.Value;int y = (int)numY.Value;numX.BackColor = Color.White;

    if (x > 0 || y > 0)lblAnzeige.Text = "x oder y oder beide sind grer als 0";

    elselblAnzeige.Text = "Keine der Zahlen ist grer als 0";

    }

    Listing 2.17 Projekt IfElse, Teil 6

    Zur Erluterung:

    Logisches Oder Falls einer der Werte oder beide Werte grer als 0 sind, wird der ersteText angezeigt (siehe Abbildung 2.28).

    3705.book Seite 74 Dienstag, 8. September 2015 3:39 15

    2.4 Verzweigungen

    75

    2

    Abbildung 2.28 Logisches Oder

    Falls beide Werte kleiner oder gleich 0 sind, wird der zweite Text ange-zeigt.

    Einen Unterschied zum normalen Oder bildet der Exklusiv-Oder-Ope-

    rator ^:

    private void cmdAnzeige7_Click(...){

    int x = (int)numX.Value;int y = (int)numY.Value;numX.BackColor = Color.White;lblAnzeige.Text = "";

    if (x > 0 ^ y > 0)lblAnzeige.Text = "Nur x oder nur y ist grer als 0";

    }

    Listing 2.18 Projekt IfElse, Teil 7

    Zur Erluterung:

    Logisches

    Exklusiv-Oder

    Es wird dann etwas angezeigt, wenn nur x oder nur y grer als 0 ist(siehe Abbildung 2.29).

    Falls beide Werte kleiner oder gleich 0 sind oder beide Werte grer als0 sind, wird nichts angezeigt.

    3705.book Seite 75 Dienstag, 8. September 2015 3:39 15

  • 2 Grundlagen

    76

    Abbildung 2.29 Logisches Exklusiv-Oder

    2.4.2 switch...case

    Mehrfachauswahl Eine Verzweigung kann in bestimmten F