41
Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung in die neue Programmiersprache C# RRZN-Heft Regionales Rechenzentrum für Niedersachsen / Universität Hannover, April 2004 http://csharp-buch.uni-hd.de C# Professionelle Programmierung mit Visual Studio.NET, Kompendium, Schäpers, Huttary, Brems Markt+Technik-Verlag, 2004

Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

  • Upload
    vokiet

  • View
    239

  • Download
    4

Embed Size (px)

Citation preview

Page 1: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 1

Programmiersprache C#

Dr.-Ing. Elfi Thiem

Literatur:

C# Einführung in die neue Programmiersprache C#

RRZN-Heft Regionales Rechenzentrum für Niedersachsen / Universität Hannover, April 2004 http://csharp-buch.uni-hd.de

C# Professionelle Programmierung mit Visual Studio.NET, Kompendium,

Schäpers, Huttary, Brems

Markt+Technik-Verlag, 2004

Page 2: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 2

Historie der Programmiersprachen

Page 3: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 3

Anlegen eines Projektes mit Studio.Net

(Konsolenanwendung)

Menü: Datei Neu Projekt

Projekttyp: Visual C# - Projekte und Vorlagen: Konsolenanwendung auswählen

Speicherort und Name festlegen.

Gegebenenfalls vorher einen Ordner anlegen.

Page 4: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 4

Aufruf des Hauptprogramms in den Sprachen

C/C++, Java u. C#

• C und C++:

int main() beziehungsweise

void main()

• Java: public static void main (String [ ] args)

• C#:

public static void Main (string [ ] args) beziehungsweise

public static void Main()

Am Aufruf des Hauptprogramms in diesen Sprachen, kann man erkennen, dass C#

sowohl von C/C++ als auch von Java Anleihen genommen hat.

Page 5: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 5

Quellcode: HelloCsharp.cs

Projekt öffnen: bsp\Visual Studio Projects\HelloCsharp\HelloCsharp.csproj

1 public class HelloCsharp

2 {

3 public static void Main()

4 {

5 System.Console.WriteLine(

"Hallo, viel Spass mit C#!");

6 }

7 }

Ausgabe:

Miniversion eines C# - Programms

• C#-Programme haben die Dateiendung (Suffix)

.cs

• Ein C# -Programm besteht aus mindestens

einer Klassen-Definition.

• Der Name der Klasse muss mit dem Datei-

namen der Datei identisch sein.

• Die Methode, die den Code enthält, trägt den

Namen Main.

• Das Schlüsselwort public in Zeile 1 und 3 ist

nicht zwingend.

• Das Schlüsselwort static ist notwendig, da die

Methode Main ohne ein Objekt, dem sie

zugeordnet werden könnte, aufgerufen wird.

• void wird verwendet um anzuzeigen, dass die

Methode Main kein Ergebnis zurück gibt.

• Mit der Methode WriteLine wird die

Zeichenkette Hallo, viel Spaß mit C#! am

Bildschirm ausgegeben. Die Methode

WriteLine gehört zur Klasse Console, und

diese ist im Namensraum System zu finden.

Erläuterung:

Page 6: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 6

Quellcode: HelloCsharp1.cs

Projekt öffnen: bsp\Visual Studio Projects\HelloCsharp\HelloCsharp.csproj

1 using System;

2 public class HelloCsharp1

3 {

4 public static void Main()

5 {

6 Console.WriteLine("Hallo, viel

"Spass mit C#!");

7 }

8 }

Ausgabe:

C# - Programm unter Verwendung eines Namensraums

Zeile 1:

Durch Angabe des Namensraums System

wird festgelegt, dass das Programm die

Bezeichner bzw. Namen aus diesem

Namensraum verwendet.

Zeile 7:

Aus diesem Grund kann der Aufruf der

Methode WriteLine auf die Angabe des

Namens der Klasse Console reduziert

werden.

Erläuterung:

Page 7: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 7

Quellcode: HelloCsharp2.cs

Projekt öffnen: bsp\Visual Studio Projects\HelloCsharp2\HelloCsharp2.csproj

1 using System;

2

3 public class HelloCsharp2

4 {

5 public static void Main()

6 {

7 Console.WritLine("**********************************\n"

8 + "* *\n"

9 + "* Hallo, viel Spass mit C# ! *\n"

10 + "* *\n"

11 + "**********************************"); 12 }

13 }

Ausgabe:

C# - Programm: Ausgabe mit Console.WriteLine() u.

Verkettungsoperator +

Zeilen 7-11:

In diesen Zeilen wird die Bildschirm-

ausgabe erzeugt.

Die Escape-Sequenz \n sorgt für die

Ausgabe in mehreren Zeilen.

Die Teil-Zeichenketten werden

durch den Operator + (Verkettungs-

operator) zu einer einzigen Zeichen-

kette zusammengefügt (verkettet).

Erläuterung:

Page 8: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 8

Quellcode: Addition.cs

Projekt öffnen: bsp\Visual Studio Projects\Addition\Addition.csproj

1 using System; 2

3 public class Addition

4 {

5 public static void Main()

6 {

7 int zahl1,zahl2,summe;

8

9 zahl1=22;

10 zahl2=38;

11 summe=zahl1+zahl2;

12 Console.WriteLine(zahl1+"+"+zahl2+"="+ summe);

13 }

14 }

Ausgabe:

22+38=60

C# - Programm: Ausgabe mit Verkettungsoperator + u.

Variablen

Zeile 11:

Der Inhalt der Variablen zahl1 und zahl2

wird addiert und das Ergebnis in der

Variablen summe abgelegt.

Zeile 12:

Der Inhalt der Variablen zahl1, das

Zeichen Plus, der Inhalt der Variablen

zahl2, das Gleichheitszeichen und der

Inhalt der Variablen summe werden

verkettet (zu einer Zeichenkette zusam-

mengefügt) und mit der Methode

