C für Java- Programmierer

Ähnliche Dokumente
C für Java-Programmierer

C für Java-Programmierer

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

Inhaltsverzeichnis. Vorwort.11

ISO-SiMMlarcl. als erste Programmiersprache. Von Prof. Dr. Joachim Goll Uwe Grüner Prof. Herbert Wiese 2., durchgesehene Auflage

С als erste Programmiersprache

Manfred Dausmann Ulrich BröckI Dominik Schoop Joachim Goll C als erste Programmiersprache

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

C programmieren. Jürgen Wolf

Programmieren in. Brian W. Kernighan Dennis M. Ritchie ANSIC. Mit dem C-Reference Manual in deutscher Sprache. Zweite Ausgabe

Inhaltsverzeichnis I Grundlagen...1 II Programmieren in C/C

Effektiv Programmieren in С und C++

Inhaltsverzeichnis. Inhalt. Bemerkung... 9 Vorwort Programme und Programmiersprachen

Eine praktische Einführung in die Programmierung mit der Programmiersprache C

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

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

Algorithmen und Datenstrukturen

Sprechen Sie Java? Hanspeter Mössenböck. Tm\ dpunkt.verlag. Eine Einführung in das systematische Programmieren

C als erste Programmiersprache

Java als erste Programmiersprache

Programmieren lernen mit Perl

Programmierung in C/C++

Inhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2

Ralf Kirsch Uwe Schmitt. Programmieren inc. Eine mathematikorientierte Einführung. Mit 24 Abbildungen und 13 Tabellen. Springer

Inhaltsverzeichnis. Kapitel i: Schnelleinstieg 13. Kapitel 2: Was sind Programme? 17. Kapitel 3: Wie erstellt man eigene Programme?

Programmieren in Lua

Inhaltsverzeichnis. 1 Grundlagen 1. 2 Einfache Programme 21

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

Kapitel 2 Elementare Datentypen, Konstanten und Variablen Elementare Datentypen

C-Programmierung lernen

Programmierung mit C Zeiger

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Informatik für Ingenieure

Probeklausur Name: (c)

C- Kurs 09 Dynamische Datenstrukturen

Grundkurs Software- Entwicklung mit C++

1.1 Abstrakte Datentypen 1.2 Lineare Strukturen 1.3 Bäume 1.4 Prioritätsschlangen 1.5 Graphen

magnum C++ WALTER SAUMWEBER kompakt komplett kompetent

Programmieren in C+ Einführung in den Sprachstandard C++ Springer-Verlag Berlin Heidelberg New York London Paris Tokyo Hong Kong Barcelona Budapest

Java. Von den Grundlagen bis zu Threads und Netzen von Prof. Dr. Ernst-Wolfgang Dieterich Fachhochschule Ulm

Dynamische Speicherverwaltung

Java-Grundkurs für Wirtschaftsinformatiker

Inhaltsverzeichnis. 7.9 Aufgaben...207

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

Inhalt. Einführung in die Strukturierte Programmierung 15

Übungspaket 14 Eindimensionale Arrays

Visual C#.NET. Bearbeitet von Patrick A. Lorenz

Das Einsteigerseminar Objektorientierte Programmierung in Java

Arrays (Felder/Vektoren)

4.2 Programmiersprache C

C- Kurs 08 Zeiger. Dipl.- Inf. Jörn Hoffmann leipzig.de. Universität Leipzig Ins?tut für Informa?k Technische Informa?

Alexander Niemann. Das Einsteigerseminar" < Objektorientierte ^ Programmierung in Java. bhv. i.-

Programmiersprachen Einführung in C

Grundkurs Programmieren in Java

Physische Datenstrukturen

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

Repetitorium Informatik (Java)

Arnold Willemer. Einstieg in C++ Galileo Press

Arnold Willemer C++ Der Einstieg. WlLEY

Programmieren lernen mit C

Wilhelm Haager. Computeralgebra. mit Maxima. Grundlagen der Anwendung und Programmierung. Fachbuchverlag Leipzig. im Carl Hanser Verlag

Programmierkurs C++ Datenstrukturen Seite 1

Herzlich willkommen!

Teil 5: Zeiger, Felder, Zeichenketten Gliederung

c PROGRAMMIEREN Ein Kurs zum Selbststudium mit Musterlösungen Guido Krüger ADDISON-WESLEY PUBLISHING COMPANY

