• Keine Ergebnisse gefunden

Abschlussklausur zum Modul Programmierung 1 im Sommersemester Geschrieben am

N/A
N/A
Protected

Academic year: 2022

Aktie "Abschlussklausur zum Modul Programmierung 1 im Sommersemester Geschrieben am"

Copied!
24
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

zum Modul Programmierung 1 im Sommersemester 2019

Geschrieben am 10.04.2019

Vorname Nachname

Matrikelnummer Geburtsdatum Studiengang

Aus welchem Semester sollen Ihre EPR Bonuspunkte angerechnet werden?

WS 15/16 WS 16/17 WS 17/18 WS 18/19

Aus welchem Semester sollen Ihre PRG Bonuspunkte angerechnet werden?

WS 15/16 WS 16/17 WS 17/18 WS 18/19

Vom Pr¨ufer auszuf¨ullen:

Aufgabe 1 2 3 4 5 6 Σ

Punkte 9 6 11 10 8 6 50

(2)

Generelle Klausurhinweise

1. Geben Sie auf jedem Blatt (oben rechts) Ihre Matrikelnummer an.

Bl¨ atter ohne Matrikelnummer k¨ onnen nicht gewertet werden.

2. Schreiben Sie bitte leserlich!

3. Kontrollieren Sie Ihre Klausur auf Vollst¨ andigkeit. Die Seitenzahlen befinden sich unten rechts. Zur Klausur geh¨ ort auch ein weiterer Stapel mit Multipe-Choice-Aufgaben.

4. Verwenden Sie die R¨ uckseiten der Klausur ausschließlich f¨ ur eigene Notizen - diese werden nicht gewertet. Die letzten Seiten der Klausur sind daf¨ ur vorgesehen, dass der Platz zum Beantworten einer Frage nicht ausreicht. Zur Benotung muss ein Verweis bei der Aufgaben- stellung und eine deutliche Kennzeichnung auf dem Schmierblatt ent- halten sein. Ben¨ otigen Sie weiteres Papier, melden Sie sich bei der Aufsicht. Selbst mitgebrachtes Papier wird als T¨ auschungsversuch ge- wertet!

5. Außer einem dokumentenechten Stift – kein Bleistift, nicht Rot – sind keine weiteren Hilfsmittel oder Ger¨ ate (Handy, Smartphone, Smart- watch, Taschenrechner, Laptop etc.) zugelassen. Ein solches betriebs- bereites Ger¨ at wird als T¨ auschungsversuch gewertet. Auch Armband- uhren sind ggf. vor Beginn der Klausur bei der Klausuraufsicht abzu- geben. Die Uhrzeit wird zentral angezeigt.

6. Die Pr¨ uflinge k¨ onnen w¨ ahrend der Klausur einzeln die Toilette besu- chen. Vor Verlassen des Klausurraumes haben diese bei der Aufsicht ihren Namen anzugeben.

7. F¨ ur die Bearbeitung der Klausur stehen 180 Minuten zur Verf¨ ugung. In

(3)

Aufgabe 1:Zahlendarstellungen Punkte: / 9 (a) (2 Punkte) Vervollst¨andigen Sie die nachfolgende Tabelle f¨ur eine Repr¨asentati-

on im Zweierkomplement mit 12 Bit:

Zweierkomplement mit 12 Bit Vorzeichenbehaftete Dezimalzahl 1111 1111 0010

1111 1001 0001

+59 -77 Rechnungen:

(4)

(b) (2 Punkte) Geben sei die Zahl -150. Warum kann diese Zahl nicht mit 8 Bit im Zweierkomplement dargestellt werden?

Rechnungen

(5)

(c) (2 Punkte) Welche Dezimalzahl wird mit folgendem gem¨aß IEEE 754 kodierten Bitmuster kodiert? Geben Sie den Rechenweg an und tragen Sie Ihr Ergebnis bitte in den L¨osungskasten ein.

Bitmuster: 1100 0000 1111 1000 0000 0000 0000 0000

Rechnungen

(6)

(d) (3 Punkte) Geben Sie das Bitmuster und den Rechenweg f¨ur die Umrechnung der (negativen) Dezimalzahl -5,75 in das IEEE-754 (32 Bit) Format an.

Rechnungen

(7)

Aufgabe 2:Python-Ausdr¨ucke Punkte: / 6 (a) (4 Punkte) Welche Ausgabe erzeugen folgende Ausdr¨ucke (Python 3.X)?

Wenn ein Ausdruck eine Ausnahme erzeugt, notieren Sie als Ausgabe ERROR.

NR. Ausdruck Ausgabe

