Technische Probleme lösen mit C/C++ - Von der Analyse bis zur Dokumentation

Norbert Heiderich, Wolfgang Meyer

Technische Probleme lösen mit C/C++

Von der Analyse bis zur Dokumentation

2016

362 Seiten

Format: PDF, ePUB, Online Lesen

E-Book: €  26,99

E-Book kaufen

E-Book kaufen

ISBN: 9783446449053

 

Inhalt

8

Einleitung

14

1 Systematik der Problemlösung

18

1.1 Phasen der Programmentwicklung

18

1.2 Software-Lebenszyklus

20

1.3 Software-Entwicklungsverfahren

22

2 Erste Gehversuche mit C/C++

27

2.1 Warum gerade C/C++?

27

2.2 Compiler und Interpreter

29

2.3 Übersetzen eines C/C++-Programms

31

2.4 Programmstart

32

3 Die Entwicklungsumgebung Visual C++

33

3.1 Installation von VC++

33

3.2 Starten von VC++

35

3.3 Erstellen eines neuen Projektes

37

3.3.1 Win32-Projekte

38

3.3.1.1 Variante 1 – VC++ leistet Vorarbeit

39

3.3.1.2 Variante 2 – leeres Projekt

40

3.3.2 CLR-Projekte

43

3.4 Übersetzen eines eigenen Programms

45

3.5 Ausführen eines eigenen Programms

48

3.6 Paradigmen der Projektorganisation

48

4 Grundlegende Sprach- und Steuerungselemente

51

4.2 Datentypen und Variablen

52

4.2.1 Variablennamen

53

4.2.2 Ganzzahlige Variablen

53

4.2.3 Fließkommazahlen

55

4.2.4 Zeichen

56

4.2.5 Felder

57

4.2.5.1 Eindimensionale Felder

57

4.2.5.2 Mehrdimensionale Felder

58

4.2.5.3 Zugriff auf die Elemente eines Feldes

60

4.2.5.4 Startwertzuweisung für ein- und mehrdimensionale Arrays

62

4.2.6 Zeichenketten

64

4.3 Konstanten

65

4.4 Operatoren

66

4.4.1 Vorzeichenoperatoren

66

4.4.2 Arithmetische Operatoren

66

4.4.2.1 Addition +

66

4.4.2.2 Subtraktion ?

66

4.4.2.3 Multiplikation *

67

4.4.2.4 Division /

67

4.4.2.5 Modulo %

67

4.4.2.6 Zuweisung =

67

4.4.2.7 Kombinierte Zuweisungen

68

4.4.2.8 Inkrementierung ++

68

4.4.2.9 Dekrementierung --

69

4.4.3 Vergleichsoperatoren

69

4.4.3.1 Gleichheit ==

69

4.4.3.2 Ungleichheit !=

69

4.4.3.3 Kleiner <

70

4.4.3.4 Größer >

70

4.4.3.5 Kleiner gleich <=

70

4.4.3.6 Größer gleich >=

71

4.4.4 Logische Operatoren

71

4.4.4.1 Logisches NICHT !

71

4.4.4.2 Logisches UND &&

71

4.4.4.3 Logisches ODER ||

71

4.4.5 Typumwandlungsoperator

72

4.4.6 Speicherberechnungsoperator

72

4.4.7 Bedingungsoperator

73

4.4.8 Indizierungsoperator

74

4.4.9 Klammerungsoperator

74

4.5 Anweisungen und Blöcke

76

4.6 Alternationen

76

4.6.1 Einfache Abfragen (if – else)

76

4.6.2 Mehrfachabfragen (else – if)

77

4.6.3 Die switch-case-Anweisung

78

4.7 Iterationen

80

4.7.1 Zählergesteuerte Schleifen (for)

80

4.7.2 Kopfgesteuerte Schleifen (while)

84

4.7.3 Fußgesteuerte Schleifen (do – while)

85

4.7.4 Schleifenabbruch (continue)

86

4.7.5 Schleifenabbruch (break)

87

4.7.6 Schleifenumwandlungen

89

4.8 Funktionen

89

4.8.1 Formaler Aufbau einer Funktion

90

4.8.1.1 Der Funktionskopf

91

4.8.1.2 Der Funktionsrumpf

92

4.8.2 Datentyp und Deklaration einer Funktion – Prototyping

93

4.8.3 Das Prinzip der Parameterübergabe

98

4.8.3.1 Aufrufverfahren call by value

98

4.8.3.2 Aufrufverfahren call by reference

100

4.8.3.3 Adressoperator, Zeiger und Dereferenzierung

103

4.8.4 Regeln für ein erfolgreiches Prototyping

104

4.8.5 Die exit()-Funktion

105

4.8.6 Rekursive Funktionen

105

4.9 Ein- und Ausgabe

108

4.9.1 Formatierte Eingabe mit scanf()

108

4.9.2 Formatierte Ausgabe mit printf()

109

4.9.3 Arbeiten mit Dateien

110

4.9.3.1 Öffnen der Datei

111

4.9.3.2 Verarbeiten der Datensätze

111

