Dies ist eine Probeklausur, die keine formalen Schlüsse auf die Form, die Struktur oder den Inhalt der endgültigen Klausur zulässt.

Ähnliche Dokumente
Scheinklausur zur Vorlesung Praktische Informatik I. 12. November Punkteübersicht

Prüfung Softwareentwicklung II (IB)

Zahlensammlung zurückgeben

Beispielprüfung CuP WS 2015/2016

Probeklausur Informatik 2 Sommersemester 2013

Einführung in die Programmierung. (K-)II/Wb17

Objektorientierte Programmierung

Allgemeine Hinweise:

PK-Einstufungstest. 1. Allgemeine Multiple-Choice-Aufgaben

Eingeben, Ausgeben, Übergeben, Zurückgeben

Einige Methoden der Klasse ArrayList<Typ>

Basispruefung Herbst 2016/ Einführung in die Programmierung

Allgemeine Informatik II SS :30-11:30 Uhr

PK-Einstufungstest. 1. Allgemeine Multiple-Choice-Aufgaben. Alle Aufgaben beziehen sich auf Java.

Prüfung Softwareentwicklung II (IB)

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

Probeklausur zur Vorlesung: Einführung in die objektorientierte Programmierung mit Java im Wintersemester 2017/18

Nachholklausur zur Vorlesung: Einführung in die objektorientierte Programmierung mit Java WS1415

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

Einführung in das Programmieren Probeklausur Lösungen

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Variablenarten. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Vererbung. Programmierung 1. Stephan Kleuker 423

Semestralklausur Einführung in die Programmierung, WS 2007/08, Seite 1/5 Name, Vorname, Matrikelnummer: Gruppe A

Einführung in die Programmierung für NF. Übung

Matrikelnummer: 1 Aufgabe 1: Quickies (30 Punkte) a) Wird das folgende Programm von einem Java-Übersetzer ohne Beanstandungen übersetzt? Falls nicht,

iterativ inkrementelle Entwicklung

Probeklausur: Programmierung WS04/05

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Semestralklausur Einführung in die Programmierung, WS 2005/06, Seite 1/6 Name, Vorname, Matrikelnummer: Gruppe A

PK-Einstufungstest. 1. Allgemeine Multiple-Choice-Aufgaben. Aufgabe 1.1. Alle Aufgaben beziehen sich auf Java.

Musterlösung Stand: 5. Februar 2009

Probeklausur zur Vorlesung

M3 M4 M7 VORNAME: Nom-Kenner VERTIEFUNG: Ausdruck des vorab bekannt gemachten Quelltextes

- EINSTIEG IN JAVA - (1/5) Datum:

Probeklausur Java Einführung in die Informatik. Wintersemester 2017/2018

Einführung in die Programmierung

Name:... Matr.-Nr... Bearbeitungszeit: 120 Minuten

Klausur Kompaktkurs Einführung in die Programmierung Dr. T. Weinzierl & M. Sedlacek 25. März 2011

Institut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor

1. Klausur - Probeklausur

Vorkurs Informatik WiSe 15/16

Probeklausur Java Einführung in die Informatik. Wintersemester 2016/2017

Endklausur 25. September 2012

Klausur - Informatik I SS 05. Note: Bearbeitungszeit 120 Minuten Keine Hilfsmittel

Listing 1: Cowboy. Listing 2: Woody

Institut für Programmierung und Reaktive Systeme 2. Februar Programmieren I. Übungsklausur

Kapitel 10. Verweise und Referenzen. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Klausur zur Vorlesung: Einführung in die objektorientierte Programmierung mit Java WS1415

M3 M4 M7 VORNAME: Gewinnt VERTIEFUNG:

Durch die Möglichkeit, Ein- und Ausgaben auf der Konsole durchzuführen, kann man auch systematisch das Verhalten von Klassen analysieren.

Universität Karlsruhe (TH)

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

Klausur Programmiertechnik (Probeklausur 1)

Klassenvariablen und Klassenmethoden

Objektmethoden. Grundlagen der Programmierung. Stephan Kleuker 121

Test zu Grundlagen der Programmierung Leitung: Susanne Guth/Michael Hahsler. 31. Jänner 2003

