Motivation und Überblick

Ähnliche Dokumente
Wie rechnet ein Rechner?

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

2.1 Fundamentale Typen

Grundlagen der Informatik

Elementare Konzepte von

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Abschnitt 2: Daten und Algorithmen

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

3. Datentypen, Ausdrücke und Operatoren

2. Programmierung in C

Programmiervorkurs Einführung in Java Tag 1

Beispiele elementarer Datentypen Ganze Zahlen (integer) Unterbereiche Gleitkommazahlen Festkommazahlen

Datentypen: integer, char, string, boolean

Zahlen im Computer (Klasse 7 Aufbaukurs Informatik)

Kapitel 4. Programmierkurs. Datentypen. Arten von Datentypen. Wiederholung Kapitel 4. Birgit Engels, Anna Schulze WS 07/08

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

Kapitel 5: Daten und Operationen

Variablen, Konstanten und Datentypen

Merke: Mit jedem zusätzlichen Bit verdoppelt sich die Anzahl der darstellbaren Zahlen bzw. Zustände

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

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

7. Übung zur Vorlesung Grundlagen der Informatik

Fundamentale Ideen der Informatik PH Weingarten Sommersemester 2014 Paul Libbrecht CC-BY

Rückblick. Zahlendarstellung zu einer beliebigen Basis b. Umwandlung zwischen Zahlendarstellung (214) 5 = (278) 10 =(?) 8

Rechnerstrukturen, Teil 1. Vorlesung 4 SWS WS 15/16

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

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

Information und ihre Darstellung

1. Informationsdarstellung. Darstellung und Bedeutung. Darstellung und Bedeutung. Interpretation ??? 1. Kapitel

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

Zwischenklausur Informatik, WS 2016/17. Lösungen zu den Aufgaben

Programmierkurs C++ Variablen und Datentypen

Rechnerorganisation. IHS 2015/2016 H.-D. Wuttke, K. Henke

Einführung in die Programmierung Wintersemester 2008/09

Grundlagen der Informatik 0

JAVA-Datentypen und deren Wertebereich

2.5 Primitive Datentypen

Java I Vorlesung Imperatives Programmieren

Die Programmiersprache C Eine Einführung

2 Repräsentation von elementaren Daten

Einführung in Java. Ausgewählte Quellen zu Java

Klausur: Informatik I am 06. Februar 2009 Gruppe: D Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 12/13. Kapitel 3. Grunddatentypen, Ausdrücke und Variable

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

Rückblick. Addition in der b-adischen Darstellung wie gewohnt. Informatik 1 / Kapitel 2: Grundlagen

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

Eine praktische Einführung in die Programmierung mit der Programmiersprache C

Wo sind wir? Übersicht lexikale Struktur von Java

Tag 2 Repetitorium Informatik (Java)

Assembler - Einleitung

Welche Informatik-Kenntnisse bringen Sie mit?

Kapitel 3. Grunddatentypen, Ausdrücke und Variable

Einführung in die Programmiertechnik

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

Kapitel 3: Variablen

Informationsmenge. Maßeinheit: 1 Bit. 1 Byte. Umrechnungen: Informationsmenge zur Beantwortung einer Binärfrage kleinstmögliche Informationseinheit

Algorithmen zur Datenanalyse in C++

Einstieg in die Informatik mit Java

Physische Datenstrukturen

Martin Unold INFORMATIK. Geoinformatik und Vermessung

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

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

2. Programmierung in C

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Zahlensysteme: Oktal- und Hexadezimalsystem

Kapitel 2: Python: Ausdrücke und Typen. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2016/2017. Inhaltsverzeichnis 1

5.1 Mehr Basistypen. (Wie viele Werte kann man mit n Bit darstellen?)

Rechnerorganisation 12. Vorlesung

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

Einführung in die Programmierung WS 2009/10. Übungsblatt 5: Typen, Variablen und einfache Methoden in Java

Informatik I (D-MAVT)

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Informatik I: Einführung in die Programmierung

Binäre Darstellung ganzer Zahlen

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


