32
Copyright 2009 – Heimo Gaicher Einleitung

Leseprobe C# für Einsteiger - Timer IC NE · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

Embed Size (px)

Citation preview

Page 1: Leseprobe C# für Einsteiger - Timer IC NE  · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

Copyright 2009 – Heimo Gaicher

Einleitung

Page 2: Leseprobe C# für Einsteiger - Timer IC NE  · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

Copyright 2009 – Heimo Gaicher

Dieses Skriptum richtet sich an Programmier-Einsteiger, die mit der Sprache C# eine moderne

objektorientierte Programmiersprache erlenen möchten.

Da es für Einsteiger nicht gerade einfach ist, eine Programmiersprache zu erlernen, wurde dieses Skript

schrittweise mit vielen Beispielen ausgearbeitet.

Auf Blattfüllende allgemeine Einführungen und Erläuterungen wurde bewußt verzichtet.

Da die meisten Anfänger mit der Objektorientierung zu Beginn Verständnisprobleme haben, wurde kein

objektorientierter Zugang gewählt.

Die entsprechenden Beispiele werden im Programmiercode genau erklärt und führen so zu einem besseren

Verständnis.

Eine Programmiersprache lernt man am besten, indem man programmiert.

Arbeiten Sie dieses Skript von Anfang an genau durch und versuchen Sie auch die Übungsaufgaben

selbständig zu lösen. Alle Beispiele sind vollständig mit Code erklärt. Für die Übungsbeispiele gibt es

absichtlich keine Musterlösung, da dies Ihre Aufgabe sein soll, entsprechende Überlegungen zu treffen und

Lösungen zu finden.

Dieses Skript wurde im Zuge meiner eigenen Ausbildung mit großer Sorgfalt geschrieben. Sollten sich

dennoch Fehler eingeschlichen haben, freue ich mich über entsprechende Hinweise. Anmerkungen und

Kritiken sind unter [email protected] immer willkommen.

Alle Markennamen werden ohne Gewährleistung der freien Verwendbarkeit benutzt und sind

möglicherweise eingetragene Warenzeichen. Das Werk einschließlich aller seiner Teile ist urheberrechtlich

geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie

Einspeicherung und Verarbeitung in elektronischen Systemen.

Viel Spaß beim Erlernen von C#

Heimo Gaicher

Page 3: Leseprobe C# für Einsteiger - Timer IC NE  · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

Copyright 2009 – Heimo Gaicher

Inhalt

1. Arbeiten mit VISUAL STUDIO Seite

1.1. Download und Installation 5

1.2. Start mit VISUAL STUDIO 6

2. Programmieren in der Konsole 7

2.1. Unser erstes Programm 8

2.2. Klassen und Methoden 11

2.3. Struktur einer Klasse 12

2.4. Ausgabe mit Zeit und Datum 14

2.5. Variablendeklaration und Variablentypen, Werte einlesen und ausgeben 15

2.6. Datentypen in Visual C# 17

2.7. Ausgabe mit Variablen 18

2.8. Formatierte Ausgabe von Zahlen – Formatausdruck{} 19

2.9. Escape-Zeichen 20

2.10. TypeCasting – Umwandlung von Datentypen 21 2.11. Einlesen von Werten 22

2.12. Debugging 25

2.13. Typeabfrage von Variablen mit GetType 29

2.14. Eigenschaften der Klasse Console & Formatierungen 29

2.15. Zeichenketten – Strings 30

2.16. Strings anlegen und ausgeben 31

2.17. Strings einfügen, ersetzen und löschen 32

2.18. Strings verketten und vergleichen 34

2.19. Bezeichner in C# - Schlüsselwörter 35

3. Rechnen in C# 36

3.1. Integerdivision 36

3.2. Operatoren in C# 37

3.3. Zuweisungen 38

3.4. Vergleiche 39

3.5. Aussagenlogik 40

3.6. Die Math-Klasse – Potenzen, Wurzel, Logarithmen 41

3.7. Der Operand Modulo % 43

4. Übungsbeispiele 44

4.1. Übungsbeispiel Treibstoffverbrauch 45

4.2. Übungsbeispiel Freier Fall mit Luftwiderstand 46

4.3. Übungsbeispiel Umrechnung von Grad Celsius in Grad Fahrenheit 47

4.4. Übungsbeispiel Berechnung des Ostersonntages nach Gauss 48

5. Verzweigungen 49

5.1. Die if-else Verzweigung 49

5.2. Geschachtelte if-else Anweisung 53

5.3. Abfragen mit switch / case 55

5.4. Die Anweisungen break, continue und goto 57

5.5. Übungsbeispiel Taschenrechner 58

5.6. Übungsbeispiel Wochentag 59

Page 4: Leseprobe C# für Einsteiger - Timer IC NE  · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

Copyright 2009 – Heimo Gaicher

5.7. for – Schleifen 63

5.8. Übungsbeispiel Sägezahn 65

5.9. Kopfgesteuerte Schleife mit while 68

5.10. Fussgesteuerte Schleife mit do – while 69

5.11. Übungsbeispiel Dezimalzahl in eine Binärzahl umwandeln 70

5.12. Übungsbeispiel quadratische Funktion 73

5.13. Übungsbeispiel zur Berechnung der Fibonacci Zahlenfolge 77

5.14. Übungsbeispiel schräger Wurf 78

5.15. Zufallszahlen erzeugen 79

5.16. Arrays 81

5.17. Arrays – parallele Felder 86

5.18. Übungsbeispiel Umwandlung einer Binärzahl in eine Dezimalzahl 87

5.19. Arrays – mehrdimensionale Felder 88

5.20. Arrays – Abfrage mit einer foreach-Schleife 89

5.21. Arrays – ArrayList (Felder mit dynamischer Größe) 89

5.22. Unterprogramme und Funktionen 92

5.23. Übungsbeispiel Passwortgenerator 95

5.24. Gültigkeitsbereich von Variablen 97

