Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.

Slides:



Advertisements
Ähnliche Präsentationen
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Advertisements

Datentyp- umwandlung. Literale sind: Bezeichner mit einem festen Wert wie z.B:
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Einführung in die Programmierung
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Programmierung Wintersemester 2013/14 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2012/13 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2012/13 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Fundamente der Computational Intelligence (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl für Algorithm Engineering Wintersemester.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung
Einführung in die Programmierung Wintersemester 2012/13 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Datentypen Überblick Datentypen Einfache / fundamentale Datentypen
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
 Präsentation transkript:

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl für Algorithm Engineering Wintersemester 2005/06

Rudolph: EINI (WS 2005/06) Kap. 16: Fallstudien2 Kapitel 16: Fallstudien Inhalt Exkurs: Typumwandlung (cast) Sortieren: Mergesort …

Rudolph: EINI (WS 2005/06) Kap. 16: Fallstudien3 Kapitel 16: Fallstudien Typumwandlung Automatisch (Promotionen) das Rechenwerk braucht gleiche Typen für Rechenoperation char signed char short int unsigned short int int (ggf. unsigned int ) wchar_t enum int (ggf. unsigned int ) bool int false 0 true 1 GanzzahligFließkomma

Rudolph: EINI (WS 2005/06) Kap. 16: Fallstudien4 Kapitel 16: Fallstudien Typumwandlung Automatisch (Promotionen) das Rechenwerk braucht gleiche Typen für Rechenoperation Bsp: char c = 3; short s = 1024; int i = c + s; int Umwandlung zu int + int -Addition int Ergebnis: int char c = 3; short s = 1024; short i = c + s; int + Zuweisung int short ?

Rudolph: EINI (WS 2005/06) Kap. 16: Fallstudien5 Kapitel 16: Fallstudien Typumwandlung Umwandlungen Ganze Zahlen - Zieltyp unsigned alle Bits aus der Quelle, die ins Ziel passen, werden kopiert der Rest (höherwertige Bits) wird ggf. ignoriert - Zieltyp signed Wertübernahme, wenn im Ziel darstellbar; sonst undefiniert! unsigned char uc = 1023; // binär bit10 bit uc = 255 signed char sc = 1023; // plausible Resultate 127 oder -1

Rudolph: EINI (WS 2005/06) Kap. 16: Fallstudien6 Kapitel 16: Fallstudien Typumwandlung Umwandlungen Fließkommazahlen - float double passt immer - double float Wertübernahme, wenn im Ziel darstellbar; sonst undefiniert! - float/double Ganzzahl Ungenauigkeiten und möglicher Datenverlust Der Compiler warnt vor möglichem Datenverlust! Warnungen des Compiler nicht ignorieren! int i = 2.6; i = 2; char c = 2.3e8; c = -128;

Rudolph: EINI (WS 2005/06) Kap. 16: Fallstudien7 Kapitel 16: Fallstudien Typumwandlung Resultat bei doppelter Genauigkeit (double): e+021 Trauen Sie nicht vorbehaltslos den Ergebnissen des Rechners! Bsp: für exakt: / =

Rudolph: EINI (WS 2005/06) Kap. 16: Fallstudien8 Kapitel 16: Fallstudien Typumwandlung Vorbemerkung: Die Regeln von C++ garantieren, dass Typfehler unmöglich sind. Theorie: Wenn Programm sauber kompiliert, dann keine Durchführung von ungültigen / unsauberen Operationen an Objekten. Wertvolle Garantie! nicht leichtfertig aufgeben! Aber: explizite Typumwandlung (cast) untergräbt das Typsystem! explizite Typumwandlung: C Stil: (T) Ausdruck// wandelt Ausdruck in den Typ T um T(Ausdruck)// wandelt Ausdruck in den Typ T um mißbilligt (deprecated) Nicht verwenden!

Rudolph: EINI (WS 2005/06) Kap. 16: Fallstudien9 Kapitel 16: Fallstudien Explizite Typumwandlung (C++) const_cast (Ausdruck) beseitigt Konstanz von Objekten dynamic_cast (Ausdruck) zum Downcasten bei polymorphen Quelltypen umwandeln in einen abgeleiteten Typ Fehlschlag bei * ergibt Nullpointer, bei & Ausnahme bad_cast reinterpret_cast (Ausdruck) verwendet auf niedriger Ebene (Uminterpretation des Bitmusters) Ziel muss mindestens soviele Bits wie Quelle haben, sonst … static_cast (Ausdruck) zum Erzwingen von impliziten Typumwandlungen

Rudolph: EINI (WS 2005/06) Kap. 16: Fallstudien10 Kapitel 16: Fallstudien Typumwandlung Wenn im Code viele Casts notwendig sind, dann stimmt meistens etwas mit dem Design des Programms nicht! Wenn im Code ein Cast notwendig ist, dann die Cast-Operation von C++ verwenden, weil 1.minimale automatische Typprüfung möglich (statisch / dynamisch); 2.man sich mehr Gedanken darüber macht, was man eigentlich tut; 3.für Außenstehende präziser angezeigt wird, was Sie tun. Wenn im Code ein Cast notwendig ist, dann die Cast-Operation in einer Funktion verbergen.

Rudolph: EINI (WS 2005/06) Kap. 16: Fallstudien11 Kapitel 16: Fallstudien Mergesort Beobachtung: Sortieren ist einfach, wenn man zwei sortierte Teilfolgen hat Teilfolge 1 Teilfolge 2 1: 11 < 27 2: 27 < 393: 38 < 396: 80 < 928 4: 39 < 805: 43 < 807: 92 < 103 ?

Rudolph: EINI (WS 2005/06) Kap. 16: Fallstudien12 Kapitel 16: Fallstudien S T T T M M M

Rudolph: EINI (WS 2005/06) Kap. 16: Fallstudien13 Kapitel 16: Fallstudien Laufzeitanalyse Annahme: Anzahl Objekte n = 2 k k = log 2 n 2 k Objekte je Teilsequenz 2 k-1 Objekte je Teilsequenz 2 k-2 Objekte je Teilsequenz 2 0 Teilsequenzen 2 1 Teilsequenzen 2 2 Teilsequenzen 2 k-(k-1) Objekte je Teilsequenz2 k-1 Teilsequenzen …… = 2 (a) 2 k-1 Vergleiche zum Sortieren der 2 k-1 Paare (b) auf Ebene e: (2 k-e -1) Vergleiche zum Mischen von 2 der 2 e Sequenzen (2 k-e -1) * 2 e-1 = 2 k-1 – 2 e-1 Vergleiche auf Ebene e = 1, …, k-1 2 k-1 + (k-1) * 2 k-1 – Summe(2 e-1 ; 1..k-1) = (k-1) * 2 k-1 +1 < k * 2 k = n log 2 n