Wie rechnet ein Rechner?

Ähnliche Dokumente
Motivation und Überblick

Escape-Sequenzen. Dr. Norbert Spangler

7. Übung zur Vorlesung Grundlagen der Informatik

2.1 Fundamentale Typen

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

Wo sind wir? Übersicht lexikale Struktur von Java

Elementare Konzepte von

Beispiele elementarer Datentypen Ganze Zahlen (integer) Unterbereiche Gleitkommazahlen Festkommazahlen

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Datentypen: integer, char, string, boolean

Programmiervorkurs Einführung in Java Tag 1

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

Einstieg in die Informatik mit Java

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

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

Mikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen

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

Programmierkurs C++ Variablen und Datentypen

Protokollgrundlagen (Schicht 2)

Variablen, Konstanten und Datentypen

Einführung in die Programmiertechnik

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

Java I Vorlesung Imperatives Programmieren

Zeichen. Datentyp char. char ch = 'x'; Page 1. Zeichen braucht man zur Verarbeitung von Texten, Namen, Bezeichnungen. Zeichencodes

2. Programmierung in C

Welche Informatik-Kenntnisse bringen Sie mit?

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

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

» ASCII = American Standard Code for Information Interchange.» ASCII ist Standard in Windows und Unix (und Unix-Derivaten).» ASCII ist eigentlich ein

Grundlagen der Informatik 0

Inhalte. Einführung. Algorithmus, Programmiersprache, Compiler und Linker. Datentypen (elementare) Kontrollstrukturen. Präprozessoranweisungen

Grundlagen der Informatik

3. Datentypen, Ausdrücke und Operatoren

Algorithmen zur Datenanalyse in C++

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

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

Abschnitt 2: Daten und Algorithmen

Rechnerorganisation 12. Vorlesung

Einstieg in die Informatik mit Java

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Einstieg in die Informatik mit Java

Physische Datenstrukturen

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

Tag 2 Repetitorium Informatik (Java)

GI Vektoren

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

Java-Applikationen (Java-Programme)

4.Grundsätzliche Programmentwicklungsmethoden

Martin Unold INFORMATIK. Geoinformatik und Vermessung

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

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

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

JAVA-Datentypen und deren Wertebereich

Einstieg in die Informatik mit Java

Kapitel 3. Grunddatentypen, Ausdrücke und Variable

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

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen

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

2. Programmierung in C

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

1. Referenzdatentypen: Felder und Strings

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r

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

Assembler - Einleitung

Einführung in die Programmierung Wintersemester 2008/09

Kapitel 3: Variablen

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

Einfache Rechenstrukturen und Kontrollfluß

Primitive Datentypen und Felder (Arrays)

Objekttypen. Referenzen, Objekte, Gleichheit, Wrapper, Arrays, mehr-dimensionale Arrays, Bildbearbeitung, krumme Arrays

16. März 2016 artb5-v1.1

\\//_. 18. Mai Goethe-Gymnasium Sebnitz. Datenstrukturen und Datentypen \\//_. Datentypen und. Datenstrukturen. einfache Datentypen

Information und ihre Darstellung

Kap 4. 4 Die Mikroprogrammebene eines Rechners

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

Wie entwerfe ich ein Programm?

Unterlagen. CPP-Uebungen-08/

Einführung in die Programmierung Wintersemester 2008/09

Informatik I (D-ITET)

Einführung in die Informatik

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

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

Einführung in die Programmierung mit VBA

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

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

Informatikgrundlagen I Grundlagen der Informatik I

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

Die Programmiersprache C Eine Einführung

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

Einführung in die Programmiertechnik

Zahlensysteme: Oktal- und Hexadezimalsystem

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

4.2 Programmiersprache C

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

RO-Tutorien 3 / 6 / 12

Java Datentypen und Variablen

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

Transkript:

0 Motivation Jörg Roth 2 Wir gehen in dieser Vorlesung der Frage nach Wie rechnet ein Rechner? Als Softwareentwickler könnten wir in einem Programm z.b. folgende Anweisung schreiben: a = a+2*b; Wie wird diese Anweisung letztlich ausgeführt?

Jörg Roth 3 Höhere Programmiersprache Assembler und Maschinenprogramm int a=1, b=2; a = a+2*b; lw $t0, a lw $t1, b add $t0, $t0, $t1 add $t0, $t0, $t1 sw $t0, a Register und Microprogramm Gatter >1 Transistoren

Jörg Roth 4 Höhere Programmiersprache Assembler und Maschinenprogramm int a=1, b=2; a = a+2*b; lw $t0, a lw $t1, b add $t0, $t0, $t1 add $t0, $t0, $t1 sw $t0, a Register und Microprogramm Gatter >1 Transistoren