WriteLine am Bildschirm ausgegeben.

Erläuterung:

Page 9: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 9

Quellcode: Aus002.cs

Projekt öffnen: bsp\Visual Studio Projects\Aus002\Aus002.csproj

1 using System;

2

3 public class Aus002

4 {

5 public static void Main()

6 {

7 int i=9, j=1234567;

8

9 Console.WriteLine("i enthält {0} und j enthält {1}.",i,j);

10 }

11 }

Ausgabe:

C# - Programm: Formatierte Ausgabe mit

Console.WriteLine()

Zeile 9:

Die Zeichenkette, die auf dem Bildschirm

ausgegeben werden soll, wird zunächst

mit Platzhaltern für die einzelnen Variab-

len geschrieben.

{ 0 } steht dabei für die erste Variable, {1}

für die zweite Variable.

Die Variablen selbst werden am Ende der

Zeichenkette durch Kommata getrennt

angegeben.

Erläuterung:

Page 10: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 10

Quellcode: Aus002.cs

Projekt öffnen: bsp\Visual Studio Projects\Aus002\Aus002.csproj

1 using System;

2

3 public class Aus002

4 {

5 public static void Main()

6 {

7 int i=9, j=1234567;

8

9 Console.WriteLine("i enthält {0} und j enthält {1}.",i,j);

10 }

11 }

Ausgabe:

C# - Programm: Formatierte Ausgabe mit

Console.WriteLine()

Zeile 9:

Ausrichtung einer Zeichenfolge wird nach

dem Parameterbezeichner durch ein

Komma getrennt eine Zahl (Anzahl der

Zeichen) angeben.

Das auszugebende Argument wird rechts-

bündig in dieses Feld eingesetzt.

Bei negativer Zahl für die Feldbreite,

linksbündig eingetragen.

Eventuell fehlende Zeichen werden durch

Füllzeichen (Leerzeichen) ersetzt.

Ist weniger Platz reserviert als benötigt wird,

wird das Feld automatisch nach rechts bis

zur benötigten Feldbreite vergrößert.

{0,6}

{0,6:F2} bei Gleitkommazahlen

2 Stellen nach dem Komma

Erläuterung:

Page 11: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 11

Quellcode: TastaturI.cs

Projekt öffnen: bsp\Visual Studio Projects\TastaturI\TastaturI.csproj

7 int zahl1, zahl2;

8

9 Console.WriteLine("Bitte erste Zahl eingeben:");

10 zahl1= Int32.Parse(Console.ReadLine());

11 Console.WriteLine ("Bitte zweite Zahl eingeben:");

12 zahl2= Int32.Parse(Console.ReadLine());

13