4.Grundsätzliche Programmentwicklungsmethoden

Intensivübung zu Algorithmen und Datenstrukturen

2. Programmierung in C

Grundlagen der Informatik

3.8 Objekttypen und Arrays. Wir werden uns in diesem Kapitel näher mit den Objekttypen in Java beschäftigen.

Kapitel 2/3: Darstellung von Information / Kontrollstrukturen. Inhalt. Zusammengesetzte Datentypen Wiederholungen (in Programmen)

Übersicht. Peter Sobe 1

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Inhaltsverzeichnis. Vorwort.11

Einführung in die Programmierung mit VBA

Werkzeuge zur Programmentwicklung

Kodierung. Kodierung von Zeichen mit dem ASCII-Code

RO-Tutorien 3 / 6 / 12

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

Einleitung Typsystem Typisierung Zusammenfassung Literatur. Typisierung. Effiziente Programmierung. Thomas Schnieders

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue

Aufbau und Funktionsweise eines Computers

Ein erstes Java-Programm

Kap 4. 4 Die Mikroprogrammebene eines Rechners

Dualzahlen

4. Zahlendarstellungen

Das Rechnermodell - Funktion

Transkript:

Motivation und Überblick Drei große Bereiche der Vorlesung: Darstellung von Zahlen in Rechnern Verarbeitung von Binärdaten auf der Ebene digitaler Schaltungen Programmierung auf Maschinenebene und relativ knapp Aufbau von Rechnern (Register, Arithmetische Einheit, Speicher etc.) addi $sp,$sp,-16 sw $s0,0($sp) sw $s1,4($sp) sw $s2,8($sp) Grundlagen der Informatik Fakultät Informatik 1. Einführung 9

Darstellung von Zahlen unser liebgewonnenes Dezimalsystem eignet sich nicht für Computer wir machen uns daher Gedanken, wie man Zahlen mit nur zwei Ziffern darstellen kann Grundidee: Verwendung der Basis 2 statt 10 für die Ziffern z.b. 123(dezimal) = 1. 10 2 + 2. 10 1 + 3. 10 0 = 1. 2 6 + 1. 2 5 + 1. 2 4 + 1. 2 3 + 0. 2 2 + 1. 2 1 + 1. 2 0 = 1111011(binär) Probleme, die wir in der Vorlesung behandeln: Umrechnung zwischen den Darstellungen Ausführung von Berechnungen im Binärsystem Darstellung von negativen und reellen Zahlen 1. Einführung 10

Wie rechnet ein Rechner? Wir gehen in dieser Vorlesung darüber hinaus der Frage nach Als Softwareentwickler könnten wir in einem Programm z.b. folgende Anweisung schreiben: a = a+2*b; Wie rechnet ein Rechner? Wie wird diese Anweisung letztlich ausgeführt? 1. Einführung 11

Ebenen 1. Einführung 12

Ebenen 1. Einführung 13

Ebenen und ihre Ausdrucksmittel Höhere Programmiersprache: Es stehen höhere Programmiersprachenkonzepte zu Verfügung: Namenschemata, Objekte, Vererbung,... Komfortable Datentypen: String, Array, Hashtable,... Komfortable Kontrollstrukturen: while, if, switch,... Weitere Funktionen: Mathematische Bibliotheken (sin, cos etc.), TECHNISCHE HOCHSCHULE NÜRNBERG int a=1, b=2; a = a+2*b; Dateizugriffe, Netzwerkzugriffe, Zugriffe auf Peripherie etc. 1. Einführung 14

Ebenen und ihre Ausdrucksmittel Assembler und Maschinenprogramm: TECHNISCHE HOCHSCHULE NÜRNBERG lw $t0, a lw $t1, b add $t0, $t0, $t1 add $t0, $t0, $t1 sw $t0, a Assembler Programme liegen als Quell Datei vor und werden durch ein Übersetzungsprogramm (dem so genannten Assembler) in Maschinencode umgewandelt. Nur Maschinencode ist direkt ausführbar. Bei der Verwendung höherer Programmiersprachen entfällt der Schritt über den Assembler häufig und aus dem höheren Programm wird durch den Compiler direkt Maschinencode erzeugt. Auch möglich: Übersetzen in einen Zwischencode, der von einer virtual Maschine (in Maschinencode vorliegend) interpretiert wird 1. Einführung 15

