Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

WS 09/10 Einführung in die Informatik: Programmierung und Software- Entwicklung Zentralübung 6: Lösung Aufgabe 5-4, Tipps zu Blatt 6, Einfache Klassen.

Ähnliche Präsentationen


Präsentation zum Thema: "WS 09/10 Einführung in die Informatik: Programmierung und Software- Entwicklung Zentralübung 6: Lösung Aufgabe 5-4, Tipps zu Blatt 6, Einfache Klassen."—  Präsentation transkript:

1 WS 09/10 Einführung in die Informatik: Programmierung und Software- Entwicklung Zentralübung 6: Lösung Aufgabe 5-4, Tipps zu Blatt 6, Einfache Klassen Christian Kroiß

2 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Aufgabe 5-4 Zunächst: Entschuldigung! Die Aufgabe doch etwas sehr schwer. Aber: bei der Korrektur wird auf die Grundideen Wert gelegt statt auf die genaue Rechnung. Wir werden versuchen, das nächste Bonus-Blatt einfacher zu machen! 2

3 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Aufgabe 5-4 a/c) static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 3

4 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a ungleich b, ungleiche Länge static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 4 a = b = true Ergebnis: FALSE

5 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a ungleich b, a[0] nicht in b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } a = b = 423 VERGLEICHE = 0

6 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a ungleich b, a[0] nicht in b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 6 a = b = i = VERGLEICHE = 1

7 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a ungleich b, a[0] nicht in b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 7 a = b = i = 0 j = VERGLEICHE = 2

8 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a ungleich b, a[0] nicht in b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 8 a = b = i = 0 j = 0 true VERGLEICHE = 2

9 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a ungleich b, a[0] nicht in b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 9 a = b = i = 0 j = VERGLEICHE = 4

10 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a ungleich b, a[0] nicht in b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 10 a = b = i = 0 j = 1 true VERGLEICHE = 4

11 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a ungleich b, a[0] nicht in b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 11 a = b = i = 0 j = VERGLEICHE = 6

12 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a ungleich b, a[0] nicht in b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 12 a = b = i = 0 j = 2 true VERGLEICHE = 6

13 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a ungleich b, a[0] nicht in b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 13 a = b = i = 0 j = VERGLEICHE = 8

14 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a ungleich b, a[0] nicht in b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 14 a = b = i = 0 j = 3 false VERGLEICHE = 8

15 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a ungleich b, a[0] nicht in b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 15 a = b = i = 0 j = 3 true VERGLEICHE = 9

16 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a ungleich b, a[0] nicht in b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 16 a = b = i = 0 j = VERGLEICHE = 10

17 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a ungleich b, a[0] nicht in b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 17 a = b = i = 0 j = Ergebnis: FALSE Vergleiche: n = 4 + 2n = 10 Ergebnis: FALSE Vergleiche: n = 4 + 2n = 10

18 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a gleich b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } a = b = 1 23 VERGLEICHE = 0

19 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a gleich b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 19 a = b = i = VERGLEICHE = 1

20 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a gleich b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 20 a = b = i = 0 j = VERGLEICHE = 2

21 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a gleich b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 21 a = b = i = 0 j = 0 true false Durchläufe der WHILE-Schleife für i == 0 Aber: 2 Vergleiche VERGLEICHE = 2

22 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a gleich b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 22 a = b = i = 0 j = false VERGLEICHE = 4

23 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a gleich b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 23 a = b = i = 1 j = 0 true VERGLEICHE = 5

24 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a gleich b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 24 a = b = i = 1 j = VERGLEICHE = 6

25 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a gleich b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 25 a = b = i = 1 j = 0 true VERGLEICHE = 6 true

26 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a gleich b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 26 a = b = i = 1 j = VERGLEICHE = 8

27 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a gleich b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 27 a = b = i = 1 j = 1 true VERGLEICHE = 8 false

28 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a gleich b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 28 a = b = i = 1 j = 1 true VERGLEICHE = 8 false 1 Durchlauf der WHILE-Schleife für i == 1 Aber: 4 Vergleiche