Bachelorprüfung: Objektorientierte Softwareentwicklung

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

hue13 January 30, 2017

Klausur Grundlagen der Programmierung

Objektorientierung III

Fakultät IV Elektrotechnik/Informatik

Lösungshinweise/-vorschläge zum Übungsblatt 8: Software-Entwicklung 1 (WS 2017/18)

Dies ist eine Probeklausur, die keine formalen Schlüsse auf die Form, die Struktur oder den Inhalt der endgültigen Klausur zulässt.

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

Semestralklausur Informatik I - Programmierung

1. Teilklausur Gruppe A. Bitte in Druckschrift leserlich ausfüllen!

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

Einführung in die Informatik 1

Einstieg in die Informatik mit Java

Leider gibt es in einigen Fällen keine wirklich einheitlichen Fachbegriffe im Deutschen, obwohl einige als "der Standard" bezeichnet werden.

Objektorientierung (OO)

Geoinformatik und Vermessung Prüfung 502 : Informatik (JAVA)

Objekt-Orientierte Programmierung. II/Wb17

Technische Universität Braunschweig

Probeklausur: Einführung in die objektorientierte Programmierung mit Java 15WS

Geoinformatik und Vermessung Prüfung 502 : Informatik (JAVA)

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7.

Klausur zur Lehrveranstaltung. Technische Informatik für Ingenieure WS 2008/09

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 -

Klassen und Objekte. Klassen sind Vorlagen für Objekte. Objekte haben. Attribute. Konstruktoren. Methoden. Merkblatt

Prüfung Softwareentwicklung I (IB)

1 Klassen anlegen und Objekte erzeugen

1 Klassen anlegen und Objekte erzeugen

Städtisches Gymnasium Olpe Java Ht Informatik - Q1 Die Klasse List im Abitur Methoden und Beispielcode Hier alle wichtigen Methoden. Ein Beispielcode

Verkettete Datenstrukturen: Listen

Klausur zur Vorlesung: Einführung in die objektorientierte Programmierung mit Java im Wintersemester 2015/16

Propädeutikum Programmierung in der Bioinformatik

Objektorientierte Programmierung Studiengang Medieninformatik

Konstruktor. Grundlagen der Programmierung. Stephan Kleuker 90

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy

Allgemeine Hinweise:

Klausur Algorithmen und Datenstrukturen I SS 03

Einführung in die Programmierung

Objektorientierte Programmierung Studiengang Medieninformatik

Einführung in die Informatik 1

Transkript:

Thema: Grundlagen Programmierung Dozent: Prof. Dr. Stephan Kleuker Seitennummer: Seite 1 von 12 Studiengang: Informatik Technische Informatik Studiensemester: 1 Datum: 26.11.2018 Bearbeitungszeit: 120 Minuten Matrikelnummer: Name: Dies ist eine Probeklausur, die keine formalen Schlüsse auf die Form, die Struktur oder den Inhalt der endgültigen Klausur zulässt. Diese Klausur ist Bestandteil der Bachelor-Prüfung im Sinn der Prüfungsordnung. Zugelassene Hilfsmittel: keine. Überprüfen Sie, dass Ihre Arbeit aus 12 Blättern besteht. Schreiben Sie oben auf die Klausur Ihren Namen und Ihre Matrikelnummer. Es ist nicht erlaubt, die Heftung der Klausur aufzutrennen. Schreiben Sie nur mit einem dokumentenechten Stift (kein Bleistift!) nicht in roter Farbe. Rückseiten können beschrieben werden. Während der Klausur können keine Fragen gestellt werden, falls Sie meinen, dass eine Aufgabenstellung unklar ist, dokumentieren Sie Ihre Annahmen. Es werden 50 Punkte zum Bestehen benötigt. Halten Sie sich an die Coding-Guidelines der Veranstaltung. Unterschreiben Sie die Klausur. Aufgabe 1 /8 Aufgabe 2 /8 Aufgabe 3 /12 Aufgabe 4 /10 Aufgabe 5 /38 Aufgabe 6 /9 Aufgabe 7 /15 Note: Gesamt /100 Mit meiner Unterschrift bestätige ich, dass ich die Klausur alleine, nur unter Nutzung der zugelassenen Hilfsmittel, bearbeitet habe. Unterschrift Seite 1 von 12