5.25. Globale Variablen 98

5.26. Call by Value – Wertübergabe 98

5.27. Call by Reference – Adressübergabe 100

6. Klassen 101

6.1. Deklaration von Klassen 101

7. Programmierung mit Windows Forms 105

7.1. Kontrollkästchen - CheckBox 108

7.2. Automatischer Farbwechsel 110

7.3. Buttons & Labels – Programmbeispiel Countdown 115

7.4. Textboxen 117

7.5. Standardschaltflächen 118

7.6. Objekte, Eigenschaften und Methoden 118

7.7. Ereignisse 119

7.8. Das KeyPress Ereignis 121

7.9. Übungsbeispiel Berechnung des BMI 123

7.10. Übungsbeispiel Rechentrainer 125

7.11. Übungsbeispiel Textverschlüsselung 127

7.12. Übungsbeispiel Währungsumrechner 128

7.13. InputBox aus Visual Basic 129

7.14. Die Methoden IndexOf und LastIndexOf 131

7.15. Übungsbeispiel Lotto 6 aus 45 134

7.16. Try – Catch, Ausnahmebehandlung 137

7.17. Übungsbeispiel Würfelspiel 139

7.18. Die Klasse RadioButton 142

7.19. Tool Tip Steuerelement 144

7.20. Picture Box 145

7.21. Scroll Bar – Bildlaufleiste 147

Page 5: Leseprobe C# für Einsteiger - Timer IC NE  · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

Copyright 2009 – Heimo Gaicher

7.22. Anwendungen für andere Nutzer veröffentlichen 151

7.23. Combo Box 152

7.24. List Box 155

8. Anhang 157

8.1. Strings formatieren mit C# 157

8.2. Zahlen individuell formatieren 157

8.3. Datumswerte formatieren 157

8.4. Datumswerte individuell formatieren 158

8.5. Math Klasse – Methodenübersicht 159

8.6. ASCII-Tabelle 160

Page 6: Leseprobe C# für Einsteiger - Timer IC NE  · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

Copyright 2009 – Heimo Gaicher

1. Arbeiten mit VISUAL STUDIO 2008

Um in C# programmieren zu können, benötigen wir eine Software (Entwicklungsumgebung). Wir verwenden

VISUAL STUDIO 2008 EXPRESS EDITION.

VISUAL STUDIO 2008 EXPRESS EDITION ist eine kostenlose Software und Sie können Sie direkt von der

Microsoft-Webseite herunterladen.

1.1 Download und Installation

VISUAL STUDIO 2008 EXPRESS einrichten

Hier der Downloadlink:

http://www.microsoft.com/germany/express/download/webdownload.aspx

Wählen Sie VISUAL STUDIO 2008 EXPRESS EDITION und klicken Sie im Fenster Visual C# auf Download.

Wählen Sie bei der Installation alle Optionen aus.

Page 7: Leseprobe C# für Einsteiger - Timer IC NE  · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

1.2 Start mit VISUAL STUDIO 2008

Starten Sie VISUAL STUDIO 2008 EXPRESS.

Um ein neues Projekt zu erstellen, klicken Sie auf

Erstellen eines neuen Projektes.

Wählen Sie Konsolenanwendung aus und geben Sie dem Projekt einen Namen z.B. „Ausgabe“. Klicken Sie auf

OK und es öffnet sich die Konsole.

Start mit VISUAL STUDIO 2008

ie VISUAL STUDIO 2008 EXPRESS. Beim Start öffnet sich ein Fenster mit den letzten Projekten.

Um ein neues Projekt zu erstellen, klicken Sie auf Erstellen: Projekt… und es öffnet sich ein Assistent zum

solenanwendung aus und geben Sie dem Projekt einen Namen z.B. „Ausgabe“. Klicken Sie auf

Copyright 2009 – Heimo Gaicher

enster mit den letzten Projekten.

und es öffnet sich ein Assistent zum

solenanwendung aus und geben Sie dem Projekt einen Namen z.B. „Ausgabe“. Klicken Sie auf

Page 8: Leseprobe C# für Einsteiger - Timer IC NE  · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

Copyright 2009 – Heimo Gaicher

Sie sehen bereits einen ersten Code. Die Bedeutung des gesamten Codes soll uns aber an dieser Stelle noch

nicht kümmern.

In VISUAL STUDIO 2008 lässt sich die Anordnung der Fenster flexibel gestalten. Sämtliche Fenster lassen sich

an allen Ecken andocken. So können Sie sich VISUAL STUDIO 2008 nach Ihren eigenen Bedürfnissen

einrichten.

2. Programmieren in der Konsole

Die Programmierung in der Konsole dient am Anfang dazu, um Code bzw. kleine Programme zu schreiben

und diese zu verstehen. Grafische Komponenten, Formulare usw. wären hier am Anfang für den Lernenden

hinderlich. Sobald aber das Grundgerüst erarbeitet ist, steigen wir um und programmieren in Windows-

Forms.

Unser Projekt (auch jedes andere) startet an der Stelle static void Main(string[] args)und wird von

den beiden geschwungenen Klammern { } eingeschlossen.

Innerhalb der beiden Klammern wird unser Code schrittweise abgearbeitet und das Programm entsprechend

ausgeführt.

Projektmappen-Explorer

Dieser enthält alle Dateien, die zum Projekt

gehören. Die Datei Program.cs enthält den

Programmcode.

Unseren Programmiercode schreiben wir

innerhalb der geschweiften Klammern.

Page 9: Leseprobe C# für Einsteiger - Timer IC NE  · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

Copyright 2009 – Heimo Gaicher

2.1 Unser erstes Programm

Wir gehen gleich an die Sache heran und schreiben unser erstes kleines Programm.

Wir verzichten an dieser Stelle an eine „Einführung“ in C#, .Net usw., da dies anfangs ohnehin für einen

Einsteiger nur schwer verstanden wird und nur einen unnötigen Ballast darstellt.