Inhaltsverzeichnis. Wilhelm Haager. Computeralgebra mit Maxima. Grundlagen der Anwendung und Programmierung. ISBN (Buch):

FACHHOCHSCHULE MANNHEIM

Einstieg in die Informatik mit Java

2. Programmierung in C

in 21 Tagen Jesse Liberty Der optimale Weg - {Schritt für Schritt zum Programmierprofi

Arnold Willemer. Einstieg in C++ Galileo Press

Binärbäume: Beispiel

INE1 Arrays, Zeiger, Datenstrukturen

Zeiger. C-Kurs 2012, 2. Vorlesung. Tino Kutschbach 10.

C++ Programmieren mit einfachen Beispielen DIRK LOUIS

Objektorientierte Programmierung in Java

Objektorientiert in C++

Thomas Theis PHP4. Webserver-Programmierung für Um- und Einsteiger. Galileo Press

Variablen in C++ Einfache Variablen Strukturen Arrays und Zeichenketten Zeiger und Referenzen Parameter Dynamische Speicherverwaltung

Das erwartet dich in diesem Buch 8. Kapitel 1 Aufbruch ins Programmierabenteuer 14

2. Programmierung in C

Transkript:

Carsten Vogt C für Java- Programmierer mit 59 Bildern, 36 Tabellen und 35 Aufgaben HANSER

Inhalt 1 Einführung 13 Schnelleinstieg 14 1.1 C und Java von den Anfängen bis heute 15 1.1.1 Die Entwicklung von C 15 1.1.1.1 Der Ursprung 15 1.1.1.2 Grundlegende Eigenschaften 16 1.1.1.3 Standards 16 1.1.2 Objektorientierte Nachfolgesprachen 17 1.1.2.1 C++ 17 1.1.2.2 Java 17 1.1.3 Einsatzgebiete von C und Java 18 1.2 C und Java im Sprachvergleich 18 1.2.1 Drei Beispielprogramme 18 1.2.1.1 Einfaches Programm mit Ausgabe 18 1.2.1.2 Programm mit Eingabe und C-spezifischen Datentypen 20 1.2.1.3 Programm mit einer Funktion 21 1.2.2 Eigenschaften von Java vs. Eigenschaften von C 22 1.2.2.1 Tabellarischer Vergleich 22 1.2.2.2 Objektorientierung vs. Prozedurorientierung 23 1.2.2.3 Interpretation vs. Übersetzung 25 1.3 Zu diesem Buch 26 1.3.1 Aufbau 26 1.3.2 Benutzung 27 1.3.3 Weitere Quellen 28 2 Struktur und Übersetzung von C-Programmen 31 Schnelleinstieg 32 2.1 Aufbau von C-Programmen 33 2.1.1 C-Quellcode in einer einzelnen Datei 33 2.1.2 C-Quellcode in mehreren Dateien 34

8 Inhalt 2.2 Übersetzung von C-Programmen 35 2.2.1 Phasen der Übersetzung 35 2.2.2 Modularisierung 37 2.2.3 Übersetzung unter Windows 38 2.2.4 Übersetzung unter UNIX/Linux 39 2.3 Anweisungen des Präprozessors 41 2.3.1 #include: Einfügen von Header-Dateien 41 2.3.2 #define: einfache Ersetzung von Zeichenketten 42 2.3.3 #define: Makros mit Parametern 44 2.3.4 #ifdef, #if: bedingte Übersetzung 45 2.4 Übungsaufgaben 46 3 Kontrollstrukturen 49 Schnelleinstieg 50 3.1 Blöcke 51 3.2 Bedingte Anweisungen 52 3.3 Schleifen 52 3.4 Ausnahmebehandlung 53 3.5 Übungsaufgaben 54 4 Datenorganisation 55 Schnelleinstieg 56 4.1 Skalare Datentypen 57 4.1.1 Zahlen- und Zeichentypen 57 4.1.2 Wahrheitswerte 59 4.1.3 Operationen 60 4.2 Konstanten und Variablen 62 4.2.1 Konstanten 62 4.2.2 Definition und Initialisierung von skalaren Variablen 63 4.2.3 Wertzuweisungen 63 4.3 Arrays 64 4.3.1 Eindimensionale Arrays 64 4.3.2 Mehrdimensionale Arrays 67 4.3.3 Zeichenketten 68 4.3.4 Arrays in C99 70 4.4 Strukturen 71 4.4.1 Grundlegende Eigenschaften von Strukturen 71 4.4.2 Strukturtypen 73 4.4.3 Schachtelung von Strukturen 73 4.5 Unions und Bitfelder 74 4.5.1 Unions 74 4.5.2 Bitfelder 75 4.6 Selbstdefinierte Wert- und Typnamen 77 4.6.1 Aufzählungstypen 77 4.6.2 Der typedef-operator 77 4.7 Übungsaufgaben 79

Inhalt 9 5 Zeiger 81 Schnelleinstieg 82 5.1 Java-Objektvariablen vs. C-Zeigervariablen 83 5.2 Grundlegende Begriffe und Operatoren 85 5.2.1 Speicheradressen und Zeigervariablen 85 5.2.2 Adress- und Dereferenzierungsoperator 87 5.2.3 Zwei Programmbeispiele 89 5.2.4 Ungetypte Zeiger 90 5.3 Adressarithmetik 90 5.3.1 Operationen 90 5.3.2 Adressarithmetik bei Arrays 92 5.3.3 Exkurs: Zeichenkettenvariablen und -konstanten 95 5.4 Dynamische Speicherverwaltung 96 5.4.1 malloc() 96 5.4.1.1 Objekterzeugung in Java vs. Speicherbelegung in C 96 5.4.1.2 Definition von malloc() 97 5.4.2 free() 97 5.4.3 Arrays mit dynamisch bestimmter Größe 98 5.4.4 Zwei Programmbeispiele 99 5.5 Zeiger auf Strukturen 101 5.5.1 Arrays mit Zeigern auf Strukturen 101 5.5.2 Strukturen mit Zeigern auf Strukturen 102 5.6 Zeiger auf Zeiger 104 5.7 Übungsaufgaben 105 6 Funktionen 107 Schnelleinstieg 108 6.1 Java-Methoden vs. C-Funktionen 109 6.2 Schnittstellen 111 6.2.1 Prototypen 111 6.2.2 Weitere Besonderheiten von C 113 6.3 Ausführung 116 6.3.1 Ablauf 116 6.3.2 Parameterübergabe 116 6.3.2.1 Wertaufruf 117 6.3.2.2 Referenzaufruf 117 6.3.2.3 Übergabe von Arrays 119 6.3.3 Ergebnisrückgabe 121 6.4 Das Hauptprogramm main() 122 6.5 Speicherklassen 124 6.5.1 Lokale Variablen 124 6.5.1.1 Automatische Variablen 124 6.5.1.2 Statische Variablen 125 6.5.1.3 Registervariablen 126 6.5.2 Externe Variablen 126 6.5.2.1 Programme in einer einzelnen Datei 127

10 Inhalt 6.5.2.2 Programme in mehreren Dateien 128 6.5.3 Tabellarische Zusammenfassung 130 6.6 Funktionsbibliotheken 130 6.6.1 Definition und Benutzung 130 6.6.2 Die Standardbibliothek 131 6.6.2.1 Funktionen für Zeichen und Zeichenketten 132 6.6.2.2 Mathematische Funktionen 134 6.6.2.3 Betriebssystemnahe Dienste 135 6.7 Nutzungsmöglichkeiten für Fortgeschrittene 137 6.7.1 Zeiger auf Funktionen 137 6.7.2 Funktionen als Parameter 139 6.7.3 Funktionen mit variabler Anzahl von Parametern 140 6.8 Übungsaufgaben 141 7 Eirv/Ausgabe und Dateizugriffe 145 Schnelleinstieg 146 7.1 Grundlegende Konzepte 147 7.1.1 Daten ströme in Java und in C 147 7.1.2 Standarddateien 149 7.1.3 Klassen von E/A-Funktionen 149 7.2 Funktionen für die StandardehW-ausgabe 151 7.2.1 printf(): formatierte Ausgabe 151 7.2.1.1 Grundidee 151 7.2.1.2 Allgemeine Form 152 7.2.1.3 Weitere Beispiele 152 7.2.2 scanf(): formatierte Eingabe 153 7.2.2.1 Grundidee 153 7.2.2.2 Allgemeine Form 154 7.2.2.3 Pufferung der Eingabedaten 155 7.2.2.4 Weitere Beispiele 156 7.2.3 Weitere Funktionen für Zeichen und Zeichenketten 159 7.3 Funktionen für beliebige Datenströme 160 7.3.1 Öffnen und Schließen 160 7.3.2 Ein-/Ausgabe einzelner Zeichen 163 7.3.3 EhWAusgabe von Zeichenketten 164 7.3.4 Formatierte Ein-/Ausgabe 164 7.3.5 Ein-/Ausgabe beliebiger Bytefolgen 165 7.3.6 Wahlfreier Zugriff 167 7.3.7 Spezielle Funktionen 169 7.4 Operationen auf dem Dateisystem 170 7.5 Übungsaufgaben 171 8 Dynamische Datenstrukturen 173 Schnelleinstieg 174 8.1 Dynamische Datenhaltung in Java und in C 175

Inhalt 11 8.2 Listen 176 8.2.1 Eigenschaften 176 8.2.2 Einfach verkettete Listen 177 8.2.2.1 Typ der Knoten 177 8.2.2.2 Durchlaufen einer Liste 178 8.2.2.3 Suchen von Einträgen 179 8.2.2.4 Einfügen von Knoten : 179 8.2.2.5 Entfernen von Knoten 182 8.2.3 Doppelt verkettete Listen 185 8.2.3.1 Typ der Knoten 185 8.2.3.2 Durchlaufen einer Liste 186 8.2.3.3 Suchen von Einträgen 186 8.2.3.4 Einfügen von Knoten 187 8.2.3.5 Entfernen von Knoten 189 8.2.4 Queues und Stacks 191 8.2.4.1 Queues 191 8.2.4.2 Stacks 192 8.3 Hashtabellen 192 8.3.1 Eigenschaften 193 8.3.2 Realisierung in Java und in C 193 8.4 Bäume 195 8.4.1 Eigenschaften 195 8.4.2 Binärbäume 196 8.4.2.1 Eigenschaften und Beispiele 196 8.4.2.2 Realisierung in C 198 8.4.2.3 Durchlaufen eines Binärbaums 199 8.4.2.4 Löschen eines Binärbaums 202 8.4.2.5 Suchen eines Werts in einem Suchbaum 202 8.4.2.6 Einfügen eines Werts in einen Suchbaum 202 8.4.2.7 Löschen eines Werts aus einem Suchbaum 204 8.5 Mengen 206 8.5.1 Realisierung durch Listen und Bäume 206 8.5.1.1 Grundlegende Mengenoperationen auf C-Listen 206 8.5.1.2 Bilden der Vereinigungsmenge 207 8.5.1.3 Bilden der Differenzmenge 208 8.5.1.4 Bilden der Schnittmenge 209 8.5.2 Realisierung durch Bitmaps 209 8.6 Übungsaufgaben 212 A Auswertung von Ausdrücken 213 A.l Implizite Typkonversionen 213 A.l.l Konversionen in Rechenausdrücken 213 A.l.2 Konversionen bei Zuweisungen 214 A.2 Sequenzpunkte 216 A.3 Bindungsstärken und Auswertungsreihenfolgen 216

12 Inhalt B Vordefinierte Konstanten 217 B.l Wertebereiche der skalaren Typen 217 B.2 Mathematische Konstanten 218 C Standardbibliothek 219 C.l Dateizugriffe und Ein-/Ausgabe 219 C.l.l Thematische Übersicht über die Funktionen 219 C.l.2 Funktionen in alphabetischer Reihenfolge 221 C.2 Zeichen, Zeichenketten und Bytefolgen 233 C.2.1 Test einzelner Zeichen 233 C.2.2 Umwandlung von Zeichen 234 C.2.3 Zeichenketten 234 C.2.4 Bytefolgen/Arrays 235 C.2.5 Konversionen 236 C.3 Mathematische Funktionen 237 C.4 Betriebssystemnahe Dienste 238 C.4.1 Dynamische Speicherverwaltung 238 C.4.2 Zeitfunktionen 239 C.4.3 Weitere Funktionen 240 D Häufig gebrauchte Tabellen 241 D.l ASCII 241 D.2 Variablengrößen und Wertebereiche 242 D.3 Bindungsstärke von Operatoren 243 D.4 Optionen für fopen() 244 D.5 Konversionsangaben für die Ein-/Ausgabe 245 D.5.1 printf() 245 D.5.2 scanf() 247 Literatur und Internet 248 Index 251