Vorlesung Programmieren

Größe: px
Ab Seite anzeigen:

Download "Vorlesung Programmieren"

Transkript

1 Vorlesung Programmieren 16 Vom Programm zur Maschine Dr.-Ing. Erik Burger Version 1.0 ARBEITSGRUPPE ARCHITECTURE-DRIVEN REQUIREMENTS ENGINEERING (ARE) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD), KIT-FAKULTÄT FÜR INFORMATIK are.ipd.kit.edu KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft

2 Termine Anmeldung zur Abschlussaufgabe: 02. Februar 23. Februar Anmeldung erst möglich, nachdem Übungsschein als bestanden ins Campus-System eingetragen wurde. (Sonst Voraussetzungsfehler) Eintragung der Übungsscheine für dieses Semester erfolgt ab 11. Februar Eine nachträgliche Anmeldung (nach 23. Februar) ist nicht möglich! Abschlussaufgabe 1: Veröffentlichung: Abgabe: 10. Februar 10. März Abschlussaufgabe 2: Veröffentlichung: Abgabe: 24. Februar 24. März 2 Vorlesung Programmieren: Vom Programm zur Maschine Requirements Engineering, Institut für Programmstrukturen und Datenorganisation

3 Organisatorisches Exportieren Sie bitte nach der Anmeldung die Liste aller angemeldeten Prüfungen als PDF und bewahren Sie diese bis Ende der Bearbeitungszeit der Abschlussaufgaben auf. Die Tutorien finden bis einschließlich statt. 3

4 Organisatorisches: Programmieren SoSe 2017 Programmieren-Vorlesung findet nächstes Semester nicht statt Tutorien finden nächstes Semester auch nicht statt Der Übungsschein kann trotzdem erworben werden Fünf Übungsblätter 50 % der Gesamtpunkte zum Erwerb des Scheines Präsenzübung findet statt und muss bestanden werden 4

5 Literaturhinweis Weiterlesen Prof. Dr. Gerhard Goos Vorlesung über Informatik Band 2: Objektorientiertes Programmieren und Algorithmen, Springer Lehrbuch Kapitel 11 Vom Programm zur Maschine 5

6 Lernziele Studierende verstehen Funktionsweise der Halde (engl. heap) und des Kellerspeichers (engl. stack) und können die Zusammenhänge mit Prozessen in Verbindung setzen. Studierende können den Einsatz der Datenstrukturen bei der Speichereinteilung erläutern. Studierende können den Einsatz der Datenstrukturen bei unterschiedliche Sprüngen im Programmcode erklären. Studierende können die Funktionsweise und den Einsatz der Datenstrukturen beim Methodenaufruf und Verlassen einer Methode erläutern. 6

7 Überblick Datenstrukturen: Halde und Kellerspeicher Einsatz der Datenstrukturen beim Aufruf einer Methode Speichereinteilung Adressierung des Speichers Verschiedene Arten von Sprüngen Schritte beim Methodenaufruf Schritte beim Verlassen einer Methode 7

8 Motivation Von der Java-Datei über den plattformunabhängigen Bytecode hin zum plattformabhängigen Maschinencode.java-Datei plattformunabhängig Compiler.class-Datei Bytecode JVM Maschinencode plattformabhängig 8

9 Halde Halde (engl. heap) ist ein reservierter Speicher zur Speicherung von Elementen zur Laufzeit bei Bedarf Speichern der Daten in einer beliebigen Anordnung Freigabe des allokierten Speichers durch Aufhebung des Referenzierens Beispiel: Java Heap zur Speicherung von Objekten in Java Dateneinteilung in der Halde minheap maxadr Halde 9

10 Kellerspeicher Kellerspeicher (engl. stack), auch bekannt als Stapelspeicher, ist eine Datenstruktur. Arbeitsweise: Last-In-First-Out (LIFO) Push-Operation: Das neue Objekt wird auf den Keller gelegt (gestapelt) Pop-Operation: Das neueste Objekt vom Keller heruntergenommen Befehlsreihenfolge: Push(A) Push(B) Push(C) Push(D) D=Pop C=Pop B=Pop D C B A 10

11 Einsatz des Kellerspeichers Ein Kellerspeicher kann dynamisch wachsen und schrumpfen Allokation des Speichers zur Laufzeit Freigabe des allokierten Speichers nach Abarbeitung des Codes Häufiger Einsatz in Prozessoren, Beispiele: Speichern der Rücksprungadresse beim Aufruf eines Unterprogramms Speichern der Rückgabewerte eines Unterprogramms Speichern aller Parameter der aktuell laufenden Programme, Beispiele: geschachtelter Aufruf einer Rekursion geschachtelter Aufruf der Unterprogramme Speichern der lokalen Variablen minvar Dateneinteilung im Keller Pegel Keller 11

12 Einsatz des Kellerspeichers Ein Kellerspeicher kann dynamisch wachsen und schrumpfen Allokation des Speichers zur Laufzeit Freigabe des allokierten Speichers nach Abarbeitung des Codes Häufiger Einsatz in Prozessoren, Beispiele: Speichern der Rücksprungadresse beim Aufruf eines Unterprogramms Speichern der Rückgabewerte eines Unterprogramms Speichern aller Parameter der aktuell laufenden Programme, Beispiele: geschachtelter Aufruf einer Rekursion geschachtelter Aufruf der Unterprogramme Speichern der lokalen Variablen minvar Dateneinteilung im Keller Pegel Keller 12

13 Einsatz des Kellerspeichers Ein Kellerspeicher kann dynamisch wachsen und schrumpfen Allokation des Speichers zur Laufzeit Freigabe des allokierten Speichers nach Abarbeitung des Codes Häufiger Einsatz in Prozessoren, Beispiele: Speichern der Rücksprungadresse beim Aufruf eines Unterprogramms Speichern der Rückgabewerte eines Unterprogramms Speichern aller Parameter der aktuell laufenden Programme, Beispiele: geschachtelter Aufruf einer Rekursion geschachtelter Aufruf der Unterprogramme Speichern der lokalen Variablen minvar Dateneinteilung im Keller Pegel Keller 13

14 Einsatz des Kellerspeichers Ein Kellerspeicher kann dynamisch wachsen und schrumpfen Allokation des Speichers zur Laufzeit Freigabe des allokierten Speichers nach Abarbeitung des Codes Häufiger Einsatz in Prozessoren, Beispiele: Speichern der Rücksprungadresse beim Aufruf eines Unterprogramms Speichern der Rückgabewerte eines Unterprogramms Speichern aller Parameter der aktuell laufenden Programme, Beispiele: geschachtelter Aufruf einer Rekursion geschachtelter Aufruf der Unterprogramme Speichern der lokalen Variablen minvar Dateneinteilung im Keller Keller Pegel 14

