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



Ähnliche Dokumente
Numerische Datentypen. Simon Weidmann

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Binärdarstellung von Fliesskommazahlen

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

Java Einführung Operatoren Kapitel 2 und 3

Programmierkurs Java

Datentypen. Agenda für heute, 4. März, Pascal ist eine streng typisierte Programmiersprache

Computeranwendung und Programmierung (CuP)

Binäre Gleitkommazahlen

Vertiefungsstoff zum Thema Darstellung von Zahlen

Tutorium Rechnerorganisation

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

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

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Zahlensysteme und Datendarstellung

Modul 122 VBA Scribt.docx

Übungen Programmieren 1 Felix Rohrer. Übungen

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Programmierung in C. Grundlagen. Stefan Kallerhoff

IT-Basics 2. DI Gerhard Fließ

2 Darstellung von Zahlen und Zeichen

Zahlensysteme. Digitale Rechner speichern Daten im Dualsystem 435 dez = binär

Computerarithmetik ( )

BITte ein BIT. Vom Bit zum Binärsystem. A Bit Of Magic. 1. Welche Werte kann ein Bit annehmen? 2. Wie viele Zustände können Sie mit 2 Bit darstellen?

Repräsentation von Daten Binärcodierung von rationalen Zahlen und Zeichen

Diana Lange. Generative Gestaltung Operatoren

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

Grundlagen der Informatik

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Einführung in die Informatik I

Einführung in die Programmierung

Klausur in Programmieren

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Daten, Informationen, Kodierung. Binärkodierung

Java Kurs für Anfänger Einheit 2 Datentypen und Operationen

Ein polyadisches Zahlensystem mit der Basis B ist ein Zahlensystem, in dem eine Zahl x nach Potenzen von B zerlegt wird.

Zahlensysteme. von Christian Bartl

Ein erstes Java-Programm

3 Rechnen und Schaltnetze

Musterlösung 2. Mikroprozessor & Eingebettete Systeme 1

Modellierung und Programmierung 1

Einführung in die Programmierung

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen

Die Programmiersprache C

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Informationssysteme Gleitkommazahlen nach dem IEEE-Standard 754. Berechnung von Gleitkommazahlen aus Dezimalzahlen. HSLU T&A Informatik HS10

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

Zahlensysteme: Oktal- und Hexadezimalsystem

Algorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging.

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

1 Organisatorisches. 2 Schleifeninvarianten. 3 Widerspruchsbeweise. 4 Zahlendarstellung in Rechnern. 5 Typanpassungen.

Sin-Funktion vgl. Cos-Funktion

Graphic Coding. Klausur. 9. Februar Kurs A

Einführung in die Java- Programmierung

Grundlagen der Informatik Übungen 1.Termin

Das Rechnermodell - Funktion

Dr. Monika Meiler. Inhalt

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

Grundlagen der Informatik I Informationsdarstellung

1. Das dekadische Ziffernsystem (Dezimalsystem) Eine ganze Zahl z kann man als Summe von Potenzen zur Basis 10 darstellen:

Tutorium Informatik 1. Aufgabe 2: Formatierte Ein- und Ausgabe

E-PRIME TUTORIUM Die Programmiersprache BASIC

2 Einfache Rechnungen

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

2. Negative Dualzahlen darstellen

Zur Universalität der Informatik. Gott ist ein Informatiker. Die Grundordnung der Welt läßt sich mathematisch formulieren:

Musterlösung 2. Mikroprozessor & Eingebettete Systeme 1

Zahlensysteme Das 10er-System

Übung 9 - Lösungsvorschlag

Binär Codierte Dezimalzahlen (BCD-Code)

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann

Excel Funktionen durch eigene Funktionen erweitern.

1 Bedingte Anweisungen. 2 Vergleiche und logische Operatoren. 3 Fallunterscheidungen. 4 Zeichen und Zeichenketten. 5 Schleifen.

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Programmiertechnik Operatoren, Kommentare, Ein-/Ausgabe

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Klausur in Programmieren

