Benutzer-Werkzeuge

Webseiten-Werkzeuge


schule:programmieruebungen

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Both sides previous revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
schule:programmieruebungen [07.11.2018 08:30]
Marco Bakera [Fehler-Erzeuger2]
schule:programmieruebungen [04.09.2019 11:34] (aktuell)
Marco Bakera [Klasse für Brüche]
Zeile 146: Zeile 146:
  
 Der Zusatz “unfallfrei” soll nur ausgegeben werden, wenn das Datenfeld “Unfallwagen” den Wert Der Zusatz “unfallfrei” soll nur ausgegeben werden, wenn das Datenfeld “Unfallwagen” den Wert
-false hat. Entwickeln Sie nun bitte diese Klasse Auto und testen Sie diese mit den folgenden Codezeilen.+false hat. Entwickeln Sie diese Klasse Auto und testen Sie diese mit den folgenden Codezeilen.
  
 ===== Klassen für geometrische Objekte ===== ===== Klassen für geometrische Objekte =====
Zeile 230: Zeile 230:
   >>>​ b = Bruch(4, 6)   >>>​ b = Bruch(4, 6)
   >>>​ b.erweitern(3)   >>>​ b.erweitern(3)
 +  >>>​ b.zaehler
 +  12
 +  >>>​ b.nenner
 +  18
   >>>​ b.kuerzen(2)   >>>​ b.kuerzen(2)
   >>>​ b.zaehler   >>>​ b.zaehler
Zeile 282: Zeile 286:
             b = h             b = h
  
-        return a+        return ​abs(a)
  
     def vollstaendigKuerzen(self):​     def vollstaendigKuerzen(self):​
Zeile 383: Zeile 387:
  
 <file python god.py> <file python god.py>
-def god(): +def create_man_and_woman(): 
-    ​"Return a man and a woman"+    ​'Return a man and a woman'
  
 class Man: class Man:
-    ​"A Man"+    ​'A Man'
  
 class Woman: class Woman:
-    ​"A Woman"+    ​'A Woman'
  
  
 # Tests # Tests
-paradise = God() +paradise = create_man_and_woman() 
-assert len(paradise) == 2+assert len(paradise) == 2, "​expecting two results."​
 m, w = paradise m, w = paradise
 assert isinstance(m,​ Man) assert isinstance(m,​ Man)
Zeile 401: Zeile 405:
 assert isinstance(m,​ Human) assert isinstance(m,​ Human)
 assert isinstance(w,​ Human) assert isinstance(w,​ Human)
 +
 +assert m.hunt() == "​animal"​
 +assert w.gather() == "​fruits"​
 +assert m.breathing() == "​air"​
 +assert w.breathing() == "​air"​
 +print("​Alle Tests bestanden!"​)
 </​file>​ </​file>​
  
 +<​html><​!--
 +
 +class Human:
 +    def breathing(self):​
 +        return "​air"​
 +
 +class Man(Human):
 +    def __init__(self):​
 +        super().__init__()
 +        ​
 +    def hunt(self):
 +        return "​animal"​
 +
 +class Woman(Human):​
 +    def gather(self):​
 +        return "​fruits"​
 +
 +def create_man_and_woman():​
 +    return [Man(), Woman()]
 +
 +--></​html>​
 +
 +===== Tiere: Hunde und Katzen =====
 +
 +Vervollständige den Quelltext für die folgenden Klassen so, dass alle Tests durchlaufen.
 +
 +<file python animals.py>​
 +import abc
 +
 +class Animal(abc.ABC):​
 +    @abc.abstractmethod
 +    def make_noise(self):​
 +        ...
 +
 +class Dog(Animal):​
 +    ...
 +
 +class Cat(Animal):​
 +    ...
 +
 +
 +# Tests
 +d = Dog()
 +c = Cat()
 +try:
 +    a = Animal()
 +except TypeError:
 +    print("​cannot instantiate Animal"​)
 +
 +assert isinstance(d,​ Dog)  # d is a dog
 +assert isinstance(c,​ Cat)  # c is a cat
 +assert isinstance(d,​ Animal) ​ # d is an animal as well
 +assert isinstance(c,​ Animal) ​ # c is an animal as well
 +
 +assert d.make_noise() == "​wuff"​
 +assert c.make_noise() == "​miau"​
 +</​file>​
 +
 +<​html><​!--
 +
 +import abc
 +
 +class Animal(abc.ABC):​
 +    @abc.abstractmethod
 +    def make_noise(self):​
 +        ...
 +
 +class Dog(Animal): ​      
 +    def make_noise(self):​
 +        return "​wuff"​
 +
 +class Cat(Animal):​
 +    def make_noise(self):​
 +        return "​miau"​
 +
 +
 +
 +--></​html>​
 +
 +
 +===== Vererbung A, B, C =====
 +
 +Welche Ausgabe erzeugt das folgende Programm, wenn an der Stelle BLOCK_1234 jeweils Block 1, 2, 3 oder 4 eingesetzt wird? 
 +
 +**Führe das Programm nicht aus**, sondern überlege, wie die Ausgabe lautet.
 +
 +<code python>
 +class A:
 +    def m1(self):
 +        return "m1 von A "
 +
 +    def m2(self):
 +        return "m2 von A "
 +
 +    def m3(self):
 +        return "m3 von A "
 +
 +class B(A):
 +    def m1(self):
 +        return "m1 von B "
 +
 +class C(B):
 +    def m3(self):
 +        return "m3 von C "
 +
 +
 +######
 +a = A()
 +b = B()
 +c = C()
 +a2 = A()
 +
 +q = ''​
 +
 +BLOCK_1234
 +
 +print(q)
 +
 +</​code>​
 +
 +<code python>
 +q += b.m1() ​ # Block 1
 +q += c.m2()
 +q += a.m3()
 +</​code>​
 +
 +<code python>
 +q += c.m1() # Block 2
 +q += c.m2()
 +q += c.m3()
 +</​code>​
 +
 +<code python>
 +
 +q += a.m1() # Block 3
 +q += b.m2()
 +q += c.m3()
 +</​code>​
 +
 +<code python>
 +
 +q += a2.m1() # Block 4
 +q += a2.m2()
 +q += a2.m3()
 +</​code>​
 ===== Klasse für Geister ===== ===== Klasse für Geister =====
  
Zeile 515: Zeile 670:
 jeff.add_cash(20.00) jeff.add_cash(20.00)
 jeff.balance == 118 jeff.balance == 118
 +print("​Alles Tests bestanden"​)
 </​file>​ </​file>​
  
schule/programmieruebungen.1541575842.txt.gz · Zuletzt geändert: 07.11.2018 08:30 von Marco Bakera