15 Einsatz des Kellerspeichers Ein Kellerspeicher kann dynamisch wachsen und schrumpfen Allokation des Speichers zur Laufzeit Freigabe des allokierten Speichers nach Abarbeitung des Codes Häufiger Einsatz in Prozessoren, Beispiele: Speichern der Rücksprungadresse beim Aufruf eines Unterprogramms Speichern der Rückgabewerte eines Unterprogramms Speichern aller Parameter der aktuell laufenden Programme, Beispiele: geschachtelter Aufruf einer Rekursion geschachtelter Aufruf der Unterprogramme Speichern der lokalen Variablen minvar Dateneinteilung im Keller Keller Pegel 15

16 Einsatz des Kellerspeichers Ein Kellerspeicher kann dynamisch wachsen und schrumpfen Allokation des Speichers zur Laufzeit Freigabe des allokierten Speichers nach Abarbeitung des Codes Häufiger Einsatz in Prozessoren, Beispiele: Speichern der Rücksprungadresse beim Aufruf eines Unterprogramms Speichern der Rückgabewerte eines Unterprogramms Speichern aller Parameter der aktuell laufenden Programme, Beispiele: geschachtelter Aufruf einer Rekursion geschachtelter Aufruf der Unterprogramme Speichern der lokalen Variablen minvar Dateneinteilung im Keller Keller Pegel 16

17 Einsatz des Kellerspeichers Ein Kellerspeicher kann dynamisch wachsen und schrumpfen Allokation des Speichers zur Laufzeit Freigabe des allokierten Speichers nach Abarbeitung des Codes Häufiger Einsatz in Prozessoren, Beispiele: Speichern der Rücksprungadresse beim Aufruf eines Unterprogramms Speichern der Rückgabewerte eines Unterprogramms Speichern aller Parameter der aktuell laufenden Programme, Beispiele: geschachtelter Aufruf einer Rekursion geschachtelter Aufruf der Unterprogramme Speichern der lokalen Variablen minvar Dateneinteilung im Keller Keller Pegel 17

18 Einsatz des Kellerspeichers Ein Kellerspeicher kann dynamisch wachsen und schrumpfen Allokation des Speichers zur Laufzeit Freigabe des allokierten Speichers nach Abarbeitung des Codes Häufiger Einsatz in Prozessoren, Beispiele: Speichern der Rücksprungadresse beim Aufruf eines Unterprogramms Speichern der Rückgabewerte eines Unterprogramms Speichern aller Parameter der aktuell laufenden Programme, Beispiele: geschachtelter Aufruf einer Rekursion geschachtelter Aufruf der Unterprogramme Speichern der lokalen Variablen minvar Dateneinteilung im Keller Keller Pegel 18

19 Speichereinteilung Ein Speicher mit dem Adressraum = [0, maxadr]. Die Elemente des Speichers Speicher[i] heißen Speicherzellen Der Wert einer Speicherzelle oder einer Variable heißt Inhalt Der Speicher des Programms besteht aus: Programmbereich für Befehle Kontantenbereich für alle Literale des Programms Datenbereich für alle Variablen 0 maxprog Speichereinteilung Programm maxlit mindat Konstanten Daten maxadr 19

20 Einteilung des Datenbereichs Grund der Aufteilung des Speichers: Anzahl der Referenzobjekte a priori nicht bekannt Keller wächst nach unten 0 maxprog maxlit mindat Speichereinteilung Programm Konstanten minvar Pegel Dateneinteilung Programmvariable Keller für dynamische Variablen (mit unbeschränkter Lebensdauer) maxadr Daten minheap maxadr Halde Halde für anonyme Objekte (mit unbekannter Lebensdauer) 20

21 Sprünge Die Variable Befehlszähler (BZ) gehört nicht zum Speicher enthält während der Ausführung die des nächsten auszuführenden Befehls Der Wert der Variable BZ wird bei sequentieller Ausführung der Befehle jedes Mal um 1 erhöht entspricht der des Befehls b markiert mit M, falls das Programm mit Ausführung des Befehls b fortgesetzt wird (Schreibweise goto M). Eine Zuweisung an BZ wird als Sprung bezeichnet und M als Sprungziel 21

22 Sprünge Im Folgenden beispielhaft drei Formen von Sprüngen: Unbedingte Sprünge (goto M) Beispiel goto BZ±i bedeutet BZ:=BZ±i Bedingte Sprünge (if-then goto M) Interprogrammsprung (gosub M) entspricht dem Aufruf parameterloser Methoden notiert zu BZ:=M auch vor dem Sprung in einer Variable Rückkehradresse:=BZ alt +1. Relative : an M steht der Sprungbefehl goto M die relative kann man als i=m-m berechnen dann entspricht goto M dem Befehl goto BZ+i 22

23 Bedingte Sprünge - Verzweigung if M(a 1 ) = M(a 2 ) then S end U if: LDV a 1 EQL a 2 NOT then: S end: U JMN end LDV a: Lade a in den Akkumulator EQL a: Vergleiche den Inhalt des Akkumulators mit a NOT: Negiere den Inhalt des Akkumulators JMN a: Bedingter Sprung Grundbegriffe der Informatik, 5.ÜB, Thomas Worsch und Simon Wacker 23

24 Bedingte Sprünge - Verzweigung if M(a 1 ) = M(a 2 ) then S else T end U if: LDV a 1 EQL a 2 JMN then else: T JMP end then: S end: U LDV a: Lade a in den Akkumulator EQL a: Vergleiche den Inhalt des Akkumulators mit a NOT: Negiere den Inhalt des Akkumulators JMN a: Bedingter Sprung JMP a: Unbedingter Sprung Grundbegriffe der Informatik, 5.ÜB, Thomas Worsch und Simon Wacker 24

25 Kopfgesteuerte Schleife while M(a 1 ) = M(a 2 ) do S end T while: LDV a 1 EQL a 2 NOT JMN end do: S JMP while end: T LDV a: Lade a in den Akkumulator EQL a: Vergleiche den Inhalt des Akkumulators mit a NOT: Negiere den Inhalt des Akkumulators JMN a: Bedingter Sprung JMP a: Unbedingter Sprung Grundbegriffe der Informatik, 5.ÜB, Thomas Worsch und Simon Wacker 25

