SlideShare ist ein Scribd-Unternehmen logo
1 von 8
Downloaden Sie, um offline zu lesen
Fachhochschule Ingolstadt                                 Übungsaufgaben Ingenieurinformatik
   Fakultät für Maschinenbau
   Prof. Dr. Edwin Naroska




                           Übungsaufgaben für die Klausur
                           Ingenieurinformatik WS 09/10




Vorbemerkungen
    Die Aufgaben in diesem Dokument dienen der Vorbereitung auf die Klausur im Fach
Ingenieurinformatik für das Wintersemester 09/10. Bitte beachten Sie, dass Anzahl und Format der hier
gestellten Aufgaben nicht notwendiger Weise denen der Klausur entsprechen.

   Beachten Sie bitte zudem, dass in der Klausur keinerlei Hilfsmittel zugelassen
sind (keine handschriftlichen Unterlagen, keine Bücher, keine Taschenrechner,
etc.)!


1. Aufgabe
   Ergänzen Sie die fehlenden Darstellungen der jeweiligen Zahlen.

                  Binär                         Dezimal                     Hexadezimal
                 0110111
                                                   25
                                                                                 2A



2. Aufgabe
    Wandeln Sie die folgenden negativen dezimalen Zahlen in die 2er-Komplementdarstellung um. Die
binäre 2er-Komplement-Zahlen soll hierbei aus insgesamt 7 Bitstellen bestehen.

                                 Dezimal                Binäre 2er-Komplement

                                    -1


                                   -12


                                   -33
3. Aufgabe
    Führen Sie folgende Additionen/Subtraktionen im binären Zahlensystem durch. Wandeln Sie also vor
der eigentlichen Addition/Subtraktion die Dezimalzahlen in entsprechende Binärzahlen (gegebenenfalls
2er-Komplementdarstellung) um. Die Binärzahlen sollen hierbei 8 Stellen besitzen.

                                 Operation                     Rechnung im
                                                          (vorzeichenbehafteten)
                                                                Binärformat

                                   12 - 34




                                  -33 + 23




                                  -40 - 21




4. Aufgabe
    Gegeben sein ein Prozessor ohne Pipelining, der seine Instruktionen in 6 Phasen abarbeitet. Wie viele
Instruktionen verarbeitet der Prozessor pro Sekunde, wenn er mit einer Taktfrequenz von 1,2 GHz (1 GHz =
109 Hz) getaktet wird und jede Phase genau einen Taktzyklus benötigt?
    Jetzt soll der Prozessor seine Befehle im Pipeline-Betrieb verarbeiten. Wie viele Instruktionen kann der
Prozessor jetzt pro Sekunde (bei gleicher Taktfrequenz) im günstigsten Fall abarbeiten?



5. Aufgabe
    Nennen Sie zwei gebräuchliche Block-Austauschstrategien bei Cache-Speichern und erläutern Sie diese
kurz.



6. Aufgabe
    Was ist ein Branch-Delay-Slot bei Prozessoren?




7. Aufgabe
     Gegeben sei ein Prozessor mit Pipelining, der unter optimalen Bedingungen eine Instruktion pro Takt
fertigstellen kann. Bei einer Messung wurde aber unter realen Bedingungen festgestellt, dass bei 5% der
ausgeführten Instruktionen ein Pipeline-Stall von 2 Takten und in 10% der Fälle ein Pipeline-Stall von einem
1 Takt auftritt. Wie viele Instruktionen pro Sekunde arbeitet der Prozessor im Durchschnitt ab?
8. Aufgabe
   Gegeben sei das folgende Programm für den RUN10000. Der Prozessor beginnt seine
Programmausführung mit der Anweisung 0.

                0      addi       r1, r0, 0
                1      addi       r2, r0, 255
                2      add        r3, r0, r1
                3      or         r3, r3, r1
                4      addi       r1, r1, 1
                5      ble        r1, r2, -2
                6      halt

    Welche Werte sind in den Register r1, r2 und r3 gespeichert, wenn der Prozessor den halt-Befehlt