Aufgaben zu Stellenwertsystemen

Übungen zu C++ Kapitel 1

Programmiervorkurs Einführung in Java Tag 1

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

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

Professionelle Seminare im Bereich MS-Office

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Das Maschinenmodell Datenrepräsentation

Daten verarbeiten. Binärzahlen

Vorlesung Programmieren. Agenda. Dezimalsystem. Zahlendarstellung. Zahlendarstellung. Oder: wie rechnen Computer?

0 Im folgenden sei die Wortlänge gleich 8 (d. h.: es wird mit Bytes gearbeitet).

Jede Zahl muss dabei einzeln umgerechnet werden. Beginnen wir also ganz am Anfang mit der Zahl,192.

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Propädeutikum zur Programmierung

Grundlagen der Informatik Ergänzungen WS 2007/2008 Prof. Dr. Rainer Lütticke

Theoretische Informatik SS 04 Übung 1

Binär- und Hexadezimal-Zahl Arithmetik.

, WS2012 Übungsgruppen: Mo.,

Zahlensysteme. Zahl Stellenwert Zahl Zahl =

Transkript:

01.11.05 1 Noch für heute: 01.11.05 3 primitie Datentypen in JAVA Primitie Datentypen Pseudocode Name Speichergröße Wertgrenzen boolean 1 Byte false true char 2 Byte 0 65535 byte 1 Byte 128 127 short 2 Byte 32768 32767 int 4 Byte 2147483648 2147483647 long 8 Byte 2 63 2 63 1 float 4 Byte 3.40282347 10 38 3.40282347 10 38 double 8 Byte ±1.79769313486231570 10 308 01.11.05 2 Dezimal-, Binär- und Headezimalsystem 01.11.05 4 der logische Typ boolean Menschen: haben 10 Finger zählen im 10er-System Dezimalsystem: Stellen haben Potenzen on 10 als Wertigkeit Beispiel: 46 10 = 4 10 1 + 6 10 0 Computer: kennen nur an und aus 2er-System Binärsystem: Stellen haben Potenzen on 2 als Wertigkeit Beispiel: 46 10 = 101110 2 = 1 2 5 + 1 2 3 + 1 2 2 + 1 2 1 Headezimalsystem: Stellen haben Potenzen on 16 als Wertigkeit Ziffern: 0 1 2 3 4 5 6 7 8 9 a b c d e f Beispiel: 46 10 = 02e 16 = 2 16 1 + 14 16 0 zeigt Wahrheitswerte an kennt nur die literalen Werte true und false alle Vergleichsausdrücke haben Ergebnistyp boolean Beispiele: n > 100 a + b == c + 8 Math.abs( - y ) <= 0.001 5 * i!= Math.round( z * 4. / 3 ) wird per default mit false initialisiert

