Algorithmen zur Datenanalyse in C++

Ähnliche Dokumente
Numerische Methoden und Algorithmen in der Physik

Unterlagen. CPP-Uebungen-08/

RO-Tutorien 3 / 6 / 12

Algorithmen zur Datenanalyse in C++

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

4.2 Programmiersprache C

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29

Algorithmen zur Datenanalyse in C++

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

RO-Tutorien 17 und 18

Elementare Datentypen in C++

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

RO-Tutorien 15 und 16

Einführung in die C-Programmierung

Modellierung und Programmierung 1

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

float: Fließkommazahl nach IEEE 754 Standard mit 32 bit

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Einführung in die C++ Programmierung für Ingenieure

Funktionales C++ zum Ersten

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Programmiervorkurs Einführung in Java Tag 1

Kurze Einführung in die Programmiersprache C++ und in Root

4.2 Gleitkommazahlen. Der Speicherbedarf (in Bits) ist üblicherweise. In vielen Anwendungen benötigt man gebrochene Werte. Physikalische Größen

Einführung in die Programmierung Wintersemester 2008/09

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Einführung Programmierpraktikum C Michael Zwick

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Einheit Datentypen in der Programmiersprache C Schwerpunkt: Elementare (arithmetische) Datentypen

Algorithmen zur Datenanalyse in C++

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Primitive Datentypen

Einführung in die Programmierung Wintersemester 2011/12

2. Programmierung in C

Tutorium Rechnerorganisation

3. Anweisungen und Kontrollstrukturen

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen

Informatik 1 ( ) D-MAVT F2010. Logik, Schleifen. Yves Brise Übungsstunde 4

C++ Teil 4. Sven Groß. 30. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 16

Informatik 1 ( ) D-MAVT F2010. Schleifen, Felder. Yves Brise Übungsstunde 5

Einfache Rechenstrukturen und Kontrollfluß

Java I Vorlesung Imperatives Programmieren

Sprachkonstrukte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Einstieg in die Informatik mit Java

Einführung in C. EDV1-04C-Einführung 1

Informatik I (D-MAVT)

Grundlagen der Informatik 4. Kontrollstrukturen I

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen

Programmieren in C. C Syntax Datentypen, Operatoren und Kontrollstrukturen. Prof. Dr. Nikolaus Wulff

Einstieg in die Informatik mit Java

Primitive Datentypen, Eingaben, Kontrollstrukturen und Methodendeklaration

Kapitel 3: Variablen

7. Einführung in C++ Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

Java - Programmierung - Prozedurale Programmierung 1

ModProg 15-16, Vorl. 5

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

3 Grundstrukturen eines C++ Programms anhand eines Beispiels

Java - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 14/15

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010

Grundlagen der Informatik 2. Typen

Welche Informatik-Kenntnisse bringen Sie mit?

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

Inhalt. 1 Einstieg in die Welt von C Erste Schritte in C 31. Vorwort... 15

Variablen. CoMa-Übung VIII TU Berlin. CoMa-Übung VIII (TU Berlin) Variablen / 15

Vorlesung Programmieren

Einstieg in die Informatik mit Java

4 Formelsammlung C/C++

Vorlesungsprüfung Programmiersprache 1

Operatoren (1) Operatoren (2)

Imperative Programmierung in Java. Algorithmen und Datenstrukturen II 1

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

C++ - Einführung in die Programmiersprache Zeiger, Referenzen und Strukturen. Leibniz Universität IT Services Anja Aue

Kurzeinführung in C99

Die Programmiersprache C Eine Einführung

5. Elementare Befehle und Struktogramme

Effektiv Programmieren in С und C++

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

Grundlagen der Informatik 2. Operatoren

Android-Apps Gegenüberstellung Delphi java

Einfache Datentypen in JAVA

Intensivübung zu Algorithmen und Datenstrukturen