26 Adressierung durch 3 Basisadressen minvar: die Anfangsadresse des Speicherbereichs statischer Programmvariablen Umgebungszeiger (umg): Die Basisadresse für die dynamischen Variablen (lokale Variablen) in der Schachtel des laufenden Unterprogramms Pegel: Kellerpegel des obersten Elementes im Laufzeitkeller Basisadresse für Zwischenergebnisse wird bei jedem Unterprogrammaufruf um 1 erhöht minvar Dateneinteilung Programmvariable einer statischen Variable v mit einer relativen r v Pegel minheap minvar + r v dynamischen Variable v mit einer relativen r v Halde umg + r v maxadr 26

27 Laufzeitkeller Zur Speicherung dynamischer Programmvariablen Grund für Kellerspeicher: Geschachtelte Unterprogrammaufrufe Kellerspeicher besteht daher aus Einheiten, bekannt als Schachteln (engl. stack frame, activation record) Unterste Schachtel reserviert für statische Variablen Schachtel beinhaltet: lokale Variablen Rückkehradresse etc. minvar Pegel minheap Dateneinteilung Programmvariable maxadr Halde 27

28 Laufzeitkeller Schachtel Anlegen einer neuen Schachtel beim Aufruf eines Unterprogramms Löschen einer Schachtel beim Verlassen des Unterprogramms Umgebungszeiger umg Kellerpegel Parameter Rückkehradresse Lokale Variable Parameter Rückkehradresse Lokale Variable Schachtel Aufrufer Schachtel Unterprogramm 28

29 Schritte beim Aufruf einer Methode 1. Erhöhung des Kellerpegels um den Umfang der Schachtel 2. Zuweisung der Werte der aktuellen Parameter in die Schachtel 3. Eintrag der Rückkehradresse in die Schachtel 4. Setzen des Umgebungszeigers auf die Schachtel 5. Methodenaufruf: Sprung auf die erste der Methode 29

30 Schritte beim Aufruf einer Methode 1. Erhöhung des Kellerpegels um den Umfang der Schachtel 2. Zuweisung der Werte der aktuellen Parameter in die Schachtel 3. Eintrag der Rückkehradresse in die Schachtel 4. Setzen des Umgebungszeigers auf die Schachtel 5. Methodenaufruf: Sprung auf die erste der Methode minvar Pegel Dateneinteilung Programmvariable minheap 30

31 Schritte beim Aufruf einer Methode 1. Erhöhung des Kellerpegels um den Umfang der Schachtel 2. Zuweisung der Werte der aktuellen Parameter in die Schachtel 3. Eintrag der Rückkehradresse in die Schachtel 4. Setzen des Umgebungszeigers auf die Schachtel 5. Methodenaufruf: Sprung auf die erste der Methode minvar Dateneinteilung Programmvariable Pegel minheap 31

32 Schritte beim Aufruf einer Methode 1. Erhöhung des Kellerpegels um den Umfang der Schachtel 2. Zuweisung der Werte der aktuellen Parameter in die Schachtel 3. Eintrag der Rückkehradresse in die Schachtel 4. Setzen des Umgebungszeigers auf die Schachtel 5. Methodenaufruf: Sprung auf die erste der Methode minvar Dateneinteilung Programmvariable Parameter Pegel minheap 32

33 Schritte beim Aufruf einer Methode 1. Erhöhung des Kellerpegels um den Umfang der Schachtel 2. Zuweisung der Werte der aktuellen Parameter in die Schachtel 3. Eintrag der Rückkehradresse in die Schachtel 4. Setzen des Umgebungszeigers auf die Schachtel 5. Methodenaufruf: Sprung auf die erste der Methode minvar Dateneinteilung Programmvariable Parameter Pegel minheap 33

34 Schritte beim Aufruf einer Methode 1. Erhöhung des Kellerpegels um den Umfang der Schachtel 2. Zuweisung der Werte der aktuellen Parameter in die Schachtel 3. Eintrag der Rückkehradresse in die Schachtel 4. Setzen des Umgebungszeigers auf die Schachtel 5. Methodenaufruf: Sprung auf die erste der Methode minvar Dateneinteilung Programmvariable Pegel minheap Parameter Rückkehradresse 34

35 Schritte beim Aufruf einer Methode 1. Erhöhung des Kellerpegels um den Umfang der Schachtel 2. Zuweisung der Werte der aktuellen Parameter in die Schachtel 3. Eintrag der Rückkehradresse in die Schachtel 4. Setzen des Umgebungszeigers auf die Schachtel 5. Methodenaufruf: Sprung auf die erste der Methode minvar Dateneinteilung Programmvariable Parameter Rückkehradresse Pegel Lokale Variable minheap 35

36 Schritte beim Aufruf einer Methode 1. Erhöhung des Kellerpegels um den Umfang der Schachtel 2. Zuweisung der Werte der aktuellen Parameter in die Schachtel 3. Eintrag der Rückkehradresse in die Schachtel 4. Setzen des Umgebungszeigers auf die Schachtel 5. Methodenaufruf: Sprung auf die erste der Methode minvar Dateneinteilung Programmvariable umg Parameter Rückkehradresse Pegel Lokale Variable minheap 36

37 Schritte beim Verlassen der Methode 1. Zuweisung eines eventuellen Ergebnisses 2. Zuweisung der Rückkehradresse an ein Register R 3. Rücksetzen des Umgebungszeigers 4. Erniedrigung des Kellerpegels zum Aufbau des Kellers 5. Unbedingter Sprung goto <R> auf die Rückkehradresse Kellerpegel Parameter Rückkehradresse Lokale Variable Parameter Rückkehradresse Lokale Variable Schachtel Aufrufer Schachtel Untermethode 37

38 Schritte beim Verlassen der Methode 1. Zuweisung eines eventuellen Ergebnisses 2. Zuweisung der Rückkehradresse an ein Register R 3. Rücksetzen des Umgebungszeigers 4. Erniedrigung des Kellerpegels zum Aufbau des Kellers 5. Unbedingter Sprung goto <R> auf die Rückkehradresse Umgebungszeiger umg Kellerpegel Parameter Rückkehradresse Lokale Variable Parameter Rückkehradresse Lokale Variable Schachtel Aufrufer Schachtel Untermethode 39

