Von der Analyse bis zur Dokumentation
E-Book, Deutsch, 362 Seiten
ISBN: 978-3-446-44905-3
Verlag: Hanser, Carl
Format: PDF
Kopierschutz: Adobe DRM (»Systemvoraussetzungen)
Autoren/Hrsg.
Weitere Infos & Material
1;Inhalt;8
2;Einleitung;14
3;1 Systematik der Problemlösung;18
3.1;1.1 Phasen der Programmentwicklung;18
3.2;1.2 Software-Lebenszyklus;20
3.3;1.3 Software-Entwicklungsverfahren;22
4;2 Erste Gehversuche mit C/C++;27
4.1;2.1 Warum gerade C/C++?;27
4.2;2.2 Compiler und Interpreter;29
4.3;2.3 Übersetzen eines C/C++-Programms;31
4.4;2.4 Programmstart;32
5;3 Die Entwicklungsumgebung Visual C++;33
5.1;3.1 Installation von VC++;33
5.2;3.2 Starten von VC++;35
5.3;3.3 Erstellen eines neuen Projektes;37
5.3.1;3.3.1 Win32-Projekte;38
5.3.1.1;3.3.1.1 Variante 1 – VC++ leistet Vorarbeit;39
5.3.1.2;3.3.1.2 Variante 2 – leeres Projekt;40
5.3.2;3.3.2 CLR-Projekte;43
5.4;3.4 Übersetzen eines eigenen Programms;45
5.5;3.5 Ausführen eines eigenen Programms;48
5.6;3.6 Paradigmen der Projektorganisation;48
6;4 Grundlegende Sprach- und Steuerungselemente;51
6.1;4.2 Datentypen und Variablen;52
6.1.1;4.2.1 Variablennamen;53
6.1.2;4.2.2 Ganzzahlige Variablen;53
6.1.3;4.2.3 Fließkommazahlen;55
6.1.4;4.2.4 Zeichen;56
6.1.5;4.2.5 Felder;57
6.1.5.1;4.2.5.1 Eindimensionale Felder;57
6.1.5.2;4.2.5.2 Mehrdimensionale Felder;58
6.1.5.3;4.2.5.3 Zugriff auf die Elemente eines Feldes;60
6.1.5.4;4.2.5.4 Startwertzuweisung für ein- und mehrdimensionale Arrays;62
6.1.6;4.2.6 Zeichenketten;64
6.2;4.3 Konstanten;65
6.3;4.4 Operatoren;66
6.3.1;4.4.1 Vorzeichenoperatoren;66
6.3.2;4.4.2 Arithmetische Operatoren;66
6.3.2.1;4.4.2.1 Addition +;66
6.3.2.2;4.4.2.2 Subtraktion ?;66
6.3.2.3;4.4.2.3 Multiplikation *;67
6.3.2.4;4.4.2.4 Division /;67
6.3.2.5;4.4.2.5 Modulo %;67
6.3.2.6;4.4.2.6 Zuweisung =;67
6.3.2.7;4.4.2.7 Kombinierte Zuweisungen;68
6.3.2.8;4.4.2.8 Inkrementierung ++;68
6.3.2.9;4.4.2.9 Dekrementierung --;69
6.3.3;4.4.3 Vergleichsoperatoren;69
6.3.3.1;4.4.3.1 Gleichheit ==;69
6.3.3.2;4.4.3.2 Ungleichheit !=;69
6.3.3.3;4.4.3.3 Kleiner <;70
6.3.3.4;4.4.3.4 Größer >;70
6.3.3.5;4.4.3.5 Kleiner gleich <=;70
6.3.3.6;4.4.3.6 Größer gleich >=;71
6.3.4;4.4.4 Logische Operatoren;71
6.3.4.1;4.4.4.1 Logisches NICHT !;71
6.3.4.2;4.4.4.2 Logisches UND &&;71
6.3.4.3;4.4.4.3 Logisches ODER ||;71
6.3.5;4.4.5 Typumwandlungsoperator;72
6.3.6;4.4.6 Speicherberechnungsoperator;72
6.3.7;4.4.7 Bedingungsoperator;73
6.3.8;4.4.8 Indizierungsoperator;74
6.3.9;4.4.9 Klammerungsoperator;74
6.4;4.5 Anweisungen und Blöcke;76
6.5;4.6 Alternationen;76
6.5.1;4.6.1 Einfache Abfragen (if – else);76
6.5.2;4.6.2 Mehrfachabfragen (else – if);77
6.5.3;4.6.3 Die switch-case-Anweisung;78
6.6;4.7 Iterationen;80
6.6.1;4.7.1 Zählergesteuerte Schleifen (for);80
6.6.2;4.7.2 Kopfgesteuerte Schleifen (while);84
6.6.3;4.7.3 Fußgesteuerte Schleifen (do – while);85
6.6.4;4.7.4 Schleifenabbruch (continue);86
6.6.5;4.7.5 Schleifenabbruch (break);87
6.6.6;4.7.6 Schleifenumwandlungen;89
6.7;4.8 Funktionen;89
6.7.1;4.8.1 Formaler Aufbau einer Funktion;90
6.7.1.1;4.8.1.1 Der Funktionskopf;91
6.7.1.2;4.8.1.2 Der Funktionsrumpf;92
6.7.2;4.8.2 Datentyp und Deklaration einer Funktion – Prototyping;93
6.7.3;4.8.3 Das Prinzip der Parameterübergabe;98
6.7.3.1;4.8.3.1 Aufrufverfahren call by value;98
6.7.3.2;4.8.3.2 Aufrufverfahren call by reference;100
6.7.3.3;4.8.3.3 Adressoperator, Zeiger und Dereferenzierung;103
6.7.4;4.8.4 Regeln für ein erfolgreiches Prototyping;104
6.7.5;4.8.5 Die exit()-Funktion;105
6.7.6;4.8.6 Rekursive Funktionen;105
6.8;4.9 Ein- und Ausgabe;108
6.8.1;4.9.1 Formatierte Eingabe mit scanf();108
6.8.2;4.9.2 Formatierte Ausgabe mit printf();109
6.8.3;4.9.3 Arbeiten mit Dateien;110
6.8.3.1;4.9.3.1 Öffnen der Datei;111
6.8.3.2;4.9.3.2 Verarbeiten der Datensätze;111
6.8.3.3;4.9.3.3 Schließen der Datei;112
6.8.3.4;4.9.3.4 stdio.h;112
6.8.3.5;4.9.3.5 fflush() und stdin;114
7;5 Strukturierte Programmierung;115
7.1;5.1 Problemstellung;116
7.2;5.2 Problemanalyse;117
7.3;5.3 Struktogramm nach Nassi-Shneiderman;120
7.3.1;5.3.1 Sequenz;122
7.3.2;5.3.2 Alternation;124
7.3.3;5.3.3 Verschachtelung;125
7.3.4;5.3.4 Verzweigung;126
7.3.5;5.3.5 Schleifen;128
7.3.5.1;5.3.5.1 Zählergesteuerte Schleife;128
7.3.5.2;5.3.5.2 Kopfgesteuerte Schleife;132
7.3.5.3;5.3.5.3 Fußgesteuerte Schleifen;134
7.3.5.4;5.3.5.4 Endlosschleifen;135
7.3.5.5;5.3.5.5 Kriterien zur Schleifenauswahl;135
7.3.6;5.3.6 Programm- oder Funktionsaufruf;135
7.3.7;5.3.7 Aussprung;136
7.3.8;5.3.8 Rechnergestützte Erstellung von Struktogrammen;137
7.3.8.1;5.3.8.1 StruktEd;137
7.3.8.2;5.3.8.2 hus-Struktogrammer;144
7.4;5.4 Flussdiagramm nach DIN 66001;152
7.5;5.5 Programmerstellung;154
7.6;5.6 Programmtest;154
7.7;5.7 Programmlauf;155
7.8;5.8 Dokumentation nach DIN 66230;156
7.8.1;5.8.1 Funktion und Aufbau des Programms;156
7.8.2;5.8.2 Programmkenndaten;157
7.8.3;5.8.3 Betrieb des Programms;158
7.8.4;5.8.4 Ergänzungen;158
7.9;5.9 Aspekte des Qualitätsmanagements EN-ISO 9000;159
7.10;5.10 Algorithmus – was ist das?;160
7.11;5.11 EVA-Prinzip;166
7.12;5.12 Programmierung von Formelwerken;167
8;6 Lösung einfacher Probleme;172
8.1;6.1 Umrechnung von Temperatursystemen;172
8.2;6.2 Flächenberechnung geradlinig begrenzter Flächen (Polygone);178
8.2.1;6.2.1 Erste Problemvariation: Berechnung der Schwerpunktkoordinaten S(xS ; yS) von polygonförmig begrenzten Flächen;185
8.2.2;6.2.2 Zweite Problemvariation: Suche nach einem „günstigen“ Treffpunkt;186
8.3;6.3 Berechnung einer Brückenkonstruktion;187
8.4;6.4 Schaltjahrüberprüfung;191
8.5;6.5 Ein Problem aus der Energiewirtschaft;197
8.6;6.6 Logarithmische Achsenteilung;207
9;7 Objektorientierte Programmierung (OOP);215
9.1;7.1 Modellbildung mittels Abstraktion;215
9.2;7.2 Klassen und Objekte;216
9.3;7.3 Attribute und Methoden einer Klasse;219
9.4;7.4 Bruchrechnung mit OOP;220
9.5;7.5 Vererbung;229
9.6;7.6 Strings;236
9.7;7.7 Typumwandlungen;237
9.8;7.8 Strukturierte Programmierung vs. OOP;241
10;8 Lösung fortgeschrittener Probleme;242
10.1;8.1 Grafische Darstellung funktionaler Abhängigkeiten;242
10.1.1;8.1.1 Welt- und Screenkoordinaten;244
10.1.2;8.1.2 Koordinatentransformationen;246
10.1.3;8.1.3 Darstellung der Sinusfunktion;252
10.1.4;8.1.4 Darstellung quadratischer Parabeln;256
10.1.5;8.1.5 Spannungsteilerkennlinien;259
10.2;8.2 Lösung technisch-wissenschaftlicher Probleme;261
10.2.1;8.2.1 Widerstandsreihen E6 bis E96;261
10.2.2;8.2.2 Farbcodierung von Widerständen nach DIN 41429;264
10.2.3;8.2.3 Fourier-Synthese periodischer empirischer Funktionen;267
10.2.4;8.2.4 Fourier-Analyse empirischer Funktionen;275
10.3;8.3 Nullstellenbestimmung von Funktionen;280
10.3.1;8.3.1 Inkrementverfahren und Intervallhalbierung;280
10.3.2;8.3.2 Die regula falsi;285
10.3.3;8.3.3 Das Newton-Verfahren;287
10.4;8.4 Numerische Integration;290
10.4.1;8.4.1 Riemannsche Unter- und Obersummen;290
10.4.2;8.4.2 Trapezregel;294
10.4.3;8.4.3 Simpsonsche Regel;299
10.4.4;8.4.4 Effektivwertberechnungen;304
10.5;8.5 Einbindung eigener Klassen;306
10.5.1;8.5.1 Das „Platinenproblem“ als objektorientierte Konsolenanwendung;306
10.5.2;8.5.2 Das „Platinenproblem“ in der Erweiterung mit grafischer Benutzeroberfläche;311
11;9 Lösung komplexer Probleme;315
11.1;9.1 Kurvendiskussion und Funktionsplotter am Beispiel ganzrationaler Funktionen bis 3. Ordnung;315
11.2;9.2 Ausgleichsrechnung – Bestimmung der „besten“ Geraden in einer Messreihe;318
11.3;9.3 Digitaltechnik;328
12;10 Tabellen und Übersichten;342
12.1;10.1 Datentypen und ihre Wertebereiche;342
12.2;10.2 Vergleich der Symbole nach DIN 66 001 und der Nassi-Shneiderman-Darstellung;343
12.3;10.3 Schlüsselwörter ANSI C;344
12.4;10.4 Erweiterte Schlüsselwörter C++;346
12.5;10.5 ASCII-Tabelle;349
12.6;10.6 Standardfunktionen und ihre Zuordnung zu den Header-Dateien (Include);351
13;Literatur;355
14;Index;356