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
der Universität Oldenburg
Advertisements

2.3 Kodierung von Zeichen 2.4 Kodierung von Zahlen
Variablen und Datentypen
Datentyp- umwandlung. Literale sind: Bezeichner mit einem festen Wert wie z.B:
Basisinformationstechnologie WS 2003/04 T.Schaßan
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
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
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 Kapitel 1 Gisbert Dittrich; Claudio Moraga FBI Unido
Zusammenfassung Vorwoche
Zahlensysteme und Dualarithmetik copyleft: munz
Einführung in die Programmiersprache C 1
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
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 Informatik für Naturwissenschaftler und Ingenieure
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 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 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 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
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 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 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
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 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 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
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.
Programmierung 1. Einführung Seite 1
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
BMEVIEEA100 Grundlagen der Programmierung
Hochschule Fulda – FB ET Sommersemester 2014
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Kapitel 5Strukturen Information aus der realen Welt werden in einem informationsverarbeitenden System als Daten abgelegt. Diese stellen also eine (vereinfachte)
Einführung in die Programmierung Wintersemester 2015/16 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Variablen und Operatoren. C++ Teil 2: Grundstrukturen Variablen Operatoren Kontrollstrukturen Funktionen Header-Dateien Pointer und Referenzen.
Einführung in die Programmierung
Prof. J. Walter Bitte römische Zahlen im Geschichtsunterricht!
 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. 2: Darstellung von Information2 Kapitel 2: Darstellung von Information Inhalt Einfache Datentypen Zahldarstellungen im Rechner Bezeichner Datendefinition, Zuweisung, Initialisierung

Rudolph: EINI (WS 2005/06) Kap. 2: Darstellung von Information3 Wiederholung Realisierung eines Programms Problemanalyse Spezifikation Algorithmenentwurf Formulierung eines Programms Programm (in C/C++) Compiler Assembler- Programm Assemblierer Maschinen- Programm Ausführung erfolgt mit Hilfe des Laufzeitsystems

Rudolph: EINI (WS 2005/06) Kap. 2: Darstellung von Information4 Darstellung von Information Notwendig für Programmierung: Ausschnitte der realen Welt müssen im Rechner abgebildet werden können! Dazu gehören etwa Daten in vielerlei Form! Bestimmte Formen dieser Daten haben gemeinsame, typische Eigenschaften! Solche werden zusammengefasst zu so genannten Datentypen.

Rudolph: EINI (WS 2005/06) Kap. 2: Darstellung von Information5 Darstellung von Information Unterscheidung Einfache Datentypen sind elementar bzw. nicht auf andere Typen zurückführbar. Beispiel: positive ganze Zahlen Zusammengesetze Datentypen entstehen baukastenartig durch Zusammensetzen von einfachen Datentypen. Beispiel: ein Paar aus zwei positiven ganzen Zahlen

Rudolph: EINI (WS 2005/06) Kap. 2: Darstellung von Information6 Darstellung von Information Wie werden Zahlen im Rechner dargestellt? Bit { 0, 1 } 8 Bit = 1 Byte Speicher im Rechner = lineare Folge von Bytes bzw. Bits Duales Zahlensystem: n Bits: (b n-1 b n-2 … b 2 b 1 b 0 ) mit b k { 0, 1 } 2 n mögliche Kombinationen (= verschiedene Zahlen) Umwandlung in Dezimalzahl:

Rudolph: EINI (WS 2005/06) Kap. 2: Darstellung von Information7 Darstellung von Information Einfache Datentypen Ganzzahlen ohne Vorzeichen ( unsigned ) BitByteWertevorratName in C/C … 255 unsigned char 1620 … unsigned short int unsigned int unsigned long int ACHTUNG: Wertebereiche rechnerabhängig! Hier: PC mit Pentium IV.

Rudolph: EINI (WS 2005/06) Kap. 2: Darstellung von Information8 Darstellung von Information Negative Zahlen? Gleicher Vorrat an verschiedenen Zahlen! Vorrat muss anders aufgeteilt werden! Naiver Ansatz: Man verwendet n-1 Bit zur vorzeichenlosen Zahldarstellung Das ergibt Zahlen im Bereich 0 … 2 n-1 -1, also 0 bis 127 für n=8 Bit n repräsentiert das Vorzeichen: 0 = positiv, 1 = negativ Bei n = 8 ergibt das Zahlen im Bereich -127 bis 127 Probleme: Die Null zählt doppelt: +0 und -0 Eine mögliche Zahldarstellung wird verschenkt! so nicht!