erreicht hat? Wie oft wird die Sprunganweisung „ble r1, r1, -2“ verarbeitet? Wie oft verzweigt der
Prozessor dabei? Wie oft führt er die direkt nachfolgende Anweisung („halt“) durch?



9. Aufgabe
    Gegeben sei ein System mit dem Prozessor RUN10000, welcher ein Programm abarbeiten soll. Der
Datenspeicher habe vor Beginn der Programmabarbeitung den nachfolgenden Inhalt (alle Werte außerhalb
des Adressbereichs 200 bis 204 seien 0):

                                Adresse Speicherinhalt Speicherinhalt
                                           Vorher         nachher
                                …             0
                                200           10
                                201           20
                                202           30
                                203           40
                                204           50
                                …             0

   Der Prozessor führe nun ein Programm beginnend mit der Anweisung an Adresse 0 aus:

                0      addi       r1, r0, 0
                1      addi       r2, r0, 5
                2      add        r3, r0, r0
                3      load       r4, 200(r1)
                4      add        r3, r3, r4
                5      addi       r1, r1, 1
                6      store      r3, 199(r1)
                7      ble        r1, r2, -4
                8      halt

    Welche Werte stehen in den Register r1, r2, r3 und r4, wenn der Prozessor die „halt“-Anweisung
erreicht hat? Welche Werte stehen in den Speicherstellen 200 bis 204 im Datenspeicher?
10. Aufgabe
   Wandeln Sie die folgende Java-Programmsequenz in ein entsprechendes Maschinenprogramm für den
RUN10000 um.

                    int i;
                    int sum = 0;

                    for (i = 10; i < 1000; i += i)
                      sum += i;

    Speichern Sie in dem Programm die Variable „i“ im Register r1 und die Variable „sum“ im Register r2.
Diese Variablen müssen nicht zusätzlich im Speicher abgelegt werden.



11. Aufgabe
   Bedeutung haben die Begriffe „Klasse“ und „Instanz“ bei objektorientierten Programmiersprachen?



12. Aufgabe
   Welche Ausgabe erzeugt die folgende Java-Programmsequenz auf dem Bildschirm:

                     int i = 2;
                     int sum = 0;

                     for ( ; i < 1000; i += i) ; // Achtung!
                     sum += i;
                     System.out.println(sum);

   Wie oft wird die Java-Anweisung „sum += i“ in dieser Programmsequenz ausgeführt?



13. Aufgabe
   Erzeugen Sie eine Programmsequenz, die das Ergebnis der mathematische Formel



berechnet.
14. Aufgabe
   Gegeben sei die nachfolgende Klassendefinition:

                    class Test {
                      int[] value = null;

                        Test(int i) {
                          this.value = new int[i];
                          for (int j = 0; j < i; j++)
                            this.value[j] = 2;
                        }

                        int calc(Test t) {
                          int sum = 0;
                          for (int i = 0; i < this.value.length; i++)
                            sum += this.value[i] + t.value[i];
                        }
                    }

   Basierend auf diesem Klassen-Code wurde nun ein Hauptprogramm erstellt, welches die folgende
Programmsequenz enthält:

                    Test a(5);
                    Test b(5);
                    System.out.println(a.calc(b));

   Welche Ausgabe erzeugt diese Programmsequenz auf dem Bildschirm? Was passiert, wenn man die
Sequenz etwas abändert (siehe unten) und laufen lässt?

                    Test a(5);
                    Test b(6);                             // Achtung: Änderung in dieser Zeile
                    System.out.println(a.calc(b));




15. Aufgabe
    Erweitern Sie die aus der Vorlesung bekannte Klasse Rational so, dass der ganzzahlige Anteil eines
Bruchs separat gespeichert werden kann. Somit soll es also möglich sein den Bruch als      abzulegen. Die
Klasse braucht hierbei nur positive Zahlen verarbeiten zu können!
    Erweitern Sie zunächst die Member-Definition in geeigneter Weise:

              class Rational {
                                                                        // Neue Member
                                                                        // bitte hier einfügen
                  int num;
                  int denom;
                  …
              }
