Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
Materialien zum Buch
14
1 Eine erste Einführung
15
1.1 Welche Vorteile bietet C?
15
1.2 Was benötige ich zum Programmieren?
16
1.3 Wie ist dieses Buch aufgebaut?
16
1.4 Wie sollten Sie mit diesem Buch arbeiten?
17
1.5 C-Standards
18
1.6 Ubuntu Linux unter Windows
18
2 Unser erstes Programm
21
2.1 Wie gebe ich das Programm ein?
21
2.2 Was bedeuten die einzelnen Zeilen?
22
2.3 Das Programm wird gespeichert
23
2.4 Wie starte ich das fertige Programm?
24
2.5 Eine weitere Möglichkeit zum Starten
26
2.6 Kommentare sind wichtig
28
2.7 Eine Übungsaufgabe
29
3 Verschiedene Arten von Daten
31
3.1 Daten bekannt machen und speichern
31
3.2 Wie gebe ich Daten auf dem Bildschirm aus?
33
3.3 Wie kann der Benutzer seine Daten per Tastatur eingeben?
34
3.4 Berechnungen mit Operatoren
36
3.5 Entwicklung eines Programms
38
3.6 Fehler suchen
39
3.7 Eine Übungsaufgabe
41
4 Verschiedene Fälle in einem Programm
43
4.1 Eine einfache Bedingung mit »if«
43
4.2 Welche Bedingungen gibt es?
45
4.3 Zwei Möglichkeiten, mit »if« und »else«
46
4.4 Wie kann ich Bedingungen kombinieren?
47
4.5 Eine Übungsaufgabe
49
5 Programmteile wiederholen
51
5.1 Regelmäßige Wiederholungen mit »for«
52
5.2 Bedingte Wiederholungen mit »do-while«
54
5.3 Besser vorher prüfen mit »while«?
56
5.4 Tabellen formatieren
59
5.5 Eine Übungsaufgabe zu Tabellen
60
5.6 Eine Übungsaufgabe zur Eingabekontrolle
61
6 Programme übersichtlich aufteilen
63
6.1 Wie definiere ich eine Funktion?
63
6.2 Wie rufe ich eine Funktion auf?
65
6.3 Werte an eine Funktion übergeben
66
6.4 Ein Ergebnis von einer Funktion zurückerhalten
68
6.5 Eine Übungsaufgabe
69
7 Große Datenmengen speichern
71
7.1 Felder erzeugen und mit Daten füllen
71
7.2 Wie gebe ich die Daten aus?
73
7.3 Wie kann der Benutzer ein Feld füllen?
74
7.4 Eine Übungsaufgabe
76
8 Zeichen und Texte speichern
77
8.1 Zeichenketten erzeugen und füllen
77
8.2 Wie gebe ich eine Zeichenkette aus?
79
8.3 Wie kann der Benutzer eine Zeichenkette füllen?
80
8.4 Mehrere Zeichenketten
81
8.5 Wie kann ich Zeichenketten formatieren?
82
8.6 Eine Übungsaufgabe
83
9 Indirekter Zugriff mit Zeigern
85
9.1 Wie arbeite ich mit Zeigern und Adressen?
85
9.2 Wie nutze ich Zeiger bei Funktionen?
87
9.3 Wir zeigen auf Felder
88
9.4 Eine Übungsaufgabe
90
10 Unterschiedliche Daten zusammenfassen
93
10.1 Strukturen definieren
93
10.2 Wie erzeuge ich Strukturdaten?
94
10.3 Wie gebe ich die Daten aus?
95
10.4 Wie kann der Benutzer Strukturen füllen?
96
10.5 Mehrere Strukturdaten
98
10.6 Wie übergebe ich Strukturdaten?
99
10.7 Eine Übungsaufgabe
102
11 Daten auf der Festplatte
105
11.1 Wie speichere ich Daten auf der Festplatte?
105
11.2 Wie lese ich Daten von der Festplatte?
108
11.3 Eine Übungsaufgabe
110
12 Eine Vertiefung der bisherigen Themen
111
12.1 Verschiedene Arten von Daten
111
12.1.1 Mehrere Daten auf einmal einlesen
111
12.1.2 Datentypen für ganze Zahlen
113
12.1.3 Datentypen für Zahlen mit Nachkommastellen
116
12.1.4 Umwandlungen zwischen Datentypen
117
12.1.5 Konstanten sind unveränderlich
119
12.1.6 Zufällige Zahlen
121
12.1.7 Kombinierte Zuweisungen
122
12.1.8 Daten tauschen
125
12.1.9 Alle Operatoren
126
12.2 Verschiedene Fälle in einem Programm
129
12.2.1 Wahrheitswerte
129
12.2.2 Bedingte Zuweisung
131
12.2.3 Mehr als zwei Fälle
132
12.2.4 Fälle zusammenfassen
133
12.2.5 Nebenwirkungen bei logischen Verknüpfungen
135
12.3 Programmteile wiederholen
137
12.3.1 Varianten der »for«-Schleife
137
12.3.2 Schleifen vorzeitig abbrechen oder später fortsetzen
140
12.3.3 Eine Schleife in einer Schleife
143
12.3.4 Eine mehrfache Schleife abbrechen
144
12.4 Programme übersichtlich aufteilen
145
12.4.1 Funktionen deklarieren
145
12.4.2 Lokale und globale Variablen
147
12.4.3 Statische Variablen
149
12.4.4 Rekursive Funktionen
150
12.4.5 Zeiger auf Funktionen
151
12.4.6 Beliebige Anzahl von Parametern
153
12.4.7 Überladen von Funktionen
155
12.5 Große Datenmengen speichern
156
12.5.1 Operationen mit Feldern
156
12.5.2 Mehrdimensionale Felder
163
12.5.3 Felder sortieren
165
12.5.4 Elemente in einem Feld suchen
169
12.6 Zeichen und Texte speichern
174
12.6.1 Einzelne Zeichen
174
12.6.2 Der Code eines Zeichens
175
12.6.3 Funktionen für Zeichenketten
177
12.6.4 Zeichenketten vergleichen
178
12.6.5 Zeichenketten zerlegen
180
12.6.6 Verbessertes Einlesen von Wörtern
181
12.6.7 Verbessertes Einlesen von Zeichenketten
183
12.6.8 Zeichenketten und Zahlen umwandeln
186
12.6.9 Verbessertes Einlesen von Zahlen
188
12.6.10 Operationen mit Zeichenketten
191
12.7 Indirekter Zugriff mit Zeigern
200
12.7.1 Rechnen mit Zeigern und Adressen
200
12.8 Unterschiedliche Daten zusammenfassen
202
12.8.1 Vereinfachung durch »typedef«
203
12.8.2 Strukturen in Strukturen
203
12.8.3 Enumerationen
205
12.9 Daten auf der Festplatte
207
12.9.1 Programm mit Ein- und Ausgabe
207
12.9.2 Umlenkung der Ein- und Ausgabe
209
12.9.3 CSV-Dateien schreiben
212
12.9.4 CSV-Dateien lesen
214
12.9.5 Datensätze mit fester Länge schreiben
216
12.9.6 Datensätze mit fester Länge lesen
218
12.9.7 Datensätze mit fester Länge schreiben und lesen
220
13 Daten dynamisch im Speicher verwalten
227
13.1 Warum benötige ich dynamische Felder?
227
13.2 Eine Datenreihe dynamisch speichern
228
13.3 Die Größe eines dynamischen Felds ändern
230
13.4 Eine Tabelle dynamisch speichern
232
13.5 Wie übergebe ich ein dynamisches Feld an eine Funktion?
235
14 Arbeiten mit Zahlen
241
14.1 Winkelfunktionen
241
14.2 Runden, Nachkommastellen, Modulo
243
14.3 Weitere mathematische Funktionen
245
14.4 Komplexe Zahlen darstellen
246
14.5 Rechnen mit komplexen Zahlen
248
14.6 Weitere Funktionen für komplexe Zahlen
250
14.7 Bit-Operatoren
252
14.8 Umwandlung von Dualzahlen
255
14.9 Bitfelder
258
15 Präprozessor-Anweisungen
261
15.1 Einbinden von Dateien
261
15.2 Definitionen und Makros
262
15.3 Definitionen und Verzweigungen
264
15.4 Eine Systemweiche
266
16 Zugriff auf Dateien und Verzeichnisse
269
16.1 Attribute von Dateien und Verzeichnissen
269
16.2 Zugriffsrechte ändern
273
16.3 Inhalt eines Verzeichnisses
275
16.4 Inhalt eines Verzeichnisbaums
278
16.5 Dateien ändern
280
16.6 Verzeichnisse ändern
281
17 Umgang mit Datum und Uhrzeit
283
17.1 Weltzeit ausgeben
283
17.2 Lokale Zeit ausgeben und formatieren
285
17.3 Zeitangaben erzeugen
287
17.4 Zeitspanne messen
289
17.5 Zeit abwarten
291
17.6 Alter berechnen
292
18 Kommunikation mit dem Betriebssystem
295
18.1 Wie übergebe ich Daten an ein Programm?
295
18.2 Wie nutze ich die Rückgabe eines Programms?
297
18.3 Systemkommandos ausführen
299
19 Datenbanken
301
19.1 Aufbau einer Datenbank
301
19.2 Datenbanken mit SQLite
302
19.3 Datenbank und Tabelle erzeugen
303
19.4 Datensätze einfügen
305
19.5 Anzeigen der Datensätze
307
19.6 Auswahl von Datensätzen und Feldern
309
19.7 Auswahl mit Platzhaltern
312
19.8 Auswahl nach Eingabe
314
19.9 Sortieren der Ausgabe
316
19.10 Ändern von Datensätzen
318
19.11 Löschen von Datensätzen
319
20 Beispielprojekte
323
20.1 Lernspiel: Hauptstädte der EU
323
20.2 Lernspiel: Kopfrechnen
329
20.2.1 Das Basisprogramm
329
20.2.2 Version mit Zeitmessung
333
20.2.3 Version mit Highscore-Datei
334
20.3 Ausgabe von Morsezeichen
337
20.3.1 Textdatei als Datenquelle
338
20.3.2 Morse-Code auf dem Bildschirm
339
20.3.3 Morse-Code per Lautsprecher
341
20.4 Spiel Mastermind
344
21 Grafische Benutzeroberflächen mit GTK+
351
21.1 Datentypen der »Glib«
352
21.2 Zeichenketten mit »GString«
353
21.3 Felder mit GArray
355
21.3.1 Aufbau des Programms
355
21.3.2 Rahmen des Programms
355
21.3.3 Hilfsfunktion zum Einlesen
357
21.3.4 Ausgabe aller Elemente
358
21.3.5 Einfügen am Anfang und am Ende
359
21.3.6 Einfügen an beliebiger Position
359
21.3.7 Löschen eines Elements
360
21.4 Die erste Benutzeroberfläche
361
21.5 Eigenschaften setzen und abrufen
364
21.6 Ereignisfunktionen
365
21.7 Positionierung von Widgets
367
21.8 Auswahl- und Eingabe-Widgets
369
A Installationen
375
B Hilfestellungen und Übersichten
399
C Lösungen der Übungsaufgaben
411
Index
425