39 Schritte beim Verlassen der Methode 1. Zuweisung eines eventuellen Ergebnisses 2. Zuweisung der Rückkehradresse an ein Register R 3. Rücksetzen des Umgebungszeigers 4. Erniedrigung des Kellerpegels zum Aufbau des Kellers 5. Unbedingter Sprung goto <R> auf die Rückkehradresse Kellerpegel Umgebungszeiger umg Parameter Rückkehradresse Lokale Variable Parameter Rückkehradresse Lokale Variable Schachtel Aufrufer Schachtel Untermethode 40

40 Schritte beim Verlassen der Methode 1. Zuweisung eines eventuellen Ergebnisses 2. Zuweisung der Rückkehradresse an ein Register R 3. Rücksetzen des Umgebungszeigers 4. Erniedrigung des Kellerpegels zum Aufbau des Kellers 5. Unbedingter Sprung goto <R> auf die Rückkehradresse Umgebungszeiger umg Kellerpegel Parameter Rückkehradresse Lokale Variable Parameter Rückkehradresse Lokale Variable Schachtel Aufrufer Schachtel Untermethode 41

41 Zusammenfassung Halde (engl. Heap) ist ein reservierter Speicher zur Speicherung von Elementen zur Laufzeit bei Bedarf in beliebiger Reihenfolge Kellerspeicher ist eine Datenstruktur nach Last-In-First-Out-Prinzip Allokation des Speichers zur Laufzeit Freigabe des allokierten Speichers nach Abarbeitung des Codes Häufiger Einsatz in Prozessoren Der Speicher des Programms besteht aus: Programmbereich für Befehle Konstantenbereich für alle Literale des Programms Datenbereich für alle Variablen Drei Formen von Sprüngen: Unbedingte Sprünge (goto M) Bedingte Sprünge (if-then goto M) Interprogrammsprung (entspricht dem Aufruf parameterloser Methoden) Aufruf einer Methode vs. Verlassen einer Methode 42

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Übung Simon Wacker Karlsruher Institut für Technologie Wintersemester 2015/2016 GBI Grundbegriffe der Informatik Karlsruher Institut für Technologie 1 / 13 Programmiersprachen

Mehr

Speicher und Adressraum

Speicher und Adressraum Linearer Speicher (Adressraum) Technische Universität München Speicher und Adressraum Freie Speicherhalde (Heap) Freier Speicherstapel (Stack) Globale Variablen Bibliotheksfunktionen Laufzeitsystem Programmcode

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 3. Kontrollstrukturen 04.11.2015 Prof. Dr. Ralf H. Reussner Version 1.1 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD),

Mehr

6 Speicherorganisation

6 Speicherorganisation Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für

Mehr

RO-Tutorien 3 / 6 / 12

RO-Tutorien 3 / 6 / 12 RO-Tutorien 3 / 6 / 12 Tutorien zur Vorlesung Rechnerorganisation Christian A. Mandery WOCHE 2 AM 06./07.05.2013 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft

Mehr

B1 Stapelspeicher (stack)

B1 Stapelspeicher (stack) B1 Stapelspeicher (stack) Arbeitsweise des LIFO-Stapelspeichers Im Kapitel "Unterprogramme" wurde schon erwähnt, dass Unterprogramme einen so genannten Stapelspeicher (Kellerspeicher, Stapel, stack) benötigen

Mehr

Java Virtual Machine (JVM) Bytecode

Java Virtual Machine (JVM) Bytecode Java Virtual Machine (JVM) durch Java-Interpreter (java) realisiert abstrakte Maschine = Softwareschicht zwischen Anwendung und Betriebssystem verantwortlich für Laden von Klassen, Ausführen des Bytecodes,

Mehr

J.5 Die Java Virtual Machine

J.5 Die Java Virtual Machine Java Virtual Machine Die Java Virtual Machine 22 Prof. Dr. Rainer Manthey Informatik II Java-Compiler und Java Virtual Machine Quellcode-Datei class C... javac D.java Java-Compiler - Dateien class class

Mehr

Praktikum Compilerbau Sitzung 9 Java Bytecode

Praktikum Compilerbau Sitzung 9 Java Bytecode Praktikum Compilerbau Sitzung 9 Java Bytecode Prof. Dr.-Ing. Gregor Snelting Matthias Braun und Sebastian Buchwald IPD Snelting, Lehrstuhl für Programmierparadigmen KIT Universität des Landes Baden-Württemberg

Mehr

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland.

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland. 1 Programmierung 2 Übersetzer: Code-Erzeugung Sebastian Hack hack@cs.uni-saarland.de Klaas Boesche boesche@cs.uni-saarland.de Sommersemester 2012 Bytecodes Der Java Übersetzer erzeugt keine Maschinensprache

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Stefan Werner (Übungen) sowie viele Tutoren Teilnehmerkreis und Voraussetzungen Studiengänge

Mehr

Syntax von LOOP-Programmen

Syntax von LOOP-Programmen LOOP-Berechenbarkeit Syntax von LOOP-Programmen Definition LOOP-Programme bestehen aus: Variablen: x 0, x 1, x 2, x 3,... Konstanten: 0, 1, 2, 3,... Trennsymbolen:; und := Operationen: + und Befehlen:

Mehr

Grundbegriffe der Informatik Tutorium 5

Grundbegriffe der Informatik Tutorium 5 Grundbegriffe der Informatik Tutorium 5 Tutorium Nr. 16 Philipp Oppermann 2. Dezember 2014 KARLSRUHER INSTITUT FÜR TECHNOLOGIE KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum

Mehr

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015 Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015 Ziele der Übung Aufgabe 1 Aufbau und Aufruf von Funktionen in Assembler Codeanalyse

Mehr

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / 2013. Vorlesung 9, Dienstag 18.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / 2013. Vorlesung 9, Dienstag 18. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / 2013 Vorlesung 9, Dienstag 18. Dezember 2012 (Performance Tuning, Profiling, Maschinencode) Prof. Dr.

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

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

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen Programmieren 10. Tutorium 4./ 5. Übungsblatt Inhalt I. Übungsblatt 4 II. III. - Rückgabe und Besprechung - Vorbereitung auf Wiederholung/ Nachtrag - Operatorpräzedenzen IV. Übungsblatt 5 - Vorstellung

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

Einführung in die Informatik Algorithms

Einführung in die Informatik Algorithms Einführung in die Informatik Algorithms Vom Problem zum Algorithmus und zum Programm Wolfram Burgard Cyrill Stachniss 1.1 Motivation und Einleitung In der Informatik sucht man im Normalfall nach Verfahren

