C für Java-Programmierer

Ähnliche Dokumente
C für Java-Programmierer

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

Inhaltsverzeichnis. Vorwort.11

С als erste Programmiersprache

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

C programmieren. Jürgen Wolf

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

Effektiv Programmieren in С und C++

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

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

Inhaltsverzeichnis. Vorwort

C als erste Programmiersprache

Algorithmen und Datenstrukturen

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

Programmieren lernen mit Perl

Inhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2

Programmieren in Lua

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

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

Werner Achte rt DATA BECKER

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

C-Programmierung lernen

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

Kapitel 2 Elementare Datentypen, Konstanten und Variablen Elementare Datentypen

Grundkurs Software- Entwicklung mit C++

Programmierung mit C Zeiger

Inhaltsverzeichnis. 1 Grundlagen 1. 2 Einfache Programme 21

C- Kurs 09 Dynamische Datenstrukturen

magnum C++ WALTER SAUMWEBER kompakt komplett kompetent

Dynamische Speicherverwaltung

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

Übungspaket 14 Eindimensionale Arrays

Grundkurs Programmieren in Java Band 1: Der Einstieg in Programmierung und Objektorientierung

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

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

... Vorwort Einstieg in die Programmierung Ablaufsteuerung... 71

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

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

Arnold Willemer. Einstieg in C++ Galileo Press

Grundkurs Programmieren in Java

Repetitorium Informatik (Java)

Arrays (Felder/Vektoren)

Programmierkurs C++ Datenstrukturen Seite 1

Teil 5: Zeiger, Felder, Zeichenketten Gliederung

FACHHOCHSCHULE MANNHEIM

C- Kurs 07 Höhere Datentypen

Arnold Willemer. Einstieg in C++ Galileo Press

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

Physische Datenstrukturen

C-Programmierung unter TOS ATARI ST

Programmieren lernen mit C

Arnold Willemer C++ Der Einstieg. WlLEY

7. Organisation von Informationen

Algorithmen und Datenstrukturen (für ET/IT) Wiederholung: Ziele der Vorlesung. Wintersemester 2012/13. Dr. Tobias Lasser

Algorithmen und Datenstrukturen (für ET/IT)

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

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

Einstieg in die Informatik mit Java

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

Binärbäume: Beispiel

Beispiele elementarer Datentypen Ganze Zahlen (integer) Unterbereiche Gleitkommazahlen Festkommazahlen

Objektorientierte Programmierung mit Java

Advanced Programming in C

Praktische Eine Einführung

Grundkurs Programmieren in Java

6. Zeiger Allgemeines Definition eines Zeigers

Inhaltsverzeichnis 1 Der objektorientierte Ansatz 2 Elementare Objekte und Ausdrücke

Objektorientiert in C++

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Zeichenketten sind uns bisher nur als konstante Texte begegnet, welche in "" angegeben waren; z.b. als Formatstring in der printf()-funktion:

Grundlagen der Informatik 12. Strukturen

2. Programmierung in C

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

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

einlesen n > 0? Ausgabe Negative Zahl

Übungspaket 29 Dynamische Speicherverwaltung: malloc() und free()

Crashkurs C++ - Teil 1

Datenstrukturen Teil 1. Arrays, Listen, Stapel und Warteschlange. Arrays. Arrays. Array

Grundkurs Programmieren in Java

Programmiersprachen Einführung in C

10 Die Programmiersprache C99: Zusammenfassung

Zeiger: Der Adressoperator &

Sprachkonstrukte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Zusammenfassung des Handzettels für Programmieren in C

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Felder, Zeiger und Adreßrechnung

2. Programmierung in C

[Strukturen] Vereinbarung Verwendung Operationen mit struct Zeiger auf struct Strukturen auf dem Heap Datenstrukturen gebildet mit struct union

Erste Schritte der Programmierung in C

Inhaltsverzeichnis 1. Objektorientierung: Ein Einstieg 2. Objekte, Klassen, Kapselung

E-/A-Funktionalität nicht Teil der Programmiersprache

Inhalt 6 Vorwort 10 1 Warum Perl? 12 2 Grundlagen Variablen Spezial-Variablen Kontext Wahrheitswert 18 3 Skalare 20 3.

C - PRÄPROZESSOR. Seminar effiziente C Programmierung WS 2012/13. Von Christian Peter

Felder (1) Allgemeines

C für Java-Programmierer

Die Programmiersprache C99: Zusammenfassung

RO-Tutorien 15 und 16

C/C++-Programmierung

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

Inhaltsverzeichnis. Carsten Vogt. Nebenläufige Programmierung. Ein Arbeitsbuch mit UNIX/Linux und Java ISBN:

Transkript:

Carsten Vogt C für Java-Programmierer ISBN-10: 3-446-40797-9 ISBN-13: 978-3-446-40797-8 Inhaltsverzeichnis Weitere Informationen oder Bestellungen unter http://www.hanser.de/978-3-446-40797-8 sowie im Buchhandel

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 Ein-/Ausgabe und Dateizugriffe... 145 Schnelleinstieg...146 7.1 Grundlegende Konzepte...147 7.1.1 Datenströ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 Standardein-/-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 Ein-/Ausgabe 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.1 Implizite Typkonversionen...213 A.1.1 Konversionen in Rechenausdrücken...213 A.1.2 Konversionen bei Zuweisungen...214 A.2 Sequenzpunkte...216 A.3 Bindungsstärken und Auswertungsreihenfolgen...216

12 Inhalt B Vordefinierte Konstanten... 217 B.1 Wertebereiche der skalaren Typen...217 B.2 Mathematische Konstanten...218 C Standardbibliothek... 219 C.1 Dateizugriffe und Ein-/Ausgabe...219 C.1.1 Thematische Übersicht über die Funktionen...219 C.1.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.1 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