Programmieren in C

Werbung
Programmieren in C
Eine Einführung in die Programmiersprache C
Prof. Dr. Nikolaus Wulff
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
2
Entwicklungsumgebung
• Alle Übungen und Praktika lassen sich auch von zu
Hause aus bearbeiten. Es werden nur OpenSource
Werkzeuge verwandt.
• Als Entwicklungsumgebung dient die Eclipse IDE.
– Einheitliche Umgebung für Java und C.
– Minimierter einmaliger Lernaufwand.
• Der OpenSource gcc Compiler kann auch unter
Windows, nach der Installation von Cygwin oder
MinGW, verwendet werden...
• Sourcen können per CVS auch von zu Hause aus
ein- und ausgechecked sowie bearbeitet werden.
© Prof. Dr. Nikolaus Wulff
Programmieren in C
3
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
• M. McGrath, C Programming in easy steps,
2.te Auflage, 2006, ISBN 1-84078-323-0
• H. Erlenkötter, Programmieren in C, 4.te Auflage
2001, ISBN 3-499-60074-9, in der ST Bibliothek
von Studenten empfohlen „grünes Buch“...
• Sowie weitere Bücher der ST Bibliothek.
© Prof. Dr. Nikolaus Wulff
Programmieren in C
4
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
5
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
6
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
7
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
8
C in der Nussschale cont.
• C Quelltexte bestehen aus Anweisungen.
int x;
x = 2+3;
Eine Variable x 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(x>4) {
y = 2;
}
© Prof. Dr. Nikolaus Wulff
Nur wenn die Variable x einen Wert
größer als 4 hat wird der Block
ausgeführt...
Programmieren in C
9
C in der Nussschale cont.
• C kennt verschiedene Datentypen, wie z. B.
Ganzzahlen (int), die reellen Zahlen (float) oder
auch einzelne Zeichen (char) und Zeichenketten.
• Bevor eine Variable verwendet werden kann, muss
diese entsprechend definiert werden.
int
g;
float r;
char z;
Typ
Drei Variablen vom Typ Integer,
Gleitkommazahl und Zeichen werden
definiert. Die Namen/Bezeichner
g, r und z sind willkürlich gewählt.
Bezeichner
• Einer definierten Variable wird zur Laufzeit ein
entsprechender Speicherplatz zugewiesen.
© Prof. Dr. Nikolaus Wulff
Programmieren in C
10
Anweisungen und Sätze
• Anweisungen werden zu Sätzen zusammengefasst.
• Ein Satz wird durch ein Semikolon beendet:
zpi = 2 * 3.14;
• Dieser Satz bedeutet: Multipliziere die Zahl 2 mit
der Zahl 3.14 und weise das Ergebnis einer
Variablen mit dem symbolischen Namen „zpi“ zu.
• Zuerst wird die rechte Seite des Satzes (Anweisung
Multipliziere) anschließend die linke Seite des
Satzes (Anweisung Wertzuweisung des Ergebnisses
an „zpi“) ausgeführt.
© Prof. Dr. Nikolaus Wulff
Programmieren in C
11
Ein erstes Programm
• Wir erstellen das Programm „HelloWorld.exe“.
• HelloWorld ist sehr einfach und gibt nur den Text
„Hello, World“ auf der Konsole aus...
• Jedes C Programm besitzt eine main Funktion, die
vom Betriebssystem beim Start gerufen wird.
• Die main Funktion gibt nach der Abarbeitung an
das Betriebssystem einen Rückgabewert zurück, der
signalisiert, ob der Aufruf erfolgreich war (return 0)
oder ein Fehler passierte, z.B. (return -1).
© Prof. Dr. Nikolaus Wulff
Programmieren in C
12
Hello World in C
/**
* Der C Klassiker
*/
0
#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 0 beenden
*/
return 0;
3
}
•
•
•
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.
Mit /* ... */ werden Kommentare in den (Quell)Text eingebunden.
© Prof. Dr. Nikolaus Wulff
Programmieren in C
13
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
14
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
15
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
16
Programmieren mit Notepad
© Prof. Dr. Nikolaus Wulff
Programmieren in C
17
HelloWorld in Aktion
Compile:
Aufruf:
© Prof. Dr. Nikolaus Wulff
Programmieren in C
18
Entwickung mit der Eclipse IDE
Quelltext Hello.c
Projekt
Struktur
Ausgaben von gcc
© Prof. Dr. Nikolaus Wulff
Programmieren in C
19
Edit, Compile und Execute
• In der IDE wird der Quelltext editiert,
• anschließend (automatisch) compiliert
• und direkt ausgeführt
–
–
–
–
Hierzu die ausführbare Datei HelloWorld.exe selektieren
das Kontextmenu mit der rechten Maus öffnen
und „run as lokal C/C++ Application“ auswählen
CYGWIN GDB Debugger bestätigen.
• Nach dem ersten Ausführen braucht die Debugger
Umgebung nicht mehr bestätigt werden. Mit der
grünen Pfeiltaste lässt sich das Programm direkt
starten oder per „Wanzensymbol“ debuggen.
© Prof. Dr. Nikolaus Wulff
Programmieren in C
20
Programmstart in der IDE
Prog. Start
Debugger
Konsolenausgaben
von HelloWorld.exe
© Prof. Dr. Nikolaus Wulff
Programmieren in C
21
Textausgabe per printf
• Die Funktion printf ist kein Bestandteil der C
Sprache sondern gehört zur C Bibliothek.
• printf gestattet eine formatierte Ausgabe:
printf(<Format>,<arg1>,...,<argN>);
• Die Formatzeichenkette ist zwingend, weitere
Argumente 1, ..., N sind optional.
• Die Formatanweisung bestimmt wie die
Argumente ausgegeben werden sollen und
gestattet vielerlei Formatierungen...
© Prof. Dr. Nikolaus Wulff
Programmieren in C
22
Textformatierung
• Zu jedem C Datentypen gehört eine entsprechende
Formatanweisung, die mit dem %-Zeichen markiert wird:
%...
c
d, i
f
s
e, E
g, G
Typ
char
int, long
float, double
char*
float, double
float, double
Bedeutung
Einzelnes Zeichen
Ganzzahl (Integer)
Reelle Zahl (m.dddddd)
Zeichenkette
Reelle Zahl (m.ddddE±xx)
E oder F Darstellung
• Zusätzlich erfolgt mit %o und %x eine oktale und
hexadezimale Ausgabe von Ganzzahlen.
© Prof. Dr. Nikolaus Wulff
Programmieren in C
23
Formatierte Ausgabe
// Ausgabe mit printf
double pi = 3.1415926;
float eps = 1.E-12;
printf("%c \n",'a');
printf("%f \t %d \n", pi, 4711);
printf("%s","Zeichenkette");
printf("%E \n", eps);
• Die Formatanweisung enthält normalen Text sowie mit %
eingeleitete Platzhalter für die auszugebenden Argumente.
• Die Anzahl an Stellen kann explizit gemacht werden.
• Zusätzlich können „Escape Sequenzen“ angegeben werden:
– \n neue Zeile, \t horz. Tabulator, \v vert. Tabulator, \a Signalton
• Bei Gleitkommazahlen lassen sich die Stellen vor und nach
dem Komma sowie die Mantisse angeben.
© Prof. Dr. Nikolaus Wulff
Programmieren in C
24
Herunterladen