С als erste Programmiersprache

Ähnliche Dokumente
C als erste Programmiersprache

C für Java-Programmierer

TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA GRUNDLAGEN DER PROGRAMMIERUNG... 4

1 EINFÜHRUNG IN DIE PROGRAMMIERSPRACHE C Das erste Programm Ursprung und Ziele von C Standardisierung von C...

Programmieren lernen mit C

Grundkurs Software- Entwicklung mit C++

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

Arrays (Felder/Vektoren)

magnum C++ WALTER SAUMWEBER kompakt komplett kompetent

Typ : void* aktuelle Parameter Pointer von beliebigem Typ

Inhaltsverzeichnis. Vorwort

Martin Lowes/Augustin Paulik. Programmieren mit C

Objektorientiertes Programmieren in C++

2. Programmierung in C

Deklarationen in C. Prof. Dr. Margarita Esponda

Systempraktikum im Wintersemester 2009/2010 (LMU): Vorlesung vom Foliensatz 2

Visual Basic.NET mit Methode

Inhaltsverzeichnis. Einführende Bemerkungen 11. Das Fach Informatik 11 Zielsetzung der Vorlesung Grundbegriffe

Objektorientiert in C++

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

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

Programmieren in C. Die C-Standardbibliothek. Prof. Dr. Nikolaus Wulff

10 Die Programmiersprache C99: Zusammenfassung

Erste Schritte der Programmierung in C

Zeichendarstellung. Zeichen sind Zahlen (in C) Zeichen und switch

Inhaltsverzeichnis. 1 Grundlagen 1. 2 Einfache Programme 21

C++ - Einführung in die Programmiersprache Funktionen. Leibniz Universität IT Services Anja Aue

Vorkurs Informatik: Erste Schritte der Programmierung mit C++

2. Programmierung in C

C programmieren. Jürgen Wolf

Überblick. Peer Kröger (LMU München) Einführung in die Programmierung WS 14/ / 295

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

Prof. W. Henrich Seite 1

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens

Speicherklassen (1) Lokale Variablen

C++ - Variablen: Gültigkeit - Sichtbarkeit

Vorkurs C++ Programmierung

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

Übungspaket 12 Der Datentyp char

2. Programmierung in C

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Java Einführung Methoden. Kapitel 6

Roboter programmieren mit NXC für LEGO MINDSTORMS NXT

Repetitorium Informatik (Java)

Einheit Lexikalische Grundlagen der Programmiersprache C Lexikalische Einheiten

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

Vorkurs C++ Programmierung

Grundlagen der Programmiersprache C++

Dynamischer Speicher

Die Programmiersprache C

1 RPC-Protokoll-Definitionssprache (Protocol Definition Language )

Globale Variablen Diverses. Globale Variablen. Globale Variablen

Einstieg in die Informatik mit Java

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

C++ für Ingenieure. Einführung in die objektorientierte Programmierung. Seite Programmverzeichnis VII HARALD NAHRSTEDT

Programmieren in C. Speicher anfordern, Unions und Bitfelder. Prof. Dr. Nikolaus Wulff

Überblick. 5. Objekt und Klasse, Elementfunktionen

Übungspaket 14 Eindimensionale Arrays

Prinzipien der Softwareentwicklung S. Strahringer

103 Strukturiert programmieren nach Vorgabe

4 ZEICHEN UND ZEICHENKETTEN

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

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

Innere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Strukturen & Math. Strukturen und Vektoren. Allokieren eines Vektors. Zugriff auf Strukturen. Freigeben eines Vektors

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Wiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung

C++-Entwicklung mit Linux

C- Kurs 09 Dynamische Datenstrukturen

Elementare Konzepte von

Arnold Willemer C++ Der Einstieg. WlLEY

Einführung in die Programmierung

Softwaretechnik in C und C++

C-Programmierung unter TOS ATARI ST

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

6. Zeiger Allgemeines Definition eines Zeigers

Kapitel 3. Programmierkurs. Arten von Anweisungen. 3.1 Was sind Anweisungen?

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

Klausur C-Programmierung / / Klingebiel / 60 Minuten / 60 Punkte

RO-Tutorien 3 / 6 / 12

Einstieg in die Informatik mit Java

C#.NET mit Methode. Professionelle Software entwickeln mit C# und.net: Grundlagen, Windows, ADO.NET, ASP.NET und Remoting. vieweg.

Programmierung mit C Zeiger