14 Console.WriteLine("Die Summe der Zahlen

ist: " + (zahl1 + zahl2));

Ausgabe:

C# - Programm: Eingabe mit Console.ReadLine()

Zeile 10:

Die Eingabe wird durch die Methode

Console.ReadLine () von der Tastatur

eingelesen.

Auch für die Eingabe von der Tastatur gilt,

dass die eingegebenen Werte Zeichen-

ketten sind. Es müssen die eingegebene Werte vor der Benutzung in die entsprechende Zahl konvertiert werden.

Beispiele:

int

Int32.Parse (Console.ReadLine () );

float

Single.Parse(Console.ReadLine());

duoble

Double.Parse(Console.ReadLine();

Weitere Konvertierung: • Byte.Parse(zeichenkette)

• Char.Parse(zeichenkette)

• Int16.Parse(zeichenkette)

• Int64.Parse(zeichenkette)

Erläuterung:

Page 12: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 12

Quellcode: Parameter.cs

1 using System;

2

3 public class Parameter

4 {

5 public static void Main(string [ ] args)

6 {

7 Console.WriteLine("Anzahl der Parameter:" + args.Length + "\n"

8 + "Erster Parameter: " + args[0] +"\n"

9 + "Zweiter Parameter: " + args[1] +"\n"

10 + "Dritter Parameter: " + args[2] );

11 }

12 }

13

Aufruf:

Parameter eins zwei drei

Ausgabe:

Anzahl der Parameter: 3

Erster Parameter: eins

Zweiter Parameter: zwei

Dritter Parameter: drei

C# - Programm: Eingabe beim Programmaufruf

Bei einer Parameterübergabe beim Pro-

grammaufruf werden die Werte an die

Methode Main () übergeben.

Deshalb wird die Methode Main von

public static void Main() zu

public static void Main(string [ ] args)

geändert.

Dadurch wird ein Array args (arguments)

übergeben, dem die Eingabewerte zuge-

ordnet und von der Methode Main ausge-

lesen werden können.

Die einzelnen Parameter, die man beim

Programmaufruf übergibt, werden durch

Leerzeichen getrennt.

Zeilen 7-10:

Der für die Übergabe der Parameter

verwendete Arrayname ist args. Mit args .

Length erhält man die Anzahl der über-

gebenen Parameter, in diesem Fall sind das

drei. Die einzelnen Parameter bekommt man

mit args [ 0 ] für den ersten, args [ 1 ] für den

zweiten und args [ 2 ] für den dritten

Parameter.

Erläuterung:

Page 13: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 13

Quellcode: ParameterI.cs

1 using System;

2

3 public class ParameterI

4 {

5 public static void Main(string[ ] args)

6 {

7 int zahl1, zahl2;

8

9 zahl1 = Int32.Parse (args [0] );

10 zahl2 = Int32.Parse (args [1] );

11

12 Console.WriteLine("Die Summe der Zahlen ist: " + (zahl1 + zahl2));

13 }

14 }

Aufruf:

ParameterI 11111 22222

Ausgabe:

Die Summe der Zahlen ist: 33333

C# - Programm: Eingabe beim Programmaufruf

In C# wird immer eine Zeichenkette über-

geben. Um mit diesen Werten rechnen zu

können, müssen sie zuerst in Datentypen

für Zahlen konvertiert werden.

Zeile 9:

Der Wert, der als erster Parameter über-

geben wurde, d.h. der in args [0] enthalten

ist, wird durch die Methode Int32.Parse() in

eine ganze Zahl konvertiert und dann der

Variablen zahl1 zugewiesen.

Zeile 10:

Das Gleiche geschieht mit dem zweiten Pa-

rameter, das Ergebnis wird der Variablen

zahl2 zugewiesen.

Beim Konvertieren muss der Datentyp der

Variablen berücksichtigt werden. Im näch-

sten Beispiel wird der Datentyp double statt

int verwendet.

7 double zahl1, zahl2;

8

9 zahl1 = Double.Parse (args [0] );

10 zahl2 = Double.Parse (args [1] );

12 Console.WriteLine ("Die Summe der

Zahlen ist: " + (zahl1 + zahl2));

Erläuterung:

Page 14: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 14

Quellcode: Verzweig.cs Projekt öffnen: bsp\Visual Studio Projects\verzweig\verzweig.csproj using System;

public class Verzweig

{public static void Main( )

{

int zahl1, zahl2;

Console.WriteLine("Bitte erste Zahl eingeben:");

zahl1 = Int32.Parse(Console.ReadLine());

Console.WriteLine("Bitte zweite Zahl eingeben:");

zahl2 = Int32.Parse(Console.ReadLine());

if(zahl1==zahl2)

Console.WriteLine("Die Zahlen sind gleich.");

else

Console.WriteLine("Die Zahlen sind nicht gleich.");

}

}

C# - Programm: Verzweigung “ if, if-else“

if-else- Anweisung

if (Bedingung)

Anweisung 1;

else

Anweisung 2;

Anweisung 3;

if- Anweisung

if (Bedingung)

Anweisung 1;

Anweisung 2;

Ausgabe:

Page 15: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 15

Quellcode: Verzweig33.cs

Projekt öffnen: bsp\Visual Studio Projects\verzweig33\verzweig33.csproj

using System;

public class Verzweig33

{public static void Main()

{

int zahl;

Console.WriteLine ("Bitte erste Zahl eingeben:");

zahl = Int32.Parse (Console.ReadLine () );

switch(zahl)

{case 1:

Console.WriteLine("Die Zahl ist eins.");

break;

case 2:

Console.WriteLine("Die Zahl ist zwei.");

break;

case 3:

Console.WriteLine("Die Zahl ist drei.");

break;

case 4:

case 5:

Console.WriteLine("Die Zahl ist vier oder fünf.");

break;

default:

Console.WriteLine("Die Zahl ist weder eins, zwei, ..." + "oder fünf.");

break;}

}}

C# - Programm: Verzweigung “Swich“

Es wir d der Ausdruck nach switch berechnet.

Diese Ausdruck wird dann mit den Konstanten

er einzelnen case-Anweisungen verglichen.

Ist das Ergebnis des swich-Ausdrucks mit dem

Wert einer case-Anweisung identisch, dann

wird diese Anweisungen ausgeführt.

Im Gegensatz zu anderen C-Sprachen ist

die break-Anweisung bei C# zwingend.

Ein Fehlen führt zu einer Fehlermeldung!

Die Anweisung nach der default-Klausel kom-

men dann zur Ausführung, wenn mit keiner

case-Anweisung Übereinstimmung vorliegt.

Wird eine der Anweisung ausgeführt, wird am

Ende der switch-Anweisung fortgefahren.

Erläuterung:

Ausgabe:

Page 16: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 16

Quellcode: sum2five.cs Summe von 1 bis 5

1 using System;

2

3 public class Sum2five

4 public static void Main()

6 {

7 int zahl,summe;

8

9 summe=0;

10

11 for(zahl=1; zahl<=5; zahl=zahl+1)

12 {

13 summe = summe+zahl; 14 }

15

16 Console. WriteLine("Die Summe der Zahlen ist " + summe + ".");

17 }

C# - Programm: Wiederholungen “Die For-Schleife“

Mit einer Schleife kann man Programmteile

wiederholt ausführen lassen. Dazu kann die

for-Schleife benutzt werden.

Die einfachste Form der for-Schleife ist:

for (Initialisierung; Bedingung;

Wiederholung) Schleifenanweisung.

• Die Initialisierung setzt die

Schleifenvariable auf einen Startwert.

• die Bedingung entscheidet, ob die Schleife

ausgeführt werden soll.

• die Wiederholung gibt an, wie die

Schleifenvariable bei jedem

Schleifendurchgang verändert werden soll.

FOR - Anweisung for(Initialisierung;Bedingung; Wiederholung)

Schleifenanweisung;

Erläuterung:

Ausgabe:

Page 17: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 17

Ausgabe:

Quellcode: GetAns01.cs Projekt öffnen: bsp\Visual Studio Projects\GetAns01\GetAns01.csproj

1 using System;

2 public class GetAns01

3 {

4 public static void Main()

5 {

6 string antw;

7

8 do

9 {

10 Console.WriteLine("Bitte Ja/Nein eingeben:");

11 antw=Console.ReadLine();

12 }

13 while(antw!="Ja" && antw!="Nein");

14 Console.WriteLine("Fertig!");

15 }

16 }

C# - Programm: Wiederholungen “while, do-while“

Kopfgesteuerte Schleife

Fußgesteuerte Schleife

.

while (Bedingung)

Anweisung;

do

Anweisung;

while (Bedingung);

Erläuterung:

Page 18: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 18

C# - Programm: Arrays (Felder, Vektoren)

Zugriff erfolgt über Indizes.

Indizierung beginnt immer mit Null.

Beim Deklarieren einer Referenz müssen

die eckige Klammern [ ] hinter dem

Datentyp stehen.

Das Reservieren des Speicherplatzes im

Heap übernimmt der Befehl new.

1. Anlegen einer Referenz

Syntax: datentyp [] bezeichner;

2. Anlegen des Array mit einer anzahl von

Arrayelementen

Syntax:

bezeichner = new datentyp [anzahl];

3. Initialisieren der Arrayelemente, Beispiel mit

wert1, wert2

Syntax: bezeichner[0]=wert1;

bezeichner[1]=wert2;

4. Das anlegen einer Referenz und des Arrays

wird in einer Anweisung zusammengefasst Syntax:

datentyp[]bezeichner=

new datentyp[anzahl];

Erläuterung:

Erläuterung:

Page 19: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 19

Quellcode: Array01.cs

Projekt öffnen: bsp\Visual Studio Projects\Array01\Array01.csproj

1 using System;

2 public class Array01

3 {

4 public static void Main()

5 {int[] zahlen;

6 zahlen = new int[6];

7

8 zahlen[0]=1; zahlen[1]=2; zahlen[2]=3;

9 zahlen[3]=4; zahlen[4]=5; zahlen[5]=6;

10

11 for (int i=0 ; i<=5 ; i++)

12 Console.Write("{0,3}",zahlen[i]);

13 Console.WriteLine();

14

15 int[] zahlen2 = new int[7];

16

17 zahlen2[1]=1; zahlen2[2]=2; zahlen2[3]=3;

18 zahlen2[4]=4; zahlen2[5]=5; zahlen2[6]=6;

19

20 for (int i=1 ; i<=6 ; i++)

21 Console.Write("{0,3}",zahlen2[i]);

22 Console.WriteLine();

23 }

24 }

C# - Programm: Arrays (Felder, Vektoren)

Zeile 5:

Deklaration einer Referenz mit Namen

zahlen für den Datentyp int

Zeile 6:

Mit Anweisung new wird im Heap

Speicherplatz für 6 Arrayelemente vom

Datentyp int reserviert.

Zeile 8-9:

Den 6 Arrayelementen werden Werte

zugewiesen mit Index=0 beginnend.

Zeile 15:

Deklaration einer Referenz mit Namen

zahlen2 für den Datentyp int und

mit new eine Reservierung für sieben

Arrayelemente von Datentyp int.

Erläuterung:

Ausgabe:

Page 20: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 20

C# - Programm: Übungsaufgaben

Aufgaben:

1. Schreiben Sie das Beispielprogramm zur Berechnung der Länge eines Marathonlaufs in Kilometern ab.

Rufen Sie den C# - Compiler auf, und sehen Sie sich das Ergebnis Ihres Programms auf dem Bildschirm an. Sollten

Sie das erwartete Ergebnis nicht erhalten, so versuchen Sie, den Fehler zu korrigieren.

War alles auf Anhieb fehlerfrei, so schicken Sie das Programm noch einmal ab, aber versehen Sie es absichtlich mit

einem Syntaxfehler. „Vergessen" Sie beispielsweise ein Semikolon. Beachten Sie die Fehlermeldungen des

Compilers.

2. Berechnen Sie den Durchschnitt der folgenden Zahlen

5, 9, 4, 17, 3,

die Sie den Variablen a, b, c, d und e zugewiesen haben. (Ergebnis: 7,6)

3. Schreiben Sie ein Programm, das nach der Eingabe der gefahrenen Kilometer und der Menge des verbrauchten

Kraftstoffs den Durchschnittsverbrauch auf 100 km berechnet und ausgibt.

4. Gegeben sind die Zahlen 1.234 und 5.678. Berechnen Sie die Summe, die Differenz, das Produkt und den

Quotienten dieser Zahlen und geben Sie die Ergebnisse am Bildschirm aus.

5. Im Gegensatz zu Deutschland wird beispielsweise in den USA die Temperatur statt in °C (Grad Celsius) in °F (Grad

Fahrenheit) gemessen.

Schreiben Sie ein Programm, das die Temperatur 100°F in °C umrechnet.

Die Formel ist: temperatur °C = 5/9(temperatur °F - 32)

6. Erstellen Sie ein Programm, das zwei Gleitkommazahlen übergeben bekommt und die erste Zahl durch die zweite

Zahl dividiert. Eine drohende Division durch 0 soll das Programm erkennen und, statt zu dividieren, eine

Fehlermeldung ausgeben.

Page 21: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 21

Beispiel: class Punkt

{

int x; //x-Koordinate

int y; //y-Koordinate

zeichnen();

}

C# - Programm: Klassen und Objekte

Eine Klasse stellt die statische Beschreibung

gleichartiger Objekte dar.

Die Klasse dient als Schablone zur

Erzeugung von Objekten.

Sie enthält:

• Attribute, jeweils mit Namen und Datentyp

sowie

• Methoden, d.h. Schnittstellen und ihre

Implementierung.

Die Objekte werden Instanzen der Klasse

genannt. Jedes Objekt ist Instanz genau

einer Klasse.

Die Instanzen einer Klasse besitzen alle die

gleichen Attribute und Methoden.

Verschiedene Instanzen haben meist

unterschiedliche Attributwerte.

Syntax: modifier class klassenname

{

Komponenten der Klasse

}

public class klassenname

{

// Deklaration der Attribute

// Deklaration der Methoden

}

Klasse:

Page 22: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 22

Als Parameter für modifier sind folgende Modifikatoren möglich, die die Zugriffsrechte auf ein Datenelement regeln.

Sie werden oft auch als Zugriffsmodifizierer bezeichnet.

• public,

• internal,

• abstract,

• sealed.

C# - Programm: Zugriff auf Klassen

public

Mit diesem Modifizierer werden Klassen mit öffentlichem

Zugriff eingerichtet, d. h. jede andere Klasse kann auf

diese Klasse zugreifen - jeder Zugriff von außerhalb ist

möglich.

internal

Mit dem Modifizierer internal wird der Zugriff der Klasse

auf das Assembly eingeschränkt, in welchem die Klasse

definiert wurde. Unter einem Assembly versteht man eine

Datei oder mehrere Dateien, die sämtlichen Programm-

teile enthält. Kurz gesagt ist eine Klasse, die mit internal

gekennzeichnet ist, nur im Programm bekannt.

abstract

Dieser Modifizierer steuert eigentlich nicht den Zugriff auf

eine Klasse. Eine abstrakte Klasse enthält in ihren

Methoden keinen Code und muss daher vor ihrer

Verwendung abgeleitet werden. Die abgeleitete Klasse

kann dann den eigentlichen Code für die Methode

implementieren.

sealed

Eine versiegelte (sealed) Klasse verhindert, dass von ihr

weitere Klassen abgeleitet werden können. Es findet

dadurch keine Vererbung mehr statt.

Syntax: modifier class klassenname

{

Komponenten der Klasse

}

Page 23: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 23

C# - Programm: Zugriff auf Komponenten der Klasse

Standardmäßig sind alle Komponenten einer Klasse private, d. h. sie können nur innerhalb der Klasse

verwendet werden. Jeder Zugriff von außen wird unterbunden. In C# wird der Zugriff mit Hilfe von fünf

so genannten Zugriffsspezifizierern (modifier) gesteuert.

public

Der Zugriff auf die Komponenten einer Klasse von außerhalb ist uneingeschränkt möglich.

protected

protected gibt an, dass alle Komponenten nur von dieser Klasse oder allen von ihr abgeleiteten

Klassen angesprochen werden können.

internal

Bei internal können zwar die Komponenten von außerhalb der Klasse, aber nur innerhalb des

aktuellen Projekts angesprochen werden, d. h. der Zugriff ist auf das Assembly eingeschränkt. Ein

Assembly besteht grob gesagt aus all jenen Programmteilen, die zusammen übersetzt wurden (vgl.

Kap. B).

internal protected

Der Zugriff internal protected ist eine Mischform von internal und protected. Damit kann auf die

Komponenten von dieser Klasse, allen abgeleiteten Klassen und innerhalb des Assembly zugegriffen

werden.

private

Ein Zugriff von außen ist nicht möglich. Alles ist nur innerhalb der Klasse sichtbar, in der es deklariert

wurde.

Page 24: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 24

C# - Programm: Methoden und Prozesse

Methode

Methoden sind Funktionen, die beim Eintreffen einer Nachricht Operationen mit bzw. über einem Objekt

durchführen. Methoden enthalten Algorithmen, die über der Datenstruktur eines Objektes arbeiten. Die

Methoden stellen die Schnittstelle zum Anwender dar. Er muss die Namen der Methoden sowie ihre

Parameter kennen.

Es gibt zwei ausgezeichnete Methoden für jede Klasse.

• Konstruktor und

• Destruktor.

Der Konstruktor wird aufgerufen, wenn ein Objekt instanziert wird.

Der Destruktor wird aufgerufen wenn es zerstört wird.

Prozess

Der Prozess charakterisiert den dynamischen Teil einer Methode. Wird eine Methode zur Laufzeit eines

Programms abgearbeitet, so bezeichnet man diesen Vorgang als Prozess oder englisch Thread.

Nachricht

Nachrichten dienen als Mittel der Interaktion zwischen Objekten und auch zum Anwender. Eine

Nachricht ist eine Aufforderung an ein Objekt, eine Operation mit den in der Nachricht angegebenen

Parameter durchzuführen. Sie setzt sich aus drei Teilen zusammen:

Name des Empfängerobjekts,

Name der Methode, die ausgeführt werden soll,

Gegebenfalls weitere Übergabeparameter für die Methode.

Page 25: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 25

Quellcode: EinAus01.cs Projekt öffnen: bsp\Visual Studio Projects\EinAus01\EinAus01.csproj

1 using System;

2

3 class EinAus01

4 {

5 public static void Main()

6 {

7 EinAus01 ea1 = new EinAus01();

8 ea1.einausgabe();

9 }

10

11 public void einausgabe()

12 {

13 Console.WriteLine("Bitte Namen eingeben:");

14 Console.WriteLine("Hallo "+ Console.ReadLine());

15 }

16 }

C# - Programm: Aufbau von Methoden

• Die Methode besteht aus Methodenkopf und

Methodenkörper.

• Der Methodenkopf enthält den Namen der

Methode.

• Davor steht der Datentyp des Wertes, den

die

Methode zurückgibt. Vor dem Rückgabe-

Datentyp steht ein Zugriffsspezifizierer, der

festlegt, wer die Methode aufrufen darf.

• Im Anschluss an den Namen folgt, in runden

Klammern eingeschlossen, die Liste der

Parameter, die die Methode übergeben

bekommt.

Syntax: zugriffsspezifizierer rückgabedatentyp

methodenname(parameterliste)

{

// Anweisungen

}

Ausgabe:

Page 26: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 26

call by value

Quellcode: Mult01.cs

12 public int mult (int x, int y)

13 {

14 int h;

15 h = x * y;

16 return h;

17 }

call by reference Schlüsselwort ref double xWert=0.0, yWert=0.0;

punkt.getxyWert(ref xWert,ref yWert);

Schlüsselwort out punkt.getxyWert(out xWert, out yWert);

C# - Programm: Aufbau von Methoden

An Methoden können Parameter übergeben

werden, die sich innerhalb der Methode wie

lokale Variablen verhalten. Mehrere Parameter

werden durch Kommata getrennt. Bei der Rück-

kehr zur aufrufenden Methode kann ein einzelner

Wert zurückgeben werden. Der Datentyp des

Rückgabewerts wird bei der Definition vor dem

Methodennamen angegeben. Die Rückgabe

geschieht durch die Anweisung return.

Mit diesem Schlüsselwort ref wird bei einem Me-

thodenaufruf nicht der Wert der Variablen son-

dern eine Referenz auf die Variable übergeben

(call by reference). Die Konsequenz ist, das der

Wert der ursprünglichen Variable in der Methode

geändert werden kann. Die mit ref übergebenen

Parameter müssen vorher initialisiert werden.

Das Schlüsselwort out ist dem Schlüsselwort ref

ähnlich. Out setzt jedoch nicht die vorherige Initi-

alisierung der übergebenen Parameter voraus.

Die Methode muss den Parametern aber nun

zwingend Werte zuweisen.

call by value:

call by reference:

Page 27: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 27

Quellcode: punk0I.cs Projekt öffnen: bsp\Visual Studio Projects\Punkt0I\Punkt0I.csproj

1 using System;

2

3 class Punkt0l

4 {

5 int xWert,yWert;

6

7 Punkt0l (int xWert, int yWert)

8 {

9 this.xWert=xWert;

10 this .yWert=yWert;

11 }

12

13 void getxyWert(ref double xWert,ref double yWert)

14 {

15 xWert=this.xWert;

16 yWert=this.yWert;

17 }

18

19 static void Main(string [] args)

20 {

21 Punkt0l pkt = new Punkt0I (5, 10) ;

22 double xWert=0.0, yWert=0.0;

23

24 pkt.getxyWert (ref xWert, ref yWert) ;

25 Console.WriteLine("xWert= {0},yWert={1}", xWert, yWert} ;

26 }}

C# - Programm: Aufbau von Methoden

Das Programm Punkt0l soll die Verwendung von ref in einem vollständigen Beispiel verdeutlichen.

Ausgabe:

Page 28: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 28

Quellcode:

1 using System;

2

3 class RechtEck01

4 {

5 int nummer, laenge, breite, umfang,

flaeche;

6

7 static void Main()

8 {

9 RechtEck01 re1, re2;

10

11 re1 = new RechtEck01();

12 re2 = new RechtEck01();

13

14 re1.eingabe(1);

15 re1.b_flaeche();

16 re1.b_umfang();

17 re1.ausgabe();

18

19 re2.eingabe(2);

20 re2.b_flaeche();

21 re2.b_umfang();

22 re2.ausgabe();

23 }

24

C# - Programm: Instanzierung von Objekten

Bevor ein Objekt benutzt werden kann, muss es erzeugt

werden. Objekte werden mit dem new-Operator erstellt. Er

reserviert den Speicherplatz für das Objekt im Heap und

gibt einen Verweis zurück.

Syntax: datentyp verweis = new datentyp();

Falls der new-Operator keinen Speicher reservieren kann,

wird ein Fehler generiert.

Im folgenden Beispiel sollen Rechtecke als Objekte

angelegt, Umfang und Fläche berechnet und die Werte

ausgegeben werden.

Dazu wird beim Erzeugen eines Rechtecks eine Nummer an

den Konstruktor übergeben und in der Konstruktor-Methode

vom Anwender Breite und Länge erfragt. Durch Aufruf der

Methode ausgabe() werden die Methoden volumen() und

flaeche() gerufen und die Ergebnisse auf den Bildschirm

geschrieben.

Erläuterung: Zeile 5:

In der Klasse RechtEckO1 werden die Felder nummer,

laenge, breite, umfang und flaeche angelegt.

Zeile 9:

In der Methode Main () werden zwei Verweise re1 und re2

vom Typ RechtEckO1 angelegt.

Zeilen 11, 12:

Mit der Anweisung new werden zwei Objekte instanziert und

die Verweise auf sie in den Variablen re1 und re2

gespeichert.

Page 29: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 29

25

26 void eingabe(int nr)

27 {

28 nummer = nr;

29 Console.Write("Rechteck: " + nr + "\n" +

30 "Bitte Länge eingeben: ");

31 laenge = Int32.Parse(Console.ReadLine());

32 Console.Write("Bitte Breite eingeben: ");

33 breite = Int32.Parse(Console.ReadLine());

34 }

35

36 void ausgabe()

37 {

38 Console.WriteLine("Die Fläche ist: {0,9}\n"+

39 "Der Umfang ist:{1,9}\n",flaeche,umfang);

40 }

41

42 void b_flaeche()

43 {

44 flaeche=laenge*breite;

45 }

46

47 void b_umfang()

48 {umfang=2*laenge+2*breite;

49 }}

C# - Programm: Instanzierung von Objekten

Zeilen 14-17:

Für das erste Rechteck, d.h. das Objekt re1, werden

mit der Methode eingabe (Zeilen 26-34) Länge und

Breite von der Tastatur eingelesen. Danach werden die

Fläche des Rechtecks (Zeilen 42-45) und der Umfang

(Zeilen 47-50) berechnet und mit der Methode

ausgäbe (Zeilen 36-40) am Bildschirm ausgegeben.

Zeilen 19-22:

Für das zweite Rechteck, d. h. das Objekt re2,

werden analog zum Rechteck1 wie in den Zeilen 14-17

beschrieben, die gleichen Tätigkeiten durchgeführt.

Zeilen 26-34:

Die Methode eingabe liest Länge und Breite von der

Tastatur ein und speichert die Werte in den Feldern

laenge und breite ab.

Zeilen 36-40:

Die Methode ausgabe gibt den Inhalt der Felder

flaeche und umfang am Bildschirm aus.

Zeilen 42-45:

Die Methode b_flaeche berechnet die Fläche mit den

Werten der Felder laenge und breite und speichert das

Ergebnis im Feld flaeche ab.

Zeilen 47-49:

Die Methode b_umfang arbeitet analog zur Methode

b_flaeche und berechnet den Umfang.

Page 30: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 30

Ein Konstruktor ist eine Methode, die automatisch aufgerufen wird, wenn ein Objekt erstellt wird. Er wird oft verwendet,

um das Objekt zu initialisieren.

C# - Programm: Konstruktor und Destruktor

Syntax:

modifier klassenname (parameter liste )

{

// Programmcode des Konstruktors

}

Ein Destruktor ist eine Methode einer Klasse, die zum Zerstören eines Klassenobjekts erforderlich ist. Ein Destruktor

wird mit Hilfe einer Destruktor-Definition angelegt.

Die meisten Klassen benötigen keinen Destruktor, da die Abschlussarbeit lediglich in der Freigabe nicht mehr benö-

tigter Objekte besteht, was der Garbage Collector automatisch durchführt.

Syntax:

~klassenname {

// Programmcode des Destruktors

}

Page 31: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 31

Quellcode: Bruch11.cs

1 using System;

2

3 class Bruch11

4 {

5 int zaehler, nenner;

6

7 static void Main()

8 {

9 Bruch11 bb1 = new Bruch11(3,5);

10 Bruch11 bb2 = new Bruch11(7,11);

11 Bruch11 bb3;

12

13 bb1.ausgabe();

14 bb2.ausgabe();

15 bb3=bb1.mult(bb2);

16 bb3.ausgabe();

17 }

18

19 Bruch11(int z,int n)

20 {

21 zaehler = z; nenner = n;

22 }

23

24 Bruch11 mult(Bruch11 b)

25 {

26 return(new Bruch11(zaehler*b.zaehler,nenner*b.nenner));

27 }

28

29 void ausgabe()

30 {

31 Console.WriteLine(zaehler + "/" + nenner);

32 }

33 }

C# - Programm: Konstruktor und Destruktor

Zeile 5:

Es werden zwei Felder für Zähler und Nenner angelegt.

Zeilen 7-17:

In der Methode Main werden die Objekte bb1 und bb2

erzeugt und über den Konstruktor (Zeilen 19-22) initiali-

siert. Zur Kontrolle werden die erzeugten Objekte durch

die Methode ausgabe (Zeilen 13, 14) auf dem Bildschirm

ausgegeben. Dann werden die beiden Brüche durch die

Methode mult (Zeile 15) multipliziert, das Ergebnis dem

Objekt bb3 zugewiesen und am Bildschirm ausgegeben (Zeile 16).

Zeilen 19-22:

Der Konstruktor erhält als Parameter Zähler und Nenner

und weist die Werte den Feldern zaehler und nenner zu.

Zeilen24-27:

Die Methode mult erhält als Parameter ein Objekt b (d.h.

einen Bruch). Dann werden Zähler und Nenner des Ob-

jekts b mit Zähler und Nenner des aktuellen Objekts (also

dem Objekt, mit dem d. Methode gerufen wurde) mul-

tipliziert. Mit new wird ein neues Objekt erzeugt, in wel-

chem das Ergebnis der Berechnung über den Konstruk-

tor abgelegt wird. Dieses Objekt wird nun über return an

die aufrufende Methode übergeben.

Zeilen 29-32:

Zähler und Nenner, genauer die Felder zaehler und

nenner, werden am Bildschirm ausgegeben.

Ausgabe:

3/5

7/11

21/55

Erläuterung:

Page 32: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 32

C# - Programm: Vererbung und Schnittstellen

Wenn eine Klasse die Komponenten einer anderen Klasse erbt, dann nennt man letztere die

Basisklasse.

Klasse1 ist Basisklasse von Klasse2, d.h. Klasse2 erbt die Komponenten von Klasse1. Klasse2 nennt

man abgeleitete Klasse.

Vererbung ist transitiv, d. h. wenn eine Klasse3 von Klasse2 erbt und diese wiederum von Klasse1,

dann erbt Klasse3 auch alle Komponenten von Klasse1.

In einer Klassenhierarchie, also dem Aufbau von Basisklassen und abgeleiteten Klassen, können alle Klassen über eigene Konstruktoren verfügen.

Der Konstruktor der Basisklasse erzeugt den Objektanteil der Basisklasse, der Konstruktor der

abgeleiteten Klasse erzeugt den Objektanteil der abgeleiteten Klasse. Die Basisklasse besitzt keine Informationen über die abgeleitete Klasse. Sie wird daher gesondert eingerichtet. Damit liegt die Reihenfolge beim Aufruf fest.

Syntax:

class Klassenname1

{// Komponenten von Klasse1}

class Klassenname2 : Klassenname1

{// Komponenten von Klasse2}

Page 33: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 33

Quellcode: Kind00.cs

Projekt öffnen: bsp\Visual Studio Projects\Kind00\Kind00.csproj

1 using System;

2

3 class ElternKlasse

4 {

5 public ElternKlasse()

6 {

7 Console.WriteLine("Eltern Konstruktor");

8 }

9 public void drucken()

10 {

11 Console.WriteLine("Hier: Eltern Klasse");

12 }

13 }

14

15 class Kind00 : ElternKlasse

16 {

17 public Kind00()

18 {

19 Console.WriteLine("Kind Konstruktor");

20 }

21

22 static void Main(string [] args)

23 {

24 Kind00 kind = new Kind00();

25 kind.drucken();

26 }

27 }

C# - Programm: Vererbung und Schnittstellen

Zeilen 3-13:

Definieren die Basisklasse, die vererbt wird.

Zeilen 5-8:

Der Konstruktor gibt zur Kontrolle den Text „Eltern

Konstruktor" aus.

Zeilen 10-11:

Eine Methode drucken wird definiert, die den Text

„Hier: Eltern Klasse" auf den Bildschirm schreibt.

Zeilen 15-26:

Definiert die Klasse Kind00, die von der Basisklasse

Elternklasse erbt.

Zeilen 17-20:

Der Konstruktor dieser Klasse gibt zur Kontrolle den

Text „Kind Konstruktor" aus.

Zeilen 22-26:

Die Methode Main initialisiert das Objekt kind.

Die Ausgabe zeigt, dass zuerst der Konstruktor der

Basisklasse und dann der Konstruktor der Klasse

aufgerufen wird. Im Anschluss wird die Methode

drucken gerufen.

Ausgabe:

Erläuterung:

Page 34: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 34

Anlegen eines Projektes mit Studio.Net

(Windows-Anwendung)

Menü: Datei Neu Projekt

Projekttyp: Visual C# - Projekte und Vorlagen: Windows-Anwendung auswählen

Speicherort und Name festlegen.

Gegebenenfalls vorher einen Ordner anlegen.

Page 35: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 35

Windows-Anwendung: C#-Programm – erste Demoanwendung

1. Aus dem Werzeugkasten

Toolbox die Schaltfläche

button mit der Maus auf das

leere Formular ziehen.

2. Schaltfläche eine Aktion

zuordnen:

Doppelklick auf den Button1,

Darauf erfolgt das Umschalten

in den Texteditor und das

Setzen der Textmarke an die

Einfügeposition.

1. Beispiel:

Page 36: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 36

Windows-Anwendung: C#-Programm – erste Demoanwendung

3. Die Einfügeposition befindet

sich in der Methode

button1_Click(……).

Die Methode button1_Click ()

wird mit dem Programmcode

für eine MessageBox ergänzt.

4. Nach der Kompilierung und

Ausführung erhält man das auf

der linken Seite aufgeführte

Ergebnis.

Projekt öffnen: bsp\Visual Studio Projects\WindowsApplication1\WindowsApplication1.csproj

Page 37: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 37

Quellcode: HelloCsharp9.cs

1 using System;

2 using System.Windows.Forms;

3 using System.Drawing;

4

5 public class HelloCsharp9 : Form

6 {

7 public static void Main()

8 {

9 Application.Run(new HelloCsharp9()); 10 } 11

12 public HelloCsharp9 () 113 { 14 this.Text = "Hallo, viel Spass mit C#!"; 15 } 16 17 protected override

18 void OnPaint(PaintEventArgs p) 19 { 20 p.Graphics.FillRectangle(

21 new SolidBrush(Color.Blue),this.ClientRectangle); 22 Font f =

new Font("Helvetica",24.0F,GraphicsUnit.Point); 23 p.Graphics.DrawString("Hallo,", f,

24 new SolidBrush(Color.Yellow), 20.0F,40.0F); 25 p.Graphics.DrawString("viel Spass",f,

26 new SolidBrush(Color.Red),70.0F,100.0F); 27 p.Graphics.DrawString ("mit C# .' ", f,

28 new SolidBrush(Color.Cyan) , 160.0F, 160.0F) ; 29 }}

Windows-Anwendung: C# - Programm - Fenster

Nachfolgend wird ein einfaches Beispiel

aufgeführt, das die Ausgabe “Hallo, viel

Spaß mit C#!“ in einem eigen Fenster

und bunt am Bildschirm darstellt.

Gehen Sie dabei wie folgt vor:

Projekt anlegen Doppelklick auf

leeres Formular Codegerüst löschen

Nebenstehenden Code einfügen.

2. Beispiel:

Page 38: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 38

Windows-Anwendung: C#-Programm - Timer

1. Fügen Sie ein

Beschriftungsfeld Label

als Platzhalter für den

Timer ein.

2. Stellen Sie eine ge-

wünschte Schriftgröße im

Eigenschaftsfeld Label1

ein.

3. Ziehen Sie nun den Timer

in die Anwendung.

4. Stellen Sie im Eigen-

schaftsfeld des Timers

True und 300 ein.

Projekt öffnen: bsp\Visual Studio Projects\Timer\Timer.csproj

3. Beispiel:

Page 39: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 39

Windows-Anwendung: C#-Programm - Timer

5. Kompilieren und Starten Sie das

Programm!

4. Fügen Sie in der Methode für den

Timer1 den nachfolgenden

Quelltext ein.

Page 40: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 40

Windows-Anwendung: C#-P rogramm – Berechnung der Mehrwertsteuer

Das Programm soll Funktionalität besitzen:

1. Eingabe des Bruttobetrages

2. Durch einen Klick auf den Button

“Berechnen…“ erfolgt die Berechnung

des Nettobetrages und der Steuer bei

gleichzeitiger Ausgabe in die

entsprechenden Felder.

Durchführung:

1. Ziehen Sie die entsprechenden Textlabel

in das Formular. Im Eigenschaftsfeld än-

dern Sie das Attribut Text entsprechend.

2. Ziehen Sie drei Textblöcke in das

Formular.

Im Eigenschaftsfeld löschen Sie den Text

“TextBox“ beim Attribut Text .

3. Ziehen Sie zwei Button auf das Formular

und ändern Sie die Beschriftung der

Button über das Eigenschaftsfeld.

Projekt öffnen: bsp\Visual Studio Projects\msteuer-csh\msteuer-csh.csproj

4. Beispiel:

Page 41: Programmiersprache C# - staff.hs-mittweida.dethiem1/cpp/unterlagen/kap07/theorie07.pdf · Dr. Elfi Thiem Folie 1 Programmiersprache C# Dr.-Ing. Elfi Thiem Literatur: C# Einführung

Dr. Elfi Thiem Folie 41

Windows-Anwendung: C#-Programm – Berechnung

der Mehrwertsteuer

Durchführung:

4. Fügen Sie im Codegerüst in der

Klasse Form1 zusätzliche Variablen

ein: double brutto, netto, steuer.

5. Durch Doppelklick auf die Button

fügen sie die entsprechenden

Methodengerüste im Hauptpro-

gramm Main() hinzu.

6. Schreiben Sie die entsprechenden

Anweisungen für die Funktionalität

des Formulars in die Methoden

button2_Click() und button1_Click().