Ebenen und ihre Ausdrucksmittel Eigenschaften von Assembler und Maschinenprogramm: In der Assembler Sprache stehen keine komfortablen Programmiersprachenkonzepte zur Verfügung, bestenfalls symbolische Variablennamen symbolische Sprungadressen Makros Nur elementare Datentypen verfügbar: Byte (8 Bit), 2 Byte Integer, 4 Byte Integer oft keine Fließkomma Datentypen, oft keine Strings Addition, Subtraktion, oft keine Multiplikation, Division 1. Einführung 16

Ebenen und ihre Ausdrucksmittel Eigenschaften von Assembler und Maschinenprogramm (Forts.): Logische Bit Operationen Wenige Kontrollstrukturen: meist nur Sprung, bedingter Sprung Sprung in ein Unterprogramm 1. Einführung 17

Ebenen und ihre Ausdrucksmittel Register und Mikroprogramm: Es gibt nur noch Register und elementare Operationen darauf Typische Operationen: Addieren, Subtrahieren, Inkrementieren, Dekrementieren Das Mikroprogramm steuert den Datenfluss (Welches Register wird mit welchem Operationselement verbunden?) 1. Einführung 18

Ebenen und deren Ausdrucksmittel Gatter: Es gibt nur noch Bits und Operationen auf Bits Typische Operation: Bit 1 AND Bit 2 Bit 3 1. Einführung 19

Ebenen und deren Ausdrucksmittel Ebene der Transistoren: Zur Darstellung von Daten werden Spannungen und Ströme verwendet Elemente dieser Ebene sind im Wesentlichen Transistoren, Dioden und Widerstände Definierte Signalpegel werden auf digitale Daten abgebildet (z.b. >3 Volt bedeutet Bit=1) 1. Einführung 20

Ebenen lw $t0, a lw $t1, b add $t0, $t0, $t1 add $t0, $t0, $t1 sw $t0, a & & >1 & 1. Einführung 21

Daten und Datentypen Wir müssen auch der Frage nachgehen, wie Daten dargestellt werden. Z.B. Frage: Was bedeutet die folgende Bit Folge? 0100 0111 0100 0100 0100 1001 0000 0000 1. Einführung 22

Daten und Datentypen Ausweichende Antwort: Es kommt darauf an Die Bedeutung von Bit Folgen hängt vom jeweiligen Datentyp ab Man unterscheidet: Elementare Datentypen: solche, die nicht weiter zerlegt werden können Zusammengesetzte Datentypen: aus elementaren Datentypen aufgebaut 1. Einführung 23

Elementare Datentypen Ordinale Datentypen (alles, was man "aufzählen" kann): Zeichen: a, b, c,... Ganze Zahlen mit oder ohne Vorzeichen: byte, short, int, long, word,... Boolesche Daten: erlauben nur zwei Werte TRUE, FALSE Aufzählungstyp: z.b. (ROT, GRUEN, GELB) (wird intern auf (0, 1, 2) abgebildet) 1. Einführung 24

Elementare Datentypen Zeiger (Pointer): Verweise auf Speicherstellen Bei linear adressierbaren Speicher: eine ganze Zahl Sind je nach Programmiersprache explizit vorhanden (und manipulierbar) oder versteckt Für Maschinensprache unerlässlich 1. Einführung 25

Elementare Datentypen Gebrochene Zahlen: Fließkomma Zahlen: float, double Manchmal (insb. in Datenbanken): Festkomma Datentypen (z.b.: um Euro Beträge auszudrücken) 1. Einführung 26