Mehr

Tutorium Rechnerorganisation

Tutorium Rechnerorganisation Woche 2 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Mehr

= 7 (In Binärdarstellung: = 0111; Unterlauf) = -8 (In Binärdarstellung: = 1000; Überlauf)

= 7 (In Binärdarstellung: = 0111; Unterlauf) = -8 (In Binärdarstellung: = 1000; Überlauf) Musterlösung Übung 2 Aufgabe 1: Große Zahlen Das Ergebnis ist nicht immer richtig. Die Maschine erzeugt bei Zahlen, die zu groß sind um sie darstellen zu können einen Über- bzw. einen Unterlauf. Beispiele

Mehr

Speicherverwaltung (Swapping und Paging)

Speicherverwaltung (Swapping und Paging) Speicherverwaltung (Swapping und Paging) Rückblick: Segmentierung Feste Einteilung des Speichers in einzelne Segmente 750k 0 Rückblick: Segmentierung Feste Einteilung des Speichers in einzelne Segmente

Mehr

2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 14. Okt. 2015 Computeraufbau: nur ein Überblick Genauer: Modul Digitale Systeme (2. Semester) Jetzt: Grundverständnis

Mehr

Besprechung des 3. Übungsblattes MIMA-Interpreter MIMA-Aufgabe: Primzahltest Weitere MIMA-Aufgaben online

Besprechung des 3. Übungsblattes MIMA-Interpreter MIMA-Aufgabe: Primzahltest Weitere MIMA-Aufgaben online Themen heute Besprechung des 3. Übungsblattes MIMA-Interpreter MIMA-Aufgabe: Primzahltest Weitere MIMA-Aufgaben online Besprechung des 3. Übungsblattes Aufgabe 3 Speicherplätze für Mikrocode-Anweisungen

Mehr

Institut für Informatik Prof. Dr. D. Hogrefe Dipl.-Inf. R. Soltwisch, Dipl.-Inform. M. Ebner, Prof. Dr. D. Hogrefe Informatik II - SS 04.

Institut für Informatik Prof. Dr. D. Hogrefe Dipl.-Inf. R. Soltwisch, Dipl.-Inform. M. Ebner, Prof. Dr. D. Hogrefe Informatik II - SS 04. Kontrollstrukturen Informatik II SS 2004 Teil 4: Assembler Programmierung Sprünge (bedingte und unbedingte) If-then-else, Case Loop (n Durchläufe) While (Abbruchbedingung) Institut für Informatik Prof.

Mehr

VBA-Programmierung: Zusammenfassung

VBA-Programmierung: Zusammenfassung VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung

Mehr

Algorithmen & Programmierung. Rekursive Funktionen (1)

Algorithmen & Programmierung. Rekursive Funktionen (1) Algorithmen & Programmierung Rekursive Funktionen (1) Berechnung der Fakultät Fakultät Die Fakultät N! einer nichtnegativen ganzen Zahl N kann folgendermaßen definiert werden: d.h. zur Berechnung werden

Mehr

x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013

x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013 x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013 1 / 53 Inhaltsverzeichnis 1 Einführung 2 Assembler Syntax, Register und Flags 3 Hauptspeicher 4 Stack 5 Assemblerbefehle

Mehr

Grundlagen der Informatik

Grundlagen der Informatik Grundlagen der Informatik Logische und mathematische Grundlagen Digitale Daten Computerprogramme als Binärdaten von Neumann-Rechnerarchitektur Einführung in Maschinen-Code Speicherorganisation Betriebssysteme

Mehr

Assembler-Programmierung

Assembler-Programmierung Assembler-Programmierung Dr.-Ing. Volkmar Sieh Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011 Assembler-Programmierung 1/48 2012-02-29 Assembler-Programmierung

Mehr

Heute nur MIPS-Praxis (4 Aufgaben)