4.9.3.3 Schließen der Datei

112

4.9.3.4 stdio.h

112

4.9.3.5 fflush() und stdin

114

5 Strukturierte Programmierung

115

5.1 Problemstellung

116

5.2 Problemanalyse

117

5.3 Struktogramm nach Nassi-Shneiderman

120

5.3.1 Sequenz

122

5.3.2 Alternation

124

5.3.3 Verschachtelung

125

5.3.4 Verzweigung

126

5.3.5 Schleifen

128

5.3.5.1 Zählergesteuerte Schleife

128

5.3.5.2 Kopfgesteuerte Schleife

132

5.3.5.3 Fußgesteuerte Schleifen

134

5.3.5.4 Endlosschleifen

135

5.3.5.5 Kriterien zur Schleifenauswahl

135

5.3.6 Programm- oder Funktionsaufruf

135

5.3.7 Aussprung

136

5.3.8 Rechnergestützte Erstellung von Struktogrammen

137

5.3.8.1 StruktEd

137

5.3.8.2 hus-Struktogrammer

144

5.4 Flussdiagramm nach DIN 66001

152

5.5 Programmerstellung

154

5.6 Programmtest

154

5.7 Programmlauf

155

5.8 Dokumentation nach DIN 66230

156

5.8.1 Funktion und Aufbau des Programms

156

5.8.2 Programmkenndaten

157

5.8.3 Betrieb des Programms

158

5.8.4 Ergänzungen

158

5.9 Aspekte des Qualitätsmanagements EN-ISO 9000

159

5.10 Algorithmus – was ist das?

160

5.11 EVA-Prinzip

166

5.12 Programmierung von Formelwerken

167

6 Lösung einfacher Probleme

172

6.1 Umrechnung von Temperatursystemen

172

6.2 Flächenberechnung geradlinig begrenzter Flächen (Polygone)

178

6.2.1 Erste Problemvariation: Berechnung der Schwerpunktkoordinaten S(xS ; yS) von polygonförmig begrenzten Flächen

185

6.2.2 Zweite Problemvariation: Suche nach einem „günstigen“ Treffpunkt

186

6.3 Berechnung einer Brückenkonstruktion

187

6.4 Schaltjahrüberprüfung

191

6.5 Ein Problem aus der Energiewirtschaft

197

6.6 Logarithmische Achsenteilung

207

7 Objektorientierte Programmierung (OOP)

215

7.1 Modellbildung mittels Abstraktion

215

7.2 Klassen und Objekte

216

7.3 Attribute und Methoden einer Klasse

219

7.4 Bruchrechnung mit OOP

220

7.5 Vererbung

229

7.6 Strings

236

7.7 Typumwandlungen

237

7.8 Strukturierte Programmierung vs. OOP

241

8 Lösung fortgeschrittener Probleme

242

8.1 Grafische Darstellung funktionaler Abhängigkeiten

242

8.1.1 Welt- und Screenkoordinaten

244

8.1.2 Koordinatentransformationen

246

8.1.3 Darstellung der Sinusfunktion

252

8.1.4 Darstellung quadratischer Parabeln

256

8.1.5 Spannungsteilerkennlinien

259

8.2 Lösung technisch-wissenschaftlicher Probleme

261

8.2.1 Widerstandsreihen E6 bis E96

261

8.2.2 Farbcodierung von Widerständen nach DIN 41429

264

8.2.3 Fourier-Synthese periodischer empirischer Funktionen

267

8.2.4 Fourier-Analyse empirischer Funktionen

275

8.3 Nullstellenbestimmung von Funktionen

280

8.3.1 Inkrementverfahren und Intervallhalbierung

280

8.3.2 Die regula falsi

285

8.3.3 Das Newton-Verfahren

287

8.4 Numerische Integration

290

8.4.1 Riemannsche Unter- und Obersummen

290

8.4.2 Trapezregel

294

8.4.3 Simpsonsche Regel

299

8.4.4 Effektivwertberechnungen

304

8.5 Einbindung eigener Klassen

306

8.5.1 Das „Platinenproblem“ als objektorientierte Konsolenanwendung

306

8.5.2 Das „Platinenproblem“ in der Erweiterung mit grafischer Benutzeroberfläche

311

9 Lösung komplexer Probleme

315

9.1 Kurvendiskussion und Funktionsplotter am Beispiel ganzrationaler Funktionen bis 3. Ordnung

315

9.2 Ausgleichsrechnung – Bestimmung der „besten“ Geraden in einer Messreihe

318

9.3 Digitaltechnik

328

10 Tabellen und Übersichten

342

10.1 Datentypen und ihre Wertebereiche

342

10.2 Vergleich der Symbole nach DIN 66 001 und der Nassi-Shneiderman-Darstellung

343

10.3 Schlüsselwörter ANSI C

344

10.4 Erweiterte Schlüsselwörter C++

346

10.5 ASCII-Tabelle

349

10.6 Standardfunktionen und ihre Zuordnung zu den Header-Dateien (Include)

351

Literatur

355

Index

356

 

© 2009-2024 ciando GmbH