Noch für heute: primitive Datentypen in JAVA. Primitive Datentypen. Pseudocode. Dezimal-, Binär- und Hexadezimalsystem. der logische Typ boolean

Programmierkurs C++ Variablen und Datentypen

Vorlesung Programmieren

Informationsverarbeitung im Bauwesen

Die for -Schleife HEUTE. Schleifen. Arrays. Schleifen in JAVA. while, do reichen aus, um alle iterativen Algorithmen zu beschreiben

Kapitel 5. Datentypen und Operatoren

Die einfachsten Anweisungen

Kurzeinführung in C/C++ Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ Einleitung

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

Einführung in die Programmierung für NF. Algorithmen, Datentypen und Syntax

2.1 Fundamentale Typen

Transkript:

Algorithmen zur Datenanalyse in C++ Hartmut Stadie 16.04.2012 Algorithmen zur Datenanalyse in C++ Hartmut Stadie 1/ 39

Einführung Datentypen Operatoren Anweisungssyntax Algorithmen zur Datenanalyse in C++ Hartmut Stadie 2/ 39

Übersicht Einführung Informationen Aufgabe: Berechne exp(x) Beispiele Datentypen Operatoren Anweisungssyntax Algorithmen zur Datenanalyse in C++ Hartmut Stadie 3/ 39

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/ 39

Ein Beispiel: exp(x) Aufgabe: Berechne e x : exp(x) = n=0 x n n! exp(x) = 1 + x + x 2 2 + x 3 6 +... exp(x) = 1 + 1 x 1 + 1 x 1 x 2 + 1 x 1 x 2 x 3 +... Pseudocode: expox = 1 summand = 1 wiederhole von n = 1 bis 100 summand = summand * x / n expox = expox + summand Algorithmen zur Datenanalyse in C++ Hartmut Stadie 5/ 39