Heute nur MIPS-Praxis (4 Aufgaben) Themen heute Heute nur MIPS-Praxis (4 Aufgaben) Hinweis: Diese Aufgaben findet ihr auf den Übungsblättern zu den Tutorien (bei Aufgabe 4 wurde eine Teilaufgabe und im Tutorium #6 bereits geklärte Wissensfragen

Mehr

Algorithmen und Datenstrukturen Laufzeitabschätzung

Algorithmen und Datenstrukturen Laufzeitabschätzung Algorithmen und Datenstrukturen Laufzeitabschätzung Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Lernziele der Vorlesung Algorithmen Sortieren, Suchen,

Mehr

ERA-Zentralübung Maschinenprogrammierung

ERA-Zentralübung Maschinenprogrammierung Marcel Meyer LRR TU München 04.11.2016 Inhalt Aufgabe 1.1 Aufgabe 1.2 Speicherzugriffe Unbedingte Sprünge Stapelspeicher Unterprogramme Aufgabe 1.1 Quellregister AX, BX, CX Konstante deklarieren Werte

Mehr

13. Tutorium zu Programmieren

13. Tutorium zu Programmieren 13. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2009 by IPD Snelting

Mehr

6. Tutorium zu Softwaretechnik I

6. Tutorium zu Softwaretechnik I 6. Tutorium zu Softwaretechnik I Parallelität und Testen Michael Hoff 01.07.2014 INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum

Mehr

C für Java-Programmierer

C für Java-Programmierer Carsten Vogt C für Java-Programmierer ISBN-10: 3-446-40797-9 ISBN-13: 978-3-446-40797-8 Inhaltsverzeichnis Weitere Informationen oder Bestellungen unter http://www.hanser.de/978-3-446-40797-8 sowie im

Mehr

Daniel Betz Wintersemester 2011/12

Daniel Betz Wintersemester 2011/12 Daniel Betz Wintersemester 2011/12 Digitally signed by daniel.betz@daniel-betz.com Date: 2011.12.04 17:24:40 +01'00' Insgesamt 16 Register von je 16 Bit (=WORD) Breite Untere 8 Register auch als 2 Register

Mehr

Advanced Programming in C

Advanced Programming in C Advanced Programming in C Pointer und Listen Institut für Numerische Simulation Rheinische Friedrich-Wilhelms-Universität Bonn Oktober 2013 Überblick 1 Variablen vs. Pointer - Statischer und dynamischer

Mehr

Präzedenz von Operatoren

Präzedenz von Operatoren Präzedenz von Operatoren SWE-30 Die Präzedenz von Operatoren bestimmt die Struktur von Ausdrücken. Ein Operator höherer Präzedenz bindet die Operanden stärker als ein Operator geringerer Präzedenz. Mit

Mehr

Rekursive Funktionen sind Funktionen, die sich auf sich selbst beziehen bzw. Funktion, die sich selbst aufrufen.

Rekursive Funktionen sind Funktionen, die sich auf sich selbst beziehen bzw. Funktion, die sich selbst aufrufen. Rekursive Funktionen Was sind rekursive Funktionen? Rekursive Funktionen sind Funktionen, die sich auf sich selbst beziehen bzw. Funktion, die sich selbst aufrufen. Wozu braucht man rekursive Funktionen?

Mehr

Kapitel 11: Wiederholung und Zusammenfassung

Kapitel 11: Wiederholung und Zusammenfassung Wiederholung und Zusammenfassung 1: Begriff und Grundprobleme der Informatik Begriff Informatik Computer als universelle Rechenmaschine Grenzen der Berechenbarkeit Digitalisierung Problem der Komplexität

Mehr

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik-

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik- Informatik Studiengang Chemische Technologie Michael Roth michael.roth@h-da.de Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil VII Einstieg in Java I Michael Roth (h_da) Informatik

Mehr

Programmierung mit C Zeiger

Programmierung mit C Zeiger Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch

Mehr

Technische Informatik II Rechnerarchitektur

Technische Informatik II Rechnerarchitektur Technische Informatik II Rechnerarchitektur 3.Unterprogramme in MMIX Matthias Dräger E-Mail: www: mdraeger@mi.fu-berlin.de www.matthias-draeger.info/lehre/sose2010ti2/ tinyurl.com/sose2010ti2 Zuletzt bearbeitet:

Mehr

2. Rechnerarchitektur 2.1 einfache Computer

2. Rechnerarchitektur 2.1 einfache Computer Fakultät Informatik Institut Systemarchitektur Professur Rechnernetze WS 2012 LV Informatik-I für Verkehrsingenieure 2. Rechnerarchitektur 2.1 einfache Computer Dr. rer.nat. D. Gütter Mail: WWW: Dietbert.Guetter@tu-dresden.de

Mehr

Funktionale Programmierung mit Haskell

Funktionale Programmierung mit Haskell Funktionale Programmierung mit Haskell Prof Dr Hans J Schneider Lehrstuhl für Programmiersprachen und Programmiermethodik Friedrich-Alexander-Universität Erlangen-Nürnberg Sommersemester 2005 I Die Sprache

Mehr

6. Iteration (Schleifenanweisungen)

6. Iteration (Schleifenanweisungen) 6. Iteration (Schleifenanweisungen) Java-Beispiel: TemperatureTable.java K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 9. Nov. 2015 2 Schwerpunkte While-Anweisung: "abweisende"

Mehr

Zwischencodeerzeugung Compiler II

Zwischencodeerzeugung Compiler II Zwishenodeerzeugung Compiler II Prof. Dr. Ursula Goltz 14.09.2012 Einleitung Front-End... Parser Sem. Analys Zwishenodegenerator Bak-End Codegenerator... Zwishendarstellung (Zwishenode) evtl. mashinennunabh.

Mehr

Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen:

Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen: 1 ADRESSIERUNG IN MMIX Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen: no base address is close enough to the address A! relative address

Mehr

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens Grundlagen von C Jonas Gresens Proseminar C Grundlagen und Konzepte Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität

Mehr

Inhaltsverzeichnis. 1 Grundlagen 1. 2 Einfache Programme 21

Inhaltsverzeichnis. 1 Grundlagen 1. 2 Einfache Programme 21 xi 1 Grundlagen 1 1.1 Daten und Befehle......................................... 2 1.2 Algorithmen............................................. 4 1.3 Variablen................................................

Mehr

C- Kurs 04 Anweisungen

C- Kurs 04 Anweisungen C- Kurs 04 Anweisungen Dipl.- Inf. Jörn Hoffmann jhoffmann@informa@k.uni- leipzig.de Universität Leipzig Ins@tut für Informa@k Technische Informa@k Ausdrücke Institut für Informatik Anweisungen C-Programm

Mehr

Inhaltsverzeichnis. Einführende Bemerkungen 11. Das Fach Informatik 11 Zielsetzung der Vorlesung Grundbegriffe

Inhaltsverzeichnis. Einführende Bemerkungen 11. Das Fach Informatik 11 Zielsetzung der Vorlesung Grundbegriffe Inhaltsverzeichnis Einführende Bemerkungen 11 Das Fach Informatik 11 Zielsetzung der Vorlesung 12 1. Grundbegriffe 1 3 1.1 1.2 1.3 1.4 1.5 1.6 1.7 Information und Nachricht 1.1.1 Information 1.1.2 Nachricht

Mehr

Übersetzung objektorientierter Programmiersprachen

Übersetzung objektorientierter Programmiersprachen Bernhard Bauer Riitta Höllerer Übersetzung objektorientierter Programmiersprachen Konzepte, abstrakte Maschinen und Praktikum Java-Compiler" Mit 29 Abbildungen Springer Teil 1: Theorie 1 Einleitung 3 l.

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Computer-Architektur Ein Überblick

Computer-Architektur Ein Überblick Computer-Architektur Ein Überblick Johann Blieberger Institut für Rechnergestützte Automation Computer-Architektur Ein Überblick p.1/27 Computer-Aufbau: Motherboard Computer-Architektur Ein Überblick p.2/27

Mehr

5. Tutorium zu Programmieren

5. Tutorium zu Programmieren 5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting

Mehr

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz 4.5. www.kit.edu. Institut für Angewandte Informatik

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz 4.5. www.kit.edu. Institut für Angewandte Informatik Programmieren I Kontrollstrukturen Heusch 8 Ratz 4.5 KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Arten von Kontrollstrukturen

Mehr

BKTM - Programmieren leicht gemacht.

BKTM - Programmieren leicht gemacht. BKTM Programmieren leicht gemacht. + Struktogramm Das Struktogramme ist eine Entwurfsmethode für die strukturierte Programmierung. Es ist nach der DIN 66261 genormt. Es ist 1972/73 von Dr. Isaac Nassi

Mehr

Grundlagen der Programmierung

Grundlagen der Programmierung Grundlagen der Programmierung Dr. Tom Kamphans 1. Vorlesung 12.10.2016 1 Organisatorisches Vorlesung: Mittwochs 14:00 15:30, Raum F 201 Übung: Mittwochs 15:45 19:00, Raum F 225 Übung: alle zwei Wochen

Mehr

Grundlagen der Informatik I (Studiengang Medieninformatik)

Grundlagen der Informatik I (Studiengang Medieninformatik) Grundlagen der Informatik I (Studiengang Medieninformatik) Thema: 3. Datentypen, Datenstrukturen und imperative Programme Prof. Dr. S. Kühn Fachbereich Informatik/Mathematik Email: skuehn@informatik.htw-dresden.de

Mehr

Übungspaket 29 Dynamische Speicherverwaltung: malloc() und free()

Übungspaket 29 Dynamische Speicherverwaltung: malloc() und free() Übungspaket 29 Dynamische Speicherverwaltung malloc() und free() Übungsziele Skript In diesem Übungspaket üben wir das dynamische Alloziieren 1. und Freigeben von Speicherbereichen 2. von Zeichenketten

Mehr

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen

Mehr

Kapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte

Kapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte Elementare Schritte Ein elementarer Berechnungsschritt eines Algorithmus ändert im Allgemeinen den Wert von Variablen Zuweisungsoperation von fundamentaler Bedeutung Zuweisungsoperator In Pascal := In

Mehr

Ein Algorithmus heißt rekursiv, wenn er sich selbst aufruft. Meist werden nur einzelne Module eines Gesamtalgorithmus rekursiv verwendet.

Ein Algorithmus heißt rekursiv, wenn er sich selbst aufruft. Meist werden nur einzelne Module eines Gesamtalgorithmus rekursiv verwendet. 3.6 Rekursion Ein Algorithmus heißt rekursiv, wenn er sich selbst aufruft. Meist werden nur einzelne Module eines Gesamtalgorithmus rekursiv verwendet. Klassisches Beispiel: Berechnung von n! (Fakultät

Mehr

Imperative vs. Funktionale Programmierung

Imperative vs. Funktionale Programmierung Beispiel: Entwerfe eine Funktion, die testet, ob eine Zahl n eine Primzahl ist oder nicht. Beobachtung: (1) Wenn n Primzahl ist, ist die Menge der Teiler von n leer. (2) Die Menge der Teiler von n sind

Mehr

3AA. Prof. Dr. Wolfgang P. Kowalk. Universität Oldenburg WS 2005/2006

3AA. Prof. Dr. Wolfgang P. Kowalk. Universität Oldenburg WS 2005/2006 3AA Prof. Dr. Wolfgang P. Kowalk Universität Oldenburg WS 2005/2006 Version vom 24.10.2005 Übersicht Einführung in maschinennahe Programmierung Verständnis für grundlegende Vorgänge im Computer Jedes Programm

Mehr

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen 1 Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Ziele 2 Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:

Mehr

(a) Wie unterscheiden sich synchrone und asynchrone Unterbrechungen? (b) In welchen drei Schritten wird auf Unterbrechungen reagiert?

(a) Wie unterscheiden sich synchrone und asynchrone Unterbrechungen? (b) In welchen drei Schritten wird auf Unterbrechungen reagiert? SoSe 2014 Konzepte und Methoden der Systemsoftware Universität Paderborn Fachgebiet Rechnernetze Präsenzübung 2 2014-04-28 bis 2014-05-02 Aufgabe 1: Unterbrechungen (a) Wie unterscheiden sich synchrone

Mehr

RO-Tutorien 3 / 6 / 12

RO-Tutorien 3 / 6 / 12 RO-Tutorien 3 / 6 / 12 Tutorien zur Vorlesung Rechnerorganisation Christian A. Mandery WOCHE 4 AM 21.05.2013 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft

Mehr

TECHNISCHE HOCHSCHULE NÜRNBERG GEORG SIMON OHM Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten, z.b. Befehl

Mehr

Kontrollstrukturen - Universität Köln

Kontrollstrukturen - Universität Köln Kontrollstrukturen - Universität Köln Mario Manno Kontrollstrukturen - Universität Köln p. 1 Was sind Sprachen Auszeichnungssprachen HTML, XML Programmiersprachen ASM, Basic, C, C++, Haskell, Java, Pascal,

Mehr

Stephan Brumme, SST, 2.FS, Matrikelnr. 70 25 44

Stephan Brumme, SST, 2.FS, Matrikelnr. 70 25 44 Aufgabe 33 a) Der Pseudobefehl move $rd,$rs wird als addu $rd,$0,$rs übersetzt. Dabei macht sich SPIM zunutze, dass das Register $0 immer Null ist. Somit wird das Register $rd ersetzt durch $rd=0+$rs=$rs,

Mehr

Unterprogramme. Unterprogramme

Unterprogramme. Unterprogramme Unterprogramme Unterprogramme wichtiges Hilfsmittel für mehrfach benötigte Programmabschnitte spielen in höheren Programmiersprachen eine wesentliche Rolle in Assembler sind bestimmte Konventionen nötig

Mehr

Tutorium Rechnerorganisation

Tutorium Rechnerorganisation Woche 3 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Mehr

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Arrays 1 Ziele Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:

Mehr

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke Theoretische Informatik 1 WS 2007/2008 Prof. Dr. Rainer Lütticke Inhalt der Vorlesung Grundlagen - Mengen, Relationen, Abbildungen/Funktionen - Datenstrukturen - Aussagenlogik Automatentheorie Formale

Mehr

AuD-Tafelübung T-B5b

AuD-Tafelübung T-B5b 6. Übung Sichtbarkeiten, Rekursion, Javadoc Di, 29.11.2011 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit 3 Stack und Heap Stack Heap 4 Blatt 6 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit

Mehr

Sucosoft S40 KOP/FBS KOP FBS

Sucosoft S40 KOP/FBS KOP FBS Sucosoft S40 KOP/FBS KOP FBS Grafische Elemente Netzwerke erstellen Netzwerke erstellen Programme werden in KOP durch grafische Elemente dargestellt. Abfrage einer Variable auf den Zustand 1 Abfrage einer

Mehr

JMPCN Sprungbefehl nur ausführen, wenn VKE 0 ist. JMPC Sprungbefehl nur ausführen, wenn VKE 1 ist. JMP Ohne Bedingung zur Sprungmarke wechseln.

JMPCN Sprungbefehl nur ausführen, wenn VKE 0 ist. JMPC Sprungbefehl nur ausführen, wenn VKE 1 ist. JMP Ohne Bedingung zur Sprungmarke wechseln. Grafische Elemente Netzwerke erstellen Netzwerke erstellen Programme werden in KOP durch grafische Elemente dargestellt. Abfrage einer Variable auf den Zustand 1 Abfrage einer Variable auf den Zustand

Mehr

Vorkurs Informatik WiSe 16/17

Vorkurs Informatik WiSe 16/17 Java Rekursion Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 11.10.2016 Technische Universität Braunschweig, IPS Überblick Einleitung Beispiele 11.10.2016 Dr. Werner Struckmann / Stephan Mielke,

Mehr

Abstrakte Algorithmen und Sprachkonzepte

Abstrakte Algorithmen und Sprachkonzepte Abstrakte Algorithmen und Sprachkonzepte Thomas Röfer Begriff des Algorithmus Algorithmenaufbau Programmiersprachliche Grundkonzepte Interative und rekursive Algorithmen Rückblick Aufbau und Funktionsweise

Mehr

Die Programmiersprache C Eine Einführung

Die Programmiersprache C Eine Einführung Die Programmiersprache C Eine Einführung Christian Gentsch Fakutltät IV Technische Universität Berlin Projektlabor 2. Mai 2014 Inhaltsverzeichnis 1 Einführung Entstehungsgeschichte Verwendung 2 Objektorientiert

Mehr

Universität Paderborn Fakultät für Naturwissenschaften - Physikalisches Praktikum Versuche mit Microcontroller-System

Universität Paderborn Fakultät für Naturwissenschaften - Physikalisches Praktikum Versuche mit Microcontroller-System Kurzanleitung: Universität Paderborn Fakultät für Naturwissenschaften - Physikalisches Praktikum BASIC-Programme für das C-Control Prozessormodul Jedes Programm besteht aus einem Vereinbarungsteil und

Mehr

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Programmieren I Dr. Werner Struckmann 7. September 2015 Name: Vorname: Matrikelnummer: Kennnummer: Anrede: Frau Herr

Mehr

Informatik B von Adrian Neumann

Informatik B von Adrian Neumann Musterlösung zum 7. Aufgabenblatt vom Montag, den 25. Mai 2009 zur Vorlesung Informatik B von Adrian Neumann 1. Java I Schreiben Sie ein Java Programm, das alle positiven ganzen Zahlen 0 < a < b < 1000

Mehr

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

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011 Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 Operatoren für elementare Datentypen 2 Bedingte Anweisungen 3 Schleifen Zuweisungsoperator Die Zuweisung von Werten an

Mehr

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen

Mehr

Programmieren Lernen mit BYOB. Gerald Futschek 5. November 2012

Programmieren Lernen mit BYOB. Gerald Futschek 5. November 2012 Programmieren Lernen mit BYOB Informatiktag 2012 Gerald Futschek 5. November 2012 Erste Programmier Schritte in der Schule Sehr viele verschiedene Dinge zu lernen: Syntax und Semantik der Befehle, Algorithmen,

Mehr

Kapitel 12: Übersetzung objektorienter Konzepte

Kapitel 12: Übersetzung objektorienter Konzepte Kapitel 12: Übersetzung objektorienter Konzepte Themen Klassendarstellung und Methodenaufruf Typüberprüfung Klassenhierarchieanalyse Escape Analyse 12.1 Klassendarstellung bei Einfachvererbung class Punkt

Mehr

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

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015 Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 4, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Bäume, Suchbäume und Hash-Tabellen

Bäume, Suchbäume und Hash-Tabellen Im folgenden Fokus auf Datenstrukturen, welche den assoziativen Zugriff (über einen bestimmten Wert als Suchkriterium) optimieren Bäume: Abbildung bzw. Vorberechnung von Entscheidungen während der Suche

Mehr

Werkzeuge zur Programmentwicklung

Werkzeuge zur Programmentwicklung Werkzeuge zur Programmentwicklung B-15 Bibliothek Modulschnittstellen vorübersetzte Module Eingabe Editor Übersetzer (Compiler) Binder (Linker) Rechner mit Systemsoftware Quellmodul (Source) Zielmodul

Mehr

0 C (Carry) Überlauf des 8ten Bits. 1 DC (Digit Carry) Überlauf des 4ten Bits. Mnemonic Parameter Beschreibung Status-Flags.

0 C (Carry) Überlauf des 8ten Bits. 1 DC (Digit Carry) Überlauf des 4ten Bits. Mnemonic Parameter Beschreibung Status-Flags. 3. Assembler-Programmierung Der PIC 16F84A Microcontroller kennt 35 verschiedene Befehle. Für eine ausführliche Beschreibung aller Befehle siehe PIC16F84A-Datenblatt Kapitel 7.1. 3.1 Wichtige Flaggen im

Mehr

Einführung in AVR Assembler

Einführung in AVR Assembler Einführung in AVR Assembler Dennis Fassbender Institut für Technik Autonomer Systeme (LRT8) Universität der Bundeswehr München 09042014 Was ist Assembler? Low-level-Programmiersprache Erlaubt direkten

Mehr

Dynamische Speicherverwaltung

Dynamische Speicherverwaltung Dynamische Speicherverwaltung Tim Dobert 17.05.2013 Inhaltsverzeichnis 1 Allgemeines zur Speichernutzung 2 2 Ziel und Nutzen 2 3 Anwendung in C 2 3.1 malloc............................... 3 3.2 calloc...............................

Mehr

Assembler - Einleitung

Assembler - Einleitung Assembler - Einleitung Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler - Einleitung 1/19 2008-04-01 Teil 1: Hochsprache

Mehr

Einführung in die Informatik I (autip)

Einführung in die Informatik I (autip) Einführung in die Informatik I (autip) Dr. Stefan Lewandowski Fakultät 5: Informatik, Elektrotechnik und Informationstechnik Abteilung Formale Konzepte Universität Stuttgart 24. Oktober 2007 Was Sie bis

Mehr

VBA mit Office 97 lernen

VBA mit Office 97 lernen Rene Martin 2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. VBA mit Office 97 lernen Einstieg in die Welt der Makro-Programmierung

Mehr

Wiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung

Wiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung Wiederholung Wozu? Schreiben Benutzen Rekursion?! Javakurs 2012, 3. Vorlesung maggyrz@freitagsrunde.org 5. März 2013 Wiederholung Wozu? Schreiben Benutzen Rekursion?! 1 Wiederholung 2 Wozu? 3 Schreiben

Mehr