Wertebereich und Genauigkeit der Zahlendarstellung

Martin Lowesl Augustin Paulik Programmieren mit C

Programmieren in C. Rekursive Strukturen. Prof. Dr. Nikolaus Wulff

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

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

5. Abgeleitete Datentypen

Weitere Operatoren und Datentypen. Speicherklassen. Speicherklassen: static

Transkript:

Joachim Goll Ulrich Bröckl Manfred Dausmann С als erste Programmiersprache Vom Einsteiger zum Profi 4., überarbeitete und erweiterte Auflage Teubner B.G.Teubner Stuttgart Leipzig Wiesbaden

1 2 3 4 5 GRUNDBEGRIFFE DER PROGRAMMIERUNG 2 1.1 Vom Problem zum Programm 2 1.2 Nassi-Shneiderman-Diagramme 8 1.3 Werkzeuge für die Programmierung 16 1.4 Zeichen 23 1.5 Variablen und Datentypen 26 1.6 Entwicklung der höheren Programmiersprachen 30 1.7 35 EINFÜHRUNG IN DIE PROGRAMMIERSPRACHE С 38 2.1 Ursprung von С 38 2.2 Standardisierung von С 38 2.3 Eigenschaften von С 39 2.4 Einordnung der Programmiersprache С 40 2.5 С und C++ 41 LEXIKALISCHE KONVENTIONEN 44 3.1 Zeichenvorrat von С 44 3.2 Lexikalische Einheiten 45 ERSTE BEISPIELPROGRAMME 62 4.1 Aufbau eines C-Programms 62 4.2 Das berühmte Programm hello, world" 64 4.3 Programm zur Zinsberechnung 68 4.4 Euklid'scher Algorithmus als Programm 70 4.5 72 DATENTYPEN UND VARIABLEN 5.1 Typkonzept 78 78 5.2 Einfache Datentypen 78 5.3 Variablen 88 5.4 Typ-Attribute 92 5.5 Typen in С 93 5.6 Klassifikation von Datentypen 94 5.7 95

VIII 6 7 8 9 EINFÜHRUNG IN POINTER UND ARRAYS 98 6.1 Pointertypen und Pointervariablen 6.2 Pointer auf void 105 6.3 Eindimensionale Arrays 106 6.4 112 ANWEISUNGEN, AUSDRÜCKE UND OPERATOREN 98 116 7.1 Operatoren und Operanden 116 7.2 Ausdrücke und Anweisungen 118 7.3 Nebeneffekte 119 7.4 Auswertungsreihenfolge 120 7.5 L-Werte und R-Werte 123 7.6 Zusammenstellung der Operatoren 125 7.7 Implizite Typumwandlung 148 7.8 Sequenzpunkte bei Nebeneffekten 155 7.9 157 KONTROLLSTRUKTUREN 162 8.1 B l ö c k e - Kontrollstrukturen für die Sequenz 162 8.2 Selektion 162 8.3 Iteration 169 8.4 Sprunganweisungen 180 8.5 184 BLÖCKE UND FUNKTIONEN 188 9.1 Struktur eines Blockes 188 9.2 Sichtbarkeit und Lebensdauer 189 9.3 Definition und Aufruf von Funktionen 193 9.4 Deklaration von Funktionen 202 9.5 Gültigkeitsbereiche von Namen 206 9.6 Alte Funktionsdefinition und -deklaration nach Kernighan und Ritchie 206 9.7 Die Ellipse... - ein Mittel für variable Parameteranzahlen 207 9.8 Rekursive Funktionen 210 9.9 220 10 FORTGESCHRITTENE PROGRAMMIERUNG MIT POINTERN..228 10.1 Arrays 228 10.2 Übergabe von Arrays und Zeichenketten 242 10.3 Vergleich von char-arrays und Pointern auf Zeichenketten 244 10.4 Das Schlüsselwort const bei Pointern und Arrays 245

