• Keine Ergebnisse gefunden

Informatik 2 für Regenerative Energien Probeklausur vom 13. Juni 2011

N/A
N/A
Protected

Academic year: 2021

Aktie "Informatik 2 für Regenerative Energien Probeklausur vom 13. Juni 2011"

Copied!
5
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Jörn Loviscach

Versionsstand: 16. Juli 2011, 08:48

This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Germany License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/de/ or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.

15 Punkte für die erste Aufgabe; 3 Punkte für alle weiteren Aufgaben. Mindest- punktc1zahl zum Bestehen: 15 Punkte. Hilfsmittel: maximal vier einseitig oder zwei c1

text added by jl

beidseitig beschriftete DIN-A4-Spickzettel beliebigen Inhalts, möglichst selbst ver- fasst oder zusammengestellt; kein Skript, keine anderen Texte, kein Taschenrechner, kein Computer, kein Handy und Ähnliches.

Name Vorname Matrikelnummer E-Mail-Adresse, falls nicht in Mailingliste

1. Im C#-Programmlisting im Anhang sind 15 Fehler, darunter keine Tippfehler und höchstens ein Fehler pro Zeile. Stellen Siec2 eine Liste dieser Art mit c2

text added by jl

allen Fehlern auf:

Zeile korrekter Programmtext 123 public void foo() 543 int a = 42;

2. Mit den Klassen aus dem Anhang wird Folgendes ausgeführt. Welche Werte stehen danach in den Variablena,bundc?

Queue<Bilanzposten> q = new Queue<Bilanzposten>();

q.Enqueue(new Gebäude());

q.Enqueue(new Fahrzeug());

double a = q.Dequeue().GibWert();

int b = q.Count;

double c = q.Dequeue().GibWert();

3. In der KlasseBilanzpostenim Anhang wird dies ergänzt:

TimeSpan abschreibungsdauer;

public Bilanzposten(TimeSpan t) {

abschreibungsdauer = t;

}

1

(2)

Das verlangt Änderungen an der KlasseGebäude. Wie kann man die Klas- se Gebäude zum Beispiel reparieren? (Programmcode angeben) Hinweis:

TimeSpanhat eine statische MethodeFromDays.

4. In der Methode SetzeWert der Klasse Bilanzposten im Anhang soll sicher gestellt werden, dass der Wert nie auf negative Zahlen gesetzt werden kann. Ein solcher Fehler soll im Zweifelsfall zum Programmabbruch führen.

Welche Zeilen Programmcode kann man dieser Methode dafür hinzufügen?

5. In einer Textdatei steht eine Liste ganzer Zahlen, eine Zahl pro Zeile.

Schreiben Sie eine C#-Methode, die als Parameter den Namen der Da- tei erwartet und als Rückgabewert die Summe dieser Zahlen liefert. Hin- weis: System.IO.File.ReadAllLines, int.Parse und die Split- Methode der Zeichenketten.

6. Die KlassenAundBsind so gebaut:

A -c: long

+d(i: int): double +e()

B -f: int

+d(i: int): double

Finden und korrigieren Sie die zwei Fehler in folgendem Ausschnitt eines C#-Programms, das diese beiden Klassen verwendet:

A x = new A();

x.e();

A y = new B();

double z = 42;

double w = y.d(z);

7. Gegeben ist folgende Struct:

struct Messung {

public double Wert;

public DateTime Zeit;

}

Einec1 List<Messung> messungen enthalte solche Messungen – aller- c

1jl: Messung statt Messungen

dings nicht unbedingt zeitlich geordnet. Schreiben Sie einige Zeilen C#, um aus der Liste den Wert der jüngsten Messung herauszufinden, also der Messung mit der größten Zeit. Gehen Sie davon aus, dass die Liste immer mindestens eine Messung enthält.

8. Geben Sie die Namen dreier statischerc2Elemente (Methoden oder Proper- c2

text added by jl

ties) aus der .NET-Klassenbibliothek an. Zu welchen Klassen bzw. Structs gehören die jeweils?

(3)

Dieses Listing enthält 15 Fehler! c1 c

1jl: Zeile 87: double statt int

1 c l a s s MainWindow : Window

2 {

3 // . . . d i v e r s e s Anderes

4

5 p r i v a t e v o i d b u t t o n C l i c k ( o b j e c t sender , RoutedEventArgs e )

6 {

7 Anlagevermögen v ;

8 v . FügeHinzu ( new Gebäude ( ) ) ;

9 v . FügeHinzu ( new Fahrzeug ( ) ) ;

10 v . FügeHinzu ( new Fahrzeug ( ) ) ;

11

12 Bilanzsummierer b = new Bilanzsummierer ( ) ;

13 v . NehmeAn( b ) ;

14 double s = b . GibResultat ( ) ;

15

16 Abschreibung a = new Abschreibung ( ) ;

17 v . NehmeAn( a ) ;

18

19 v . NehmeAn( b ) ;

20 s = b . GibResultat ( ) ;

21 }

22 }