Rudolph: EINI (WS 2005/06) Kap. 2: Darstellung von Information9 Darstellung von Information Negative Zahlen? Gleicher Vorrat an verschiedenen Zahlen! Vorrat muss anders aufgeteilt werden! 0255 unsigned char signed char

Rudolph: EINI (WS 2005/06) Kap. 2: Darstellung von Information10 Darstellung von Information Bitrepräsentation von negativen Zahlen: Man muss nur das Stellengewicht des höchstwertigen Bits negativ machen! Beispiel: = = -87 Bit unsigned signed

Rudolph: EINI (WS 2005/06) Kap. 2: Darstellung von Information11 Darstellung von Information Bitrepräsentation von Ganzzahlen mit Vorzeichen: (n = 8) unsignedsigned ………… …………

Rudolph: EINI (WS 2005/06) Kap. 2: Darstellung von Information12 Darstellung von Information Einfache Datentypen Ganzzahlen mit Vorzeichen BitByteWertevorratName in C/C … 127 char … short int int long int ACHTUNG: Wertebereiche rechnerabhängig! Hier: PC mit Pentium IV.

Rudolph: EINI (WS 2005/06) Kap. 2: Darstellung von Information13 Darstellung von Information Zwischenfragen: Wie werden Daten im Programm angelegt bzw. abgelegt? Wie kann ich sie wieder finden und abrufen bzw. verändern? Rechner muss angewiesen werden Speicherplatz für Daten zu reservieren. Das geschieht formal im Programm durch eine Datendefinition: Angabe von Datentyp und Bezeichner. Beispiele: char a; short b; unsigned long c; AdresseDatenName a b c

Rudolph: EINI (WS 2005/06) Kap. 2: Darstellung von Information14 Darstellung von Information Datendefinition (DD) unsigned int Postleitzahl; Was geschieht? 1.DD reserviert Speicher 2.DD legt Wertevorrat fest 3.DD ermöglicht eindeutige Interpretation des Bitmusters 4.DD legt zulässige Operatoren fest Was geschieht nicht? DD weist keinen Wert zu! Zufällige Bitmuster im Speicher! Häufige Fehlerquelle!

Rudolph: EINI (WS 2005/06) Kap. 2: Darstellung von Information15 Darstellung von Information Zuweisung Beispiel: Postleitzahl = 44221; Vor einer Zuweisung muss eine Datendefinition stattgefunden haben! Was geschieht? Die Zahl wird gemäß Datentyp interpretiert & in ein Bitmuster kodiert. Das Bitmuster wird an diejenige Stelle im Speicher geschrieben, die durch den Bezeichner symbolisiert wird. Initialisierung Beispiel: unsigned int Postleitzahl = 44221; Datendefinition mit anschließender Zuweisung

Rudolph: EINI (WS 2005/06) Kap. 2: Darstellung von Information16 Darstellung von Information Bezeichner Bauplan: Es dürfen nur Buchstaben a bis z, A bis Z, Ziffern 0 bis 9 und der Unterstrich _ vorkommen. Das erste Zeichen muss ein Buchstabe oder ein Unterstrich sein. Prinzipiell keine Längenbeschränkung. Schlüsselwörter dürfen nicht verwendet werden. Winkel EinkomSteuer Einkom_Steuer einkom_Steuer _OK x3 _x3_und_x4_

Rudolph: EINI (WS 2005/06) Kap. 2: Darstellung von Information17 Darstellung von Information Schlüsselwörter … sind reservierte Wörter der jeweiligen Programmiersprache! autodoubleintstruct breakelselongswitch caseenumregistertypeof charexternreturnunion constfloatshortunsigned continueforsignedvoid defaultgotosizeofvolatile doifstaticwhile Schlüsselwörter der Programmiersprache C

Rudolph: EINI (WS 2005/06) Kap. 2: Darstellung von Information18 Darstellung von Information Schlüsselwörter … sind reservierte Wörter der jeweiligen Programmiersprache! asmexportprivatetrue boolfalseprotectedtry const_castfriendpublictypeid catchinlinestatic_casttypename classmutabletemplateusing deletenamespace reinterpret_cast virtual dynamic_castnewthis explicitoperatorthrow Zusätzliche Schlüsselwörter der Programmiersprache C++