Erstellen Sie als nächstes eine Methode „normalize“ für die Klasse Rational, die die aktuelle Instanz
Rational so umrechnet, dass der ganzzahlige Anteil maximal wird. So soll z.B. eine Zahl      in
umgewandelt werden.

               void normalize () {




               }

In allen nachfolgenden Aufgabenteilen kann nun die Methode „normalize“ genutzt werden.
     Ergänzen Sie die beiden unten angegebenen Konstruktoren, so dass die neuen Member passend
initialisiert werden. Achten sie dabei darauf, dass nach Beenden der Konstruktoren der ganzzahlige Anteil
maximal und der Code möglichst kompakt ist!

               Rational () {
                num = 0;
                denom = 1;



               }

               Rational (int n, int z) {
                num = n;
                denom = z;




               }


     Erstellen Sie als nächstes eine Methode „mult“ für die Klasse Rational. Die Methode soll als Parameter
eine Instanz vom Typ Rational übergeben bekommen und das (mathematisch korrekte) Produkt aus der
aktuellen Instanz mit dem Parameter berechnen, wobei das Ergebnis in die aktuelle Instanz ablegt werden
soll. Stellen Sie sicher, dass der ganzzahlige Anteil am Ende der Methode maximal ist.

               void mult (                                   )   // Ergänzen sie auch den
               {                                                 // Methodenkopf!




               }

    Erstellen Sie als nächstes eine Routine „output“, die den Wert der aktuellen Instanz geeignet auf dem
Bildschirm ausgibt. So soll z.B. eine Zahl   als „2+7/8“ auf den Bildschirm geschrieben werden.
void output ()
              {




              }

    Erzeugen Sie schließlich eine Programmsequenz „test“, die die Berechnung   mit Hilfe der
Klasse Rational ausführt und das Ergebnis auf den Bildschirm ausgibt.

              public static void test ()
              {




              }
Anhang A: Kurzbeschreibung des Prozessors RUN1000
  Achtung: Die Beschreibung fehlt noch!

Weitere ähnliche Inhalte

Andere mochten auch

Die Zeit
Die ZeitDie Zeit
Die Zeitfosbe
 
Apollo Apollo Shock installation process ch
Apollo Apollo Shock installation process chApollo Apollo Shock installation process ch
Apollo Apollo Shock installation process chhiart03
 
Modulhandbuch 2008
Modulhandbuch 2008Modulhandbuch 2008
Modulhandbuch 2008guest995aa7
 
Werkstofftechnik 1 - Zusammenfassung
Werkstofftechnik 1 - ZusammenfassungWerkstofftechnik 1 - Zusammenfassung
Werkstofftechnik 1 - Zusammenfassungmaikinger
 
Erdwärme Heizkraftwerk Neustadt-Glewe
Erdwärme Heizkraftwerk Neustadt-GleweErdwärme Heizkraftwerk Neustadt-Glewe
Erdwärme Heizkraftwerk Neustadt-Glewedinomasch
 
Thermodynamik clausius boltzmann helmholtz
Thermodynamik clausius boltzmann helmholtzThermodynamik clausius boltzmann helmholtz
Thermodynamik clausius boltzmann helmholtzkatakama
 
Luca Malagoli (Attività E Profilo Professionale)
Luca Malagoli (Attività E Profilo Professionale)Luca Malagoli (Attività E Profilo Professionale)
Luca Malagoli (Attività E Profilo Professionale)Lukermal
 
WJAX 2014: Pah, ArchitekturDoku, darauf habe ich keine Lust!
WJAX 2014: Pah, ArchitekturDoku, darauf habe ich keine Lust!WJAX 2014: Pah, ArchitekturDoku, darauf habe ich keine Lust!
WJAX 2014: Pah, ArchitekturDoku, darauf habe ich keine Lust!Matthias Bohlen
 
Gergaud soak-graz-degrowth
Gergaud soak-graz-degrowthGergaud soak-graz-degrowth
Gergaud soak-graz-degrowthNico Gergaud
 
Thermodynamik Formelsammlungpdf
Thermodynamik FormelsammlungpdfThermodynamik Formelsammlungpdf
Thermodynamik Formelsammlungpdfmaikinger
 