Unser erstes Programm soll einfach nur „Hallo, C# macht Spaß!“ auf den Bildschirm ausgeben.

Um etwas auszugeben verwenden wir den „Befehl“

Console.WriteLine

gefolgt von dem, (in Klammern und unter “ “) was wir ausgeben möchten also

("Hallo, C# macht Spass!");

Das Semikolon ; am Ende schließt die Befehlszeile ab.

Wenn Sie ein C in die Konsole eingeben, öffnet sich ein Fenster, die IntelliSense und hilft Ihnen eine Auswahl

möglicher Befehle zu treffen. Um Schreibfehler zu vermeiden sollten Sie die IntelliSense immer verwenden.

Achtung!

C# unterscheidet zwischen Groß- und Kleinschreibung!

Sobald Sie den Punkt setzen meldet sich die

IntelliSense erneut und schlägt erneut mögliche

Befehle vor. Wählen Sie WriteLine und

vollenden Sie die Befehlszeile.

Page 10: Leseprobe C# für Einsteiger - Timer IC NE  · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

Copyright 2009 – Heimo Gaicher

2.3 Struktur einer Klasse

Ein C#-Programm besteht aus Klassen.

Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können.

Innerhalb einer Klasse werden Operationen als Methoden definiert.

Eine Methode kann selbst erstellt werden oder auch fertig als Routine aus einer Klassenbibliothek verwendet

werden.

Anhand des folgenden Beispielprogrammes läßt sich die Grundstruktur eines C#-Programmes erkennen.

Das Programm enthält eine einzige Klasse – die Klasse Program und diese beinhaltet die Methode Main.

Die statische Methode Main muss in jedem Programm vorhanden sein, denn hier beginnt die

Programmausführung. Main ist sozusagen der Startpunkt eines jeden C#-Programmes. Das Schlüsselwort

static bedeuted, dass die Methode an die Klasse Program gebunden ist.

Die Methode Main enthält zwei Anweisungen.

1. Console.WriteLine("Hallo, C# macht Spass!");

WriteLine() ist eine Methode der Klasse Console. Wird die Methode WriteLine () aufgerufen,

gibt sie den Text in den beiden Klammern gefolgt von einem Linefeed (Absatz) aus.

2. Console.ReadLine();

ReadLine()ist eine Methode der Klasse Console. Wird die Methode ReadLine() aufgerufen, wartet sie

an dieser Stelle auf eine Eingabe gefolgt von einem Enter. Unser Programm wird somit an dieser Stelle

angehalten und nicht sofort beendet.

Das nächste Beispiel zeigt, wie ein C#-Programm mit mehreren Klassen strukturiert ist.

In der Klasse Program befindet sich die Methode Main(). Diese ruft einerseits die Methode

WriteLine() und andererseits die Methode Message() der Klasse End auf.

Der Klassenname wird gefolgt von einem Punkt dem Namen der Methode vorangestellt.

Die Methode Message() ist in der Klasse End als public deklariert. public bedeuted, dass die

Methode öffentlich zugänglich ist. Somit kann sie auch außerhalb ihrer Klasse aufgerufen werden. Die

Methode Main() könnte, da sie der Einstiegspunkt ist, auch als public deklariert werden.

class Program

{

static void Main(string[] args)

{

Console.WriteLine("Hallo, C# macht Spass!");

Console.ReadLine();

}

}

Name der Klasse

Beginn der Klasse

Beginn der Methode

Ende der Methode

Ende der Klasse

Page 11: Leseprobe C# für Einsteiger - Timer IC NE  · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

Copyright 2009 – Heimo Gaicher

Beide Methoden sind als void deklariert. void bedeuted, es wird kein Wert zurückgegeben. Sie besitzen

keinen Return-Wert. In C# ist die Reihenfolge in der die Klassen deklariert werden nicht vorgeschrieben.

Es könnte also auch zuerst die Klasse End gefolgt von der Klasse Program deklariert werden. Somit werden

also Methoden aufgerufen bevor sie definiert sind.

Hier ein C#-Programm mit zwei Klassen:

namespace mehrereKlassen

{

class Program

{

static void Main()

{

Console.WriteLine("Start!");

End.Message();

Console.ReadLine();

}

}

class End

{

public static void Message()

{

Console.WriteLine("Ende!");

}

}

}

Beide Klassen sind in einem eigenen namespace (Namensbereich) deklariert. Namensbereiche unterstützen

die interne Organisation von Programmen und verhindern dadurch Konflikte in der Namensvergabe.

Hier ein weiteres Beispiel:

class Program

{

static void Main()

{

Console.WriteLine("Start!");

Klasse1.Sterne();

Console.WriteLine("Drücken Sie Enter!");

Console.ReadLine();

Klasse2.Ende();

Console.ReadLine();

}

}

class Klasse1

{

public static void Sterne()

{

Console.WriteLine("******");

}

}

class Klasse2

{

public static void Ende()

{

Console.WriteLine("Danke!");

}

}

Ausgabe:

Page 12: Leseprobe C# für Einsteiger - Timer IC NE  · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

Copyright 2009 – Heimo Gaicher

Was sind eigentlich Variablen?

Variablen speichern Zahlen, Buchstaben oder Zeichenketten und stellen sie dem Programm zur Verfügung.

Jede Variable ist von einem bestimmten Datentyp, der angibt, welche Art von Information die Variable

speichern soll.

Beispiel: Der Variablen mit dem Namen Sum wird der Inhalt von Variable a + Variable b zugeordnet. In Sum wird der

Wert 12 gespeichert. Da in diesem Fall die Variablen ganzzahlige Werte enthalten, müssen wir die Variablen

richtig deklarieren, also einem Datentyp zuordnen.

In unserem Beispiel wählen wir den Datentyp Integer (Int 32), welcher ganzzahlige Werte zwischen -231 bis

231 -1 speichern kann.

Als Programmcode sieht das so aus:

