Inhalt. 1 Einstieg in die Welt von C Erste Schritte in C 31. Vorwort... 15

Ähnliche Dokumente
C programmieren. Jürgen Wolf

Berichte aus der Informatik. Dieter Pawelczak. Start in die C-Programmierung

C für Java-Programmierer

1Schnelleinstieg 14. 2Wie aus einer einfachen Textdatei. 3 Wie man eigene Programme erstellt 30. Inhaltsverzeichnis. ein Programm wird 20

magnum C++ WALTER SAUMWEBER kompakt komplett kompetent

Arnold Willemer C++ Der Einstieg. WlLEY

1.1 In diesem Kapitel Ein wenig C-Geschichte Warum in C programmieren? Die Struktur dieses Buches 19

Integer Integer Integer (Voreinstellung) Integer Gleitkomma Gleitkomma leer/unbestimmt Integer ohne Vorzeichen Integer (explizit) mit Vorzeichen

Objektorientiert in C++

Programmieren lernen mit C

2. Programmierung in C

4. Einfache Programmstrukturen in C Einfache Programmstrukturen in C

10 Die Programmiersprache C99: Zusammenfassung

Grundkurs Software- Entwicklung mit C++

Andre Willms. Spielend C++ lernen. oder wie man Käfern Beine macht. Galileo Press

Algorithmen zur Datenanalyse in C++

Thomas Binzinger. Jetzt lerne ich. Delphi. Markt+Technik Verlag

Übungspaket 14 Eindimensionale Arrays

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

C-Programmierung unter TOS ATARI ST

Variablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes

Inhaltsverzeichnis. Vorwort NXTundNXC DerNXT NXC Not exactly C Compiler Zusammenfassung 17

Ulla Kirch Peter Prinz C+ + Lernen und professionell anwenden. mitp

Elementare Datentypen in C++

C als erste Programmiersprache

Die Programmiersprache C99: Zusammenfassung

Deklarationen in C. Prof. Dr. Margarita Esponda

Roboter programmieren mit NXC für LEGO MINDSTORMS NXT

C indb :28

Einführung in die C-Programmierung

GI Vektoren

RO-Tutorien 3 / 6 / 12

Werner Achte rt DATA BECKER

Unterlagen. CPP-Uebungen-08/

FH Ravensburg-Weingarten Schriftlich Prüfung Programmieren

Institut für Programmierung und Reaktive Systeme. Java 3. Markus Reschke

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Funktionales C++ zum Ersten

C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

Tutorium Rechnerorganisation

Programmierung mit C Zeiger

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

Programmieren in C. C Syntax Datentypen, Operatoren und Kontrollstrukturen. Prof. Dr. Nikolaus Wulff

Rainer Haselier Klaus Fahnenstich. Programmieren mit. Ein Lehr- und Arbeitsbuch EDITION. Microsoft' Markt&Technik Verlag AG

2. Programmierung in C

C/C++ KOMPENDIUM Einführung Arbeitsbuch Nachschlagewerk

C++ für Spieleprogrammierer

Zeiger: Der Adressoperator &

C- Kurs 09 Dynamische Datenstrukturen

Programmieren in C. -- ALLE Programmiersprachen sind HÄSSLICH -- Deklaration: erst der Datentyp, dann der Variablenname. Semikolon am Ende.

Moderne C-Programmierung

Operatoren (1) Operatoren (2)

Zusammengehörige Daten struct. Strukturierte Datentypen und Funktionszeiger. Zugriff auf struct-elemente. Variablendeklarationen mit struct

Zusammenfassung des Handzettels für Programmieren in C

Arrays (Felder/Vektoren)

Vorkurs Informatik WiSe 16/17

2. Programmierung in C

Alexander Niemann. Das Einsteigerseminar Objektorientierte Programmierung in Java. bhv

U3 3. Übung U3 3. Übung. Systemnahe Programmierung in C Übungen Moritz Strübe Universität Erlangen-Nürnberg Informatik 4, 2009 U3.fm

7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});

Einführung in die Programmierung Arrays, Zeiger, Strings. Arvid Terzibaschian

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B.

Die Programmiersprache C Eine Einführung

Excel VBA Arrays, Enumeration und benutzerdefinierte Typen

Advanced Programming in C

6. Zeiger Allgemeines Definition eines Zeigers

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r

Übersicht. Informatik 1 Teil 9: komplexe Datentypen (Strukturen, Enumerationen, Unions)

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

C++ Teil 5. Sven Groß. 8. Mai IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 8. Mai / 16

Tom Swan. C++ lernen. Eine systematische Einführung in die objektorientierte

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A

Kapitel 11: Wiederholung und Zusammenfassung