Ivor Vidjen - Diplomarbeit
Ivor Vidjen - DiplomarbeitIvor Vidjen - Diplomarbeit
Ivor Vidjen - DiplomarbeitIvor Vidjen
 
4 G Mobile Technology Research Paper
4 G Mobile Technology Research Paper4 G Mobile Technology Research Paper
4 G Mobile Technology Research Paperaakashmehta1993
 
Thermodynamic Chapter 6 Thermal Power Plant
Thermodynamic Chapter 6 Thermal Power PlantThermodynamic Chapter 6 Thermal Power Plant
Thermodynamic Chapter 6 Thermal Power PlantMuhammad Surahman
 
DIE 45 SEKUNDEN PRÄSENTATION die Ihr Leben verändern wird (Don Failla)
DIE 45 SEKUNDEN PRÄSENTATION die Ihr Leben verändern wird (Don Failla)DIE 45 SEKUNDEN PRÄSENTATION die Ihr Leben verändern wird (Don Failla)
DIE 45 SEKUNDEN PRÄSENTATION die Ihr Leben verändern wird (Don Failla)www.Millionaireconcept.com
 
Laws Of Thermodynamics
Laws Of ThermodynamicsLaws Of Thermodynamics
Laws Of Thermodynamicsk v
 

Andere mochten auch (19)

Die Zeit
Die ZeitDie Zeit
Die Zeit
 
Entropie
EntropieEntropie
Entropie
 
Zeit und Raum
Zeit und RaumZeit und Raum
Zeit und Raum
 
Apollo Apollo Shock installation process ch
Apollo Apollo Shock installation process chApollo Apollo Shock installation process ch
Apollo Apollo Shock installation process ch
 
Modulhandbuch 2008
Modulhandbuch 2008Modulhandbuch 2008
Modulhandbuch 2008
 
Werkstofftechnik 1 - Zusammenfassung
Werkstofftechnik 1 - ZusammenfassungWerkstofftechnik 1 - Zusammenfassung
Werkstofftechnik 1 - Zusammenfassung
 
Gen x
Gen xGen x
Gen x
 
Erdwärme Heizkraftwerk Neustadt-Glewe
Erdwärme Heizkraftwerk Neustadt-GleweErdwärme Heizkraftwerk Neustadt-Glewe
Erdwärme Heizkraftwerk Neustadt-Glewe
 
Thermodynamik clausius boltzmann helmholtz
Thermodynamik clausius boltzmann helmholtzThermodynamik clausius boltzmann helmholtz
Thermodynamik clausius boltzmann helmholtz
 
Luca Malagoli (Attività E Profilo Professionale)
Luca Malagoli (Attività E Profilo Professionale)Luca Malagoli (Attività E Profilo Professionale)
Luca Malagoli (Attività E Profilo Professionale)
 
Energie und Masse
Energie und MasseEnergie und Masse
Energie und Masse
 
WJAX 2014: Pah, ArchitekturDoku, darauf habe ich keine Lust!
WJAX 2014: Pah, ArchitekturDoku, darauf habe ich keine Lust!WJAX 2014: Pah, ArchitekturDoku, darauf habe ich keine Lust!
WJAX 2014: Pah, ArchitekturDoku, darauf habe ich keine Lust!
 
Gergaud soak-graz-degrowth
Gergaud soak-graz-degrowthGergaud soak-graz-degrowth
Gergaud soak-graz-degrowth
 
Thermodynamik Formelsammlungpdf
Thermodynamik FormelsammlungpdfThermodynamik Formelsammlungpdf
Thermodynamik Formelsammlungpdf
 
Ivor Vidjen - Diplomarbeit
Ivor Vidjen - DiplomarbeitIvor Vidjen - Diplomarbeit
Ivor Vidjen - Diplomarbeit
 
4 G Mobile Technology Research Paper
4 G Mobile Technology Research Paper4 G Mobile Technology Research Paper
4 G Mobile Technology Research Paper
 
Thermodynamic Chapter 6 Thermal Power Plant
Thermodynamic Chapter 6 Thermal Power PlantThermodynamic Chapter 6 Thermal Power Plant
Thermodynamic Chapter 6 Thermal Power Plant
 