29 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a gleich b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 29 a = b = i = 1 j = VERGLEICHE = 10 false

30 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a gleich b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 30 a = b = i = 2 j = 0 true VERGLEICHE = 11

31 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a gleich b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 31 a = b = i = 2 j = VERGLEICHE = 12

32 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a gleich b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 32 a = b = i = 2 j = 0 true VERGLEICHE = 12 true

33 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a gleich b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 33 a = b = i = 2 j = VERGLEICHE = 14

34 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a gleich b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 34 a = b = i = 2 j = 1 true VERGLEICHE = 14 true

35 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a gleich b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 35 a = b = i = 2 j = VERGLEICHE = 16

36 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a gleich b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 36 a = b = i = 2 j = 2 true VERGLEICHE = 16 false

37 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a gleich b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 37 a = b = i = 2 j = 2 true VERGLEICHE = 16 false 2 Durchläufe der WHILE-Schleife für i == 2 Aber: 6 Vergleiche

38 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a gleich b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 38 a = b = i = 2 j = VERGLEICHE = 18 false

39 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a gleich b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 39 a = b = i = 3 j = 0 false VERGLEICHE = 19

40 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a gleich b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 40 a = b = i = 3 j = VERGLEICHE = 20

41 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Simulation a gleich b static boolean compareSets(int[] a, int[] b) { if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { int j = 0; while (j < b.length && b[j] != a[i]) j++; if (j == b.length) return false; } return true; } 41 a = b = i = 3 j = VERGLEICHE = 20 Ergebnis: TRUE Vergleiche: n 2 + 3n + 2 = 20

42 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Ergebnis Bester Fall für ungleiche Längen: 1 Bester Fall für gleiche Längen: a[0] nicht in b T B = 4 + 2n Schlechtester Fall: Mengen sind gleich Da jedes Element nur einmal vorkommt braucht man unabhängig von der Reihenfolge 1 x keinen Durchlauf der WHILE-Schleife für i == i 0 1 x 1 Durchlauf der WHILE-Schleife für i == i 1 1 x 2 Durchläufe der WHILE-Schleife für i == i 2 etc. Insgesamt (inklusive Schleifen-Abbrüche): n 2 + 3n

43 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Herleitung T W 43

44 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Herleitung T W 44

45 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Herleitung T W 45 Gaußsche Summen- formel Gaußsche Summen- formel

46 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Tipps für Blatt 6 Aufgabe 6-1 Noch mal genau die Definition der O-Notation im Skript lesen Insbesondere muss die <= - Beziehung erst ab einem gewissen n 0 gelten Bei j) Polynomdivision mit Rest Grenzwerte für n anschauen Bedenken: in einer Summe entscheidet der Summand mit dem schnellsten Wachstum Aufgabe 6-2 b) Man kann so tun, als ob es tatsächlich n, log n, etc. viele Operationen gebe Für jeweils eine Operation denkt man sich eine Zeitkonstante T op, die natürlich unabhängig von n ist. 46

47 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Tipps für Blatt 6 Aufgabe 6-2 c) Im Taschenrechner mit großen Zahlen für n ausprobieren Wenn f(n) langsamer wächst als g(n), dann gilt: Graphen zeichnen lassen Online auf Sehr interessante und mächtige Such-/Informationsmaschine mit Mathe-Funktionen von Mathematica. Relativ kompliziert, Dokumentation für Mathe-Funktionen unter GeoGebra (http://www.geogebra.org)http://www.geogebra.org Sehr leicht zu benutzen 47

48 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 09/10 Zentralübung 5 Einige einfache Klassen 48


Herunterladen ppt "WS 09/10 Einführung in die Informatik: Programmierung und Software- Entwicklung Zentralübung 6: Lösung Aufgabe 5-4, Tipps zu Blatt 6, Einfache Klassen."

Ähnliche Präsentationen


Google-Anzeigen