01.11.05 5 der Zeichentyp char 01.11.05 7 die ganzzahligen Typen byte, short, int, long codiert die Zeichen aller erwendbaren Alphabete, z.b. ASCII laufen über, wenn Wertebereich überschritten wird: 0 1 kennt ASCII-Literale wie A a 2 @ +? eplizite Literale \u0000 bis \uffff (headezimal) kennt einige Sonderliterale, z.b.: \b Backspace \\ Backslash \ \n Zeilentrenner \t Tabulator \ das Zeichen selbst \" das Zeichen " selbst, z.b. im String "\"Dir auch!\"" wird kaum zum Rechnen erwendet, z.b.: char c = w ; int i = c - a + 1 ; wird per default mit \u0000 initialisiert // ein Buchstabe // seine Nr. im Alphabet short s = 32767 ; ++s ; System.out.println( "s = " + s ) ; "s = -32768" die Operationen + - * / % werden eakt ausgeführt (sofern kein Überlauf auftritt) alle Literale sind om Typ int, ein Suffi L kennzeichnet long: int i = -10 ; long l = 12345678900L ; werden per default mit 0 bzw. 0L initialisiert k 2 // auch "+10" erlaubt // sonst ungültiges int! ++ k 2 1 01.11.05 6 die ganzzahligen Typen byte, short, int, long 01.11.05 8 codieren ganze Zahlen mit Vorzeichen im Binärsystem: codieren rationale Zahlen mit Vorzeichen: e ist ein Vorzeichenbit: = 1 Zahl negati ist eine Binärzahl: byte 7 Stellen, short 15 Stellen int 31 Stellen, long 63 Stellen unterstützten Inkrement ++ und Dekrement -- : int i = 7, j = 7 ; ++i ; --j ; System.out.println( "i = " + i + " j = " + j ) ; "i = 8 j = 6" ist ein Vorzeichenbit: = 1 Zahl negati e ist der Eponent: float 8 Stellen, double 11 Stellen ist die Mantisse: float 23 Stellen, double 52 Stellen float = ( 1) 2 e 127 (1 + 2 23 ) double = ( 1) 2 e 1023 (1 + 2 52 ) alle Literale sind om Typ double, ein Suffi F kennzeichnet float: double d = 1. ; // Punkt. zeigt double an double e = -1E-3 ; // Zeichen E bedeutet: *10^ float f = 10.25F ; // sonst ungültiges float!

01.11.05 9 01.11.05 11 Der Verlust an Genauigkeit kommt wie folgt zustande: zeigen unendlich an, wenn Wertebereich überschritten wird: float f = 3.4E38F ; float g = -f / 0F ; f += 1E38F ; System.out.println( "f = " + f + " g = " + g ) ; (a) (b) 0.0 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 1 1 0 0 1 1 1.0 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 1 1 0 0 1 1 "f = Infinity g = -Infinity" (c) 0.0 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 haben speziellen Wert NaN (Not a Number), falls kein Ergebnis eistiert: double d = Math.sqrt( -1. ) ; System.out.println( "d = " + d ) ; "d = NaN" (a) Binärdarstellung on f. Der Kasten ist die Mantisse, sie beginnt immer bei der ersten 1 on links. (b) Addition: g = f + 1F. Die Mantisse wird normalisiert durch Verschiebung der Stellen on f nach rechts entsprechend dem Größenunterschied. Die roten Ziffern werden raus geschoben und gehen erloren. (c) Subtraktion: h = g - 1F. Die Mantisse wird wieder normalisiert, jedoch können die erlorenen Ziffern nicht wieder hergestellt werden (blau). 01.11.05 10 01.11.05 12 Umwandlung der primitien Datentypen sind nicht eakt, rechnen mit Rundungsfehlern Achtung: Verlust on Genauigkeit bei Addition erschiedener Größen bzw. bei Subtraktion mit gleichem Vorzeichen möglich (instabile Oper.): float f = 1.23456789E-7F ; float g = f + 1F ; // Addition ersch. Größenordnungen float h = g - 1F ; // Subtraktion fast gleicher Größen System.out.println( "f = "+f + " g = "+g + " h = "+h ) ; "f = 1.2345679E-7 g = 1.0000001 h = 1.1920929E-7" die Operationen * / sowie + bei gleichen Größenordnungen und Vorzeichen sind stabil werden per default mit 0F bzw. 0. initialisiert Die Umwandlung der Typen bei Zuweisung geschieht wie folgt: byte short int long float double char boolean wird nicht umgewandelt! Umwandlung in Pfeilrichtung ist implizit Umwandlung gegen Pfeilrichtung muss eplizit erfolgen Vorsicht zwischen ganzzahligen und Gleitkommatypen!!

