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