Vorkurs C++ Programmierung

Dr. Monika Meiler. Inhalt

Crashkurs: Von Java nach C

4. Ablaufsteuerung (Kontrollstrukturen) 4.1 Anweisungen 4.2 Selektion (bedingte Anweisung) 4.3 Iteration 4.4 Flussdiagramm (Programmablaufplan)

Hello world. Sebastian Dyroff. 21. September 2009

Inhaltsverzeichnis. 1 Grundlagen 1. 2 Einfache Programme 21

Objektorientierte Programmierung in Java

FACHHOCHSCHULE MANNHEIM

Abgeleitete Datentypen

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler

Dr. Monika Meiler. Inhalt

Einführung in die Programmiersprache C

Einstieg in die Informatik mit Java

Ulrich Kaiser Christoph Kecher C/C++ Von den Grundlagen zur professionellen Programmierung. в.. Galileo Computing

2. Programmierung in C

Modul 122 VBA Scribt.docx

jetzt lerne ich Der einfache Einstieg in Object Pascal Für alle Versionen bis einschließlich Delphi 2006 THOMAS BINZINGER

Einheit Lexikalische Grundlagen der Programmiersprache C Lexikalische Einheiten

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Strukturierte Datentypen und Funktionszeiger

C++ Teil 6. Sven Groß. 27. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 14

103 Strukturiert programmieren nach Vorgabe

Programmieren in C / C++ Grundlagen C 4

Erste Schritte der Programmierung in C

Grundlagen der Informatik 11. Zeiger

Transkript:

Vorwort... 15 1 Einstieg in die Welt von C 17 1.1 Die Sprache C... 17 1.2 Die C-Standardbibliothek... 18 1.3 Die nötigen Werkzeuge für C... 21 1.4 Übersetzen mit der Entwicklungsumgebung... 23 1.5 Übersetzen mit gcc und clang... 27 1.6 Listings zum Buch... 28 1.7 Kontrollfragen und Aufgaben im Buch... 29 1.8 Aufgabe... 29 2 Erste Schritte in C 31 2.1 Das erste Programm in C... 31 2.2 Die Funktion printf... 33 2.3 Zeichensätze in C... 34 2.3.1 Basis-Ausführungszeichensatz... 35 2.3.2 Escape-Sequenzen... 35 2.4 Symbole von C... 37 2.4.1 Bezeichner... 37 2.4.2 Reservierte Schlüsselwörter... 39 2.4.3 Literale... 40 2.4.4 Einfache Begrenzer... 42 5

2.5 Kommentare... 43 2.6 Kontrollfragen und Aufgaben... 44 3.12 void ein unvollständiger Typ... 71 3.13 Kontrollfragen und Aufgaben... 72 3 Basisdatentypen in C 45 4 Rechnen mit C und Operatoren 73 3.1 Variablen... 45 3.2 Deklaration und Definition... 45 3.3 Initialisierung und Zuweisung von Werten... 47 3.4 Datentypen für Ganzzahlen... 47 3.4.1 Vorzeichenlos und vorzeichenbehaftet... 50 3.4.2 Suffixe für Ganzzahlen... 53 3.5 Datentyp für Zeichen... 53 3.5.1 Der Datentyp char... 54 3.5.2 Der Datentyp wchar_t... 55 3.5.3 Unicode-Unterstützung... 56 3.6 Datentypen für Fließkommazahlen... 57 3.6.1 Suffixe für Fließkommazahlen... 58 3.6.2 Komplexe Gleitkommatypen... 59 3.7 Boolescher Datentyp... 60 3.8 Speicherbedarf mit sizeof ermitteln... 61 3.9 Wertebereiche der Datentypen ermitteln... 63 3.9.1 Limits von Integertypen... 64 3.9.2 Limits von Fließkommazahlen... 65 3.9.3 Integertypen mit fester Größe verwenden... 66 3.9.4 Sicherheit beim Kompilieren mit _Static_assert... 68 3.10 Konstanten erstellen... 69 3.11 Lebensdauer und Sichtbarkeit von Variablen... 70 4.1 Werte formatiert einlesen mit scanf... 73 4.2 Operatoren im Allgemeinen... 77 4.3 Arithmetische Operatoren... 80 4.4 Inkrement- und Dekrement-Operator... 82 4.5 Bit-Operatoren... 84 4.6 Implizite Typumwandlung... 88 4.6.1 Arithmetische Umwandlung... 88 4.6.2 Typpromotionen... 90 4.6.3 Was nicht geht!... 91 4.7 Explizites Casting von Typen... 91 4.8 Mathematische Funktionen in C... 92 4.9 Kontrollfragen und Aufgaben... 97 5 Bedingte Anweisung und Verzweigung 99 5.1 Bedingte Anweisung... 99 5.1.1 Vergleichsoperatoren... 102 5.2 Alternative Verzweigung... 104 5.3 Der Bedingungsoperator?:... 107 5.4 Mehrfache Verzweigung mit if und else if... 108 5.4.1 Verschachteln von Verzweigungen... 111 6 7

