Einführung in C 1
Helmut Erlenkötter C Programmieren von Anfang an Rowohlt Taschenbuch Verlag ISBN 3-4993 499-60074-9 19,90 DM http://www.erlenkoetter.de Walter Herglotz Das Einsteigerseminar C++ bhv Verlags GmbH ISBN 3-893603 89360-622-X 19,80 DM Literatur 2
C ist genau so wie JAVA - nur ein wenig anders. JAVA ist von ehemaligen C-EntwicklernC 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. 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. 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-CompilerC 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. 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]); } } 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]); } 7
Primitive Datentypen char :einbyte langes Zeichen int : einfach genaue Festkommazahl float : einfach genaue Gleitkommazahl double : doppelt genaue Gleitkommazahl void :keinwert,0byte lang Modifikatoren: signed : vorzeichenbehaftet (Standard) unsigned : vorzeichenfrei long : lange Version des Typs short : kurze Version des Typs (Standard) 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 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 Typ. Variablen müssen immer am Anfang einer Prozedur (Methode) vereinbart werden. In C++ können Variable auch im Programmtext vereinbart werden. w 10
Logische Ausdrücke Es existiert kein boolean-typ Typ! logische Ausdrücke ergeben int-wert Wert. 0:false!= 0 : true Fürr 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 {... } 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++)... 12