Übungs-Klausur: Informatik, CuB-dualer Studiengang WS 2016/17 Alexander Syndikus, h_da, Fb Informatik Nachname: Vorname: 09.01.2017 Matr.-Nr.: Punkte: 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 Übungs-Klausur: Informatik, CuB-dualer Studiengang WS 2016/17 Alexander Syndikus, h_da, Fb Informatik Nachname: 09.01.2017 Vorname: 1.2 Computer-Grundlagen ( Matr.-Nr.: Punkte: / 7) Sachverhalt Antwort Welches elektrische Bauteil ist die Grundlage einer CPU / Speicherbausteinen / Gatter Transistor Nennen Sie 3 unterschiedliche physikalische Speichertechniken, in denen digitale Daten gespeichert werden können Halbleiterspeicher, magnetische Speicher, optische Speicher (3P) Welche Logik wird in der Hardware-Computertechnik / Dual-System verwendet? Boolsche Logik In der von-Neumann-Architektur benötigt 1 Zyklus normalerweise 1 oder mehrere Takte? mehrere Schreiben Sie die Abkürzung CPU aus Central Processing Unit Klausur_CuB_WS2016_17_Uebung_2_loesung Seite: 2/13 Übungs-Klausur: Informatik, CuB-dualer Studiengang WS 2016/17 Alexander Syndikus, h_da, Fb Informatik Nachname: 09.01.2017 Vorname: Matr.-Nr.: Punkte: 2 Aufgabe: Begriffe der Informatik 2.1 Bestimmen Sie welche Aussage korrekt ist ( / 8) Sachverhalt Bedingung nein ( ) Die in Sachverhalt ( X ) Die in Sachverhalt gezeigte Zeichnung ist gezeigte Zeichnung ist ein Struktogramm ein Programmablaufplan ja Ein Compiler ist ( Eine CPU ist ( X ) Hardware 45670 ist in JAVA ) Hardware ( X ) Software ( ) Software ( ) 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 ( ) stimmt ( X ) stimmt nicht In der Informatik versteht man unter „Daten“ und „Information“ das gleiche ( ) stimmt ( X ) stimmt nicht Debugger dienen zur Fehleranalyse ( X ) stimmt ( 2.2 Benennen Sie mit Begriffen der Informatik ( Sachverhalt ) stimmt / 6) Begriff der Informatik Eine Sammlung von Anweisungen, die so exakt definiert ist, Algorithmus dass ein Computer sie ausführen kann Bezeichnung der tatsächlichen Umsetzung / Programmierung Implementierung Kleinste addessierbare Einheit im Speicher eines Computers Wort (Von-Neumann-Architektur) Im Betriebssystem gesetzte Variablen, die Auswirkungen auf Umgebungsvariablen ein Programm haben (können) – z.B. „PATH“ Programm zum direkten Ausführen in einer Programmiersprache geschriebenen Programm (z.B. JAVA-Script) Interpreter Dateityp, in der z.B. Bild-/Audiodaten gespeichert sind Binärdatei Klausur_CuB_WS2016_17_Uebung_2_loesung Seite: 3/13 Übungs-Klausur: Informatik, CuB-dualer Studiengang WS 2016/17 Alexander Syndikus, h_da, Fb Informatik Nachname: Vorname: 09.01.2017 Matr.-Nr.: 2.3 Begriffe aus der objektorientierten Programmierung ( Sachverhalt Punkte: / 9 P) Begriff der Informatik Wie werden „class“, „public“, „int“, „double“, „return“ und weitere „reservierte“ Wörter (in JAVA) noch bezeichnet? Schlüsselwörter void main () // ← Sonderstellung der Funktion „main“ - wie bezeichnet man diese Stelle? Einsprungpunkt Wie bezeichnet man die Kontrollstruktur „while“? Schleife Wie bezeichnet man die beiden Strings der Methode? (Übergabe-)Parameter 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; } Anweisungsblock Wie bezeichnet man „= 0“ aufgrund der angegebenen Definition? class Adressen { private int anzahl_adressen = 0; } Initialisieren 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; } Einen „Setter“ Welche Anweisung muss in einer (Get-)Methode mindestens Return-Anweisung 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 ? Klausur_CuB_WS2016_17_Uebung_2_loesung primitive Datentypen Seite: 4/13 Übungs-Klausur: Informatik, CuB-dualer Studiengang WS 2016/17 Alexander Syndikus, h_da, Fb Informatik Nachname: Vorname: 09.01.2017 Matr.-Nr.: Punkte: 3 Aufgabe: Stellenwertsysteme 3.1 Welches Zahlensystem ist ein/kein Stellenwert-System? ( / 1,5) Antwort: Stellenwertsystem=Ja / kein Stellenwertsystem=Nein Antwort Zahlensystem Ja Binär-System Ja SystemHexadezimal-System Nein 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 Lösung: (Rechenweg 2 P) 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) * 10 (A) * 1 = 11 16 = 160 (Rechenweg 2 P) ===== 171 Lösung: 171(10) (2 P) Klausur_CuB_WS2016_17_Uebung_2_loesung Seite: 5/13 Übungs-Klausur: Informatik, CuB-dualer Studiengang WS 2016/17 Alexander Syndikus, h_da, Fb Informatik Nachname: Vorname: 09.01.2017 Matr.-Nr.: 3.4 Umrechnung Dezimalsystem → Zahl Basis 8 ( Punkte: / 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 Lösung: 276(8) (Rechenweg 2 P) (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? ( long ist ___ ein primitiver Datentyp___ Long ist ___ vom Typ Objekt _________ / 2) 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 Übungs-Klausur: Informatik, CuB-dualer Studiengang WS 2016/17 Alexander Syndikus, h_da, Fb Informatik Nachname: Vorname: 4.3 Datentypen ermitteln ( 09.01.2017 Matr.-Nr.: Punkte: / 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 Übungs-Klausur: Informatik, CuB-dualer Studiengang WS 2016/17 Alexander Syndikus, h_da, Fb Informatik Nachname: Vorname: 09.01.2017 Matr.-Nr.: Punkte: 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 Übungs-Klausur: Informatik, CuB-dualer Studiengang WS 2016/17 Alexander Syndikus, h_da, Fb Informatik Nachname: 09.01.2017 Vorname: Matr.-Nr.: 5.2 Programmanalyse: Fehleranalyse ( Punkte: / 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 { public // class static void MeineKlasse obj main (String[] args) { // = * MeineKlasse() ; // new obj.MYprint*; // () } // } // class MeineKlasse { // super public int a = 0 ; // Schlüsselwort „super“ an dieser Stelle nicht erlaubt Myprint () { // System.out.println("OBJECT = " * this.a) ; // + } // public MeineKlasse * { // () a = a + 1 * // ; * // } } // Klausur_CuB_WS2016_17_Uebung_2_loesung Seite: 9/13 Übungs-Klausur: Informatik, CuB-dualer Studiengang WS 2016/17 Alexander Syndikus, h_da, Fb Informatik Nachname: Vorname: 09.01.2017 Matr.-Nr.: 5.3 Programmanalyse: Non-static, static, final static ( Punkte: / 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 (X) ja / ( ) nein ___StaticNonStatic.a_____ (2P) obj1.b ( ) 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 Übungs-Klausur: Informatik, CuB-dualer Studiengang WS 2016/17 Alexander Syndikus, h_da, Fb Informatik Nachname: 09.01.2017 Vorname: 5.4 Vererbung und Gültigkeit ( Matr.-Nr.: Punkte: / 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 // Attribut von Unterklasse; initialisiert mit super.x * 2 = 36 (main)x = 1 // lokal in main Klausur_CuB_WS2016_17_Uebung_2_loesung Seite: 11/13 Übungs-Klausur: Informatik, CuB-dualer Studiengang WS 2016/17 Alexander Syndikus, h_da, Fb Informatik Nachname: 09.01.2017 Vorname: Matr.-Nr.: Punkte: 5.5 Aufgabe Potenz: 2y f : ℕ → ℕ mit f (y) = 2y mit y ℕ 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 Übungs-Klausur: Informatik, CuB-dualer Studiengang WS 2016/17 Alexander Syndikus, h_da, Fb Informatik Nachname: 09.01.2017 Vorname: Matr.-Nr.: Punkte: 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: min. Punkte Note 100 130 170 200 230 270 300 330 370 400 500 Klausur_CuB_WS2016_17_Uebung_2_loesung 98 92 87 82 76 70 65 59 53 50 0 Seite: 13/13