Aufgabe 1) Ausdrücke auswerten (8 Punkte) Gegeben seien folgende Variablen. int x = 42; double d = 42.42; String s = "Hai"; Schreiben Sie auf, was die Auswertung der folgenden Ausdrücke ergibt. Ausdruck Auswertung x>12 x>=d x<=d s+ fisch 42+s+x s==null s==null x % 4 x*x*x*d > 2570000 && d-1 > x d / 0 Seite 2 von 12

Aufgabe 2) Analyse von if (8 Punkte) Gegeben sei die folgende Klasse mit den angegebenen Methoden. Geben Sie die Werte der Objektvariablen this.x und this.y an, nachdem ein Objekt der Klasse erzeugt und die genannte Methode jeweils ausgeführt wurde. public class Aufgabe02{ private int x = 6; private int y = 7; public void m1(boolean a, Boolean b){ if(a){ x=y; y=x; public void m2(boolean a, Boolean b){ if(a){ if (b) { x=x*y; else { y=x*y; public void m3(boolean a, Boolean b){ if( a b) { if(a (!b)) { if(!a b) { x=x*y; public void m4(boolean a, Boolean b){ if(a && x>5) { y=8; if(b && y<8) { x=5; if( a &&!a) { x=42; a true b true m1(a,b) m2(a,b) m3(a,b) m4(a,b) x y x y x y x y true false false true false false Seite 3 von 12

Aufgabe 3) Analyse von Konstruktoren und Methodenaufrufen (12 Punkte) Gegeben sei die folgende Klasse. Schreiben Sie auf, welche Ausgaben in welcher Reihenfolge ausgegeben werden, wenn ein Objekt der Klasse K erzeugt und die Methode doit() aufgerufen wird. (gerne neben das Programm). public class K{ private int x; private int y; private EinUndAusgabe io = new EinUndAusgabe(); public K(){ this.x = 2; this.y = 2; public K(int w){ this.x = w; this.y = this.x; public void mach(){ this.x = this.x +this.x; this.x = this.x +this.x; this.x = this.x +this.x; public int mult(){ return this.x*this.y; public K nouvo(int a){ return new K(this.x + a); public void show(){ io.ausgeben("x:"+this.x+" y:"+this.y+"\n"); public void doit(){ K k1 = new K(); k1.show(); k1.mach(); k1.show(); K k2 = new K(3); k2.show(); k2.mach(); k2.show(); K k3 = new K(); K k4 = new K(k3.mult()); k4.show(); K k5 = k3.nouvo(4); k5.show(); Seite 4 von 12

Aufgabe 4) Analyse von while (10 Punkte) Gegeben sei die folgende Klasse. Schreiben Sie auf, welche Ausgaben in welcher Reihenfolge ausgegeben werden, wenn ein Objekt der Klasse L erzeugt und die Methode doit() aufgerufen wird. (gerne neben das Programm, bei einer ArrayList werden alle Elemente innerhalb von eckigen Klammern ausgegeben). import java.util.arraylist; public class L{ private ArrayList<Integer> z = new ArrayList<Integer>(); private EinUndAusgabe io = new EinUndAusgabe(); public L(){ for(int i=0; i<13; i=i+2){ this.z.add(i); this.io.ausgeben(this.z+"\n"); public int drei(){ int ergebnis = 0; int zaehler=0; while(zaehler<this.z.size()){ if(z.get(zaehler) % 3 == 0){ io.ausgeben(z.get(zaehler)+"\n"); zaehler = zaehler + 1; return ergebnis; public void sum(){ int zaehler=0; while(zaehler<this.z.size()-1){ int tmp = z.get(zaehler)+z.get(zaehler+1); io.ausgeben(tmp+"\n"); zaehler = zaehler + 1; public void mult(){ int zaehler=1; while(zaehler<this.z.size()-4){ int zaehler2=5; while(zaehler2<this.z.size()){ int tmp = z.get(zaehler)*z.get(zaehler2); io.ausgeben(tmp+"\n"); zaehler2 = zaehler2+1; zaehler=zaehler+1; public void doit(){ L x= new L(); x.drei(); x.sum(); x.mult(); Seite 5 von 12

Aufgabe 5) Programmierung mit Sammlungen (2+2+2+6+9+11+6 = 38 Punkte) Gegeben sei folgende Klasse, ergänzen Sie die geforderten Objektmethoden. Sie dürfen vereinfachend davon ausgehen, dass weder in den Objektvariablen, noch den Elementen der Sammlung null-werte stehen. public class Messreihe { private String messort; private ArrayList<Integer> messwerte; public Messreihe(String messort) { this.messort = messort; this.messwerte = new ArrayList<Integer>(); a) Schreiben Sie für alle Objektvariablen get-methoden. b) Schreiben Sie für alle Objektvariablen set-methoden. c) Schreiben Sie eine Methode, mit der ein Element zur Sammlung hinzugefügt werden kann. d) Schreiben Sie eine Methode, die ein int-wert übergeben bekommt und die als Rückgabe liefert, wie oft der Wert dieses Objektes in this.messwerte vorkommt. e) Schreiben Sie eine Methode, die ein neues Messreihe-Objekt als Rückgabe liefert, in dem sich nur das erste, dritte, usw- Element aus this.messreihe befindet. f) Schreiben Sie eine Methode, die ein Messreihen-Objekt übergeben bekommt und ein neues Messreihe-Objekt als Rückgabe liefert, das die Produkte aller Werte der einen Messreihe mit allen Werten der anderen Messreihe enthält (aus [2,3] und [5,6] wird [10,12,15,18], dabei ist die Reihenfolge im Ergebnis egal). g) Schreiben Sie zwei JUnit-Tests mit denen Sie Ihre Methode aus e) einmal für eine Sammlung mit gerader und einmal mit ungerader Anzahl auf Korrektheit prüfen können (Hinweis: Die Aufgabe ist auch ohne eine vollständige Lösung zu e) bearbeitbar). Seite 6 von 12

(Wiederholung) a) Schreiben Sie für alle Objektvariablen get-methoden. b) Schreiben Sie für alle Objektvariablen set-methoden. c) Schreiben Sie eine Methode, mit der ein Element zur Sammlung hinzugefügt werden kann. d) Schreiben Sie eine Methode, die ein int-wert übergeben bekommt und die als Rückgabe liefert, wie oft der Wert dieses Objektes in this.messwerte vorkommt. e) Schreiben Sie eine Methode, die ein neues Messreihe-Objekt als Rückgabe liefert, in dem sich nur das erste, dritte, usw- Element aus this.messreihe befindet. f) Schreiben Sie eine Methode, die ein Messreihen-Objekt übergeben bekommt und ein neues Messreihe-Objekt als Rückgabe liefert, das die Produkte aller Werte der einen Messreihe mit allen Werten der anderen Messreihe enthält (aus [2,3] und [5,6] wird [10,12,15,18], dabei ist die Reihenfolge im Ergebnis egal). g) Schreiben Sie zwei JUnit-Tests mit denen Sie Ihre Methode aus e) einmal für eine Sammlung mit gerader und einmal mit ungerader Anzahl auf Korrektheit prüfen können (Hinweis: Die Aufgabe ist auch ohne eine vollständige Lösung zu e) bearbeitbar). Seite 7 von 12

(Wiederholung) a) Schreiben Sie für alle Objektvariablen get-methoden. b) Schreiben Sie für alle Objektvariablen set-methoden. c) Schreiben Sie eine Methode, mit der ein Element zur Sammlung hinzugefügt werden kann. d) Schreiben Sie eine Methode, die ein int-wert übergeben bekommt und die als Rückgabe liefert, wie oft der Wert dieses Objektes in this.messwerte vorkommt. e) Schreiben Sie eine Methode, die ein neues Messreihe-Objekt als Rückgabe liefert, in dem sich nur das erste, dritte, usw- Element aus this.messreihe befindet. f) Schreiben Sie eine Methode, die ein Messreihen-Objekt übergeben bekommt und ein neues Messreihe-Objekt als Rückgabe liefert, das die Produkte aller Werte der einen Messreihe mit allen Werten der anderen Messreihe enthält (aus [2,3] und [5,6] wird [10,12,15,18], dabei ist die Reihenfolge im Ergebnis egal). g) Schreiben Sie zwei JUnit-Tests mit denen Sie Ihre Methode aus e) einmal für eine Sammlung mit gerader und einmal mit ungerader Anzahl auf Korrektheit prüfen können (Hinweis: Die Aufgabe ist auch ohne eine vollständige Lösung zu e) bearbeitbar). Seite 8 von 12

(Wiederholung) a) Schreiben Sie für alle Objektvariablen get-methoden. b) Schreiben Sie für alle Objektvariablen set-methoden. c) Schreiben Sie eine Methode, mit der ein Element zur Sammlung hinzugefügt werden kann. d) Schreiben Sie eine Methode, die ein int-wert übergeben bekommt und die als Rückgabe liefert, wie oft der Wert dieses Objektes in this.messwerte vorkommt. e) Schreiben Sie eine Methode, die ein neues Messreihe-Objekt als Rückgabe liefert, in dem sich nur das erste, dritte, usw- Element aus this.messreihe befindet. f) Schreiben Sie eine Methode, die ein Messreihen-Objekt übergeben bekommt und ein neues Messreihe-Objekt als Rückgabe liefert, das die Produkte aller Werte der einen Messreihe mit allen Werten der anderen Messreihe enthält (aus [2,3] und [5,6] wird [10,12,15,18], dabei ist die Reihenfolge im Ergebnis egal). g) Schreiben Sie zwei JUnit-Tests mit denen Sie Ihre Methode aus e) einmal für eine Sammlung mit gerader und einmal mit ungerader Anzahl auf Korrektheit prüfen können (Hinweis: Die Aufgabe ist auch ohne eine vollständige Lösung zu e) bearbeitbar). Seite 9 von 12

