als erste Programmiersprache

Ähnliche Dokumente
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

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

C als erste Programmiersprache

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

Manfred Dausmann, Ulrich Bröckl, Joachim Goll. C als erste Programmiersprache

Java als erste Programmiersprache

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

m B. G. Teubner Stuttgart. Leipzig. Wiesbaden als erste Programmiersprache Java 2 Plattform Von Prof. Dr. Joachim Goll Cornelia Weiß Peter Rothländer

C für Java-Programmierer

C für Java- Programmierer

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

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

C als erste Programmiersprache

Grundkurs Software- Entwicklung mit C++

Programmieren lernen mit C

C als erste Programmiersprache

Effektiv Programmieren in С und C++

Aufgaben zum Skriptum Informatik

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

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

Java als erste Programmiersprache

Inhaltsverzeichnis. Kurseinheit 1. Kurseinheit 2

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

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

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

Inhaltsverzeichnis. Vorwort.11

Java als erste Programmiersprache

Java als erste Programmiersprache

P. P. Bothner W.-M. Kähler. Einführung in die Programmiersprache APL

Programmierung von verteilten Systemen und Webanwendungen mit Java EE

Java als erste Programmiersprache

Stickel Datenbankdesign

magnum C++ WALTER SAUMWEBER kompakt komplett kompetent

Software-Praktikum. Ein praxisorientiertes Vorgehen zur Software-Erstellung

Informatik für Ingenieure

Informatik I Programmieren in C

Kapitel 2. Einfache Beispielprogramme

Ingenieurinformatik. Einführung in die Programmiersprache C

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

Programmierung in C/C++

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

2. Programmierung in C

H. Günther. Programme und Tools für Erddruck und Erdwiderstand mit gekrümmten und ebenen Gleitflächen

2. Programmierung in C

Java-Grundkurs für Wirtschaftsinformatiker

Claudia Borchard-Tuch. Computersysteme - Ebenbilder der Natur?

Arrays (Felder/Vektoren)

Gisela Osterhold. Veränderungsmanagement

Dietrich Krekel Wolfgang Trier. Die Programmiersprache PASCAL

Programmieren lernen mit Perl

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Aufgaben zum Skriptum Informatik

Probeklausur Name: (c)

Kapitel 2 Elementare Datentypen, Konstanten und Variablen Elementare Datentypen

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

Objektorientierte Programmierung in Java

2. Programmierung in C

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Martin Lowes/Augustin Paulik. Programmieren mit C

Einleitung Grundlagen Erweiterte Grundlagen Zusammenfassung Literatur. C: Funktionen. Philip Gawehn

R. Sonyi/H.-P. Zinser Auf dem Weg zum Zertifikat

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

2. Programmierung in C

Java-Grundkurs für rtschaftsinformatiker

2. Programmierung in C

Grundmann. Zwischenprüfungstraining Bankfachklasse

Alfred Böge (Hrsg.) Vieweg Taschenlexikon Technik

Jakob Schwarz. DOS Einsteigen leichtgemacht

MS SQL Server Einstieg in relationale Datenbanken und SQL Marco Skulschus Marcus Wiederstein

Typ : void* aktuelle Parameter Pointer von beliebigem Typ

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

S. Dietze / G. Pönisch. Starthilfe Graphikfähige Taschenrechner und Numerik

Gene Zelazny Wie aus Zahlen Bilder werden

Herzlich willkommen!

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

Aufgabensammlung zur Einführung in die Statistik

Die Programmiersprache C

Informatik & Praxis. H. Eirund / B. MOiler / G. Schreiber Formale Beschreibungsverfahren der Informatik

C++ Einführung und professionelle Programmierung. von Ulrich Breymann. 8., erweiterte Auflage. Hanser München 2005

Die С ++-Programmiersprache

C++ PROGRAM- MIERER/-IN

Eiermann. Fallsammlung Steuerlehre I Buchführung

Praktische Eine Einführung

Inhaltsverzeichnis. 7.9 Aufgaben...207

Aufgabensammlung Fertigungstechnik

Kataloge der Universitätsbibliothek Rostock / Die Bibliothek Herzog Johann Albrechts I. von Mecklenburg ( )

Transkript:

HEIKE KUHN STAOTMOHLGASSE 18 69469 WEINHEIM ~ 06201/961321 als erste Programmiersprache Von Prof. Dr. Joachim Goll Uwe Grüner Prof. Herbert Wiese 3., völlig überarbeitete Auflage EI3 B. G. Teubner Stuttgart. Leipzig ' Wiesbaden 2000