Jörg Roth 5 Was bieten uns die verschiedenen Ebenen als Ausdrucksmittel? Mit welchen "Objekten" haben wir auf den verschiedenen Ebenen zu tun? Höhere Programmiersprache: int a=1, b=2; Es stehen höhere Programmiersprachenkonzepte a = a+2*b; zu Verfügung: Namenschemata, Objekte, Vererbung,... Komfortable Datentypen: String, Array, Hashtable,... Komfortable Kontrollstrukturen: while, if, switch,... Weitere Funktionen: Mathematische Bibliotheken (sin, cos etc.), Dateizugriffe, Netzwerkzugriffe, Zugriffe auf Peripherie etc.

Jörg Roth 6 Assembler und Maschinenprogramm: 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. lw $t0, a lw $t1, b add $t0, $t0, $t1 add $t0, $t0, $t1 sw $t0, a 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

Jörg Roth 7 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, Substraktion, oft keine Multiplikation, Division Logische Bit-Operationen Wenige Kontrollstrukturen: meist nur Sprung, bedingter Sprung Sprung in ein Unterprogramm

Register und Microprogramm: Jörg Roth 8 Es gibt nur noch Register und elementare Operationen darauf Typische Operationen: Addieren, Subtrahieren, Inkrementieren, Dekrementieren Das Microprogramm steuert den Datenfluss (Welches Register wird mit welchem Operationselement verbunden?) Gatter: Es gibt nur noch Bits und Operationen auf Bits Typische Operation: Bit 1 AND Bit 2 Bit 3 >1

Ebene der Transistoren: Jörg Roth 9 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)

Jörg Roth 10 Höhere Programmiersprache Assembler und Maschinenprogramm int a=1, b=2; a = a+2*b; lw $t0, a lw $t1, b add $t0, $t0, $t1 add $t0, $t0, $t1 sw $t0, a Register und Microprogramm GDI Gatter >1 Transistoren

Daten und Datentypen: Jörg Roth 11 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

Jörg Roth 12 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 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)

Jörg Roth 13 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 Gebrochene Zahlen: Fließkomma-Zahlen: float, double Machmal (insb. in Datenbanken): Festkomma-Datentypen (z.b: um Euro-Beträge auszudrücken)

Zusammengesetzte Datentypen: Jörg Roth 14 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 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

Jörg Roth 15 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 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

Die "Zahlen"-Datentypen Jörg Roth 16 ganze Zahlen mit oder ohne Vorzeichen, Fließkomma-Zahlen, sowie die Operationen darauf sind Gegenstand des ersten Kapitels. Zeichen-Datentyp: Kenntnis des Zeichensatzes ist unerlässlich zur Interpretation eines Zeichens Zeichensätze legen die Zuordnung interne Darstellung Zeichen fest

Beispiele: ASCII (7 Bit) EBCDIC (vorwiegend IBM Mainframes) Unicode Jörg Roth 17 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.

Die ASCII-Steuerzeichen: Viele Zeichen stammen noch aus der Zeit der Textterminals Bekannte Eingabe-Zeichen: Return, Escape, Del, Backspace Jörg Roth 18 Viele Steuerzeichen werden heute nicht mehr benutzt Nr. Bedeutung Nr. Bedeutung Nr. Bedeutung 0 Null character 11 Vertical Tab 22 Synchronous Idle 1 Start of Header 12 Form feed 23 End of Trans. Block 2 Start of Text 13 Carriage return 24 Cancel 3 End of Text 14 Shift Out 25 End of Medium 4 End of Transmission 15 Shift In 26 Substitute 5 Enquiry 16 Data Link Escape 27 Escape 6 Acknowledgment 17 Device Control 1 (oft XON) 28 File Separator 7 Bell 18 Device Control 2 29 Group Separator 8 Backspace 19 Device Control 3 (oft XOFF) 30 Record Separator 9 Horizontal Tab 20 Device Control 4 31 Unit Separator 10 Line feed 21 Negative Acknowledgement 127 Delete Ein Textterminal aus den 80er-Jahren

Jörg Roth 19 Druckbare Zeichen im ASCII-Zeichensatz: Nr. Zeichen Nr. Zeichen Nr. Zeichen Nr. Zeichen Nr. Zeichen Nr. Zeichen 32 Blank 48 0 64 @ 80 P 96 ` 112 p 33! 49 1 65 A 81 Q 97 a 113 q 34 " 50 2 66 B 82 R 98 b 114 r 35 # 51 3 67 C 83 S 99 c 115 s 36 $ 52 4 68 D 84 T 100 d 116 t 37 % 53 5 69 E 85 U 101 e 117 u 38 54 6 70 F 86 V 102 f 118 v 39 ' 55 7 71 G 87 W 103 g 119 w 40 ( 56 8 72 H 88 X 104 h 120 x 41 ) 57 9 73 I 89 Y 105 i 121 y 42 * 58 : 74 J 90 Z 106 j 122 z 43 + 59 ; 75 K 91 [ 107 k 123 { 44, 60 < 76 L 92 \ 108 l 124 45-61 = 77 M 93 ] 109 m 125 } 46. 62 > 78 N 94 ^ 110 n 126 ~ 47 / 63? 79 O 95 _ 111 o

Jörg Roth 20 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

Unicode: Jörg Roth 21 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 Zeichen griechische Zeichen chinesische Zeichen 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