DIE 45 SEKUNDEN PRÄSENTATION die Ihr Leben verändern wird (Don Failla)
DIE 45 SEKUNDEN PRÄSENTATION die Ihr Leben verändern wird (Don Failla)DIE 45 SEKUNDEN PRÄSENTATION die Ihr Leben verändern wird (Don Failla)
DIE 45 SEKUNDEN PRÄSENTATION die Ihr Leben verändern wird (Don Failla)
 
Laws Of Thermodynamics
Laws Of ThermodynamicsLaws Of Thermodynamics
Laws Of Thermodynamics
 

Ähnlich wie Übungsaufgaben

Java Streams und Lambdas
Java Streams und LambdasJava Streams und Lambdas
Java Streams und LambdasNane Kratzke
 
SchüLerscript Imperative Programmierung Mit Der Delphi Konsole
SchüLerscript   Imperative Programmierung Mit Der Delphi KonsoleSchüLerscript   Imperative Programmierung Mit Der Delphi Konsole
SchüLerscript Imperative Programmierung Mit Der Delphi Konsoleguestcf99
 
Parallele Softwareentwicklung mit .NET 4.0
Parallele Softwareentwicklung mit .NET 4.0Parallele Softwareentwicklung mit .NET 4.0
Parallele Softwareentwicklung mit .NET 4.0Qiong Wu
 
Go - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare SystemeGo - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare SystemeFrank Müller
 
Einführung in die funktionale Programmierung
Einführung in die funktionale ProgrammierungEinführung in die funktionale Programmierung
Einführung in die funktionale ProgrammierungDigicomp Academy AG
 
Skalierbare Anwendungen mit Google Go
Skalierbare Anwendungen mit Google GoSkalierbare Anwendungen mit Google Go
Skalierbare Anwendungen mit Google GoFrank Müller
 
Funktionale Reaktive Programmierung mit Sodium
Funktionale Reaktive Programmierung mit SodiumFunktionale Reaktive Programmierung mit Sodium
Funktionale Reaktive Programmierung mit SodiumTorsten Fink
 
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins Christian Kauhaus
 
W-JAX 2023: Go über den Wolken
W-JAX 2023: Go über den WolkenW-JAX 2023: Go über den Wolken
W-JAX 2023: Go über den WolkenJan Stamer
 
Scalaz introduction for Java programmers
Scalaz introduction for Java programmersScalaz introduction for Java programmers
Scalaz introduction for Java programmersBernhard Huemer
 
AdvancedTdd
AdvancedTddAdvancedTdd
AdvancedTddjlink
 
SEROM 2018 - 11/14/17/20 - C++ gestern heute und morgen
SEROM 2018 - 11/14/17/20 - C++ gestern heute und morgenSEROM 2018 - 11/14/17/20 - C++ gestern heute und morgen
SEROM 2018 - 11/14/17/20 - C++ gestern heute und morgenDr. Herwig Henseler
 
PureSQL APEX Connect
PureSQL APEX ConnectPureSQL APEX Connect
PureSQL APEX ConnectTrivadis
 
Pure SQL for batch processing
Pure SQL for batch processingPure SQL for batch processing
Pure SQL for batch processingAndrej Pashchenko
 
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDASchulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDAJörn Dinkla
 

Ähnlich wie Übungsaufgaben (20)

Java Streams und Lambdas
Java Streams und LambdasJava Streams und Lambdas
Java Streams und Lambdas
 
Basisinformationstechnologie I WiSem 2015 / 2016 | 06_Rechnertechnologie II: ...
Basisinformationstechnologie I WiSem 2015 / 2016 | 06_Rechnertechnologie II: ...Basisinformationstechnologie I WiSem 2015 / 2016 | 06_Rechnertechnologie II: ...
Basisinformationstechnologie I WiSem 2015 / 2016 | 06_Rechnertechnologie II: ...
 
SchüLerscript Imperative Programmierung Mit Der Delphi Konsole
SchüLerscript   Imperative Programmierung Mit Der Delphi KonsoleSchüLerscript   Imperative Programmierung Mit Der Delphi Konsole
SchüLerscript Imperative Programmierung Mit Der Delphi Konsole
 
