Einführung in C
EDV1 - 04C-Einführung
1
Literatur
Helmut Erlenkötter
C Programmieren von Anfang an
Rowohlt Taschenbuch Verlag
ISBN 3-499-60074-9
19,90 DM
http://www.erlenkoetter.de
Walter Herglotz
Das Einsteigerseminar C++
bhv Verlags GmbH
ISBN 3-89360-622-X
19,80 DM
EDV1 - 04C-Einführung
2
C ist genau so wie JAVA
- nur ein wenig anders.
JAVA ist von ehemaligen C-Entwicklern mit dem Ziel entwickelt worden, eine
strukturiertere und sicherere Sprache als C zu schaffen.
Sinngemäßes Zitat:
„Von vielen (vorrangig Pascal-) Programmierern wird gesagt die, Sprache C
sei chaotisch und unstrukturiert. Das ist auch wahr. Aber! Dadurch werden
die Programmierer dazu gezwungen, ordentlich und strukturiert zu
programmieren.“
EDV1 - 04C-Einführung
3
Ähnlichkeiten zwischen JAVA und C
Ausdrücke sind sehr ähnlich, gleiche Operatoren mit gleicher Wirkung, in C
gibt es zusätzliche Operatoren
Der Gebrauch von Klammern und Trennzeichen ist sehr ähnlich.
/* ... */ Kommentare
Kompliziertere Objekte (Felder, Strukturen, Objekte in C++) werden über
Referenzen (Zeiger, Pointer) adressiert.
Parameter werden „by value“ übergeben.
EDV1 - 04C-Einführung
4
Unterschiede zwischen JAVA und C
Ein- und Ausgabe ist völlig anders.
Zeiger müssen explizit genutzt werde.
Dynamische Speicherverwaltung muss selbst realisiert werden.
C beinhaltet eine Präprozessor.
Der C-Compiler erzeugt ausführbare Programme, d.h. sie sind nicht
portabel. Hardware-, Betriebssystem- oder Compileränderungen erfordern
mindestens die Neuübersetzung des Programms, ggf. sogar
Neuentwicklungen.
C enthält keine Standardbibliotheken für komplexe Funktionalitäten, wie
z.B.: GUIs, Datenbankzugriffe, Graphikfunktionen u.s.w. Diese
Funktionalitäten werden durch zusätzliche, oft kommerzielle Pakete
realisiert. Diese sind selten Hardware- und Betriebssystemunabhängig.
EDV1 - 04C-Einführung
5
Erstes Beispiel - JAVA
public class hello
{
public static void main (String args [])
{
System.out.println("Hello, world!\nDas ist"+
" unser erstes JAVA-Programm.\nAnzahl der"+
"Parameter : "+args.length);
for (int i=0; i<args.length; i++)
System.out.println("Parameter["+i+
"] = "+args[i]);
}
}
EDV1 - 04C-Einführung
6
Erstes Beispiel - C
int main (int argc, int* argv [])
{
int i;
printf("Hello, world!\nDas ist unser erstes"
"C-Programm.\nAnzahl der Parameter : %i\n",
argc);
for (i=0; i<argc; i++)
printf("Parameter[%i] = %s\n",i,argv[i]);
}
EDV1 - 04C-Einführung
7
Primitive Datentypen
char : ein byte langes Zeichen
int : einfach genaue Festkommazahl
float : einfach genaue Gleitkommazahl
double : doppelt genaue Gleitkommazahl
void : kein Wert, 0 byte lang
Modifikatoren:
signed : vorzeichenbehaftet (Standard)
unsigned : vorzeichenfrei
long : lange Version des Typs
short : kurze Version des Typs (Standard)
EDV1 - 04C-Einführung
8
Datentypen unter Windows
Typ
Bytes
Minimalwert
Maximalwert
char
1
-128
127
unsigned char
1
0
255
short int
2
-32768
32767
unsigned short int
2
0
65535
int
4
-2147483648
2147483647
unsigned int
4
0
4294967295
float
4
1.17549E-38
3.40282E+38
double
8
2.22507E-308
1.79769E+308
EDV1 - 04C-Einführung
9
Unterschiede zu JAVA
Die Länge und interne Darstellung der Datentypen hängt vom Compiler, vom
Prozessor, vom Betriebssystem und von Einstellungen ab!
Alle Typen sind standardmäßig vorzeichenbehaftet auch char!
Es existiert kein boolean-Typ.
Variablen müssen immer am Anfang einer Prozedur (Methode) vereinbart
werden. In C++ können Variable auch im Programmtext vereinbart werden.
EDV1 - 04C-Einführung
10
Logische Ausdrücke
Es existiert kein boolean-Typ!
logische Ausdrücke ergeben int-Wert.
0 : false
!= 0 : true
Für alle Werte gilt: Null wird als false und alle anderen Werte werden als
true interpretiert.
Alle Ausdrücke, auch Zuweisungen liefern einen Wert (wie in JAVA).
Alle Ausdrücke sind in Vergleichen zulässig. Z.B.:
if (i==1) { ... } else { ... }
if (i =1) { ... } else { ... }
EDV1 - 04C-Einführung
11
Verzweigungen, Zyklen
Die Verwendung von folgender Konstrukte ist genau so wie in JAVA:
if – then – else
for
while
do-while
switch
Achtung! Es dürfen keine Variablen in der for – Anweisung definiert werden.
Z.B.:
int i;
...
for (i=0; i<n; i++) ...
EDV1 - 04C-Einführung
12