Ein Beispiel: exp(x) Pseudocode: expox = 1 summand = 1 wiederhole von n = 1 bis 100 summand = summand * x / n expox = expox + summand C++: double expox = 1; double summand = 1; for(int n = 1 ; n < 100 ; ++n) { summand *= x / n; //longer version: summand = summand * x / n; expox += summand; } Algorithmen zur Datenanalyse in C++ Hartmut Stadie 6/ 39

Beispiel 1. C++-Programm moin.cc: #include <iostream> //Kommentar /* Kommentar 2 */ int main() { std::cout << "Moin, moin!\n"; } Algorithmen zur Datenanalyse in C++ Hartmut Stadie 7/ 39

Programmierprojektstruktur Dateitypen: Quellcode:.cc,.hh kompilierter Code (object file) Bibliothek (library) Sammlung von Programmfunktionen für zusammengehörende Aufgaben ausführbare Datei (executable) Algorithmen zur Datenanalyse in C++ Hartmut Stadie 8/ 39

Kompilieren, Linken, Ausführen bash-2.05b$ g++ -c moin.cc bash-2.05b$ g++ -o moin moin.o bash-2.05b$./moin Moin, moin! Algorithmen zur Datenanalyse in C++ Hartmut Stadie 9/ 39

Übersicht Einführung Datentypen Deklarationen Elementare Datentypen Boolean Zeichentypen Integertypen Gleitkommatypen Void Definition Zuweisung Zusammengesetzte Typen Operatoren Algorithmen zur Datenanalyse in C++ Hartmut Stadie 10/ 39

Deklaration Deklaration Zuordnung: Variablenname -> Typ, Qualifier; Variablenname: beginnt mit Buchstabe/_ kann Zahlen und Buchstaben/_ enthalten keine Schlüsselwörter Guter Stil: Deklariere Variablen erst, wenn sie gebraucht werden! Weise jeder deklarierten Variable gleich einen Wert zu! Algorithmen zur Datenanalyse in C++ Hartmut Stadie 11/ 39

Elementare Datentypen: Boolean Werte: wahr( 0) oder falsch(0) bool b = true; bool a = 99; bool c = 0; //false Algorithmen zur Datenanalyse in C++ Hartmut Stadie 12/ 39

Elementare Datentypen: Zeichentypen Werte: 1 Zeichen char c = v ; Größe: 1 Byte = 8 Bit : 0-255 Algorithmen zur Datenanalyse in C++ Hartmut Stadie 13/ 39

Elementare Datentypen: Integertypen Werte: ganze Zahlen int a = 13; short int sg = 235; long int b= -1; int h = 0xa4;//hexadecimal 164 int o = 023;//octal 19 long l = 95L; unsigned int a; unsigned long b; signed int c;// int; Größen: 1 = sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) Linux PC: int,long (4 Byte): - 2.147.483.648 bis 2.147.483.647 Algorithmen zur Datenanalyse in C++ Hartmut Stadie 14/ 39

Elementare Datentypen: Gleitkommatypen Werte: reelle Zahlen x = s m b E e Beispiel: 3, 034359 10 3 float x = 13.5; float x2 = 9; float x3 = 9f; double y = -232313.5; long double l = 25235.346143674; IEEE Standard: b = 2, s mit 1 Bit Typ Größe E e m float 4 Byte 8 Bit(256) 127 23 Bit(8.388.608) double 8 Byte 11 Bit(2.048) 1023 52 Bit(4.5 10 15 ) Algorithmen zur Datenanalyse in C++ Hartmut Stadie 15/ 39

Gleitkommaarithmetik Probleme der Gleitkommaarithmetik Rundungsfehler bei Subtraktion ähnlich großer Zahlen Addition von Zahlen verschiedener Größenordnung daher Assoziativgesetz und Distributivgesetz ungültig Fehler durch Abbruch der Rechnung z.b. nur die ersten 30 Summanden einer Reihe Genauigkeit der Darstellung: in limits: std::numeric_limits<float>::min() std::numeric_limits<float>::max() std::numeric_limits<float>::epsilon() Algorithmen zur Datenanalyse in C++ Hartmut Stadie 16/ 39

Elementare Datentypen: void Algorithmen zur Datenanalyse in C++ Hartmut Stadie 17/ 39

Deklaration und Definition Deklaration meistens auch Definition Ausnahmen: float exp(float x); extern int a; struct A; class B; Definition: deklariere Namen und reserviere Speicher Deklaration: deklariere Namen (Speicher an anderer Stelle im Code schon reserviert) Algorithmen zur Datenanalyse in C++ Hartmut Stadie 18/ 39

Zuweisung und Konstanten int a;//deklaration und Definition a = 4567;//Zuweisung c = b = a; //rechts-assoziativ, zuerst b = a const int d = 8; d = 5; //!!! falsch Guter Stil: Benutze immer const für konstante Werte! Algorithmen zur Datenanalyse in C++ Hartmut Stadie 19/ 39

Übersicht Einführung Datentypen Operatoren Assoziation Reihenfolge Anweisungssyntax Algorithmen zur Datenanalyse in C++ Hartmut Stadie 20/ 39

Operatoren Operatoren sind dabei Symbole für mathematische Operationen (inklusive logischer Operationen) werden auf Variablen angewendet. Beispiel: double y = 2; double x = - 3 * sqrt(4) + 42 + y++ - --y;; Welche Reichenfolge???? Priorität Assoziation Algorithmen zur Datenanalyse in C++ Hartmut Stadie 21/ 39

Assoziation Welcher Teilausdruck zuerst???? rechts: einstellige Operatoren, Zuweisungen links: zweistellige Operatoren Algorithmen zur Datenanalyse in C++ Hartmut Stadie 22/ 39

Priorität Geltungsbereich(scope) //Beispiel int a = 9; int main() { int a = 7; std::cout << ::a << a; //97 } Guter Stil: Minimiere den Geltungsbereich von Variablen! Algorithmen zur Datenanalyse in C++ Hartmut Stadie 23/ 39

Member,Funktionsaufruf, Postincrement obj.member pointer->member pointer[expr] expr(expr_list) value(expr_list)//value construction lvalue++ lvalue-- casts Algorithmen zur Datenanalyse in C++ Hartmut Stadie 24/ 39

Preincrement,... sizeof ++lvalue --lvalue ~expr!expr -expr +expr &lvalue *expr new delete (type)expr Algorithmen zur Datenanalyse in C++ Hartmut Stadie 25/ 39

Multiplikation expr * expr expr / expr expr % expr Algorithmen zur Datenanalyse in C++ Hartmut Stadie 26/ 39

Summation expr + expr expr - expr Algorithmen zur Datenanalyse in C++ Hartmut Stadie 27/ 39

Schieben expr << expr expr >> expr Algorithmen zur Datenanalyse in C++ Hartmut Stadie 28/ 39

Vergleiche expr < expr expr <= expr expr > expr expr >= expr expr == expr expr!= expr expr && expr expr expr expr? expr : expr int a = (b > 0)? 1 : 1 Algorithmen zur Datenanalyse in C++ Hartmut Stadie 29/ 39

Zuweisungen lvalue = expr lvalue *= expr lvalue /= expr lvalue %= expr lvalue += expr lvalue -= expr Algorithmen zur Datenanalyse in C++ Hartmut Stadie 30/ 39

Übersicht Einführung Datentypen Operatoren Anweisungssyntax Deklaration Ausdruck Anweisungsblock Auswahlanweisungen Schleifen Sprunganweisungen Switch-Anweisung Bedingung Algorithmen zur Datenanalyse in C++ Hartmut Stadie 31/ 39

Ausdruck mit Semikolon!!! a = 8; std::cout << a; d = exp(6); Algorithmen zur Datenanalyse in C++ Hartmut Stadie 32/ 39

Anweisungsblock { statement statement...} Algorithmen zur Datenanalyse in C++ Hartmut Stadie 33/ 39

Auswahlanweisungen if( condition) statement if( condition) statement else statement //switch ( condition ) statement Beispiel: if( x > y ) { std::cout << "x ist groesser\n"; } else if( x < y ) { std::cout << "y ist groesser\n"; } else { std::cout << "x ist gleich y\n"; } Algorithmen zur Datenanalyse in C++ Hartmut Stadie 34/ 39

Schleifen while( condition ) statement do statement while ( expression ) ; for( for-init-statement condition ; expression ) statement Algorithmen zur Datenanalyse in C++ Hartmut Stadie 35/ 39

Schleifen: Beispiel int i = 0; while (i < 10) { std::cout << i << ; ++i; } mit for: for(int i = 0 ; i < 10 ; ++i) { std::cout << i << ; } Kleinerer Geltungsbereich Guter Stil: Minimiere den Geltungsbereich von Variablen! Algorithmen zur Datenanalyse in C++ Hartmut Stadie 36/ 39

Sprunganweisungen break; //verlasse Schleife, Block continue;//naechste Iteration return expr;//verlasse Funktion for(int i = 0 ; i < 10 ; ++i) { if( i == 2 ) continue; std::cout << i << ; } Algorithmen zur Datenanalyse in C++ Hartmut Stadie 37/ 39

Vergleich mit Konstanten char eingabe; bool yes; switch(eingabe) { case j : yes = true; case y : yes = true; case n : yes = false; default: yes = false; } nur Sprungziel break fehlt im Beispiel! Switch-Anweisung Algorithmen zur Datenanalyse in C++ Hartmut Stadie 38/ 39

Bedingung Bedingung (condition): Ausdruck (expr) Deklaration und Zuweisung if(int summe = a + b) { std::cout << summe << \n ; } else { std::cout << "a + b sind null\n"; } Algorithmen zur Datenanalyse in C++ Hartmut Stadie 39/ 39