Prof. Oe Joachim GolI, Jahrgang 1947, unterrichtet seit 1991 im Fachbereich Informationstechnik der Fachhochschule Esslingen - Hochschule für Technik (FHTE) Programmiersprachen, Betriebssysteme, Software Engineering und Objektorientierte Modellierung. Während seiner beruflichen Tätigkeit in der Industrie befaßte er sich vor allem mit dem Entwurf von verteilten Informationssystemen. Prof. Goll ist Leiter des Steinbeis-Transferzentrums Softwaretechnik Esslingen. Uwe Grüner, Jahrgang 1967, studierte Technische Informatik an der FHTE. Seit seinem Diplom im Jahre 1992 ist er Lehrbeauftragter für Software Engineering, Betriebssysteme und Netzmanagement an der FHTE. Uwe Grüner arbeitete bis zum Jahre 1996 beim Steinbeis Transferzentrum Softwaretechnik als Projektleiter für Realzeitsysteme. Seit 1996 befaßt er sich bei Daimler-Benz mit dem Management von Netzen, Datenbanken und insbesondere mit Methoden und Tools für die Entwicklung von Realzeitsystemen. Prof. Herbert Wiese, Jahrgang 1947, ist seit 1988 Professor an der FHTE. Er lehrt im Fachbereich Informationstechnik die Fächer Rechnertechnik und Prozessdatenverarbeitung sowie das Fach Mikrocomputertechnik im Aufbaustudiengang Informatik im Maschinenbau. Professor Wiese leitet seit vielen Jahren das Rechenzentrum der Fachhochschule. Beim Steinbeis Transferzentrum Softwaretechnik ist er zuständig für die Konzeption und das Management von Rechnernetzen. Im vorliegenden Buch erwähnte Produkt- und Firmennamen wie zum Beispiel Borland, IBM, MS-DOS, MS-Visual C+ + u.a. sind gesetzlich geschützt, ohne dass im Einzelnen darauf hingewiesen wird. Die Deutsche Bibliothek - CIP-Einheitsaufnahme Ein Titelsatz für diese Publikation ist bei Der Deutschen Bibliothek erhältlich. ISBN 978-3-322-92722-4 ISBN 978-3-322-92721-7 (ebook) DOI 10.1007/978-3-322-92721-7 Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Jede Verwertung außerhalb der engen Grenzen des Urheberrechtsges~.tzes ist ohne Zustimmung des Verlages unzulässig und strafbar. Das gilt besonders für Vervielfältigungen, Ubersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen. B. G. Teubner Stuttgart. Leipzig' Wiesbaden 2000 Softcover reprint of the hardcover 3rd edition 2000 Der Verlag Teubner ist ein Unternehmen der Fachverlagsgruppe BertelsmannSpringer. Einband: Peter Pfitz, Stuttgart