BIT I WiSe 2014 | Basisinformationstechnologie I - 08: Programmiersprachen I
BIT I WiSe 2014 | Basisinformationstechnologie I - 08: Programmiersprachen IBIT I WiSe 2014 | Basisinformationstechnologie I - 08: Programmiersprachen I
BIT I WiSe 2014 | Basisinformationstechnologie I - 08: Programmiersprachen I
 
Parallele Softwareentwicklung mit .NET 4.0
Parallele Softwareentwicklung mit .NET 4.0Parallele Softwareentwicklung mit .NET 4.0
Parallele Softwareentwicklung mit .NET 4.0
 
BIT I WiSe 2014 | Basisinformationstechnologie I - 05: Rechnertechnologie II
BIT I WiSe 2014 | Basisinformationstechnologie I - 05: Rechnertechnologie IIBIT I WiSe 2014 | Basisinformationstechnologie I - 05: Rechnertechnologie II
BIT I WiSe 2014 | Basisinformationstechnologie I - 05: Rechnertechnologie II
 
C++11 und c++14
C++11 und c++14C++11 und c++14
C++11 und c++14
 
Go - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare SystemeGo - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare Systeme
 
Einführung in die funktionale Programmierung
Einführung in die funktionale ProgrammierungEinführung in die funktionale Programmierung
Einführung in die funktionale Programmierung
 
Skalierbare Anwendungen mit Google Go
Skalierbare Anwendungen mit Google GoSkalierbare Anwendungen mit Google Go
Skalierbare Anwendungen mit Google Go
 
Funktionale Reaktive Programmierung mit Sodium
Funktionale Reaktive Programmierung mit SodiumFunktionale Reaktive Programmierung mit Sodium
Funktionale Reaktive Programmierung mit Sodium
 
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
 
W-JAX 2023: Go über den Wolken
W-JAX 2023: Go über den WolkenW-JAX 2023: Go über den Wolken
W-JAX 2023: Go über den Wolken
 
Scalaz introduction for Java programmers
Scalaz introduction for Java programmersScalaz introduction for Java programmers
Scalaz introduction for Java programmers
 
AdvancedTdd
AdvancedTddAdvancedTdd
AdvancedTdd
 
SEROM 2018 - 11/14/17/20 - C++ gestern heute und morgen
SEROM 2018 - 11/14/17/20 - C++ gestern heute und morgenSEROM 2018 - 11/14/17/20 - C++ gestern heute und morgen
SEROM 2018 - 11/14/17/20 - C++ gestern heute und morgen
 
PureSQL APEX Connect
PureSQL APEX ConnectPureSQL APEX Connect
PureSQL APEX Connect
 
Pure SQL for batch processing
Pure SQL for batch processingPure SQL for batch processing
Pure SQL for batch processing
 
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDASchulung: Einführung in das GPU-Computing mit NVIDIA CUDA
Schulung: Einführung in das GPU-Computing mit NVIDIA CUDA
 
Web Entwicklung mit PHP - Teil 1
Web Entwicklung mit PHP - Teil 1Web Entwicklung mit PHP - Teil 1
Web Entwicklung mit PHP - Teil 1
 