5.5 Mehrfache Verzweigung mit switch... 113 5.6 Logische Verknüpfungen... 119 5.6.1 Der!-Operator... 119 5.6.2 Der &&-Operator Logisches UND... 121 5.6.3 Der -Operator Logisches ODER... 123 5.7 Kontrollfragen und Aufgaben... 125 7.11 Globale, lokale und statische Variablen... 160 7.11.1 Lokale Variablen... 160 7.11.2 Globale Variablen... 162 7.11.3 Speicherklasse»static«... 164 7.11.4 Die Speicherklasse extern... 166 7.12 Kontrollfragen und Aufgaben... 167 6 Schleifen Programmteile wiederholen 129 6.1 Die Zählschleife for... 129 6.2 Die kopfgesteuerte while-schleife... 133 6.3 Die fußgesteuerte do-while-schleife... 135 6.4 Kontrollierte Sprünge aus Schleifen... 138 6.5 Kontrollfragen und Aufgaben... 141 7 Funktionen erstellen 143 7.1 Funktionen definieren... 143 7.2 Funktionen aufrufen... 144 8 Präprozessor-Direktiven 169 8.1 Dateien einfügen mit #include... 169 8.2 Konstanten und Makros mit #define und #undef... 171 8.2.1 Symbolische Konstanten mit #define... 171 8.2.2 Makros mit #define... 174 8.2.3 Symbolische Konstanten und Makros aufheben (#undef)... 177 8.3 Bedingte Kompilierung... 177 8.4 Programmdiagnose mit assert()... 184 8.5 Generische Auswahl... 186 8.6 Eigene Header erstellen... 188 8.7 Kontrollfragen und Aufgaben... 190 7.3 Funktionsdeklaration (Vorausdeklaration)... 145 7.4 Funktionsparameter... 147 7.5 Rückgabewert von Funktionen... 149 7.6 Exkurs: Funktion bei der Ausführung... 153 7.7 Inline-Funktionen... 153 7.8 Rekursionen... 155 7.9 main-funktion... 156 7.10 Programm mit exit() beenden... 158 9 Arrays und Zeichenketten (Strings) 193 9.1 Arrays verwenden... 193 9.1.1 Arrays definieren... 193 9.1.2 Arrays mit Werten versehen und darauf zugreifen... 194 9.1.3 Arrays mit scanf einlesen... 202 9.1.4 Arrays an Funktionen übergeben... 203 8 9

9.2 Mehrdimensionale Arrays... 205 9.2.1 Zweidimensionalen Arrays Werte zuweisen und darauf zugreifen... 205 9.2.2 Zweidimensionale Arrays an eine Funktion übergeben... 208 9.2.3 Noch mehr Dimensionen... 210 9.3 Strings (Zeichenketten)... 211 9.3.1 Strings initialisieren... 211 9.3.2 Einlesen von Strings... 213 9.3.3 Unicode-Unterstützung... 215 9.3.4 Stringfunktionen der Standardbibliothek <string.h>... 216 9.3.5 Sicherere Funktionen zum Schutz vor Speicherüberschreitungen... 219 9.3.6 Umwandlungsfunktionen zwischen Zahlen und Strings... 219 9.4 Kontrollfragen und Aufgaben... 220 10 Zeiger (Pointer) 223 10.10 Arrays von Zeigern... 242 10.11 void-zeiger... 245 10.12 Typ-Qualifizierer bei Zeigern... 247 10.12.1 Konstanter Zeiger... 247 10.12.2 Zeiger für konstante Daten... 247 10.12.3 Konstanter Zeiger und Zeiger für konstante Daten... 248 10.12.4 Konstante Parameter für Funktionen... 248 10.12.5 restrict-zeiger... 249 10.13 Zeiger auf Funktionen... 251 10.14 Kontrollfragen und Aufgaben... 255 11 Dynamische Speicherverwaltung 259 11.1 Neuen Speicherblock reservieren... 260 11.2 Speicherblock vergrößern oder verkleinern... 265 11.3 Speicherblock freigeben... 269 11.4 Kontrollfragen und Aufgaben... 272 10.1 Zeiger vereinbaren... 223 10.2 Zeiger verwenden... 224 10.3 Zugriff auf den von Zeigern... 226 10.4 Zeiger als Funktionsparameter... 231 10.5 Zeiger als Rückgabewert... 232 10.6 Zeigerarithmetik... 235 10.7 Zugriff auf Arrayelemente über Zeiger... 236 10.8 Array und Zeiger als Funktionsparameter... 239 10.9 char-arrays und Zeiger... 241 12 Komplexe Datentypen 275 12.1 Strukturen... 275 12.1.1 Strukturtyp deklarieren... 276 12.1.2 Definition einer Strukturvariablen... 277 12.1.3 Erlaubte Operationen auf Strukturvariablen... 278 12.1.4 Deklaration und Definition zusammenfassen... 278 12.1.5 Synonyme für Strukturtypen erstellen... 279 12.1.6 Selektion auf Komponenten einer Strukturvariablen... 279 10 11