1 print("%5.4f" %.27) 2 print(hex(0xf * 1/2)) 3 print(hex(0x3 * 0xA)) 4 print( 2 == 2 == 3 ) 5 print( True * False * 10)

6 print(13 / 5 + 2 ** 3 + 11 % 3) 7 print("Lorem ipsum"[8:2:-2]) 8 a="a": 1, "b": 2, "c": 3

b=a.clear() print(b)

Rechnungen

(8)

(b) (1 Punkt) Wie lautet der Ausdruck in Python 3.X, der aus der Struktur a den Wert von x liefert?

x = [[0, [[1, 2], 3]],[[4, [5, 6]]], [7, [“X“, 8], 9]]

Antwort:

(c) (1 Punkt) Formulieren Sie den folgenden mathematischen Ausdruck als Python 3.x Statement: y= 7 + 2

8x2 + −√ x 5x

Antwort:

Rechnungen

(9)

Aufgabe 3:Information und Kodierung Punkte: / 11 (a) (2 Punkte) Gegeben sei ein TextT, bestehend aus 512 Zeichen ¨uber dem Alpha- betPmit |P| = 52. Wie viele Byte werden zum Speichern des Textes minimal ben¨otigt, wenn keine Eigenschaften des Alphabets bekannt sind?

(b) (2 Punkte) Benennen Sie den Unterschied zwischen Daten, Signalen, Informati- on und Wissen.

(c) (2 Punkte) Was verstehen wir unter einem pr¨afixfreien Code?

(10)

(d) (5 Punkte) Gegeben sei folgende Codetabelle:

Zeichen Code

I 11

M 100

P 101

S 0

und folgender codierter Text:

1 0 0 1 1 0 0 1 1 0 0 1 1 1 0 1 1 0 1 1 1

• Was besagt dieser Code im Klartext?

• Berechnen Sie die mittlere Codewortl¨ange dieses Codes unter der Annahme der Buchstabenh¨aufigkeit des obigen Klartextes.

• Was haben Sie gegen¨uber einem einfachen Blockcode als mittleren Gewinn pro Zeichen?

(11)

Aufgabe 4:Kommentierung und Software-Testing Punkte: / 10 Gegeben sei folgende Implementierung:

1 class dummy():

2 a = 0

3

4 def __init__(self, beta, gamma, alpha = 1):

5 self.b, self.c, self.d = beta, gamma,0

6 dummy.a += alpha

7 8

9 def method(self):

10 i f dummy.a < self.b:

11 self.d = self.b

12 i f self.b > self.c:

13 self.d = self.b

14 i f 1 < self.c:

15 self.d = dummy.a

16 return self.d

(a) (2 Punkte) Beschreiben Sie die Unterschiede zwischen einem Glassbox- und ei- nem Blackbox-Test.

(b) (2 Punkte) Was erreicht man mit dem Attribut a? Welche Art Attribut ist a?

(12)

(c) (6 Punkte) F¨ur method() soll ein Glassbox-Test entwickelt werden. Geben Sie f¨ur folgende Kriterien eine geeignete Testmenge an:

Anweisungs¨uberdeckung:

Ablaufzweig¨uberdeckung:

Ablaufpfad¨uberdeckung:

(13)

Aufgabe 5:UML und Python Punkte: / 8 Gegeben sind die folgenden Ausschnitte aus einem UML-Diagrammen.

Erl¨autern Sie in Stichpunkten um welchen Typ von Beziehung es sich handelt und welche Eigenschaft sie hat. Geben Sie f¨ur jeden Aufgabenteil eine Python 3.X Im- plementierung an, die diese Relationen zwischen Klassen implementiert (Typ und alle genannten Eigenschaften). Die Implementierungen d¨urfen unvollst¨andig sein. Es reicht, wenn neben dem Klassenkopf die genannten Eigenschaften der Klasse um- gesetzt sind. Sie d¨urfen Erl¨auterung der Beziehung und bespielhafte Instanzierung direkt neben dem Klassendiagramm notieren.

(a) (4 Punkte)

Abbildung 1: UML und Python, Aufgabe A

Erl¨auterung der Beziehung:

(14)

Implementieren Sie die Klassen. Stellen Sie dabei alle im Diagramm angegebenen Eigenschaften der Beziehung sicher. Doctstrings m¨ussen nicht angegeben werden:

(15)

(b) (4 Punkte)

Abbildung 2: UML und Python, Aufgabe B

Geben Sie ein Beispiel f¨ur die Instanziierung der Klasse Bookan:

Geben Sie ein Beispiel f¨ur die Instanziierung der Klasse Chapteran:

(16)

Implementieren Sie die KlassenBookundChapter. Stellen Sie dabei alle im Dia- gramm angegebenen Eigenschaften der Beziehung sicher. Doctstrings m¨ussen nicht angegeben werden:

(17)

Aufgabe 6:Programmanalyse Punkte: / 6 Ein unerfahrener Programmierer hat untenstehendes Python 3.X Programm geschrie- ben. Leider sind einige Fehler in diesem Programm. Finden Sie die Fehler, klassifizie- ren Sie diese (durch ein Kreuz in der richtigen Spalte) in der nachfolgend gegebenen Tabelle. Beschreiben und korrigieren Sie die Fehler in der jeweiligen Spalte. Beziehen Sie sich auf die Nummer der Zeile, welche in der Spalte mit Titel # gegeben ist.

(Style: Ein Fehler, der dem Style Guide widerspricht.)

Hinweis: Enthalten sind f¨ur jede Kategorie vier Fehler. Bewertet werden h¨ochstens 10 Fehler. Das Fehlen der Docstring ist kein zu findender Fehler.

1 import copy, random as rand

2

3 class random_exam_points():

4 def __init__(self):

5 names = ["anonym_user_" + str(i) for i in range(200)]

6 points = []

7

8 for i in range(200):

9 points.append(rand.uniform(0.0, 100.0))# create an new uniform d i s t r i b u t i o n between 0.0 and 100.0

10

11 self.exam = dict(zip(names, points))# yes , that ’ s ok

12

13 def normalize(self, exam):

14 for i in range:

15 exam[i] = round(exam[i], 3)

16

17 return exam

18

19 def del_peaks(exam):

20 best_one, worst_one = None, None

21

22 exam = normalize(exam)

23

24 for i in exam:

25 i f best_one i s None:

26 best_one = i

27 e l i f exam[i] > exam[best_one]:

28 best_one = i

29

30 i f worst_one i s None:

31 worst_one = i

32 i f exam[i] < exam[worst_one]:

33 worst_one = i

(18)

47 e l i f temp_exam[i] < 55.0: temp_exam[i] = 4.0

48 e l i f temp_exam[i] < 60.0: temp_exam[i] = 3.7

49 e l i f temp_exam[i] < 65.0: temp_exam[i] = 3.3

50 e l i f temp_exam[i] < 70.0: temp_exam[i] = 3.0

51 e l i f temp_exam[i] < 75.0: temp_exam[i] = 2.7

52 e l i f temp_exam[i] < 80.0: temp_exam[i] = 2.3

53 e l i f temp_exam[i] < 85.0: temp_exam[i] = 2.0

54 e l i f temp_exam[i] < 90.0: temp_exam[i] = 1.7

55 e l i f temp_exam[i] < 95.0: temp_exam[i] = 1.3

56 else temp_exam[i] = 1.0

57

58 return temp_exam

59

60 def check_median(self):

61 temp_exam = self.convert_points()

62 median = ’0’

63

64 for i in temp_exam:

65 median += temp_exam[i]

66 return median / temp_exam.__len__()

67

68 i f __name__ == "__main__":

69 test_exam = random_exam_points()

70 print("Check median value:", test_exam.check_median())

# Style Syntax Logik Beschreibung Korrektur

1

2

3

4

(19)

# Style Syntax Logik Beschreibung Korrektur

9

10

11

12

13

14

15

16

17

18

19

20

21

(20)

# Style Syntax Logik Beschreibung Korrektur

25

26

27

28

29

30

31

32

33

34

35

36

(21)

# Style Syntax Logik Beschreibung Korrektur

41

42

43

44

45

46

47

48

49

50

51

52

53

(22)

# Style Syntax Logik Beschreibung Korrektur

57

58

59

60

61

62

63

64

65

66

67

68

(23)
(24)

Referenzen

ÄHNLICHE DOKUMENTE

(Einfach lesbarer Modul ohne kompakte Programmierung,

Theoretische Informatik 1 Ungewertete Aufgaben, Blatt 6. Besprechung: In Ihrer ¨ Ubung in KW

die in (a) und (b) genannten Gleichungen sind genau dieselben und werden durch BA1–BA4 axiomatisiert.. Die Umkehrungen zu (a) und (b) sind leicht nachzupr¨

Der Glassbox-Test zeigt Programmcode, der für eine Testsuite nicht ausgeführt wird und damit ungetestet bleibt.. Grundlage für

Bestimme oben genannte Gr¨ oßen f¨ ur die neue Einbettung mit Hilfe von µ und den entsprechenden Gr¨ oßen f¨ ur X.

[r]

Darauf bezieht sich der Begriff einer Komponente: Eine Komponente eines ungerichteten Graphen ist ein maximaler Teilgraph, bei dem f¨ ur jeweils zwei Knoten gilt, dass sie

[r]