Zusammengesetzte Datentypen Feld (array): feste Anzahl gleicher Daten, z.b. 10 ganze Zahlen Zeichenkette (string): z.b. "GDI" Strings werden je nach Programmiersprache oder Prozessortyp auch als elementarer Datentyp behandelt Strings können auch als Feld von Zeichen angesehen werden 1. Einführung 27

Zusammengesetzte Datentypen Record (auch struct genannt): Datentyp, der aus u.u. verschiedenen Typen zusammengesetzt wird Beispiel: Person = String: vorname; String: name; int: alter; Durch die objektorientierte Programmierung sind Records durch Objekte darstellbar 1. Einführung 28

Zusammengesetzte Datentypen Weitere zusammengesetzte Datentypen: Menge: Jedes Element kann nur einmal aufgenommen werden Hashtable: Man kann Paare von Daten ablegen, nach dem ersten Datum suchen (Schlüssel) und bekommt das zweite Datum (Wert) zurückgeliefert Vektor: Feld, das dynamisch wachsen kann 1. Einführung 29

Zusammengesetzte Datentypen In der Regel werden diese Datentypen intern durch andere zusammengesetzte Datentypen realisiert. Beispiele: Mengen in Pascal werden durch Bit Felder realisiert Vektoren in Java werden durch Felder fester Größe realisiert, die bei Bedarf auf größere Felder umkopiert werden 1. Einführung 30

"Zahlen" Datentypen Die "Zahlen" Datentypen: ganze Zahlen mit oder ohne Vorzeichen, Fließkomma Zahlen, sowie die Operationen darauf sind Gegenstand des ersten Kapitels. 1. Einführung 31

"Zeichen" Datentypen "Zeichen" Datentyp: Kenntnis des Zeichensatzes ist unerlässlich zur Interpretation eines Zeichens Zeichensätze legen die Zuordnung fest interne Darstellung Zeichen 1. Einführung 32

Zeichensätze Beispiele: ASCII (7 Bit) EBCDIC (vorwiegend IBM Mainframes) Unicode Der ASCII Zeichensatz (American Standard Code for Information Interchange): 7 Bit entspricht 128 möglichen Zeichen (nummeriert 0 127) Die Zeichen 0 31 und 127 sind Steuerzeichen also nicht als Einzelzeichen z.b. auf Bildschirm oder Drucker darstellbar. Die Zeichen 32 126 sind druckbare Zeichen. 1. Einführung 33

Zeichensätze Die ASCII Steuerzeichen: Viele Zeichen stammen noch aus der Zeit der Textterminals Bekannte Eingabe Zeichen: Return, Escape, Del, Backspace Viele Steuerzeichen werden heute nicht mehr benutzt Ein Textterminal aus den 80er Jahren 1. Einführung 34

Zeichensätze Druckbare Zeichen im ASCII Zeichensatz: 1. Einführung 35

Zeichensätze Nachteile des ASCII Zeichensatzes: Die 7 Bit Kodierung stammt aus einer Zeit, als "jedes Bit zählte" heutzutage sind 95 druckbare Zeichen zu wenig Ein Problem: Darstellung der nationalen Sonderzeichen (z.b. ä, ö, ü, ß ) Zwischenlösung: der Bereich 128 255 wurde für nationale Zeichen verwendet. Die Zuordnung war aber bei verschiedenen Systemen teilweise uneinheitlich Die weiteren 128 Zeichen reichen auch nicht für alle möglichen nationalen Sonderzeichen Moderne Lösung: Unicode Zeichen 1. Einführung 36

Zeichensätze Unicode: Ursprünglich 16 Bit, damit waren 65536 mögliche Zeichen darstellbar; die Nummern der Zeichen werden Code Points genannt. Mittlerweile sind 1.114.112 Code Points vorgesehen, von denen allerdings nur ca. 100.000 mit Zeichen belegt sind, u.a. lateinische, griechische, chinesische japanische Zeichen Damit häufige Zeichen weiterhin mit 8 Bit dargestellt werden können, verwendet man UTF 8: Zeichen 0 127: ASCII Zeichen 128 255: 1 3 weitere Bytes 1. Einführung 37