Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe: Jahr: WS 2016/17 Übungsleiter: Alexander Syndikus Unterschrift: 1 Aufgabe: Computer-Aufbau 1.1 Prinzipieller Aufbau eines Computers ( / 4,5) Nennen Sie die wesentlichen Bestandteile eines Computers (Von-Neumann-Architektur) CPU: Anm. die beiden Teile korrekt zuordnen (0,5 P) Recheneinheit (Arithmetic Logic Unit, ALU ) Steuerwerk oder Leitwerk (Control Unit) Speicherwerk (Memory) Eingabe- bzw. Ausgabewerk (I/O Unit) Ein System, welches die Komponenten verbindet (Bus) Nennen Sie 3 BUS-Systeme, die die Komponenten verbinden: Addressbus Datenbus Steuerbus Klausur_CuB_WS2016_17_Uebung_2_loesung Seite: 1/13
1.2 Computer-Grundlagen ( / 7) Sachverhalt Welches elektrische Bauteil ist die Grundlage einer CPU / Speicherbausteinen / Gatter Nennen Sie 3 unterschiedliche physikalische Speichertechniken, in denen digitale Daten gespeichert werden können Welche Logik wird in der Hardware-Computertechnik / Dual-System verwendet? In der von-neumann-architektur benötigt 1 Zyklus normalerweise 1 oder mehrere Takte? Schreiben Sie die Abkürzung CPU aus Transistor Antwort Halbleiterspeicher, magnetische Speicher, optische Speicher (3P) Boolsche Logik mehrere Central Processing Unit Klausur_CuB_WS2016_17_Uebung_2_loesung Seite: 2/13
2 Aufgabe: Begriffe der Informatik 2.1 Bestimmen Sie welche Aussage korrekt ist ( / 8) Sachverhalt Bedingung ja nein ( ) Die in Sachverhalt gezeigte Zeichnung ist ein Struktogramm ( X ) Die in Sachverhalt gezeigte Zeichnung ist ein Programmablaufplan Ein Compiler ist ( ) Hardware ( X ) Software Eine CPU ist ( X ) Hardware ( ) Software 45670 ist in JAVA ( ) ein Schlüsselwort ( X ) ein Literal Ein Compiler gehört zum Betriebssystem ( ) stimmt ( X ) stimmt nicht Bei Datenschutz geht es nur darum, dass keiner Daten stiehlt/kopiert In der Informatik versteht man unter Daten und Information das gleiche ( ) stimmt ( X ) stimmt nicht ( ) stimmt ( X ) stimmt nicht Debugger dienen zur Fehleranalyse ( X ) stimmt ( ) stimmt 2.2 Benennen Sie mit Begriffen der Informatik ( / 6) Sachverhalt Eine Sammlung von Anweisungen, die so exakt definiert ist, dass ein Computer sie ausführen kann Begriff der Informatik Algorithmus Bezeichnung der tatsächlichen Umsetzung / Programmierung Implementierung Kleinste addessierbare Einheit im Speicher eines Computers (Von-Neumann-Architektur) Im Betriebssystem gesetzte Variablen, die Auswirkungen auf ein Programm haben (können) z.b. PATH Programm zum direkten Ausführen in einer Programmiersprache geschriebenen Programm (z.b. JAVA-Script) Dateityp, in der z.b. Bild-/Audiodaten gespeichert sind Wort Umgebungsvariablen Interpreter Binärdatei Klausur_CuB_WS2016_17_Uebung_2_loesung Seite: 3/13
2.3 Begriffe aus der objektorientierten Programmierung ( / 9 P) Sachverhalt Wie werden class, public, int, double, return und weitere reservierte Wörter (in JAVA) noch bezeichnet? void main () // Sonderstellung der Funktion main - wie bezeichnet man diese Stelle? Wie bezeichnet man die Kontrollstruktur while? Wie bezeichnet man die beiden Strings der Methode? class Adressen { public Adressen (String vorname, String nachname) { Wie bezeichnet man die zusammengefassten Anweisungen inklusive der beiden { und? { int faktor = 10; while ( z < b ) z = z * faktor; Wie bezeichnet man = 0 aufgrund der angegebenen Definition? class Adressen { private int anzahl_adressen = 0; Was benötigt man um in einem Programm, das die Klasse Adressen verwendet um den Wert für anzahl_adressen zu setzen? class Adressen { private int anzahl_adressen = 0; Welche Anweisung muss in einer (Get-)Methode mindestens 1 mal vorkommen, das die Klasse Adressen verwendet um den Wert für anzahl_adressen auszulesen? Was sind char int long float double in JAVA? Begriff der Informatik Schlüsselwörter Einsprungpunkt Schleife (Übergabe-)Parameter Anweisungsblock Initialisieren Einen Setter Return-Anweisung primitive Datentypen Klausur_CuB_WS2016_17_Uebung_2_loesung Seite: 4/13
3 Aufgabe: Stellenwertsysteme 3.1 Welches Zahlensystem ist ein/kein Stellenwert-System? ( / 1,5) Antwort: Stellenwertsystem=Ja / kein Stellenwertsystem=Nein Antwort Ja Ja Nein Zahlensystem Binär-System SystemHexadezimal-System Römische-Ziffern-System 3.2 Umrechnung Dezimalsystem Dualsystem ( / 5) Gegeben sei die Dezimalzahl 139 wandeln Sie diese Zahl in die Zahlendarstellung zur Basis 2 um. Inklusive Rechenweg und Proberechnung. 139 / 2 = 69 R 1 69 / 2 = 34 R 1 34 / 2 = 17 R 0 17 / 2 = 8 R 1 8 / 2 = 4 R 0 4 / 2 = 2 R 0 2 / 2 = 1 R 0 1 / 2 = 0 R 1 (Rechenweg 2 P) Lösung: 10001011 (2) (1 P) Probe: 128 + 8 + 2 + 1 = 139 (2 P) 3.3 Umrechnung Hexadezimalsystem Dezimalsystem ( / 4) Gegeben sei die Zahl AB wandeln Sie diese Zahl in das Dezimalsystem um. Inklusive Rechenweg. 11 (B) * 1 = 11 10 (A) * 16 = 160 (Rechenweg 2 P) ===== 171 Lösung: 171 (10) (2 P) Klausur_CuB_WS2016_17_Uebung_2_loesung Seite: 5/13
3.4 Umrechnung Dezimalsystem Zahl Basis 8 ( / 5) Gegeben sei die Dezimalzahl 190 wandeln Sie diese Zahl in die Zahl zur Basis 8 um. Inklusive Rechenweg und Proberechnung. 190 / 8 = 23 R 6 23 / 8 = 2 R 7 2 / 8 = 0 R 2 (Rechenweg 2 P) Lösung: 276 (8) (1 P) Probe: 2*64 + 7*8 + 6 = 128 + 56 + 6 = 190 (2 P) 4 Aufgabe: Datentypen 4.1 Worin unterscheiden sich long und Long in JAVA? ( / 2) long ist ein primitiver Datentyp Long ist vom Typ Objekt 4.2 Worin unterscheiden sich int und float? ( / 1) (Tipp: Beschreiben Sie kurz wofür sich der Datentyp eignet) int eignet sich nur für Ganzzahlen; float eigent sich für Kommazahlen. Klausur_CuB_WS2016_17_Uebung_2_loesung Seite: 6/13
4.3 Datentypen ermitteln ( / 9) Vervollständigen Sie die Programmierzeile anhand der Beschreibung: Verwenden Sie den speichergünstigsten Datentyp. Eine Funktion soll die Multiplikation zweier Integer-Zahlen (int) berechnen (ohne Genauigkeitsverlust). long Mult2int ( int a, int b ) { (1 P) Eine Funktion soll den Prozentwert einer Integer-Zahl (int) berechnen (Rückgabe in maximaler Genauigkeit). double Prozent ( int wert, float prozent ) { (1 P) Eine Funktion soll aus einem String das erste Zeichen zurückgeben. char ZeichenInStringAnPosition1 ( String text ) { (1 P) Eine Funktion soll ein Array (primitiver Datentyp Integer) auswerten und den höchsten Wert zurückgeben. int MaxAusArray ( int [] array ) { (2 P) Eine Funktion soll ein Array (Objekt-Datentyp Integer) auswerten und den Mittelwert zurückgeben (maximale Genauigkeit). double MittelwertArray ( Integer[] array ) { (2 P) Eine Funktion soll die Multiplikation zweier byte-variablen berechnen. int_ ByteMalByte ( byte ganzzahl_1, byte ganzzahl_2 ) { (1 + 0,5 +0,5 P) Klausur_CuB_WS2016_17_Uebung_2_loesung Seite: 7/13
5 Aufgabe: JAVA-Programmierung 5.1 Programmanalyse: einfaches Programm ( / 2) Geben Sie die Ausgabe am Bildschirm an. public class Test1 { public static void main(string[] args) { int x = 1; while ( x < 30 ) { x = x * 2; System.out.println ("x = " + x); // end main // end Test1 Bildschirmausgabe: x = 2 x = 4 x = 8 x = 16 x = 32 Klausur_CuB_WS2016_17_Uebung_2_loesung Seite: 8/13
5.2 Programmanalyse: Fehleranalyse ( / 4) Markieren Sie in der Zeile den Fehler an der betreffenden Stelle mit einem * und schreiben Sie neben die Zeile das entsprechende fehlerhafte/fehleden Zeichen, Schlüsselwort oder eine Bemerkung Hinweis: Je korrekt gefundenem Fehler ½ Punkt. public * Test { // class public static void main (String[] args) { // MeineKlasse obj = * MeineKlasse() ; // new obj.myprint*; // () // // class MeineKlasse { // super int a = 0 ; // Schlüsselwort super an dieser Stelle nicht erlaubt public Myprint () { // System.out.println("OBJECT = " * this.a) ; // + // public MeineKlasse * { // () a = a + 1 * // ; * // // Klausur_CuB_WS2016_17_Uebung_2_loesung Seite: 9/13
5.3 Programmanalyse: Non-static, static, final static ( / 7) Geben Sie die Ausgabe am Bildschirm an. (4P) Könnte man für den Zugriff auf obj1.a bzw. obj1.b noch etwas anderes schreiben? Kreuzen Sie an. (2P) Und wenn Sie ja angekreuzt haben, was könnte man schreiben? (1P) obj1.a obj1.b (X) ja / ( ) nein StaticNonStatic.a (2P) ( ) ja / (X) nein (1P) public class StaticTest { public static void main(string[] args) { StaticNonStatic obj1 = new StaticNonStatic(); StaticNonStatic obj2 = new StaticNonStatic(); System.out.println("obj1.a = " + obj1.a); System.out.println("obj2.a = " + obj2.a); System.out.println("obj1.b = " + obj1.b); System.out.println("obj2.b = " + obj2.b); class StaticNonStatic { public static int a = 10; public int b = 0; StaticNonStatic () { this.b = this.a; this.a--; Bildschirmausgabe: obj1.a = 8 obj2.a = 8 obj1.b = 10 obj2.b = 9 Klausur_CuB_WS2016_17_Uebung_2_loesung Seite: 10/13
5.4 Vererbung und Gültigkeit ( / 10) Geben Sie die Ausgabe am Bildschirm an. Geben Sie eine kurze Erklärung an, diese wird berücksichtigt (trennen Sie diese mit // ab). public class OberUnterTest { public static void main(string[] args) { int x = 1; UnterKlasse objekt1 = new UnterKlasse( 9 ); System.out.println ("(main)x = " + x); // end main // end OberUnterTest class OberKlasse { int x = 0; public OberKlasse ( int x ) { this.x = x * 2; // end OberKlasse class UnterKlasse extends OberKlasse { int x = super.x * 2; public UnterKlasse ( int x ) { super ( x ); System.out.println ("x = " + x); System.out.println ("super.x = " + super.x); System.out.println ("this.x = " + this.x); // end UnterKlasse Bildschirmausgabe: x = 9 // Konstruktor(UnterKlasse)-Parameter-Wert super.x = 18 // Attribut von Oberklasse; Konstruktor berechnet x * 2 this.x = 36 // Attribut von Unterklasse; initialisiert mit super.x * 2 (main)x = 1 // lokal in main Klausur_CuB_WS2016_17_Uebung_2_loesung Seite: 11/13
5.5 Aufgabe Potenz: 2 y f : N N mit f (y) = 2 y mit y N 5.5.1 Schreiben Sie einen Algorithmus zur Berechnung der Formel (3) Verwenden Sie fortgesetzte Multiplikation in dem Lösungsweg. 1. Gegeben sei eine natürliche Zahl y 2. Multipliziere beginnend bei 1 so oft mit 2 wie durch y angegeben wird 3. Das Ergebnis der fortgesetzten Multiplikation ist das Resultat. 5.5.2 Schreiben Sie eine Funktion (JAVA) zur Berechnung des Algorithmus (12) Annahme: y soll nicht größer als 30 angegeben werden (max. Ergebnis somit noch im Bereich Integer); dies soll nicht abgeprüft werden. Realisieren Sie dies über eine geeignete Schleife. 1 int ZweierPotenz_y ( int y ) { (2 P) 2 int ergebnis = 1 ; (2 P) 3 for ( int i = 1; i <=y ; i++ ) (2 P) 4 { (1 P) 5 ergebnis = ergebnis * 2 ; (2 P) 6 (1 P) 7 return ergebnis ; (2 P) 8 Anmerkung: Lösung mit while = 1P Abzug, fehlende ; = 0,5P Abzug, falsche Zeichen z.b. oder =< statt <= 0,5P Abzug Klausur_CuB_WS2016_17_Uebung_2_loesung Seite: 12/13
Vom Prüfer auszufüllen: Aufgabe Punkte erreichte Punkte 1.1 4,5 1.2 7 2.1 8 2.2 6 2.3 9 3.1 1,5 3.2 5 3.3 4 3.4 5 4.1 2 4.2 1 4.3 9 5.1 2 5.2 4 5.3 7 5.4 10 5.5.1 3 5.5.2 12 Summe 100 Notenschlüssel: Note min. Punkte 100 98 130 92 170 87 200 82 230 76 270 70 300 65 330 59 370 53 400 50 500 0 Klausur_CuB_WS2016_17_Uebung_2_loesung Seite: 13/13