• Keine Ergebnisse gefunden

Informatik 2 für Regenerative Energien Klausur vom 7. Juli 2011

N/A
N/A
Protected

Academic year: 2021

Aktie "Informatik 2 für Regenerative Energien Klausur vom 7. Juli 2011"

Copied!
5
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Jörn Loviscach

Versionsstand: 13. Juli 2011, 20:59

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- punktzahl zum Bestehen: 15 Punkte. Hilfsmittel: maximal vier einseitig oder zwei 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 ILIAS

1. Im C#-Programmlisting im Anhang sind 15 Fehler, darunter keine Tippfehler und höchstens ein Fehler pro Zeile. Stellen Sie

c1

eine Liste dieser Art mit

c1

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 Variablen a , b und c ?

Stack<Mitspieler> s = new Stack<Mitspieler>();

s.Push(new Mitspieler("Doris"));

s.Push(new Mitspieler("Egon"));

string a = s.Pop().Name;

s.Push(new Mitspieler("Friedrich"));

int b = s.Pop().Punktestand;

string c = s.Pop().Name;

3. Von der Klasse Spiel im Anhang soll eine Ableitung KurzesSpiel gebil- det werden, in der man schon mit weniger Punkten gewonnen hat. Welche Änderungen wären dafür in der Klasse Spiel sinnvoll? Schreiben Sie au- ßerdem einen Konstruktor für KurzesSpiel auf.

1

(2)

4. Welche der fünf Methoden der Klasse Würfelbecher im Anhang wird am ehesten eine Exception werfen? Unter welchen Voraussetzungen wird das passieren?

5. Es sollen Stunde:Minute:Sekunde-Zeitangaben aus Zeichenketten wie 42:13:7 oder 123:4:56 in die jeweilige Gesamtzahl an Sekunden ver- wandelt werden. Schreiben Sie eine Methode, die eine solche Zeichenkette annimmt und die gesamte Zahl der Sekunden als int zurückliefert. Verwen- den Sie int.Parse und die Split -Methode der Zeichenketten.

6. Es gibt drei Klassen GeometrischeFigur , Kreis und Dreieck , die sinn- voll voneinander erben sollen. Alle sollen die jeweils geometrisch nötigen Attribute haben, wobei die Werte von Koordinaten als double angegeben sind. Alle drei Klassen sollen eine Methode zur Flächenberechung haben.

Zeichnen Sie ein UML-Klassendiagramm mit den drei Klassen. (Damit Kur- sivschrift zu erkennen ist, umkringeln Sie die oder benutzen Sie eine andere Farbe dafür.)

7. Gegeben ist folgende Struct:

struct Messung {

public double Geschwindigkeit; // in Metern pro Sekunde public double Zeitpunkt; // in Sekunden

}

Eine List<Messung> messungen enthalte solche Messungen in der kor- rekten zeitlichen Reihenfolge. Schreiben Sie einige Zeilen C#, welche die gesamte zurückgelegte Strecke schätzen: die Geschwindigkeit aus der ersten Messung mal die Zeit von der ersten bis zur zweiten Messung, dazu addiert die Geschwindigkeit aus der zweiten Messung mal die Zeit von der zweiten bis zur dritten Messung usw.

8. Angenommen, Sie hätten den Quelltext der Klasse string und müssten dort noch eine öffentliche Methode Parse zum Umwandeln von Strings wie

"123" in eine int -Ganzzahl hinzufügen. Sie können dazu die vorhandene Methode int.Parse verwenden. Formulieren Sie die ??? in diesem Code aus:

class string {

// ...

??? Parse ???

{

???

}

}

(3)

Dieses Listing enthält 15 Fehler!

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

M i t s p i e l e r [ ] d i e M i t s p i e l e r = new M i t s p i e l e r ;

8

d i e M i t s p i e l e r [ 0 ] = new M i t s p i e l e r ( " Anton " ) ;

9

d i e M i t s p i e l e r [ 1 ] = new M i t s p i e l e r ( " Berta " ) ;

10

d i e M i t s p i e l e r [ 2 ] = new M i t s p i e l e r ( " Carla " ) ;

11

S p i e l = new S p i e l ( d i e M i t s p i e l e r , 2 ) ;

12

i n t e r g e b n i s = d a s S p i e l . SpieleBisZumEnde ( ) ;

13

}

14

}

15

16

c l a s s Z u f a l l s g e n e r a t o r

17

{

18

a b s t r a c t p u b l i c i n t Werfe ( ) ; // Z u f a l l s z a h l erzeugen

19

}

20

21

c l a s s Würfel : Z u f a l l s g e n e r a t o r

22

{

23

s t a t i c Random z u f a l l s g e n e r a t o r = new Random ( ) ;

24

p u b l i c i n t Werfe ( ) // s o l l e i n e Zahl von 1 b i s 6 ergeben

25

{

26

// Next ( ) l i e f e r t e i n e Z u f a l l s z a h l ab 0 aufwärts .

27

return z u f a l l s g e n e r a t o r . Next ( ) % 6 ;

28

}

29

}

