Programmieren lernen mit C Bearbeitet von Karlheinz Zeiner 4., aktualisierte Auflage 2000. Buch. XIV, 361 S. Hardcover ISBN 978 3 446 21596 2 Format (B x L): 16,9 x 24,1 cm Gewicht: 730 g Weitere Fachgebiete > EDV, Informatik > Programmiersprachen: Methoden > Prozedurorientierte Programmierung Zu Leseprobe schnell und portofrei erhältlich bei Die Online-Fachbuchhandlung beck-shop.de ist spezialisiert auf Fachbücher, insbesondere Recht, Steuern und Wirtschaft. Im Sortiment finden Sie alle Medien (Bücher, Zeitschriften, CDs, ebooks, etc.) aller Verlage. Ergänzt wird das Programm durch Services wie Neuerscheinungsdienst oder Zusammenstellungen von Büchern zu Sonderpreisen. Der Shop führt mehr als 8 Millionen Produkte.
CARL HANSER VERLAG Karlheinz Zeiner Programmieren lernen mit C 3., überarbeitete und aktualisierte Auflage 3-446-21596-4 www.hanser.de
VII Überblick Teil 1 1 Programmieren lernen - Grundlagen... 1 1.1 Zwei kleine C Programme...1 1.2 Grundbegriffe der Syntax, Kommentare...9 1.3 Datentypen und Ausdrücke...14 1.4 Algorithmen und Kontrollstrukturen...21 1.5 Vektoren und Zeichenketten...42 1.6 Adressen und Zeiger...51 1.7 Modularisierung, Funktionen...55 1.8 Ein-/Ausgabe...74 Teil 2 2 Datendarstellung in Rechnern, elementare Datentypen... 85 3 Operatoren und Ausdrücke, mathematische Funktionen... 119 4 Kontrollstrukturen, strukturierte Programmierung... 137 5 Funktionen, Speicherklassen und Modulkonzept... 169 6 Grundsätze für die Programmentwicklung... 207 7 Der Preprozessor... 221 8 Bit-Operatoren und Ausdrücke... 231 9 Zeiger... 239 10 Vektoren... 253 11 Zeichenketten... 279 12 Strukturen, dynamische Datenstrukturen, Unionen... 293 13 Dateien (Files)... 311 Das Buch gliedert sich in zwei Teile. Der erste Teil behandelt die Grundlagen des Programmierens. Die weiteren Kapitel vertiefen die Themen des ersten Teils oder beschäftigen sich mit zusätzlichen Themen. Falls Sie noch in keiner Sprache programmiert haben, dann sollten Sie sich mit dem 1. Teil solange auseinandersetzen, bis sie die Übungsaufgaben lösen und die Kontrollfragen beantworten können, sonst können Sie das 1. Kapitel als Leitfaden durch die wichtigsten Themen betrachten, um je nach Bedarf zu den weiteren Kapiteln zu wechseln. Die Reihenfolge der Kapitel 2 bis 13 ist zwar sinnvoll, aber nicht unbedingt zwingend. Neben dem 1. Teil beschäftigen sich die Kapitel 5 (Modulkonzept) und 9 (Zeiger) mit fundamentalen Konzepten in C.
IX Inhaltsverzeichnis 1 Programmieren lernen - Grundlagen...1 1.1 Zwei kleine C-Programme... 1 1.2 Grundbegriffe der Syntax, Kommentare... 9 1.2.1 Zeichensatz und Wörter...9 1.2.2 Syntaxnotation...10 1.2.3 Schlüsselwörter...11 1.2.4 Kommentare...12 1.2.5 Fehlermeldungen des Compilers...13 1.3 Datentypen und Ausdrücke... 14 1.3.1 Datentypen...14 1.3.2 Ausdrücke (expressions) und Operatoren (operators)...16 1.4 Algorithmen und Kontrollstrukturen... 21 1.4.1 Algorithmen...21 1.4.2 Sequenz...21 1.4.3 Wiederholung...22 1.4.4 Auswahl...31 1.4.5 Beispiele...32 1.4.6 Zusammenfassung: Von der Aufgabe zum Programm...38 1.5 Vektoren und Zeichenketten... 42 1.5.1 Vektoren...42 1.5.2 Zeichenketten...46 1.6 Adressen und Zeiger... 51 1.7 Modularisierung, Funktionen... 55 1.7.1 Allgemeines, Begriffe...55 1.7.2 Datenaustausch zwischen Funktionen...60 1.7.3 Funktionsprototypen...71 1.8 Ein-/Ausgabe... 74 1.8.1 Allgemeines...74 1.8.2 Ein-/Ausgabe und Dateien...75 1.8.3 Funktionen der Standardbibliothek für die Ein-/Ausgabe...77 2 Datendarstellung in Rechnern, elementare Datentypen...85 2.1 Allgemeines zu Zahlensystemen und Codes... 85 2.1.1 Zahlensysteme...85 2.1.2 Codes...88 2.2 Ganze Zahlen (integer)... 89 2.2.1 Interne Darstellung (Codierung) ganzer Zahlen...89 2.2.2 Datentypen für ganze Zahlen in C...94 2.2.3 (f)printf und (f)scanf Umwandlungen für ganze Zahlen...96
X Inhaltsverzeichnis 2.3 Zeichen und Zeichensätze... 97 2.3.1 Codierung von Zeichen...97 2.3.2 Der ANSI/ASCII-Code und der Datentyp char...98 2.3.3 Ein- und Ausgabe von Zeichen, (f)printf und (f)scanf-umwandlungen...101 2.3.4 Breite Zeichen und Unicode...104 2.4 Reelle Zahlen... 105 2.4.1 Festkommazahlen...105 2.4.2 Gleitkommadarstellung...106 2.4.3 C-Gleitkommatypen (floating types)...108 2.4.4 (f)printf und (f)scanf Umwandlungen für Gleitkommazahlen...109 2.5 Der sizeof-operator... 111 2.6 Typumwandlungen (casts)... 112 2.7 Vereinbarungen... 112 2.8 typedef und enum... 115 2.8.1 typedef...115 2.8.2 Aufzählungen, enum...115 3 Operatoren und Ausdrücke, mathematische Funktionen... 119 3.1 Arithmetische Operatoren... 119 3.2 Die Zuweisungsoperatoren, L-Werte... 120 3.3 Unäre Ausdrücke... 124 3.4 Vergleichsoperatoren... 125 3.5 Logische Operatoren und Ausdrücke... 128 3.6 Der Komma-Operator... 129 3.7 Implizite Typumwandlung... 130 3.8 Rangordnung der Operatoren und Reihenfolge der Auswertung... 131 3.9 Mathematische Funktionen... 134 4 Kontrollstrukturen, strukturierte Programmierung... 137 4.1 Steuer- oder Kontrollfluß, Flußdiagramme... 137 4.2 Strukturierte Programmierung... 138 4.3 Arten von Strukturblöcken... 140 4.3.1 Elementarblock...140 4.3.2 Sequenz...141 4.3.3 Auswahl...142 4.3.4 Wiederholung, Iteration...150 4.4 C-Spezifisches... 156 4.4.1 Die Leeranweisung (empty-statement)...156 4.4.2 Die goto-anweisung...156 4.4.3 Die continue-anweisung...157 4.5 Programmbeispiele... 158 4.5.1 Kalender...158 4.5.2 Rechnen mit Zahlen in der Zweierkomplementdarstellung...162
Inhaltsverzeichnis XI 5 Funktionen, Speicherklassen und Modulkonzept... 169 5.1 Definition von Funktionen... 169 5.2 Funktionsprototypen... 172 5.3 Aufruf einer Funktion und Übergabemechanismus... 172 5.4 Die Speicherklasse auto... 175 5.5 Die Speicherklasse extern... 177 5.6 Programme mit mehreren Quelltext- bzw. Objektdateien... 179 5.7 Weitere spezielle Speicherklassen... 181 5.7.1 Die Speicherklasse register...181 5.7.2 Die Speicherklasse static...182 5.7.3 Externe Variablen mit static-attribut...183 5.7.4 Das static- und extern-attribut bei Funktionen...183 5.8 Datenkapselung... 184 5.9 Verwaltung größerer Programme, Definitionsdateien... 189 5.10 Make-Utility... 197 5.11 Rekursion... 199 6 Grundsätze der Programmentwicklung... 207 6.1 Phasenmodell... 207 6.1.1 Planungsphase...207 6.1.2 Definitionsphase...208 6.1.3 Entwurfsphase...208 6.1.4 Codieren - Implementieren...213 6.1.5 Testen...214 6.1.6 Wartung und Pflege...215 6.2 Prinzipien der Softwareentwicklung... 215 6.3 Qualität von Softwareprodukten... 217 6.4 Dokumentation... 218 7 Der Preprozessor... 221 7.1 Die #include-anweisung... 221 7.2 Die #define-anweisung (1)... 222 7.3 Die #define-anweisung (2), Makros... 223 7.4 Bedingte Übersetzung (conditional compilation)... 227 7.5 #line (Zeilennummern)... 229 7.6 Textersatz in Zeichenketten, der Operator #... 229 7.7 #error und #pragma... 229
XII Inhaltsverzeichnis 8 Bit-Operatoren und Ausdrücke... 231 8.1 Bit- und Schiebe-Operatoren... 231 8.2 Bitmuster und Bit-Masken... 235 9 Zeiger... 239 9.1 Einleitende Bemerkungen... 239 9.2 Vereinbarung von Zeigervariablen und Zeigertypen... 241 9.3 Inhalts- und Adreßoperator, Wertzuweisungen an Zeiger... 241 9.4 Zeigerarithmetik... 244 9.4.1 Summe und Differenz von Zeiger und int...244 9.4.2 Vergleichsoperationen mit Zeigern...246 9.4.3 Zeigersubtraktion...246 9.5 Speicherplatz anfordern und freigeben... 249 10 Vektoren... 253 10.1 Eindimensionale Vektoren... 253 10.1.1 Vereinbarung und Zusammenhang mit Zeigerarithmetik...253 10.1.2 Vektoren als formale und aktuelle Parameter von Funktionen...254 10.1.3 Dynamische Erzeugung eines Vektors...256 10.2 Mehrdimensionale Vektoren... 257 10.2.1 Definition und Indizierung...257 10.2.2 Anordnung der Elemente im Speicher...258 10.2.3 Mehrdimensionale Vektoren als Argument von Funktionen...261 10.3 Initialisierung von Vektoren... 262 10.4 Algorithmen und Programmbeispiele... 262 10.4.1 Quicksort...262 10.4.2 Lineare Regression...267 10.4.3 Gauß'scher Algorithmus...271 11 Zeichenketten... 279 11.1 Allgemeines, Zeichenketten in C... 279 11.2 Ein-/Ausgabe von Zeichenketten... 282 11.3 Funktionen für Zeichenketten in der C-Bibliothek... 284 11.4 Vektoren mit Zeigern auf Zeichenketten... 284 11.5 Argumente der Funktion main... 290
Inhaltsverzeichnis XIII 12 Strukturen, dynamische Datenstrukturen, Unionen... 293 12.1 Strukturen... 293 12.1.1 Typ-Deklarationen und Definition von Variablen...293 12.1.2 Zugriff auf Strukturen und die Felder einer Struktur...295 12.1.3 Strukturen und Funktionen...296 12.1.4 Initialisierung von Strukturen...300 12.2 Verkettete Listen, Bäume... 300 12.3 Unionen... 308 13 Dateien (Files)... 311 13.1 Dateioperationen... 311 13.2 Fehlererkennung und Behandlung... 312 13.3 Binärdateien... 313 13.4 Random Access... 319 A Anhang A: Die Standard-Bibliothek... 321 A.1 Diagnose <assert.h>... 321 A.2 Test und Behandlung von Zeichen <ctype.h>... 321 A.3 Fehlerbehandlung <errno.h>... 322 A.4 Grenzwerte der Gleitkommadarstellung <float.h>... 322 A.5 Wertebereich für Ganzzahltypen <limits.h>... 323 A.6 Lokale Besonderheiten <locale.h>... 323 A.7 Mathematische Funktionen <math.h>... 323 A.8 Nichtlokale Sprünge <setjmp.h>... 323 A.9 Signale <signal.h>... 323 A.10 Variable Argumentlisten <stdarg.h>... 324 A.11 Allgemein gültige Definitionen <stddef.h>... 324 A.12 Ein-/Ausgabe <stdio.h>... 325 A.13 Allgemeine Hilfsfunktionen <stdlib.h>... 333 A.14 Funktionen für Zeichenketten <string.h>... 337 A.15 Uhrzeit und Zeit <time.h>... 339 A.16 Ausblick auf die C99 Bibliothek... 340 Anhang B: Syntaxzusammenfassung... 343 Literatur... 350 Stichwortverzeichnis... 351 ASCII-Code Tabelle... 360 Tabelle der Operatoren, Rangordnung der Operatoren... 361