23

24 c l a s s Bilanzposten

25 {

26 double wert ;

27 p u b l i c a b s t r a c t v o i d NehmeAn( Buchhaltungsjob j o b ) ;

28 p u b l i c GibWert ( )

29 {

30 wert ;

31 }

32 p u b l i c v o i d SetzeWert ( double wert )

33 {

34 wert = t h i s . wert ;

35 }

36 }

37

38 c l a s s Gebäude : Bilanzposten

39 {

40 p u b l i c Gebäude ( )

41 {

42 wert = 1000000.0;

43 }

44 p u b l i c v o i d NehmeAn( Buchhaltungsjob j o b )

45 {

46 j o b . Bearbeite ( t h i s ) ;

47 }

48 }

49

(4)

50 c l a s s Fahrzeug : Bilanzposten

51 {

52 p u b l i c Fahrzeug ( )

53 {

54 wert = 5 0 0 0 . 0 ;

55 }

56 p u b l i c o v e r r i d e v o i d NehmeAn( Buchhaltungsjob j o b )

57 {

58 j o b . Bearbeite ( t h i s ) ;

59 }

60 }

61

62 c l a s s Anlagevermögen

63 {

64 L i s t <Bilanzposten > anlagen ;

65 p u b l i c v o i d FügeHinzu ( Bilanzposten posten )

66 {

67 anlagen . Add ( posten ) ;

68 }

69 p u b l i c v o i d NehmeAn( Buchhaltungsjob j o b )

70 {

71 f o r ( i n t i = 0 ; i < anlagen ; i ++)

72 {

73 anlagen . NehmeAn[ i ] ( j o b ) ;

74 }

75 }

76 }

77

78 a b s t r a c t c l a s s Buchhaltungsjob

79 {

80 p u b l i c v o i d Bearbeite ( Gebäude g ) ;

81 p u b l i c v o i d Bearbeite ( Fahrzeug f ) ;

82 }

83

84 c l a s s Bilanzsummierer

85 {

86 double summe ;

87 p r o t e c t e d double GibResultat ( )

88 {

89 return summe ;

90 }

91 p u b l i c o v e r r i d e v o i d Bearbeite ( Gebäude g )

92 {

93 summe += g . GibWert ( ) ;

94 }

95 p u b l i c o v e r r i d e v o i d Bearbeite ( Fahrzeug f )

96 {

97 summe += f . GibWert ( ) ;

98 }

99 }

100

(5)

101 c l a s s Abschreibung : Buchhaltungsjob

102 {

103 p u b l i c o v e r r i d e v o i d Bearbeite ( Gebäude g )

104 {

105 g . SetzeWert ( 0 . 9 * g . GibWert ( ) ) ;

106 }

107 p u b l i c o v e r r i d e v o i d Bearbeite ( Fahrzeug f )

108 {

109 f . SetzeWert ( 0 . 7 5 * g . GibWert ( ) ) ;

110 }

111 }

Referenzen

ÄHNLICHE DOKUMENTE

Vier Vergleiche für das erste Element, drei fürs zweite, zwei fürs dritte, ei- nes fürs vierte. Das fünfte Element ist dann schon

Hinweis: Die Methode int IndexOf(char c) der Klasse string liefert die Position des ersten Vorkommens von c oder, falls es nicht vorkommt,

Man führt eine Klasse Inspektion ein, legt eine eine Oberklasse (z. Fahrtenbucheintrag genannt) von Fahrt und Inspektion an und legt fahrtenbuch als Liste von Ereignis an. Die

In der Methode NehmeZurück der Klasse Buch des korrigierten Code aus dem Programmlisting ist es möglich, dass die Person, die das Buch zurück- gibt, nicht diejenige ist, die das

Schreiben Sie für die Klasse Bauelement aus dem korrigier- ten Code aus dem Programmlisting eine öffentliche Methode PrüfeObVerbunden(Bauelement b) , deren Rückgabewert angibt, ob

Schreiben Sie für die Klasse Haushaltsbuch des korrigierten Code aus dem Programmlisting eine Methode MeldeTeures , die alle einmaligen Ausgaben von 1000 oder mehr Euro zu

This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Germany License. Zum Beispiel am Anfang der Methode Verbinde der Klasse

Die Methode Reserviere der Klasse Reservierungssystem soll eine Exception werfen, wenn der Passagier bereits einen Sitzplatz in diesem Flug hat3. Was ändern Sie dazu wie an