Sie sind auf Seite 1von 7

Klausur WS 2018 – Name:

Aufgabe 1: Grundlagen 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .(15 Punkte)


Was geben die folgenden Python 3 - Programme aus?
(a) (3 Punkte)
1 print(4+2**3)

(b) (3 Punkte)
1 for i in range(1,4):
2 print(i*42)

(c) (3 Punkte)
1 def x(y):
2 return y//2
3 print(y)
4 print(x(10))

(d) (3 Punkte)
1 def x(y):
2 return str(y*2)*2
3 print(x(5)*2)

(e) (3 Punkte)
1 def a(x,y):
2 return y//x
3 print(a(42,8))

Grundlegende Programmiertechniken Seite 1 von 7


Klausur WS 2018 – Name:

Aufgabe 2: Grundlagen 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .(10 Punkte)


Finden Sie in jedem Python 3 - Programm den Fehler, der dazu führt, dass der Code
nicht korrekt ausgeführt werden kann, und erklären Sie, warum dies ein Fehler ist.
(a) (2 Punkte)
1 a=3.5
2 print(2+a)

(b) (2 Punkte)
1 i=0
2 if i not == 2:
3 print("ungleich zwei")
4 else:
5 print("gleich zwei")

(c) (2 Punkte)
1 text = ["a","b","c","d"]
2 for wort in len(text):
3 print(wort)

(d) (2 Punkte)
1 x += 5
2 print(x)

(e) (2 Punkte)
1 print(a(0,2))
2
3 def a(b,c):
4 if b==0:
5 return c
6 else:
7 return b

Grundlegende Programmiertechniken Seite 2 von 7


Klausur WS 2018 – Name:

Aufgabe 3: Kontrollstrukturen . . . . . . . . . . . . . . . . . . . . . (13 Punkte)


In dieser Aufgabe sollen zwei Python 3 - Programme entworfen werden, welche jeweils
die ersten 100 Zahlen ausgeben, die durch 42 teilbar sind.
(a) (3 Punkte) Zunächst eine Frage zum Verständnis: Wie lauten die ersten drei positi-
ven, durch 42 teilbaren, Ganzzahlen?

(b) (5 Punkte) Schreiben Sie ein Python 3 - Programm mit nur einer Schleife und ohne
if-Verzweigungen, welches die ersten 100, durch 42 teilbaren, positiven Ganzzahlen
berechnet und ausgibt.

(c) (5 Punkte) Schreiben Sie ein Python 3 - Programm mit nur einer if-Verzweigung
und ohne Schleifen, welches die ersten 100, durch 42 teilbaren, positiven Ganzzahlen
berechnet und ausgibt.

Grundlegende Programmiertechniken Seite 3 von 7


Klausur WS 2018 – Name:

Aufgabe 4: Eingabe/Ausgabe . . . . . . . . . . . . . . . . . . . . . . . (15 Punkte)


Schreiben Sie ein Python 3 - Programm, welches eine Textdatei einliest und für jede Zeile
darin das längste Wort ausgibt. Falls es mehrere Wörter mit derselben Maximallänge
gibt, ist es ausreichend, das erste dieser Wörter auszugeben. Ihr Programm bekommt den
Namen der Textdatei als Parameter übergeben. Sie dürfen davon ausgehen, dass in der
Textdatei mehrere Textzeilen stehen, die Wörter sonst aber nur durch ein Leerzeichen
getrennt sind. Stellen Sie sicher, dass das Programm auch wirklich mit genau einem
Parameter aufgerufen wird, geben Sie ansonsten eine geeignete Fehlermeldung aus und
stoppen Sie das Programm. Verfahren Sie genauso mit Fehlern bei der Dateibehandlung
und geben Sie ebenfalls geeignete Fehlermeldungen aus.
Ihr Programm sollte z.B. für diese Textdatei:
Hallo liebe Studierende
Wir werden bereits nachmittags mit der Korrektur beginnen
Euer GPT Team
folgendes ausgeben:
Studierende
nachmittags
Euer