int Sum, a=10, b=2;

//Variablen werden als Integer deklariert.

//a wird der Wert 10 und b der Wert 2 zugeordnet.

Sum = a + b;

//Sum speichert den Inhalt von a + b

Wertzuweisung von Variablen

Wird einer Variablen kein Wert zugewiesen, beschwert sich Visual C# bei der Ausführung mit einer

Fehlermeldung.

Beispiele für Wertzuweisungen:

int maxWert = 10000;

//Weist der Variablen maxWert die Zahl 10000 zu.

double messwert = 2.3;

//Weist der Variablen messwert vom Typ double die Zahl 2.3 zu.

string b;

b = "Ich bin eine Zeichenkette und daher ein String";

//Deklariert die Variable b vom Typ String

//Weist der Variable b die Zeichenkette "Ich bin eine Zeichenkette und daher ein

String" zu.

Page 13: Leseprobe C# für Einsteiger - Timer IC NE  · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

Copyright 2009 – Heimo Gaicher

2.6 Datentypen in Visual C#

Datentyp Wertebereich Bit Laufzeittyp

bool true oder false 1 Boolescher Wert

byte 0 ... 255 8 Byte

sbyte -128 ... 127 8 SByte

char 0 ... 65535 16 Unicode Zeichen

short -215 -215 -1 16 Int16

ushort 0 ... 65535 16 UInt16

int -231 - 231 -1 32 Int32

uint 32 UInt32

float 1,4 x 10- 45 ... 3,4 x 1038 32 Single

ulong 0 ... 264 -1 64 UInt64

long -263 - 263 -1 64 Int64

double 5,0 x 10- 324 ... 1,7 x 10308 64 Double

decimal ±1,0 x 10-28 ... ±7,9 x 1028 128 Decimal

Typischerweise werden Variablen dazu verwendet, um z.B. Werte einzulesen, diese zu verarbeiten und

auszugeben. Dies geschieht mit der Klasse Console und deren Methoden z.B. ReadLine oder WriteLine.

Überblick Wertetypen

Wahrheitswerte bool

Zeichen char

Ganzzahlen

sbyte, byte

short, ushort

int, uint

long, ulong

Gleitkommazahlen

float

double

decimal

Page 14: Leseprobe C# für Einsteiger - Timer IC NE  · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

Copyright 2009 – Heimo Gaicher

Laufzeitfehler:

Wird während eines Programmablaufes eine falsche Typenumwandlung durchgeführt, so kommt es zu einem

Laufzeitfehler (Runtime Error) und das Programm stürzt ab.

Beispiel:

Es sollte eine Zahl eingelesen werden aber der Benutzer gibt einen Buchstaben ein!

2.7 Einlesen von Werten

Um einen Wert einzulesen verwenden wir die Methode ReadLine.

Console.ReadLine();

Dies klingt logisch, da man ja nicht wissen kann, welcher Wert (Zahlen, Buchstaben oder Zeichen) eingelesen

wird, muss man zwangsweise eine Zeichenkette (String) einlesen.

Daher liest Console.ReadLine() immer einen String ein, der dann in den gewünschten Datentypen

umgewandelt (konvertiert) werden muss.

Eine Konvertierung von Datentypen erfolgt durch die Klasse gefolgt von der gewünschten Methode z.B:

Convert.ToInt32 für den Datentyp Integer oder Convert.ToDouble für den Datentyp Double.

ACHTUNG!

Console.ReadLine()liest immer einen String

(Zeichenkette) ein!

Möchte man z.B. eine Zahl einlesen und diese in

eine Variable speichern, muss diese zuvor in den

Typ Int, long, float ect. konvertiert werden.

Page 15: Leseprobe C# für Einsteiger - Timer IC NE  · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

Copyright 2009 – Heimo Gaicher

Jetzt möchten wir aber ein kleines Programm schreiben, welches eine Zahl einliest und diese mit 5

multipliziert. Das Ergebnis soll wie gewohnt ausgegeben werden.

Zuerst werden zwei Variablen deklariert.

Wir benennen sie mit zahl1 und ergebnis und deklarieren beide vom Datentyp Integer. Die Variablen werden mit einem Beistrich getrennt und abgeschlossen wird mit einem Semikolon.

int zahl1, ergebnis;

Jetzt soll der Benutzer aufgefordert werden, eine Zahl einzugeben.

Console.WriteLine("Bitte eine Zahl eingeben!");

Jetzt wird eingelesen! Der eingelesene Wert wird in Int32 konvertiert und in zahl1 gespeichert.

Die Variable zahl1 ist vom Datentyp Integer.

zahl1 = Convert.ToInt32(Console.ReadLine());

Die Variable ergebnis, welche zuvor noch keinen Wert hatte, erhält nun den eingegebenen Wert (Wert von

zahl1) multipliziert mit 5.

ergebnis = zahl1 * 5;

Die Ausgabe der Werte erfolgt über die beiden Platzhalter. Zahl1 in Platzhalter {0} und ergebnis in Platzhalter

{1}.

Console.WriteLine("5 mal {0} = {1}", zahl1, ergebnis);

Console.ReadLine();

Die Ausgabe der Werte kann aber auch ohne Platzhalter durchgeführt werden. Man setzt einfach die

Variablen direkt ein und verbindet mit +!

z.B:

Console.WriteLine("5 mal " + zahl1 + " = " + ergebnis);

Liefert das selbe Ergebnis!

Der Code auf einem Blick:

int zahl1, ergebnis;

Console.WriteLine("Bitte eine Zahl eingeben!");

zahl1 = Convert.ToInt32(Console.ReadLine());

ergebnis = zahl1 * 5;

Console.WriteLine("5 mal {0} = {1}", zahl1, ergebnis);

Console.ReadLine();

Page 16: Leseprobe C# für Einsteiger - Timer IC NE  · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

Copyright 2009 – Heimo Gaicher

2.12 Debugging