12.1.7 Strukturen initialisieren... 283 12.1.8 Nur bestimmte Komponenten einer Strukturvariablen initialisieren... 284 12.1.9 Zuweisung bei Strukturvariablen... 285 12.1.10 Größe und Speicherausrichtung einer Struktur... 286 12.1.11 Strukturen vergleichen... 286 12.1.12 Strukturen, Funktionen und Strukturzeiger... 286 12.1.13 Array von Strukturvariablen... 291 12.1.14 Strukturvariablen als Komponente in Strukturen... 294 12.1.15 Zeiger als Komponente... 299 12.2 Unionen... 302 12.3 Der Aufzählungstyp enum... 305 12.4 Eigene Typen mit typedef... 306 12.5 Kontrollfragen und Aufgaben... 308 13 Dynamische Datenstrukturen 311 13.1 Verkettete Liste... 311 13.1.1 Neues Element in die Liste einfügen... 317 13.1.2 Element ausgeben (und suchen)... 320 13.1.3 Element aus der Liste entfernen... 320 13.2 Doppelt verkettete Listen... 324 14.1.2 Stream im binären Modus... 328 14.1.3 Standard-Streams... 328 14.2 Dateien... 329 14.3 Dateien öffnen... 330 14.4 Dateien schließen... 335 14.5 Fehler oder Dateiende prüfen... 336 14.6 Funktionen für die Ein- und Ausgabe... 338 14.6.1 Einzelne Zeichen lesen... 338 14.6.2 Einzelne Zeichen schreiben... 339 14.6.3 Zeilenweise einlesen... 341 14.6.4 Zeilenweise schreiben... 342 14.6.5 Lesen und Schreiben in ganzen Blöcken... 347 14.7 Funktionen zur formatierten Ein-/Ausgabe... 350 14.7.1 Funktionen zur formatierten Ausgabe... 351 14.7.2 Funktionen zur formatierten Eingabe... 360 14.8 Wahlfreier Dateizugriff... 363 14.8.1 Dateiposition ermitteln... 363 14.8.2 Dateiposition ändern... 364 14.9 Sicherere Funktionen mit C11... 367 14.10 Datei löschen oder umbenennen... 368 14.11 Pufferung... 368 14.12 Kontrollfragen und Aufgaben... 369 13.3 Kontrollfragen und Aufgaben... 325 Anhang 373 14 Eingabe- und Ausgabe-Funktionen 327 14.1 Verschiedene Streams und Standard-Streams... 327 14.1.1 Stream im Textmodus... 328 A Übersichtstabellen wichtiger Sprachelemente... 373 A.1 Operator-Priorität (Operator Precedence)... 373 A.2 Reservierte Schlüsselwörter in C... 374 A.3 Headerdateien der Standardbibliothek... 375 12 13

A.4 Kommandozeilenargumente... 377 A.5 Weiterführende Ressourcen... 380 A.6 Schlusswort... 381 B Lösungen der Übungsaufgaben... 383 B.1 Antworten und Lösungen zum Kapitel 2... 383 B.2 Antworten und Lösungen zum Kapitel 3... 384 B.3 Antworten und Lösungen zum Kapitel 4... 384 B.4 Antworten und Lösungen zum Kapitel 5... 386 B.5 Antworten und Lösungen zum Kapitel 6... 389 B.6 Antworten und Lösungen zum Kapitel 7... 391 B.7 Antworten und Lösungen zum Kapitel 8... 394 B.8 Antworten und Lösungen zum Kapitel 9... 397 B.9 Antworten und Lösungen zum Kapitel 10... 401 B.10 Antworten und Lösungen zum Kapitel 11... 406 B.11 Antworten und Lösungen zum Kapitel 12... 410 B.12 Antworten und Lösungen zum Kapitel 13... 414 B.13 Antworten und Lösungen zum Kapitel 14... 418 Index... 423 14