Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ 1 Einleitung Vorteile von Java: gut strukturiert mit hohem Funktionsumfang (mächtige Standardbibliothek) weitestgehend Plattformunabhängig Probleme: relativ langsam automatische Speicherverwaltung manchmal ungünstig 2
Einleitung Vorteile von C++ ermöglicht schnelle und maschinennahe Implementierungen gut geeignet für Simulationen, Suchverfahren, Kompressionsverfahren, zeitkritische Anwendungen Probleme: teilweise veraltet Standardbibliothek weniger mächtig als bei Java dennoch: weit verbreitet, besonders bei wissenschaftlichen Anwendungen 3 C++ Entwicklungsumgebungen Entwicklungsumgebungen: Windows: Microsoft Visual C++ Borland C++ CYGwin (Linux-artige Umgebung für Windows) Linux/Unix: GCC (GNU C Compiler) G++ (GNU C++ Compiler) 4
Hello World 5 Hello World in Java public class Hello { public static void main(string args[]) { System.out.println("Hello World!"); } } 6
Hello World in C #include <stdio.h> // Für printf int main() { } printf( Hello World!\n ); return 0; 7 Hello World in C++ #include <iostream> // Für cout using namespace std; int main() { } cout << Hello World! << endl; return 0; 8
Compilierungsmodell in C++ 9 Compilierungsmodell Präprozessor Auflösung von Direktiven #include, #define, #ifdef, etc. Compiler Konvertierung von Quellcode-Dateien in Objekt-Dateien Linker Erzeugung einer ausführbaren Datei 10
Compilieren und Linken Wie in Java können mehrere Quellcode-Dateien verwendet werden Jede Quellcode-Datei ".C" muss einzeln compiliert werden, jedesmal wird eine Objekt- Datei ".o" erzeugt. Dabei können Beziehungen zwischen verschiedenen Quellcode-Dateien offen bleiben (z.b. externe Variablen). Beim anschließenden Linken werden die Objekt- Dateien zu einem Binary zusammengefügt. 11 Compilieren und Linken Präprocessor #includes etc. Compiler Übersetzung in Maschinencode Objekt-Dateien Ausführbares Programm Linker Zusammenführen von Komponenten externe Bibliotheken, libc.so, libstdc++.so, etc. 12
Compilierung Beispiel > ls SourceFile1.C SourceFile2.C > g++ -c SourceFile1.C > g++ -c SourceFile2.C > ls SourceFile1.C SourceFile1.o SourceFile2.C SourceFile2.o > g++ -o prog SourceFile1.o SourceFile2.o > ls prog SourceFile1.C SourceFile1.o SourceFile2.C SourceFile2.o >./prog Hello World! 13 Elementare Datentypen 14
Elementare Datentypen in Java Zahlenbereiche der Ganzzahltypen Typ Bits Minimalwert Maximalwert byte 8-128 127 short 16-32.768 32767 int 32-2147483648 2147483647 long 64-9.223 10 18 9.223 10 18 char 16 0 ('\u0000') 65.535 ('\uffff') Typen byte, short, int und long sind Vorzeichenbehaftet (signed) und in Zweierkomplementdarstellung codiert 15 Elementare Datentypen in C++ Typ Bits Zahlenbereich int 32-2.147.483.648 bis 2.147.483.647 unsigned int 32 0 bis 4.294.967.295 signed char 8-128 bis 127 unsigned char 8 0 bis 255 short 16-32.768 bis 32.767 unsigned short 16 0 bis 65.635 long long 64 9.223 10 18 unsigned long long 64 0 bis 9.223 10 18 0 bis 1.845 10 19 16
Elementare Datentypen in C++ Anders als in Java sind in C++ die Größen der Elementaren Datentypen maschinenabhängig Die Größe der Datentypen lässt sich mit sizeof ermitteln: int n=sizeof(int) In C++ gilt immer die Ungleichung sizeof(char) sizeof(short) sizeof(int) sizeof(long) 17