Programmieren in C Eine Einführung in die Programmiersprache C Prof. Dr. Nikolaus Wulff Agenda • • • • • • • • • • Elementare Einführung C Programm Syntax Datentypen, Variablen und Konstanten Operatoren und Ausdrücke Kontrollstrukturen Funktionen und Programmstruktur Zeiger und Felder Strukturen Ein- / Ausgabe Bibliotheksfunktionen Prof. Dr. Nikolaus Wulff Programmieren in C 2 Der Anfänger sollte nicht entmutigt sein, wenn er nicht die Voraussetzungen besitzt, um die Voraussetzungen zu verstehen ... Prof. Dr. Nikolaus Wulff Programmieren in C 3 Kurze Historie von C • C wurde Anfang der siebziger Jahre von Kernighan und Ritchie für das UNIX Betriebssystem entwickelt. • C ist eine sehr systemnahe Sprache, die es ermöglicht (fast) ohne Assembler auszukommen. • ANSI C wurde 1988 standardisiert und existiert für nahezu alle Betriebssysteme. • 1983 wurde die objektorientierte Erweiterung C++ von Bjarne Stroustrup in den Bell Laboratorien entwickelt. • Viele Sprachen wie z.B. Java, C#, Perl, PHP, etc. besitzen eine C ähnliche Syntax und sind – bis auf die objektorientierten Konzepte – mit C Kenntnissen leicht zu erlernen. Prof. Dr. Nikolaus Wulff Programmieren in C 4 Programmiersprachen 1950 1960 Assembler Cobol OO-Sprachen Fortran PL/1 Algol Lisp Simula BCPL Pascal 1970 Smalltalk-72 CLU C 1980 beta C++ Lisp Flavors Smalltalk-76 Ada Smalltalk Modula2 Lisp CLOS Eiffel Turbo-Pascal 1990 Oberon Java 2000 Modula3 C# Prof. Dr. Nikolaus Wulff Programmieren in C 5 Literatur • B.W. Kernighan und D.M. Ritchie, Programmieren in C, 2.te Auflage ANSI C, 1978 &1988, ISBN 3-446-15497-3 • C.L. Tondo und S. E. Gimpel, Das C-Lösungsbuch zu K&R 1989, ISBN 3-446-15946-0 • C. Schirmer, (veraltet) Die Programmiersprache C, 1984, ISBN 3-446-14621-0 Prof. Dr. Nikolaus Wulff Programmieren in C 6 C in der Nussschale • Ein Programm besteht aus einer Menge von Anweisungen für den Computer. • In den höheren Programmiersprachen sind diese Anweisungen in einer dem Menschen verständlichen, lesbaren Form notiert, dem sogenannten Quelltext ( Sourcecode). • Dieser besteht aus einer Folge von Zeichen: – Den Buchstaben a-z, A-Z sowie dem Unterstrich _ – Den Ziffern 0-9 – Sonderzeichen und dem Leerzeichen • Die Syntax der Sprache bestimmt die erlaubten Ausdrücke, die verwendet werden dürfen. Prof. Dr. Nikolaus Wulff Programmieren in C 7 C in der Nussschale cont. • C kennt verschiedene Datentypen, wie z. B. Ganzzahlen und die reellen Zahlen oder auch einzelne Zeichen und Zeichenketten. • Bevor eine Variable verwendet werden kann, muss diese entsprechend definiert werden. int i; float f; char c; Drei Variablen vom Typ Integer, Gleitkommazahl und Zeichen werden definiert. Die Namen i, f und c sind willkürlich gewählt. • Einer definierten Variable wird zur Laufzeit ein entsprechender Speicherplatz zugewiesen. Prof. Dr. Nikolaus Wulff Programmieren in C 8 C in der Nussschale cont. • C Quelltexte bestehen aus Anweisungen, die durch ein Semikolon abgeschlossen werden. int i; i = 2+3; Eine Integer Variable wird definiert und mit dem Wert 2+3=5 belegt. • Anweisungen können zu Blöcken zusammengefasst werden, die durch geschweifte Klammern {} eingeleitet und beendet werden. if(i>4) { i = 2; } Prof. Dr. Nikolaus Wulff Nur wenn die Variable i einen Wert größer als 4 hat wird der Block ausgeführt... Programmieren in C 9 Hello World in C /** * Der C Klassiker */ 3 #include <stdio.h> /* Standard I/O Bibliothek einbinden */ /* main-Funktion ist der C Einstiegspunkt */ 1 int main() { /* Hello World per Funktion printf ausgeben */ 2 printf("Hello, World"); /* Das Programm mit return Wert 1 beenden 4 */ return 1; } • Die main-Funktion gibt die Zeichenkette „Hello, World“ mit der Bibliotheksfunktion printf aus. • Die Funktion printf wird in der Datei stdio.h deklariert und per include Anweisung bekannt gemacht. Prof. Dr. Nikolaus Wulff Programmieren in C 10 Vom Quelltext zum Programm • Die „Hello World“ Anweisungen werden in einer Textdatei Hello.c abgespeichert. • Damit daraus ein ablauffähiges Programm wird muss der Quelltext in Maschinencode übersetzt werden. • Je nach Betriebssystem und verwendeten Compiler geschieht dies in mehreren Schritten: – Der Compiler erzeugt eine Objekt Datei – Der Linker bindet diese mit Betriebssystemroutinen zum ausführbaren Programm Prof. Dr. Nikolaus Wulff Programmieren in C 11 Compile & Link Schritte Hello.c Compiler stdio.h Hello.obj Linker Hello.exe Prof. Dr. Nikolaus Wulff Bibliotheksfunktionen • Erstellen des Quelltext. • Übersetzen • Binden/Linken mit den Bibliotheksfunktionen des Betriebsystems. • Test und Ausführung der Anwendung. • Die einzelnen Schritte können manuell per Hand als auch automatisiert durchgeführt werden. Programmieren in C 12 Der Entwicklungszyklus Editieren Testen (Debugging) Compilieren • Programmierung ist ein zyklischer Prozess: – Quellcode erstellen – Quellcode übersetzen – Programm testen • Durch Testen kann man die Anwesenheit von Fehlern zeigen, niemals aber deren Abwesenheit! Prof. Dr. Nikolaus Wulff Programmieren in C 13 Hello World in Aktion • Übersetzen und Ausführen des Programms: – Aufruf des Compilers: cl HelloWorld.c – Aufruf des Programms: HelloWorld Compile Link Execute Prof. Dr. Nikolaus Wulff Programmieren in C 14 MS Visual C++ als IDE Prof. Dr. Nikolaus Wulff Programmieren in C 15 Eclipse als Entwicklungsumgebung Prof. Dr. Nikolaus Wulff Programmieren in C 16