30

31

c l a s s Würfelbecher : Z u f a l l s g e n e r a t o r

32

{

33

L i s t <Würfel > enthalteneWürfel = new L i s t <Würfel > ( ) ;

34

p u b l i c Würfelbecher ( i n t würfelAnzahl )

35

{

36

f o r ( i n t i = 0 ; i < würfelAnzahl ; i ++)

37

{

38

NehmeEinenWürfelMehr ( ) ;

39

}

40

}

41

p u b l i c o v e r r i d e i n t Werfe ( )

42

{

43

i n t Summe = 0 ;

44

f o r e a c h ( Würfel w in enthalteneWürfel )

45

{

46

Summe += w. Werfe ;

47

}

48

return Summe;

(4)

50

p u b l i c v o i d NehmeEinenWürfelMehr ( )

51

{

52

enthalteneWürfel . Add ( ) ;

53

}

54

p u b l i c v o i d NehmeEinenWürfelWeniger ( )

55

{

56

// Den v o r d e s t e n der L i s t e e n t f e r n e n ,

57

// d i e anderen rücken vor .

58

enthalteneWürfel . RemoveAt ( 0 ) ;

59

}

60

p u b l i c i n t ZahlDerWürfel

61

{

62

g et { return enthalteneWürfel . Count ; }

63

}

64

}

65

66

c l a s s M i t s p i e l e r

67

{

68

s t r i n g name ;

69

p u b l i c s t r i n g Name

70

{

71

g et { return name ; }

72

}

73

i n t punktestand ;

74

p u b l i c i n t Punktestand

75

{

76

g et { return punktestand ; }

77

}

78

M i t s p i e l e r ( s t r i n g name )

79

{

80

t h i s . name = name ;

81

}

82

p u b l i c v o i d BuchePunkte ( i n t punkte )

83

{

84

punktestand + punkte ;

85

}

86

}

87

88

c l a s s S p i e l : Würfel

89

{

90

Z u f a l l s g e n e r a t o r z u f a l l s g e n e r a t o r ;

91

M i t s p i e l e r [ ] d i e M i t s p i e l e r ;

92

b o o l i s t B e e n d e t = f a l s e ;

93

b o o l IstBeendet

94

{

95

g et { return i s t B e e n d e t ; }

96

}

97

p u b l i c S p i e l ( M i t s p i e l e r [ ] d i e M i t s p i e l e r )

98

{

99

t h i s . d i e M i t s p i e l e r = d i e M i t s p i e l e r ;

(5)

101

}

102

p u b l i c S p i e l ( M i t s p i e l e r [ ] d i e M i t s p i e l e r , i n t zahlDerWürfel )

103

{

104

t h i s . d i e M i t s p i e l e r = d i e M i t s p i e l e r ;

105

z u f a l l s g e n e r a t o r = new Würfelbecher ( ) ;

106

}

107

p u b l i c v o i d SpieleEineRunde ( )

108

{

109

f o r e a c h ( M i t s p i e l e r m in d i e M i t s p i e l e r )

110

{

111

i n t z = z u f a l l s g e n e r a t o r . Werfe ( ) ;

112

m. BuchePunkte ( z ) ;

113

i f ( Punktestand >= 1000)

114

{

115

MessageBox . Show (m.Name + " hat gewonnen ! " ) ;

116

i s t B e e n d e t = f a l s e ;

117

break ;

118

}

119

}

120

}

121

p u b l i c v o i d SpieleBisZumEnde ( )

122

{

123

while ( true )

124

{

125

SpieleEineRunde ( ) ;

126

}

127

}

128

}

Referenzen

ÄHNLICHE DOKUMENTE

This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Germany License.. Dies ist eine Anwendung des

Wenn für denselben Mitarbeiter zweimal hintereinander Geht aufgerufen wird, ohne dass zwischendurch für ihn Kommt aufgerufen wird, soll eine Exception geworfen werden?. Was

Erweitern Sie in die Klasse Kfz aus dem (korrigierten) Listing im Anhang um eine öffentliche Methode string ListeFahrerUndKilometer() , die die Fahrer und ihre gefahrenen Kilometer

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

Hilfsmittel: maximal vier einseitig oder zwei beidseitig beschriftete DIN-A4-Spickzettel beliebigen Inhalts, möglichst selbst ver- fasst oder zusammengestellt; kein Skript,

Man kann die neue Klasse von Bakterium ableiten , muss dann aber noch die beiden Konstruktoren und eine neue Überschreibung für Vermehre schreiben (weil sonst die neue

Hilfsmittel: maximal vier einseitig oder zwei beidseitig beschriftete DIN-A4-Spickzettel beliebigen Inhalts, möglichst selbst ver- fasst oder zusammengestellt; kein Skript,

Hilfsmittel: maximal vier einseitig oder zwei beidseitig beschriftete DIN-A4-Spickzettel beliebigen Inhalts, möglichst selbst ver- fasst oder zusammengestellt; kein Skript,