IX 10.5 Kopieren von Zeichenketten 247 10.6 Standardfunktionen zur Stringverarbeitung und Speicherbearbeitung 249 10.7 Vektoren von Pointern und Pointer auf Pointer 260 10.8 Pointer auf Funktionen 264 10.9 270 11 STRUKTUREN, UNIONEN UND BITFELDER 278 11.1 Strukturen 278 11.2 Unionen 290 11.3 Bitfelder- Komponenten von Strukturen und Unionen 294 11.4 301 12 KOMPLEXERE DATENTYPEN, EIGENE TYPNAMEN UND NAMENSRÄUME 12.1 Komplexere Vereinbarungen 308 308 12.2 Komplexere Typen 310 12.3 typedef zur Vereinbarung eigener Typnamen 310 12.4 Namensräume 313 13 SPEICHERKLASSEN 316 13.1 Adressraum eines Programms 316 13.2 Programme aus mehreren Dateien -Adressen 318 13.3 Programme aus mehreren Dateien - d i e Speicherklasse extern 319 13.4 Programme aus mehreren Dateien - die Speicherklasse static 324 13.5 Speicherklassen bei lokalen Variablen 325 13.6 Initialisierung 330 13.7 Interne und externe Bindung von Namen 330 13.8 Tabellarischer Überblick über die Speicherklassen 331 13.9 332 14 EIN- UND AUSGABE 336 14.1 Speicherung von Daten in Dateisystemen 336 14.2 Dateien unter UNIX - das Streamkonzept 338 14.3 Schichtenmodell für die Ein- und Ausgabe 338 14.4 Das Ein-/Ausgabe-Konzept von С 340 14.5 Standardeingabe und -ausgäbe 341 14.6 C-Bibliotheksfunktionen zur Ein- und Ausgabe 344 14.7 High-Level-Funktionen für die Standardeingabe und -ausgäbe 345 14.8 High-Level-Dateizugriffsfunktionen 370 14.9 396

X 15 ÜBERGABEPARAMETER UND RÜCKGABEWERT EINES PROGRAMMS 404 15.1 Übergabe von Parametern beim Programmaufruf 404 15.2 Beendigung von Programmen 406 16 DYNAMISCHE SPEICHERZUWEISUNG, LISTEN UND BÄUME. 412 16.1 Reservierung von Speicher 414 16.2 Rückgabe von Speicher 418 16.3 Verkettete Listen 419 16.4 Baumstrukturen 427 16.5 444 17 INTERNE SUCH- UND SORTIERVERFAHREN 450 17.1 Interne Sortierverfahren 450 17.2 Interne Suchverfahren 460 18 PRÄPROZESSOR 488 18.1 Aufgaben des Präprozessors 488 18.2 Einfügen von Dateien in den Source-Code 489 18.3 Symbolische Konstanten und Makros mit Parametern 490 18.4 Bedingte Kompilierung 494 18.5 Informationen über den Übersetzungskontext 497 18.6 Weitere Präprozessor-Direktiven 498 19 SOFTWARE ENGINEERING IN С 500 19.1 Structured Design 500 19.2 Modular Design 500 19.3 Umsetzung des Modular Designs in С 503 19.4 Trennung von Schnittstelle und Implementierung in С 504 19.5 Realisierung eines Stacks mit Modular Design in С 506 19.6 514 ANHANG A STANDARDBIBLIOTHEKSFUNKTIONEN A.1 Fehlersuche (assert.h) 515 515 A.2 Klassifizierung und Konvertierung von Zeichen (ctype.h) 515 A.3 Länderspezifische Darstellungen und Zeichen (locale.h) 516 A.4 Mathematische Funktionen (math.h) 516 A.5 Globale Sprünge (setjmp.h) A.6 Signalbehandlungen (signal.h) A.7 Behandlung einer variablen Parameterliste (stdarg.h) A.8 Ein- und Ausgabe (stdio.h)

XI A.9 Zahlenkonvertierung, Speicherverwaltung, Zufallszahlengenerierung und Beenden von Programmen (stdlib.h) 519 A.10 String- und Speicherbearbeitung (string.h) 520 A.11 Datum und Uhrzeit (time.h) 521 ANHANG В LOW-LEVEL-DATEIZUGRIFFSFUNKTIONEN 523 B.1 Dateioperationen 524 B.2 Ein-/Ausgabe 528 B.3 Positionieren in Dateien 529 B.4 Beispiel zur Dateibearbeitung mit Low-Level-Funktionen 530 ANHANG С WANDLUNGEN ZWISCHEN ZAHLENSYSTEMEN 532 C.1 Vorstellung der Zahlensysteme 532 C.2 Umwandlung von Dual/Hexadezimal in Dezimal 533 C.3 Umwandlung von Dezimal in Dual/Hexadezimal 533 C.4 Umwandlung von Dual in Hexadezimal und von Hexadezimal in Dual...536 LITERATURVERZEICHNIS 538 INDEX 539 TABELLEN FÜR DEN SCHNELLEN ZUGRIFF 548