Rudolph: EINI (WS 2005/06) Kap. 2: Darstellung von Information19 Darstellung von Information Ganzzahlen: Binäre Operatoren Addition Operator: + Subtraktion Operator: - Multiplikation Operator: * Ganzzahldivision Operator: / Modulo Operator: % Beispiele: A + b; 3 * x3 - 8 / Faktor; wert % 12;

Rudolph: EINI (WS 2005/06) Kap. 2: Darstellung von Information20 Darstellung von Information Ganzzahlen: Modulo-Operator % liefert den Test der Ganzzahldivision aus Alltagsleben bekannt, aber selten unter diesem Namen Beispiel: Digitaluhr Wertevorrat: 0:00 bis 23:59 Stundenanzeige springt nach 23 auf 0 Minutenanzeige springt nach 59 auf 0 C/C++: unsigned int stunde, laufendeStunde = 37; stunde = laufendeStunde % 24;

Rudolph: EINI (WS 2005/06) Kap. 2: Darstellung von Information21 Darstellung von Information Ganzzahlen: Häufige Fehlerquellen … Zahlenüberlauf short m = 400, n = 100, p = 25, k; k = m * n / p; Resultat: k = -1021; Warum? 400 * 100 ergibt zu groß für Datentyp short (< 32768) = Interpretation als Datentyp short: = Schließlich: / 25 = -1021

Rudolph: EINI (WS 2005/06) Kap. 2: Darstellung von Information22 Darstellung von Information Ganzzahlen: Häufige Fehlerquellen … Zahlenüberlauf: Addition short a = 32600, b = 200, c = a + b; Resultat: c = ; Zahlenüberlauf: Subtraktion unsigned short m = 100, n = 101, k; k = m – n; Resultat: k = 65535; Programmiertes Unheil!

Rudolph: EINI (WS 2005/06) Kap. 2: Darstellung von Information23 Darstellung von Information Ganzzahlen: Häufige Fehlerquellen … Ganzzahldivision ist reihenfolgeabhängig! Beispiel: 20 * 12 / / / 3 * 12 6 * 12 72

Rudolph: EINI (WS 2005/06) Kap. 2: Darstellung von Information24 Darstellung von Information Merken! Wird Zahlenbereich bei Ganzzahlen über- oder unterschritten (auch bei Zwischenergebnissen), dann entstehen unvorhersehbare, falsche Ergebnisse ohne Fehlermeldung! Es liegt im Verantwortungsbereich des Programmierers, die geeigneten Datentypen auszuwählen (Problemanalyse!). Die Verwendung von größeren Datentypen verschiebt das Problem nur auf größere Wertebereiche: es wird i.A. dadurch nicht gelöst! Es müssen ggf. Vorkehrungen getroffen werden: z. B. Konsistenzprüfungen.

Rudolph: EINI (WS 2005/06) Kap. 2: Darstellung von Information25 Darstellung von Information Reelle Zahlen In C/C++ gibt es zwei Datentypen für reelle Zahlen: BitByteWertebereichName in C/C++Stellen 324± 3.4 * … ± 3.4 * float 7 648± 1.7 * … ± 1.7 * double 15 Stellen = signifikante Stellen

Rudolph: EINI (WS 2005/06) Kap. 2: Darstellung von Information26 Darstellung von Information Reelle Zahlen Float vs. Long : beide 4 Byte, aber riesiger Unterschied im Wertebereich! Wie geht das denn? Durch Verlust an Genauigkeit im niederwertigen Bereich der Zahl! Repräsentation ist standardisiert: IEEE-Standard P754 (1985) Beispiel: float (32 bit) Vorzeichene 7 …e 0 m 1 … m 23 ExponentMantisse

Rudolph: EINI (WS 2005/06) Kap. 2: Darstellung von Information27 Darstellung von Information Reelle Zahlen float pi1= ; double pi2= ; Weitere gültige Schreibweisen: Festkommazahl (fixed format) e5Fließkommazahl (floating point) e-91 Achtung: Dezimaldarstellung immer mit Punkt, niemals mit Komma! 7 signifikante Stellen 15 signifikante Stellen