178 83 10MB
German Pages 243 [244] Year 2003
C# für Ingenieure Mit Beispielen zur Analyse elektrischer Schaltungen von Lothar Czarnecki
Oldenbourg Verlag München Wien
Die Informationen in diesem Buch werden ohne Rücksicht auf einen eventuellen Patentschutz veröffentlicht. Alle in diesem Buch enthaltenen Programme und Verfahren wurden nach bestem Wissen erstellt und mit Sorgfalt getestet. Dennoch sind Fehler nicht ganz auszuschließen. Aus diesem Grund ist das im vorliegenden Buch enthaltene oder zu ihm gehörende Programm-Material mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Autor und Verlag übernehmen daher keine Verantwortung und werden keine Haftung übernehmen, die auf irgendeine Art aus der Benutzung dieses ProgrammMaterials oder Teilen davon entsteht. Fast alle Hardware- und Softwarebezeichnungen, die in diesem Buch erwähnt werden, sind gleichzeitig eingetragene Warenzeichen oder sollten als solche betrachtet werden.
Bibliografische Information Der Deutschen Bibliothek Die Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über abrufbar.
© 2003 Oldenbourg Wissenschaftsverlag GmbH Rosenheimer Straße 145, D-81671 München Telefon: (089) 45051-0 www.oldenbourg-verlag.de Das Werk einschließlich aller Abbildungen ist urheberrechtlich geschützt. Jede Verwertung außerhalb der Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlages unzulässig und strafbar. Das gilt insbesondere für Vervielfältigungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Bearbeitung in elektronischen Systemen. Lektorat: Sabine Krüger, Kathrin Veigel Herstellung: Rainer Hartl Umschlagkonzeption: Kraxenberger Kommunikationshaus, München Gedruckt auf säure- und chlorfreiem Papier Druck: R. Oldenbourg Graphische Betriebe Druckerei GmbH ISBN 3-486-27357-4
Vorwort Dieses Buch ist aus den Lehrveranstaltungen fur Ingenieure und Wirtschaftsingenieure entstanden, die vom Autor an der Fachhochschule Kempten gehalten werden. Es fuhrt in die Informatik und die Grundgebiete der neuen Programmiersprache C# ein und verwendet dazu Beispiele aus der Elektrotechnik. Warum ausgerechnet C#? Diese bei der Firma Microsoft entstandene Programmiersprache erfüllt alle Anforderungen, die an eine moderne Sprache gestellt werden müssen: Sie ermöglicht im Gegensatz zu älteren Programmiersprachen wie FORTRAN und С objektorientiertes Programmieren, was für größere Projekte und das Arbeiten im Team unerlässlich ist. Im Gegensatz zu C++ ist sie weitgehend frei von den Fallstricken und Ungereimtheiten, die gerade dem Informatiker im Nebenfach das Leben oft sehr schwer machen. Und schließlich wurde sie von Microsoft, dem größten Softwarehersteller der Welt, auf den Markt gebracht und von ihm selbst für die eigenen Softwareentwicklungen verwendet, was die Garantie gibt, dass sich die Beschäftigung mit ihr nicht irgendwann mangels Verbreitung als nutzlose Investition erweist. Obwohl von Microsoft entwickelt, ist sie überdies standardisiert und somit für andere Anbieter offen. Ingenieure haben ihre eigene Sicht der Welt. Kein Ingenieur programmiert gerne Beispiele, die mit seinem Fachgebiet nichts zu tun haben - nicht einmal zu Übungszwecken. Daher werden fast ausschließlich Beispiele aus den Ingenieurwissenschaften als Übungsbeispiele verwendet, vorwiegend aus der Elektrotechnik. Im Verlauf des Buchs entstehen Programme, die ausgesprochen nützlich sind - ein Rechner ähnlich demjenigen, der mit dem Betriebssystem Windows als Zubehör mitgeliefert wird, allerdings mit einem großen Unterschied: Dieser Rechner kann auch mit komplexen Zahlen umgehen, die in der Wechselstromtechnik und in der Schwingungslehre eine große Rolle spielen. Außerdem entsteht im letzten Kapitel ein Werkzeug zur Schaltungsanalyse, das ausgezeichnet zur Kontrolle der Lösung von Prüfungsaufgaben aus dem Gebiet der Grundlagen der Elektrotechnik verwendet werden kann. Das Buch setzt im zweiten Teil (ab Kapitel 9) elementare Grundkenntnisse der Elektrotechnik voraus, wie sie in den ersten beiden Semestern eines Hochschul- oder Fachhochschulstudiums vermittelt werden. Diese Grundlagen werden vor ihrer Verwendung hier nur kurz zusammengefasst und zitiert. Die Grundlagen der Informatik dagegen werden ausführlich eingeführt, ebenso wie die Notationsweisen der Informatik und die grundlegenden Gemeinsamkeiten der Programmiersprachen. Natürlich bin ich für Anregungen offen. Für Fragen oder Kommentare stehe ich unter
VI
Vorwort
[email protected] zur Verfugung. Die Beispielaufgaben sollen möglichst von jedem Lernenden selbst gelöst werden. Meine Lösungen stehen auf der Homepage des Verlags zur Verfugung. Ganz herzlich bedanken möchte ich mich bei meinen Fachkollegen von der Fachhochschule Kempten fur viele Anregungen und Diskussionen, besonders bei Prof. Dr. Bernhard Neudecker und Dipl.-Ing. Norbert Grotz für das Korrekturlesen des Manuskripts. Meiner Frau Marlis sei Dank für ihre Geduld und ihr Verständnis mir gegenüber beim Schreiben dieses Buchs. Haldenwang im Allgäu, Prof. Dr.-Ing. Lothar Czarnecki
Inhalt Vorwort
V
1
Einführung
1
1.1
Konzeption
2
1.2
Ein einfaches Beispielprogramm
6
1.3
Übungen
11
2
Grundlagen der Programmierung
13
2.1
Terminologie
13
2.2
Syntaxbeschreibung von Programmiersprachen
16
2.3
Programmentwicklung und Entwicklungsphasen
18
2.4
Computer
20
2.5
Übungen
22
3
Variablen, Datentypen und Operatoren
23
3.1
Grundlagen
23
3.2
Variablen
24
3.3
Gültigkeitsbereich (Kontext) von Variablen
27
3.4
Werttypen und Referenztypen
28
3.5
Literale
29
3.6
Operatoren
31
3.7
Übungen
37
4
Verzweigungen und Schleifen
41
4.1
Verzweigungen
41
4.2
Schleifen
45
4.3
Übungen
50
VIII
Inhalt
5
Fehlerbehandlung
53
5.1
Arten von Fehlern
53
5.2
Überlauf ohne Fehlerprüfung
54
5.3
Fehlerprüfung
55
5.4
Übungen
62
6
Prozeduren und Funktionen
63
6.1
Prozeduren
63
6.2
Funktionen
66
6.3
Parameter
68
6.4
Überladen von Funktionen
76
6.5
Übungen
77
7
Grundzüge der Objektorientierung
81
7.1
Objekte und Klassen
82
7.2
Attribute, Operationen und Zusicherungen
83
7.3
Vererbung
85
7.4
Assoziationen und Aggregationen
88
7.5
Nachrichtenaustausch
89
7.6
Statische und dynamische Polymorphie
90
7.7
Übungen
91
8
Objektorientierung in C#
93
8.1
Die Klasse CPunkt
95
8.2
Die Klasse CZweipol
96
8.3
Die Klasse CWiderstand
99
8.4
Ein kleines Testprogramm für CWiderstand
105
8.5
Übungen
108
8.6
Anhang zu Abschnitt 8: Programmlisting
108
9
Konstruktoren und Operatorenüberladung
113
9.1
Komplexe Zahlen
113
9.2
Konstruktoren der Klasse CKomplexeZahl
115
9.3
Zugriff auf die Attribute der Klasse
117
Inhalt
IX
9.4
Operatorenüberladung
119
9.5
Übungen
123
10
Felder
125
10.1
Felder und Feldvariablen (Feldreferenzen)
125
10.2
Der Gauß-Algorithmus
129
10.3
Übungen
140
11
Zeichenketten
143
11.1
Die Klasse string
143
11.2
Methoden der Klasse string
149
11.3
Übungen
151
12
Schnittstellen
153
12.1
Nachrichtenquellen und Nachrichtenempfänger
153
12.2
Zuordnung von Quellen zu Empfängern
156
12.3
Übungen
159
13
Die grafische Benutzerschnittstelle - ein elementarer Einstieg
161
13.1
Erzeugung des Programmgerüsts
161
13.2
Einfügen von Steuerelementen
167
13.3
Ereignisbehandlung
169
13.4
Ein einfacher Taschenrechner
170
13.5
Übungen
177
13.6
Anhang: Gesamter Quellcode für das erste Beispiel dieses Abschnitts
177
14
Weiteres über GUI-Konzepte - ein komplexer "Taschenrechner"
181
14.1
Verbessertes Design des Taschenrechners
181
14.2
1. Variante: reeller Taschenrechner
184
14.3
2. Variante: Rechner für komplexe Zahlen
191
14.4
Übungen
197
15
Analyse von Wechselstromschaltungen
199
15.1
Anforderungen
199
15.2
Knotenpotentialverfahren
202
15.3
Softwarekonzept und Klassenaufteilung
205
X
Inhalt
15.4 15.4.1 15.4.2 15.4.3 15.4.4
Verwendete Steuerelemente Registerklassen-Steuerelement (TabControl) Panel ListBox DataGrid und DataSet
208 208 209 210 210
15.5
Einige Klassen des Projekts im Einzelnen
213
16
Anhang
215
16.1
Verwendete Literatur
215
16.2
Schlüsselwörter der Programmiersprache C#
216
16.3
Verzeichnis der Abbildungen
220
16.4 16.4.1 16.4.2 16.4.3 16.4.4 16.4.5
Lösungen zu den Übungen Kapitel 3 Kapitel 4 Kapitel 5 Kapitel 6 Kapitel 7
222 222 223 227 228 231
16.5
Index
232
1
Einführung
Die Programmiersprache „C#" wurde von Anders Heijlsberg bei der Firma Microsoft' entwickelt. Sie ist Teil eines Rahmenwerks, des ,,.net-Frameworks", das darauf ausgerichtet ist, Anwendungen fur das Internet zu entwickeln und stellt die Antwort von Microsoft auf die Sprache „Java" der Firma Sun 2 dar. Beide Sprachen unterstützen im Gegensatz zur Sprache „C++" die vollständig objektorientierte Programmierweise 3 und ermöglichen eine saubere Trennung der Datentypen 4 . C# vermeidet darüber hinaus im Gegensatz zu C++ und Java typische Fehler, die entstehen, wenn Operatoren verwechselt werden. Die Namensgebung soll darauf hinweisen, dass C# (englisch c-sharp oder deutsch cis ausgesprochen, wie der Halbton über с in der Musik) der Nachfolger von С bzw. C++ ist. Tatsächlich erinnert die Syntax der Sprache jedoch eher an Java. Die gesamte Struktur des Rahmenwerks zeigt Abbildung 1. C# ist eine von mehreren Programmiersprachen, die auf einer gemeinsamen Sprachspezifikation („Common Language Specification", CLS) aufsetzen. Alle diese Sprachen haben einen gemeinsamen Vorrat an Datentypen und Klassen 5 . Dadurch wird der Übergang zwischen den Sprachen sehr einfach. Aus diesem Grund kann man auch Klassen, die in einer dieser Sprache erstellt wurden, in einer anderen Sprache weiterverwenden. Die CLS baut wiederum auf einer Anzahl Klassen auf, die fur die Anwendung zur Verfugung stehen. Die gemeinsame Laufzeitumgebung („Common Language Runtime", CLR) schließlich ist für die Programmausfuhrung zuständig. Dabei wird der Programmcode zunächst in einen Zwischencode („Intermediate Language", IL) umgewandelt, der erst unmittelbar vor der Programmausfuhrung in den Maschinencode umgewandelt wird, den der im Rechner vorhandenene Mikroprozessor verstehen und ausführen kann.
' 1975 von Bill Gates und Paul Allen gegründeter amerikanischer Softwarehersteller mit Sitz in Redmond, Washington. 2
3
Sun Microsystems, gegründet 1982. Beim objektorientierten Programmieren besteht ein Programm aus einer Reihe von Objekten, die Nachrichten untereinander austauschen. Eine genaue Besprechung dieses Programmierkonzeptes erfolgt in Kapitel 7.
4
Datentypen werden in Kapitel 3 behandelt. 5
Eine Klasse ist eine Art Schablone, aus der die Objekte erzeugt werden. Näheres hierzu siehe Kapitel 7.
2
1 Einfuhrung
Abbildung 1: Struktur des
1.1
net-Frameworks
Konzeption
Dieses Buch soll den Leser in die Grundkonzepte des modernen objektorientierten Programmierens mit Hilfe dieser neuen Programmiersprache einfuhren. Dazu werden im nächsten Abschnitt6 die benötigten Grundlagen aus der praktischen Informatik7 zusammengestellt. Darauf aufbauend werden in Abschnitt 3 die elementaren Anweisungen, Variablen, Datentypen und Operatoren behandelt. Die Abschnitte 4 und 5 zeigen Kontrollstrukturen im Allge-
6
Die Begriffe Abschnitt und Kapitel werden in diesem Buch synonym verwendet.
7
Unter Informatik (engl, computer science) versteht man die Wissenschaft von der systematischen Darstellung, Speicherung, Verarbeitung und Übertragung von Informationen mit Hilfe von Computern. Sie ist unterteilt in die Teilbereiche der theoretischen, praktischen, angewandten und technischen Informatik. Die praktische Informatik beschäftigt sich mit dem Erstellen von Computerprogrammen.
3
1.1 Konzeption
meinen und eine besondere Kontrollstruktur bei der Fehlerbehandlung. Abschnitt 6 beschäftigt sich mit den Prozeduren. Die Abschnitte 7-9 fuhren die objektorientierte Programmierung zunächst allgemein und dann C#-spezifisch ein. Die Abschnitte 10 und 11 behandeln dann zwei spezielle Klassen von C#, nämlich Felder und Zeichenketten. In den übrigen Abschnitten geht es dann um den Entwurf grafischer Oberflächen.
JSJiSi
Bitte die Zahlen durch Klicken auf die entsprechenden Bereiche eingeben: x-y
Oper at or en +
r-phi
[_