Algorithmen zur Datenanalyse in C++ Hartmut Stadie 23.04.2012 Algorithmen zur Datenanalyse in C++ Hartmut Stadie 1/ 16
Einführung Algorithmen zur Datenanalyse in C++ Hartmut Stadie 2/ 16
Übersicht Einführung Informationen Algorithmen zur Datenanalyse in C++ Hartmut Stadie 3/ 16
Informationen Ablauf: Vorlesung: montags 16:00 Hörsaal III Übung: im Anschluss an die Vorlesung in 9/302 und 9/305 Material: Stroustrup: The C++ Programming Language, 3rd edition http://www.mathematik.uni-marburg.de/ cpp/ Press et al: Numerical Recipes, 3rd edition http://wwwiexp.desy.de/studium/lehre/cplusplus/ Algorithmen zur Datenanalyse in C++ Hartmut Stadie 4/ 16
Übersicht Einführung Deklaration Variablengeltungsbereich Argumente Rückgabewert Überladene Default-Argument Hauptprogramm: main Beispiel Algorithmen zur Datenanalyse in C++ Hartmut Stadie 5/ 16
Deklaration double sqrt(double); //Definition double sqrt(double x) {... return ergebnis; ; Algorithmen zur Datenanalyse in C++ Hartmut Stadie 6/ 16
Variablengeltungsbereich #include <iostream> int i; int main(const int argc, const char **argv) { { int i; static int j; std::cout << i << ", " << j << \n ;//134514688, 0 i = 3; std::cout << i << \n ;//3 { int i = i; std::cout << i << \n ;//10240032 std::cout << ::i << \n ;//0 std::cout << i << \n ;3 std::cout << i << \n ;0 Algorithmen zur Datenanalyse in C++ Hartmut Stadie 7/ 16
Funktionsargumente normal als Kopie: Argumentvariable wird nicht verändert! Anders bei Referenz void f(int a, int& b) { a++; b++;... int c = 0,d = 0; f(c,d);//c=0, d=1 Algorithmen zur Datenanalyse in C++ Hartmut Stadie 8/ 16
Rückgabewert Wenn Funktion mit Typ deklariert, muss return einen Wert zurückgeben! int f1() {;//falsch void f2() {;//ok int f3() { return;//falsch int f4() {return 1;//richtig void f5() { return;//richtig void f6() { return 4;//falsch int& fr() { int i = 9; return i;//falsch Algorithmen zur Datenanalyse in C++ Hartmut Stadie 9/ 16
Überladene überladen: gleicher Name, unterschiedliche Argumenttypen void print(long); void print(double); int main() { const long l =9; print(l); print(0.346); print(4l); print(0.3f);//float->double print(3);//int -> long oder int ->double??? Algorithmen zur Datenanalyse in C++ Hartmut Stadie 10/ 16
Umwandlungsregeln Regeln: exakt oder trivial z.b. T const T Promotionen (ganzzahlige Promotionen oder float double) z.b. bool int, char int, short int,(+ unsigned) float double Standardkonversionen z.b. int double, double int, double long double, int unsigned int... Algorithmen zur Datenanalyse in C++ Hartmut Stadie 11/ 16
Default-Argument void f(int a = 9); { f(7); f();//f(9) Algorithmen zur Datenanalyse in C++ Hartmut Stadie 12/ 16
Hauptprogramm: main int main(int argc, char* argv[]) {... Algorithmen zur Datenanalyse in C++ Hartmut Stadie 13/ 16
Beispiel: Euklidischer Alorithmus Aufgabe: Finde größten gemeinsamen Teiler(ggT) zweier ganzer Zahlen Euklidischer Algorithmus: Wikipedia: Beispiel: ggt von 6 und 27 EUCLID(a,b) 1 solange b ungleich 0 2 h -> a mod b 3 a -> b 4 b -> h 5 return a Algorithmen zur Datenanalyse in C++ Hartmut Stadie 14/ 16
Beispiel: Euklidischer Alorithmus Aufgabe: Finde größten gemeinsamen Teiler(ggT) zweier ganzer Zahlen Euklidischer Algorithmus: Wikipedia: EUCLID(a,b) 1 solange b ungleich 0 2 h -> a mod b 3 a -> b 4 b -> h 5 return a Beispiel: ggt von 6 und 27 a b h 6 27 6 27 6 3 6 3 0 3 0 Algorithmen zur Datenanalyse in C++ Hartmut Stadie 14/ 16
Euklidischer Algorithmus EUCLID(a,b) 1 solange b ungleich 0 2 h -> a mod b 3 a -> b 4 b -> h 5 return a Beispiel: ggt von 6 und 27 int ggt(int a, int b) { while(b!= 0) { int h = a % b; a = b; b = h; return a; a b 6 27 27 6 6 3 3 0 Algorithmen zur Datenanalyse in C++ Hartmut Stadie 15/ 16
Rekursion als rekursive Funktion: int ggt(int a, int b) { if(b == 0) return a; return ggt(b, a % b); Beispiel: ggt von 6 und 27 a b 6 27 27 6 6 3 3 0 Algorithmen zur Datenanalyse in C++ Hartmut Stadie 16/ 16