Übungsaufgaben

  • 1. Fachhochschule Ingolstadt Übungsaufgaben Ingenieurinformatik Fakultät für Maschinenbau Prof. Dr. Edwin Naroska Übungsaufgaben für die Klausur Ingenieurinformatik WS 09/10 Vorbemerkungen Die Aufgaben in diesem Dokument dienen der Vorbereitung auf die Klausur im Fach Ingenieurinformatik für das Wintersemester 09/10. Bitte beachten Sie, dass Anzahl und Format der hier gestellten Aufgaben nicht notwendiger Weise denen der Klausur entsprechen. Beachten Sie bitte zudem, dass in der Klausur keinerlei Hilfsmittel zugelassen sind (keine handschriftlichen Unterlagen, keine Bücher, keine Taschenrechner, etc.)! 1. Aufgabe Ergänzen Sie die fehlenden Darstellungen der jeweiligen Zahlen. Binär Dezimal Hexadezimal 0110111 25 2A 2. Aufgabe Wandeln Sie die folgenden negativen dezimalen Zahlen in die 2er-Komplementdarstellung um. Die binäre 2er-Komplement-Zahlen soll hierbei aus insgesamt 7 Bitstellen bestehen. Dezimal Binäre 2er-Komplement -1 -12 -33
  • 2. 3. Aufgabe Führen Sie folgende Additionen/Subtraktionen im binären Zahlensystem durch. Wandeln Sie also vor der eigentlichen Addition/Subtraktion die Dezimalzahlen in entsprechende Binärzahlen (gegebenenfalls 2er-Komplementdarstellung) um. Die Binärzahlen sollen hierbei 8 Stellen besitzen. Operation Rechnung im (vorzeichenbehafteten) Binärformat 12 - 34 -33 + 23 -40 - 21 4. Aufgabe Gegeben sein ein Prozessor ohne Pipelining, der seine Instruktionen in 6 Phasen abarbeitet. Wie viele Instruktionen verarbeitet der Prozessor pro Sekunde, wenn er mit einer Taktfrequenz von 1,2 GHz (1 GHz = 109 Hz) getaktet wird und jede Phase genau einen Taktzyklus benötigt? Jetzt soll der Prozessor seine Befehle im Pipeline-Betrieb verarbeiten. Wie viele Instruktionen kann der Prozessor jetzt pro Sekunde (bei gleicher Taktfrequenz) im günstigsten Fall abarbeiten? 5. Aufgabe Nennen Sie zwei gebräuchliche Block-Austauschstrategien bei Cache-Speichern und erläutern Sie diese kurz. 6. Aufgabe Was ist ein Branch-Delay-Slot bei Prozessoren? 7. Aufgabe Gegeben sei ein Prozessor mit Pipelining, der unter optimalen Bedingungen eine Instruktion pro Takt fertigstellen kann. Bei einer Messung wurde aber unter realen Bedingungen festgestellt, dass bei 5% der ausgeführten Instruktionen ein Pipeline-Stall von 2 Takten und in 10% der Fälle ein Pipeline-Stall von einem 1 Takt auftritt. Wie viele Instruktionen pro Sekunde arbeitet der Prozessor im Durchschnitt ab?
  • 3. 8. Aufgabe Gegeben sei das folgende Programm für den RUN10000. Der Prozessor beginnt seine Programmausführung mit der Anweisung 0. 0 addi r1, r0, 0 1 addi r2, r0, 255 2 add r3, r0, r1 3 or r3, r3, r1 4 addi r1, r1, 1 5 ble r1, r2, -2 6 halt Welche Werte sind in den Register r1, r2 und r3 gespeichert, wenn der Prozessor den halt-Befehlt erreicht hat? Wie oft wird die Sprunganweisung „ble r1, r1, -2“ verarbeitet? Wie oft verzweigt der Prozessor dabei? Wie oft führt er die direkt nachfolgende Anweisung („halt“) durch? 9. Aufgabe Gegeben sei ein System mit dem Prozessor RUN10000, welcher ein Programm abarbeiten soll. Der Datenspeicher habe vor Beginn der Programmabarbeitung den nachfolgenden Inhalt (alle Werte außerhalb des Adressbereichs 200 bis 204 seien 0): Adresse Speicherinhalt Speicherinhalt Vorher nachher … 0 200 10 201 20 202 30 203 40 204 50 … 0 Der Prozessor führe nun ein Programm beginnend mit der Anweisung an Adresse 0 aus: 0 addi r1, r0, 0 1 addi r2, r0, 5 2 add r3, r0, r0 3 load r4, 200(r1) 4 add r3, r3, r4 5 addi r1, r1, 1 6 store r3, 199(r1) 7 ble r1, r2, -4 8 halt Welche Werte stehen in den Register r1, r2, r3 und r4, wenn der Prozessor die „halt“-Anweisung erreicht hat? Welche Werte stehen in den Speicherstellen 200 bis 204 im Datenspeicher?
  • 4. 10. Aufgabe Wandeln Sie die folgende Java-Programmsequenz in ein entsprechendes Maschinenprogramm für den RUN10000 um. int i; int sum = 0; for (i = 10; i < 1000; i += i) sum += i; Speichern Sie in dem Programm die Variable „i“ im Register r1 und die Variable „sum“ im Register r2. Diese Variablen müssen nicht zusätzlich im Speicher abgelegt werden. 11. Aufgabe Bedeutung haben die Begriffe „Klasse“ und „Instanz“ bei objektorientierten Programmiersprachen? 12. Aufgabe Welche Ausgabe erzeugt die folgende Java-Programmsequenz auf dem Bildschirm: int i = 2; int sum = 0; for ( ; i < 1000; i += i) ; // Achtung! sum += i; System.out.println(sum); Wie oft wird die Java-Anweisung „sum += i“ in dieser Programmsequenz ausgeführt? 13. Aufgabe Erzeugen Sie eine Programmsequenz, die das Ergebnis der mathematische Formel berechnet.
  • 5. 14. Aufgabe Gegeben sei die nachfolgende Klassendefinition: class Test { int[] value = null; Test(int i) { this.value = new int[i]; for (int j = 0; j < i; j++) this.value[j] = 2; } int calc(Test t) { int sum = 0; for (int i = 0; i < this.value.length; i++) sum += this.value[i] + t.value[i]; } } Basierend auf diesem Klassen-Code wurde nun ein Hauptprogramm erstellt, welches die folgende Programmsequenz enthält: Test a(5); Test b(5); System.out.println(a.calc(b)); Welche Ausgabe erzeugt diese Programmsequenz auf dem Bildschirm? Was passiert, wenn man die Sequenz etwas abändert (siehe unten) und laufen lässt? Test a(5); Test b(6); // Achtung: Änderung in dieser Zeile System.out.println(a.calc(b)); 15. Aufgabe Erweitern Sie die aus der Vorlesung bekannte Klasse Rational so, dass der ganzzahlige Anteil eines Bruchs separat gespeichert werden kann. Somit soll es also möglich sein den Bruch als abzulegen. Die Klasse braucht hierbei nur positive Zahlen verarbeiten zu können! Erweitern Sie zunächst die Member-Definition in geeigneter Weise: class Rational { // Neue Member // bitte hier einfügen int num; int denom; … }
  • 6. Erstellen Sie als nächstes eine Methode „normalize“ für die Klasse Rational, die die aktuelle Instanz Rational so umrechnet, dass der ganzzahlige Anteil maximal wird. So soll z.B. eine Zahl in umgewandelt werden. void normalize () { } In allen nachfolgenden Aufgabenteilen kann nun die Methode „normalize“ genutzt werden. Ergänzen Sie die beiden unten angegebenen Konstruktoren, so dass die neuen Member passend initialisiert werden. Achten sie dabei darauf, dass nach Beenden der Konstruktoren der ganzzahlige Anteil maximal und der Code möglichst kompakt ist! Rational () { num = 0; denom = 1; } Rational (int n, int z) { num = n; denom = z; } Erstellen Sie als nächstes eine Methode „mult“ für die Klasse Rational. Die Methode soll als Parameter eine Instanz vom Typ Rational übergeben bekommen und das (mathematisch korrekte) Produkt aus der aktuellen Instanz mit dem Parameter berechnen, wobei das Ergebnis in die aktuelle Instanz ablegt werden soll. Stellen Sie sicher, dass der ganzzahlige Anteil am Ende der Methode maximal ist. void mult ( ) // Ergänzen sie auch den { // Methodenkopf! } Erstellen Sie als nächstes eine Routine „output“, die den Wert der aktuellen Instanz geeignet auf dem Bildschirm ausgibt. So soll z.B. eine Zahl als „2+7/8“ auf den Bildschirm geschrieben werden.
  • 7. void output () { } Erzeugen Sie schließlich eine Programmsequenz „test“, die die Berechnung mit Hilfe der Klasse Rational ausführt und das Ergebnis auf den Bildschirm ausgibt. public static void test () { }
  • 8. Anhang A: Kurzbeschreibung des Prozessors RUN1000 Achtung: Die Beschreibung fehlt noch!