Aufgabe 6) Polymorphie (9 Punkte) Gegeben seien die folgenden drei Klassen. public class K1{ protected EinUndAusgabe io = new EinUndAusgabe(); public void m1(string s){ m2(s); public void m2(string s){ this.io.ausgeben(s+"1\n"); public void m3(string s){ m1(s); public class K2 extends K1{ @Override public void m1(string s){ this.io.ausgeben(s+"2\n"); @Override public void m2(string s){ super.m3(s); In einem anderen Programm werden folgende drei Objekte erzeugt. K1 k1 = new K1(); K1 k2 = new K2(); K1 k3 = new K3(); Welche Ausgabe liefern die folgenden einzelnen Zeilen, wenn sie jeweils nach den obigen Zeilen ausgeführt werden (falls sie keine Ausgabe angeben können, beschreiben Sie, was passiert)? Aufruf k1.m1("a"); k1.m2("b"); k1.m3("c"); k2.m1("d"); k2.m2("e"); Ergebnis @Override public void m3(string s){ super.m2(s); k2.m3("f"); k3.m1("g"); public class K3 extends K2{ @Override public void m1(string s){ m3(s); k3.m2("h"); k3.m3("i"); @Override public void m2(string s){ this.io.ausgeben(s+"3\n"); @Override public void m3(string s){ super.m3(s); Seite 10 von 12

Aufgabe 7) Fragen zur Programmierung (4 + 11 = 15 Punkte) [Fragen passen zum bisherigen Veranstaltungsinhalt, beziehen sich generell auf die gesamte Veranstaltung] a) In größeren Projekten ist es üblich, mit Coding-Guidelines Vorgaben für den Stil und das Aussehen von Programmen zu machen. Nennen Sie vier möglichst unterschiedliche Regeln für Java, die in solchen Coding-Guidelines stehen können. Nennen Sie einen guten Grund, der für Coding-Guidelines spricht. b) Erklären Sie anhand eines kleinen Beispiels die Unterschiede und Zusammenhänge der Begriffe Objektvariable, Objektmethode, Klassenvariable, Klassenmethode. Seite 11 von 12

[leeres Blatt, für Lösungen nutzbar] Seite 12 von 12