01.11.05 13 Umwandlung der primitien Datentypen 01.11.05 15 Was bei der Konersion passiert Beispiele für implizite Umwandlung: float f = 2 ; // int float long l = ( W - A ) + 1 ; // char int long double d = 4 * l - f ; // int long float double Beispiele für eplizite Umwandlung, sog. Cast: "(type)" ganzzahlig Gleitkomma: etl. Verlust an Genauigkeit: long l = 1000000009999999L ; float f = l ; // kein Cast erforderlich System.out.println( "f = " + f ) ; "f = 9.9999999E14" float f = (float)( 2. / 3 ) ; // double float long l = (long) ( f * 3. ) ; // float double long char c = (char) ( A + l ) ; // char long char short s = (short)( W ) ; // char int short 0 long float! 01.11.05 14 Was bei der Konersion passiert 01.11.05 16 Was bei der Konersion passiert ganzzahlige aufsteigende Typen untereinander werden eakt übernommen: Gleitkomma ganzzahlig: etl. Bereichsüberschreitung: (char) short float f = 1e30F ; long l = (long)f ; System.out.println( "l = " + l ) ; // Cast erforderlich 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 int "l = 9223372036854775807" aufsteigende Gleitkommatypen untereinander werden eakt übernommen: e f float! long 0 e 0 0 0 f 0 0 0 0 0 0 double float

01.11.05 17 Ausdrücke mit primitie Datentypen 01.11.05 19 Pseudocode Ein Ausdruck hat den höchsten orkommenden Typ. Beispiele: <byte> + <long> <long> <int> - <float> <float> <short> * <int> + <byte> <int> <long> / ( <double> - <char> ) <double> Achtung: ein Ausdruck wird erst ausgerechnet und dann zugewiesen! Beispiel: int i = 2100000000 ; long l = i + 50000000 ; // int + int = int long System.out.println( "l = " + l ) ; "l = -2144967296" eakte Art, Algorithmen zu beschreiben Form zwischen Fließtet und Programmcode: sprachlich direkt wie Tet übersichtlich strukturiert wie Code Kompromiss zwischen beiden Etremen Vorteile: mathematische Klarheit Unabhängigkeit on Programmiersprachen iele Fachbücher erwenden Pseudocode 01.11.05 18 01.11.05 20 Unterschiede Pseudocode / Programmcode Bedeutung: Pseudocode JAVA Zuweisung := = Vergleich = ==!= log. Und, and && & log. Oder, or log. Nicht, not! Kommentar {... } /*...*/, //... alle Elemente a A eigene Schleife Auswahl wähle Methodenaufruf einf. Algor. initialisiere Methodenaufruf sortiere Methodenaufruf Vektoroperat. := w Methodenaufruf Blöcke if... then... endif {... } while... do... endwhile {... }

01.11.05 21 Unterschiede Pseudocode / Programmcode 01.11.05 23 weiteres Beispiel mit Pseudocode Pseudocode: kontetfrei Variablentyp passend Schleifen nach Sinn klare mathematische Struktur passender Rückgabetyp man erklärt Menschen Programmcode: braucht Klassen-/Methodenkontet Variablen mit Typ, muss deklarieren konkrete do-/for-/while-schleifen Effizienztricks Rückgabetyp zu definieren Sicherheitsabfragen etl. redundante Statements man erklärt dem Computer numbersmallest( word ) Input: word {a,...,z} (Wort aus Kleinbuchstaben beliebiger Länge) Output: Anzahl des kleinsten Buchstabens in word if word ist leer then { Sonderfall abfangen } write kein Wort gegeben stop else sortiere word buchstabenweise aufsteigend { klarer Teilalgorithmus } n := Häufigkeit des ersten Buchstabens in word { erbale Formel } return n endif 01.11.05 22 Form des Pseudocode Funktionskopf mit Parametern, Beschreibung des Input und Output: function( parameters ) Input: parameters from sets Output: actions and output alues if-blöcke: Schleifen-Blöcke: if condition then statement endif while condition do statement endwhile for i := 1 to n do statement endfor