Grundlegende Programmiertechniken Seite 4 von 7


Klausur WS 2018 – Name:

Aufgabe 5: Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (15 Punkte)


Schreiben Sie eine Python 3 – Funktion umwandeln(liste, a). Die Funktion soll
ab dem Index a alle Listenelemente durch ihre jeweilige Quersumme ersetzen. Imple-
mentieren Sie dazu die Funktion, die zu dem folgenden Codefragment passt, sowie eine
Hilfsfunktion quersumme(zahl), die die Quersumme einer Zahl berechnet. Als Beispiel
sollte folgendes Python 3 - Programmfragment
1 liste=[222,999,2345,657,23]
2 print(liste)
3 umwandeln(liste,2)
4 print(liste)

- ergänzt um Ihre Funktionen umwandeln(liste, a) und quersumme(zahl) -


folgende Ausgabe produzieren:
1 [222,999,2345,657,23]
2 [222,999,14,18,5]

Sollten Sie die Aufgabe fehlerfrei und ohne Verwendung von Schleifen lösen, bekommen
Sie - zusätzlich zu den 15 Punkten - noch weitere 5 Bonuspunkte.

Grundlegende Programmiertechniken Seite 5 von 7


Klausur WS 2018 – Name:

Aufgabe 6: Algorithmen: 2er-Summe . . . . . . . . . . . . . (18 Punkte)


Der unten aufgeführte Python 3 Code beschreibt den sogenannten 2er-Summen-Algorithmus.
Als Eingabe erhält dieser ein Array von Zahlen und liefert als Ausgabe einen einzelnen
Wert zurück. Der berechnete Wert gibt an, wie viele Kombinationen von zwei Elementen
des Arrays in der Summe 0 ergeben.
1 def zweierSumme(liste):
2 anzahl = 0
3 for i in range(len(liste)):
4 for j in range(i+1,len(liste)):
5 if liste[i] + liste[j] == 0:
6 anzahl += 1
7 return anzahl
8
9 liste = [-3,1,3,-2]
10 print(zweierSumme(liste))

(a) (4 Punkte) Welches Ergebnis würde der Algorithmus für das Array [-3,1,3,-2]
errechnen?

(b) (4 Punkte) Wie viele Zugriffe auf Array-Elemente macht der Algorithmus für ein
Array der Länge n?

(c) (4 Punkte) Wie viele Vergleiche von Array-Elementen werden bei einem Array der
Länge n ausgeführt?

(d) (6 Punkte) Erklären Sie, warum in Zeile 4 die range-Funktion bei i+1 startet. Was
würde passieren, wenn an dieser Stelle range(len(liste)) verwendet werden
würde?

Grundlegende Programmiertechniken Seite 6 von 7


Klausur WS 2018 – Name:

Aufgabe 7: Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (14 Punkte)


Ergänzen Sie das unten stehende Java - Programm um die suche-Funktion. Implemen-
tieren Sie dazu in Java die in der Vorlesung in Python 3 erläuterte binäre Suche. Zur
Erinnerung: Die suche-Funktion gibt den Array-Index des gefundenen Elementes zurück,
wenn es im Array vorhanden ist. Sollte das Element nicht im Array stehen, wird der
Wert -1 zurückgegeben.
Vollständig implementiert wird das Programm unten den Text
Element gefunden an Stelle 3
ausgeben.
1 public class BinSuche {
2
3 public static int suche(int element, int[] array) {
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 }
37
38 public static void main(String[] args) {
39 int[] array = {0, 1, 2, 8, 13, 17, 19, 32, 42};
40 int pos = suche(8, array);
41 if (pos >= 0)
42 System.out.println("Element gefunden an Stelle " + pos);
43 else {
44 System.out.println("Element wurde nicht gefunden");
45 }
46 }
47 }

Grundlegende Programmiertechniken Seite 7 von 7

Powered by TCPDF (www.tcpdf.org)

Das könnte Ihnen auch gefallen