Vorwort C hat in der Praxis eine außerordentliche Bedeutung gewonnen. Es hat nicht nur Assemblersprachen in der hardwarenahen Programmierung weitgehend verdrängt, sondern hat auch eine große Verbreitung in der Programmierung vielfältiger Anwendungen erfahren. Durch den Aufschwung objektorientierter Sprachen wie C++ und Java, die auf C basieren, hat sich die Bedeutung von C noch erhöht. Das vorliegende Buch wird seit einigen Jahren im Unterricht im ersten Semester der Fachhochschule und am Gymnasium eingesetzt. Es hat zum Ziel, dem Neuling die Sprachkonzepte von C so präzise wie möglich und dennoch in leicht verständlicher Weise vorzustellen. "Lernkästchen", auf die grafisch durch eine kleine Glühlampe aufmerksam gemacht wird, stellen eine Zusammenfassung eines Kapitels dar. Sie erlauben eine rasche Wiederholung des Stoffes. Ein fortgeschrittener Leser kann mit ihrer Hilfe gezielt bis zu der Stelle vorstoßen, an der für ihn ein detaillierter Einstieg erforderlich wird. Unser Dank gilt den Lehrbeauftragten Cristobal Pino und Markus Schuler, die unter anderem die Übungsbeispiele überprüften und durch eigene Vorschläge ergänzten, sowie den Herren Prof. Dr. Manfred Dausmann, Prof. Dr. Ulrich Bröckl-Fox und Prof. Jürgen Nonnast für die kritische Durchsicht des Manuskriptes und manchen wertvollen Verbesserungsvorschlag. Um sowohl einem Neuling als auch einem erfahrenen Leser gerecht werden zu können, sind in der vorliegenden 3. Auflage Abschnitte, die eine Vertiefung darstellen, mit dem Symbol [J gekennzeichnet. Diese Abschnitte stellen für das Folgende keine Voraussetzung dar. Sie können deshalb vom Einsteiger beim ersten Durchlauf übersprungen werden, um rasch einen Überblick über die ganze Breite von C zu erhalten. Die Vertiefungsabschnitte können dann bei Bedarf herangezogen werden. Esslingen, im April 2000 J. Goll / U. Grüner / H. Wiese Unterstützt von der Geschäftsstelle "Engineering Data Management" des debis Systemhauses zur Förderung des Ingenieur- und Informatik-Nachwuchses an Schulen, Fachhochschulen und Universitäten

Schreibweise In diesem Buch sind der Quellcode und die Ein-/Ausgabe von ganzen Beispielprogrammen sowie einzelne Anweisungen und Ein-I Ausgaben in der Schriftart Courier New geschrieben. Dasselbe gilt für Programmteile wie Variablennamen, Funktionsnamen etc., die im normalen Text erwähnt werden. Einige Programmbeispiele enthalten Platzhalter wie Anweisung oder Bedingung für konkrete Anweisungen oder Ausdrücke in der Programmiersprache. Ihre Rolle als Platzhalter ist jedoch so offensichtlich, dass für sie keine eigene Schriftart verwendet wurde. Sie sind wie die Wörter der Sprache in Courier New geschrieben. Wichtige Begriffe im normalen Text sind fett gedruckt, um sie hervorzuheben. Beispielprogramme und alle Bilder aus diesem Buch sowie Aufgaben und Lösungen finden Sie unter http://www.it.fht-esslingen.de/cbuch Ihre Verbesserungsvorschläge und kritischen Hinweise, die wir gerne annehmen, erreichen uns unter der Adresse: Joachim Goll Fachhochschule Esslingen - Hochschule für Technik, Fachbereich Informationstechnik Flandernstraße 101 73732 Esslingen oder via email: Joachim.GoII@fht-esslingen.de

Inhaltsverzeichnis 1.1 Algorithmen und Probleme... 2 1.2 Nassi-Shneiderman-Diagramme... 7 1.3 Werkzeuge für die Programmierung... 16 1.4 Zeichen... 22 1.5 Variablen und Datentypen... 26 1.6 Entwicklung der höheren Programmiersprachen... 30 IN DIE PR 2.1 Ursprung von C... 36 2.2 Standardisierung von C... 36 2.3 Eigenschaften von C...... 37 2.4 Einordnung der Programmiersprache C... 38 2.5 C und C++... 39 3 LEXIKALISCHE KONVENTIONEN... 4 3.1 Zeichenvorrat von C... 42 3.2 Lexikalische Einheiten... 44 4.1 Aufbau eines C-Programms... 60 4.2 Das berühmte Programm "hello, world"... 62 4.3 Programm zur Zinsberechnung... 66 4.4 Euklid'scher Algorithmus als Programm...... 68 5.1 Typkonzept... 72 5.2 Einfache Datentypen... 72 5.3 Variablen... 81 5.4 Typ-Attribute... 85 5.5 Typen in C........... 86 5.6 Klassifikation von Datentypen........ 87 EINEUHRU 6.1 Zeigertypen und Zeigervariablen...... 90 6.2 Zeiger auf void......... 96 6.3 Eindimensionale Arrays........ 96 6.4 Einfache Sortierverfahren für eindimensionale Arrays...... 99

VI Inhaltsverzeichnis 7 ANWEISUNGEN ND OPERATOREN... 10 7.1 Operatoren und Operanden......... 1 08 7.2 Ausdrücke und Anweisungen... 11 0 7.3 Nebeneffekte...... 111 7.4 Auswertungsreihenfolge... 112 7.5 L-Werte und R-Werte... 115 7.6 Zusammenstellung der Operatoren... 116 7.7 Implizite Typkonvertierung... 140 7.8 Sequenzpunkte bei Nebeneffekten... 147 8 KONTROLLS1RU REN.... 8.1 Blöcke - Kontrollstrukturen für die Sequenz... 150 8.2 Selektion... 150 8.3 Iteration... 155 8.4 Sprunganweisungen... 160 9 BLÖCKE UND FUNKTIONEN... 164 9.1 Struktur eines Blockes... 164 9.2 Sichtbarkeit und Lebensdauer... 165 9.3 Definition und Aufruf von Funktionen... 170 9.4 Deklaration von Funktionen... 178 9.5 Gültigkeitsbereiche von Namen...... 181 9.6 Alte Funktionsdefinition und -deklaration nach Kernighan und Ritchie... 181 9.7 Die Ellipse... - ein Mittel für variable Parameteranzahlen... 182 9.8 Rekursive Funktionen... 185 10 FORTGESCHRITTENE ZEIGERTE HNIK... 192 10.1 Zusammenhang zwischen Zeigern und Vektoren... 192 10.2 Arrays... 200 10.3 Übergabe von Arrays und Zeichen ketten... 206 10.4 Vergleich von char-arrays und Zeigern auf Zeichenketten... 208 10.5 Das Schlüsselwort const bei Zeigern und Arrays... 209 10.6 Kopieren von Zeichen ketten... 212 10.7 Standardfunktionen zur Stringverarbeitung und Speicherbearbeitung... 213 10.8 Vektoren von Zeigern und Zeiger auf Zeiger... 223 10.9 Zeiger auf Funktionen... 228 11 STRUKT~U~RE~N~U~~~K~~~====~ 11.1 Strukturen... 234 11.2 Unionen......... 242 11.3 Bitfelder - Komponenten von Strukturen und Unionen... 245

Inhaltsverzeichnis VII 12 KOMPLIZIERTE DATENTYPEN, EIGENE TYPNAMEN UND EINDEUTIGKEIT V N NA 12.1 Komplizierte Vereinbarungen... 250 12.2 Komplizierte Typen...... 251 12.3 typedef zur Vereinbarung eigener Typnamen... 252 12.4 Namensräume... 254 12.5 Interne und externe Bindung... 254 13 SPEICHE UNG VON DATEN IN DATEISYSTEMEN... 256 13.1 Dateien aus Sätzen fester Länge... 258 13.2 Dateien unter UNIX - das Streamkonzept... 262 13.3 Dateien aus Sicht höherer Programmiersprachen........ 263 14 EIN- UND AUSGABE... 2 6 14.1 Schichtenmodell für die Ein- und Ausgabe... 266 14.2 Umlenkung der Standardeingabe und -ausgabe... 267 14.3 C-Bibliotheksfunktionen zur Ein- und Ausgabe... 269 14.4 High-Level-Funktionen für die Standardeingabe und -ausgabe... 270 14.5 High-Level Dateizugriffsfunktionen.......... 293 15 SPEICHERKLASSEN... 318 15.1 Adreßraum eines Programms........... 318 15.2 Programme aus mehreren Dateien - Adressen... 320 15.3 Programme aus mehreren Dateien - die Speicherklasse extern... 321 15.4 Programme aus mehreren Dateien - die Speicherklasse static... 326 15.5 Speicherklassen bei lokalen Variablen... 327 15.6 Initialisierung......... 331 15.7 Tabellarischer Überblick über die Speicherklassen........ 332 15.8 Design und Programmiersprache... 332 16 ÜBERGABEPARAMETER UND RUCKGABEWERT EINES PROGRAMMS... 340 16.1 Übergabe von Parametern beim Programmaufruf..... 340 16.2 Beendigung von Programmen...... 342 17 DYNAMISCHE PEICHERZUWEISUNG, LISTEN UND BAUME. 348 17.1 Reservierung von Speicher...... 350 17.2 Rückgabe von Speicher... 351 17.3 Verkettete Listen.......... 352 17.4 Baumstrukturen......... 361

VIII Inhaltsverzeichnis 18 INTERNE SUCHVER A 18.1 Sequentielles Suchen... 381 18.2 Halbierungssuchen... 381 18.3 Suchen nach dem Hashverfahren... 383 19 PRAPROZESSOR... 402 19.1 Aufgaben des Präprozessors....402 19.2 Einfügen von Dateien in den Source-Code... 403 19.3 Symbolische Konstanten und Makros mit Parametern....404 1904 Bedingte Kompilierung....408 19.5 Weitere Präprozessor-Direktiven... 411 AN DARDBIBLI THEKSFUNKnONEN... 413 A.1 Fehlersuche (assert.h)....413 A.2 Klassifizierung und Konvertierung von Zeichen (ctype.h)... 413 A.3 Länderspezifische Darstellungen und Zeichen (Iocale.h)...414 AA Mathematische Funktionen (math.h)... 414 A.5 Globale Sprünge (setjmp.h)... 415 A.6 Signalbehandlungen (signal,h)...415 A. 7 Behandlung einer variablen Parameterliste (stdarg.h)... 415 A.B Ein- und Ausgabe (stdio.h)... 415 A.9 Zahlenkonvertierung, Speicherverwaltung, Zufallszahlengenerierung und Beenden von Programmen (stdlib.h)....417 A.10 String- und Speicherbearbeitung (string.h)... 418 A.11 Datum und Uhrzeit (time.h)....419 ANHANG B LOW-LEVEL DATEIZUGRIFFSFU ONEN... 420 B.1 Dateioperationen... 421 B.2 Ein-/Ausgabe... 425 B.3 Positionieren in Dateien... 426 BA Beispiel zur Dateibearbeitung mit Low-Level-Funktionen....427 ANHANG C SORnEREN MIT DEM QUIeKSORT ANHANG D SORnERVERFAHREN IM VERGLEICH... 433 LITERATURVERZEICHNIS...,......... ~... 435 INDEX...,. 11 436