An dieser Stelle betrachten wir unser Programm etwas genauer. Wir nutzen den Debugger um das Programm

schrittweise ablaufen zu lassen. Besonders bei etwas längerem Programmcode schleichen sich gerne Fehler

ein. Of erkennt man die Fehler sofort aber manchmal sucht man „ewig“! Um Fehler (besonders logische Fehler) besser isolieren und beheben zu können, macht es Sinn, den Debugger

zu verwenden.

Wir debuggen obiges Beispiel und setzen an der linken Seite auf der Leiste einen Haltepunkt. Den Haltepunkt

setzen Sie, wenn Sie mit der linken Maustaste an diese Stelle klicken.

Jetzt starten wir unser Programm wie gewohnt (grüner Pfeil oder F5). Der Startpunkt wird markiert und im

unteren Fenster sehen wir alle Variablen mit den derzeitigen Werten.

Page 17: Leseprobe C# für Einsteiger - Timer IC NE  · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

2.14 Strings einfügen, ersetzen und löschen

Auch hier liefert uns C# verschiedene Methoden.

Einfügen:

Mit der Methode können Sie einen String an eine vordefinierte Position in einen berei

einfügen.

Beispiel:

string str1 = "programm";

string str2 = str1.Insert(0,

string str3 = str2.Insert(11,

Console.WriteLine(str2);

Console.WriteLine(str3);

Console.ReadLine();

Als Ausgabe erhalten wir:

Achten Sie auf die Positionen in Strings. Diese beginnen immer bei 0!

Positionen in Strings

P r o

0 1 2

Beispiel:

str3 = str2.PadLeft(16);

Mit PadLeft(); und PadRight();

aufgefüllt. Der String str3 beginnt mit 5 Leerzeichen und hat die Länge 16.

Löschen und Ersetzen Mit der Methode Remove() können Sie alle Zeichen ab einer definierten Posit string str1 = "C# Programmierer"

string str2 = str1.Remove(11);

str2 enthält dann den String „C# Programm“ , da ab der 11.Stelle alle weiteren Zeichen entfernt wurden.

Im Gegensatz zur Methode Remove()Position in einem String.

einfügen, ersetzen und löschen

Auch hier liefert uns C# verschiedene Methoden.

der Methode können Sie einen String an eine vordefinierte Position in einen berei

str2 = str1.Insert(0,"C# ");

str3 = str2.Insert(11, "ieren");

Achten Sie auf die Positionen in Strings. Diese beginnen immer bei 0!

g r a

3 4 5

PadRight(); wird ein String mit beginnenden oder nachfolgenden Leerzeichen

beginnt mit 5 Leerzeichen und hat die Länge 16.

können Sie alle Zeichen ab einer definierten Position in einem String ersetzen.

"C# Programmierer";

str2 = str1.Remove(11);

enthält dann den String „C# Programm“ , da ab der 11.Stelle alle weiteren Zeichen entfernt wurden.

Remove() liefert die Methode Substring() alle Zeichen ab einer definierten

Copyright 2009 – Heimo Gaicher

der Methode können Sie einen String an eine vordefinierte Position in einen bereits vorhandenen String

m m

6 7

wird ein String mit beginnenden oder nachfolgenden Leerzeichen

ion in einem String ersetzen.

enthält dann den String „C# Programm“ , da ab der 11.Stelle alle weiteren Zeichen entfernt wurden.

alle Zeichen ab einer definierten

Page 18: Leseprobe C# für Einsteiger - Timer IC NE  · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

Copyright 2009 – Heimo Gaicher

3.4 Die Math-Klasse - Potenzen, Wurzel, Logarithmen

Die Klasse Math stellt verschiedene mathematische Funktionen wie z.B. Wurzel, sin, cos, tan, log, Min, Max,

PI, Potenzen usw. zur Verfügung.

Wir schreiben ein Programm, welches die Hypothenuse eines rechtwinkeligen Dreiecks berechnet. Laut Pythagoras ist: c2 = a2 + b2 - somit ist c die Wurzel aus ( a2 + b2 )

Unser Programm soll die beiden Seitenlängen a und b einlesen und die Seitenlänge c berechnen.

Hier eine mögliche Lösung

namespace Pythagoras

{

class Program

{

static void Main(string[] args)

{

float a, b, c;

Console.WriteLine("Dieses Programm berechnet die Seitenlänge eines

rechtwinkeligen Dreiecks.\n"

+ "Bitte geben Sie einen Wert für die Seite a in cm ein!");

a = Convert.ToSingle(Console.ReadLine());

//Konvertieren, da ReadLine immer einen String einließt!

Console.WriteLine("Bitte geben Sie einen Wert für die Seite b in cm

ein!");

b = Convert.ToSingle(Console.ReadLine());

//Konvertieren, da ReadLine immer einen String einließt!

c = Convert.ToSingle(Math.Sqrt((a * a) + (b * b)));

//Math.Sqrt verlangt den Typ double -> daher Konvertierung in float

Console.WriteLine("Die Seite c hat eine Länge von {0:F2} cm", c);

Console.ReadLine();

}

}

}

ACHTUNG!

Die Klasse Math verlangt den Datentyp double

Page 19: Leseprobe C# für Einsteiger - Timer IC NE  · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

Copyright 2009 – Heimo Gaicher

4.2 Übungsbeispiel! Freier Fall mit Luftwiderstand

Ein Fallschirmspringer beschleunigt so lange, bis die Erdanziehungskraft gleich groß ist, wie der

Luftwiderstand. Die Endgeschwindigkeit berechnet sich aus:

(m …Masse des Fallschirmspringers, A..Querschnittsfläche) Eingabe: m, A

Ausgabe: v

Page 20: Leseprobe C# für Einsteiger - Timer IC NE  · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

Copyright 2009 – Heimo Gaicher

4 Verzweigungen

Bisher haben wir nur linear (ein Befehl folgt auf den anderen) programmiert. Die meißten Probleme

erfordern aber andere Lösungen. In Abhängigkeit einer Bedingung (WAHR oder FALSCH) wird entweder der

eine oder der andere Programmteil ausgeführt.

5.1 Die if – else Verzweigung

Die if - else Verzweigung fragt eine Bedingung ab und prüft sie auf true oder false.

Syntax:

if (Bedingung) { WAHR-ZWEIG } else { SONST-ZWEIG }

Wir schreiben ein Programm, welches bei Eingabe von zwei Zahlen prüft, welche Zahl größer ist.

Oft verwendet man wie hier dargestellt ein Struktogramm (Nassi-Schneidermann-Diagramm) um den Programmablauf übersichtlicher darzustellen.

Man kann hier gut den Programmablauf erkennen. Es wird geprüft, ob Zahl1 größer ist als Zahl2. Ist die

Bedingung wahr, wird der ja-Zweig ausgeführt, sonst der nein-Zweig.

Eine Software um Struktogramme zu erstellen ist als Download z.B. auf www.555.at zu finden.

Page 21: Leseprobe C# für Einsteiger - Timer IC NE  · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

Copyright 2009 – Heimo Gaicher

5.2 Abfagen mit switch / case

switch / case prüft Bedingungen auf die Erfüllungen fixer vorher definierter Werte.

Im Unterschied zur if-Anweisung prüft switch fixe Werte ab.

Wir verwenden switch, wenn sich der zu prüfende Wert nicht ändert!

Beispiel Kaffeeautomat:

Wir schreiben ein Programm, welches einen Kaffeeautomaten simuliert.

Es stehen 4 Eingabetasten zur Verfügung. Davon sind drei belegt und die vierte ist leer.

Taste 1= Kaffee groß

Taste 2= Kaffee mittel

Taste 3= Kaffee klein Taste 4= leer

Page 22: Leseprobe C# für Einsteiger - Timer IC NE  · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

Copyright 2009 – Heimo Gaicher

5.12 Übungsbeispiel! Quadratische Funktion

Es soll ein Tabellenblatt wie abgebildet zu erstellen. Berechnet wird die Funktion f(x)=ax²+bx+c.

Eingabe: a,b,c, startwert von x, endwert von x, schrittweite von x

Hier eine mögliche Lösung:

namespace quadrat_funktion

{

class Program

{

static void Main(string[] args)

{

int a, b, c, start, end, schritt;

double x;

Console.WriteLine("Funktionstabelle für f(x) = ax²+bx+c");

Console.WriteLine("------------------------------------");

Console.Write("a=? ");

a = Convert.ToInt32(Console.ReadLine());

Console.Write("b=? ");

b = Convert.ToInt32(Console.ReadLine());

Console.Write("c=? ");

c = Convert.ToInt32(Console.ReadLine());

Page 23: Leseprobe C# für Einsteiger - Timer IC NE  · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

Copyright 2009 – Heimo Gaicher

5.19 Arrays - mehrdimensionale Felder

Ein zweidimensionales Feld besteht aus Zeilen und Spalten. Wie z.B. eine Excel-Tabelle. Möchte man z.B.

Messwerte über 4 Wochen einlesen, so entsprechen die Wochen den Zeilen und die Tage den Spalten. Jedem

Feld (Zeile x, Spalte y) wird ein Wert zugeordnet.

Hier ein Beispiel:

Mit diesem Programm sollen Einnahmen über 4 Wochen, a' 6 Tage eingelesen werden. Man benötigt also ein

Feld mit 4 Zeilen und 6 Spalten [4,6]. Zusätzlich soll der Durchschnitt und der Tag mit den geringsten

Einnahmen ausgegeben werden.

Tag 1 Tag 2 Tag 3 Tag 4 Tag 5 Tag 6

Woche 1 Feld [0,0] Feld [0,1] Feld [0,2] Feld [0,3] Feld [0,4] Feld [0,5]

Woche 2 Feld [1,0] Feld [1,1] Feld [1,2] Feld [1,3] Feld [1,4] Feld [1,5]

Woche 3 Feld [2,0] Feld [2,1] Feld [2,2] Feld [2,3] Feld [2,4] Feld [2,5]

Woche 4 Feld [3,0] Feld [3,1] Feld [3,2] Feld [3,3] Feld [3,4] Feld [3,5]

namespace einnahmen

{

class Program

{

static void Main(string[] args)

{

//Einnahmen über 4 Wochen, a' 6 Tage. Durchschnitt und Tag mit MIN?

float summe = 0,durchschnitt=0,minimum=0,tag=0,woche=0;

float[,] einnahmen = new float[4, 6]; //4 Zeilen und 6 Spalten

for (int i = 0; i < 4; i++) //äussere Schleife für die Zeilen

{

for (int j = 0; j < 6; j++)

//innere Schleife für Spalten

{

Wie Sie sehen, sind die Variablen der Funktion flaechenberechnung anders benannt. Es wird also nicht die

Variable a oder b übergeben, sondern nur deren Werte. Diese werden in laenge und breite gespeichert.

Page 24: Leseprobe C# für Einsteiger - Timer IC NE  · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

Copyright 2009 – Heimo Gaicher

Wir schreiben ein Programm, welches die Fläche zwischen einer Funktion f(x) und deren X-Achse berechnet.

Beispiel:

Gegeben ist die Funktion f(x)=x2

Unser Programm soll nun die Fläche zwischen der Funktion und der X-Achse innerhalb zweier Punkte (x1 und

x2) berechnen.

x1 und x2 sind zwei Werte auf der X-Achse. (In diesem Beispiel x1=-2 und x2=3)

Hier die Berechnung:

Programmablauf:

1. Begrüßung mit einer Prozedur

2. Einlesen der beiden X-Werte (x1, x2)

3. Berechnung der Fläche mit einer Funktion

4. Ausgabe

Tip: Versuchen Sie es zuerst selbst! Eine mögliche Lösung sehen Sie auf der nächsten Seite.

Hier eine mögliche Lösung des Programmbeispieles:

Page 25: Leseprobe C# für Einsteiger - Timer IC NE  · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

Copyright 2009 – Heimo Gaicher

Das Konzept von Klassen z.B. die Klasse AUTO:

AUTO

Klasse AUTO

Objekte

Eigenschaften:

• Baujahr

• Hubraum

• Leistung

• Fahrgestellnummer

• …….

Fähigkeiten:

• Beschleunigen

• Bremsen

• Abbiegen

• …….

AUTO1

Eigenschaften:

• Baujahr = 2002

• Hubraum = 1900

• Leistung = 136

• Fahrgestellnummer = 123456

Fähigkeiten

• ……..

AUTO2

Eigenschaften:

• Baujahr = 2002

• Hubraum = 1900

• Leistung = 136

• Fahrgestellnummer = 123456

Fähigkeiten

• ……..

Page 26: Leseprobe C# für Einsteiger - Timer IC NE  · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

Copyright 2009 – Heimo Gaicher

7 Programmierung mit Windows Forms

Ab jetzt wenden wir uns der Programmierung mit der grafischen Oberfläche zu und erstellen gleich ein

kleines Programm, welches auf den Klick eines Buttons den Text "Hallo ich bin ein c#-Fan!" ausgeben soll.

Wir erstellen wieder ein neues Projekt, aber diesmal nicht mehr in der Konsolenanwendung sondern in der

Windows Forms-Anwendung.

Geben Sie der Anwendung einen Namen und klicken Sie ok!

Es erscheint ein Formular mit der Bezeichnung Form1

Page 27: Leseprobe C# für Einsteiger - Timer IC NE  · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

Copyright 2009 – Heimo Gaicher

7.3 Buttons & Labels - Programmbeispiel Countdown

Mit diesem Programmbeispiel wollen wir Schleifen wiederholen. Es soll ein Countdown von 10 bis 0

ausgegeben werden.

Mit drei Buttons sollen wir die Art der Schleife (For-Schleife, Kopfgesteuerte- und Fußgesteuerte Schleife)

wählen können. Wir bauen unser Formular mit vier Buttons und einem Label auf:

this.label1.Text = Convert.ToString(i);

// gibt den Text i als String auf label1 aus

System.Threading.Thread.Sleep(1000);

// damit wird der aktuelle Thread für 1000ms (1 Sekunde) angehalten

this.Refresh();

// erneuert die Anzeige

Hier der vollständige Programmcode:

Page 28: Leseprobe C# für Einsteiger - Timer IC NE  · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

7.11 Übungsbeispiel! Textverschlüsselung

In diesem Beispiel verschlüsseln wir einen Text. Jedes eingegebene Zeichen soll soll durch sein nachfolgendes

ersetzt werden.

Wir bauen ein Formular mit mehrzeiligen Textboxen auf. Um eine Textbox mehrzeilig zu verwenden, setzen

wir in den Eigenschaften der Textbox

Buchstaben werden intern als ASCII

gespeichert. Der Buchstabe A entspricht dem ASCII

Eine vollständige ASCII-Tabelle finden Sie im Anhang.

Der Datentyp char speichert ein Zeichen als

private void cmd_start_Click(

{

string neu = "", original;

char buchstabe;

original = txt_1.Text;

for (int i = 0; i < orig

{

buchstabe = original[i];

neu = neu + Convert

}

txt_2.Text = neu;

}

Wenn Sie im Originaltext den Buchstaben z oder Z eingeben, so ist der nachfolgende kein Buchstabe mehr.

Versuchen Sie das Programm so umzuändern, dass nach einem z ein a bzw. nach einem Z ein A umgewandelt

wird.

Textverschlüsselung

In diesem Beispiel verschlüsseln wir einen Text. Jedes eingegebene Zeichen soll soll durch sein nachfolgendes

Wir bauen ein Formular mit mehrzeiligen Textboxen auf. Um eine Textbox mehrzeilig zu verwenden, setzen

in den Eigenschaften der Textbox Multiline auf true.

Buchstaben werden intern als ASCII-Zeichen (American Standard Code for Information Interchange)

gespeichert. Der Buchstabe A entspricht dem ASCII-Code 65, B = 66 usw.

inden Sie im Anhang.

speichert ein Zeichen also als ASCII-Code.

cmd_start_Click(object sender, EventArgs e)

, original;

original = txt_1.Text;

i = 0; i < original.Length; i++)

buchstabe = original[i];

Convert.ToChar(buchstabe + 1);

Wenn Sie im Originaltext den Buchstaben z oder Z eingeben, so ist der nachfolgende kein Buchstabe mehr.

e das Programm so umzuändern, dass nach einem z ein a bzw. nach einem Z ein A umgewandelt

Copyright 2009 – Heimo Gaicher

In diesem Beispiel verschlüsseln wir einen Text. Jedes eingegebene Zeichen soll soll durch sein nachfolgendes

Wir bauen ein Formular mit mehrzeiligen Textboxen auf. Um eine Textbox mehrzeilig zu verwenden, setzen

Zeichen (American Standard Code for Information Interchange)

Wenn Sie im Originaltext den Buchstaben z oder Z eingeben, so ist der nachfolgende kein Buchstabe mehr.

e das Programm so umzuändern, dass nach einem z ein a bzw. nach einem Z ein A umgewandelt

Page 29: Leseprobe C# für Einsteiger - Timer IC NE  · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

Copyright 2009 – Heimo Gaicher

7.13 InputBox aus Visual Basic

Wir „borgen“ uns aus Visual Basic die InputBox aus. Dafür benötigen wir einen Verweis auf Visual Basic.

Hierzu klicken wir im Projektmappen-Explorer mit der rechten Maustaste auf Verweise und wählen „Verweis

hinzufügen“.

Es öffnet sich ein neues Fenster.

Wir wählen den Verweis „Microsoft Visual Basic“ und bestätigen mit OK.

Nun können wir die InputBox aus Visual Basic einbauen.

Page 30: Leseprobe C# für Einsteiger - Timer IC NE  · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

7.17 Übungsbeispiel Würfelspiel

Wir programmieren ein Würfelspiel mit 6 Würfeln. Pro Wurf ist also eine Augensumme von min. 6 bis max.

36 möglich.

Erstellen Sie folgendes Formular.

Wenn Sie auf den Pfeil klicken, öffnet sich ein Fenster

auswählen bzw. importieren, die Größe festlegen usw.

Der Spieler gibt einen Tip ab und es soll sich eine MessageBox melden.

Klickt der Spieler auf den Button „Würfeln“, sollen die gewürfelten Augen sowie die Augensumme

ausgegeben werden.

Um eine Grafik in das Formular

einzufügen wählen Sie in der Toolbox

„PictureBox“ aus und ziehen sie in das

Formular.

Übungsbeispiel Würfelspiel

rfelspiel mit 6 Würfeln. Pro Wurf ist also eine Augensumme von min. 6 bis max.

Wenn Sie auf den Pfeil klicken, öffnet sich ein Fenster mit den PictureBox Aufgaben. Hier können Sie ein Bild

importieren, die Größe festlegen usw.

Der Spieler gibt einen Tip ab und es soll sich eine MessageBox melden.

Klickt der Spieler auf den Button „Würfeln“, sollen die gewürfelten Augen sowie die Augensumme

einzufügen wählen Sie in der Toolbox

„PictureBox“ aus und ziehen sie in das

Copyright 2009 – Heimo Gaicher

rfelspiel mit 6 Würfeln. Pro Wurf ist also eine Augensumme von min. 6 bis max.

mit den PictureBox Aufgaben. Hier können Sie ein Bild

Klickt der Spieler auf den Button „Würfeln“, sollen die gewürfelten Augen sowie die Augensumme

Page 31: Leseprobe C# für Einsteiger - Timer IC NE  · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

7.18 Die Klasse RadioButton

Radio Buttons sind Optionsschaltflächen. Sie bieten dem Benutzer Optionen an, die sich aber gegenseitig

ausschließen. Sie ähneln den Kontrollkästchen, wobei aber immer nur e

sein kann.

Optionsschaltflächen sind in einer Gruppeein Panel erstellen. Eine GroupBox

nicht ab.

Programmieren Sie einen Taschenrechner mit RadioButtons!

Aus der Toolbox ziehen Sie die GroupBox.

Die wichtigste Eigenschaft eines RadioButton i

Radio Buttons sind Optionsschaltflächen. Sie bieten dem Benutzer Optionen an, die sich aber gegenseitig

ausschließen. Sie ähneln den Kontrollkästchen, wobei aber immer nur eine einzige Optionsschaltfläche aktiv

einer Gruppe zusammengefasst. Daher müssen Sie vorher eine

GroupBox hebt sich mit einem Rahmen von der Form ab. Ein

einen Taschenrechner mit RadioButtons!

in die Form und den

Die wichtigste Eigenschaft eines RadioButton ist Checked. Diese wird bei der Abfrage auf

Copyright 2009 – Heimo Gaicher

Radio Buttons sind Optionsschaltflächen. Sie bieten dem Benutzer Optionen an, die sich aber gegenseitig

ine einzige Optionsschaltfläche aktiv

zusammengefasst. Daher müssen Sie vorher eine GroupBox oder

hebt sich mit einem Rahmen von der Form ab. Ein Panel hebt sich optisch

ziehen Sie in die

Diese wird bei der Abfrage auf true gesetzt.

Page 32: Leseprobe C# für Einsteiger - Timer IC NE  · PDF fileEin C#-Programm besteht aus Klassen. Eine Klasse beschreibt Daten und Operationen, die ausgeführt werden können

7.22 Anwendungen für andere Nutzer veröffentlichen

Mit dem RGB-Farbmischer haben Sie nun ein Program

läuft. Damit auch andere Benutzer dieses Programm ohne Entwicklungsumgebung öffnen und verwenden

können müssen Sie es zuvor veröffentlichen.

Wählen Sie im Menü „Erstellen“ und „Farben veröffentlichen“.

Es meldet sich der Publishing-Assistent. Akzeptieren Sie die Grundeinstellungen und klicken Sie auf Fertig

stellen.

Im entsprechenden Unterordner (z.B.: entsprechenden Installationsdateien

Hier werden die

Unterstützungsdateien

für den Installer

gespeichert

Diese Datei teilt dem

Installer alles mit, was

bei der Installation des

Programmes

eingeschlossen werden

muss.

Anwendungen für andere Nutzer veröffentlichen

Farbmischer haben Sie nun ein Programm, welches aber nur auf Ihrem Computer in der IDE

läuft. Damit auch andere Benutzer dieses Programm ohne Entwicklungsumgebung öffnen und verwenden

können müssen Sie es zuvor veröffentlichen.

Wählen Sie im Menü „Erstellen“ und „Farben veröffentlichen“.

Assistent. Akzeptieren Sie die Grundeinstellungen und klicken Sie auf Fertig

Im entsprechenden Unterordner (z.B.: file:///C:/Visual Studio 2008/Farben/Farben/publish

entsprechenden Installationsdateien erstellt.

Diese Datei teilt dem

Installer alles mit, was

bei der Installation des

Programmes

eingeschlossen werden

muss.

Die Setup-Datei. Damit

können die Benutzer

das Programm

installieren.

Copyright 2009 – Heimo Gaicher

m, welches aber nur auf Ihrem Computer in der IDE

läuft. Damit auch andere Benutzer dieses Programm ohne Entwicklungsumgebung öffnen und verwenden

Assistent. Akzeptieren Sie die Grundeinstellungen und klicken Sie auf Fertig

file:///C:/Visual Studio 2008/Farben/Farben/publish/) werden nun die

Datei. Damit

können die Benutzer