Title: Regleralgorithmus
Course: LF07 - Cyber-physische Systeme ergänzen - FI/ITSE - Raspberry Pi

LS 7.2 (KE): Codierung, Funktionsaufruf, Klassendiagramm, Klasse--Objekt, Konstruktor, Reglerdiagramm, Algorithmus, Quellcode

Feedback shared by this category's questions, if right: Die Antwort ist richtig.
Feedback shared by this category's questions, if wrong: Die Antwort ist falsch.

Q: Beim Entwickeln des Quellcodes für Ihr Projekt taucht beim Debuggen folgende Fehlermeldung auf:

[Image]

Geben Sie den dafür wahrscheinlichsten Grund an!
- Die paho Bibliothek ist auf dem Zielsystem nicht installiert. (Das ist richtig, sie muss nachinstalliert werden mit pip install paho-mqtt pip install paho-mqtt pip install paho-mqtt pip install paho-mqtt pip install paho-mqtt)
- Der publish Befehl taucht doppelt auf. (Darf er ruhig, denn wir verwenden ihn als alias)
- Der Punkt zwischen paho und mqtt muss durch einen Bindestrich ersetzt werden (Nö)
- Es darf immer nur eine einzige import Anweisung pro Datei verwendet werden
A: Die paho Bibliothek ist auf dem Zielsystem nicht installiert.
Feedback: Debugging ist sehr hilfreich, aber man muss die Fehlermeldungen verstehen

Q: [Image: Klassendiagramm Konto]Aufgabe: Implementieren Sie die Klasse Konto anhand des nebenstehenden Klassendiagramms.

Hinweis: Die Methode auszahlen gibt den auszuzahlenden Betrag als Rückgabewert zurück. Hat das Konto nicht genügend Deckung, so wird lediglich der mögliche Betrag ausgezahlt. Enthält das Konto zum Beispiel 500€ und es wird die Methode auszahlen(600) aufgerufen, liefert die Methode den Wert 500 zurück. Natürlich wird der Kontostand um den ausgezahlten Betrag vermindert. Die Methode einzahlen erhöht den Kontostand um den eingezahlten Betrag. Mit get_kontostand kann das aktuelle Guthaben ermittelt werden.

```[...] Konto():
def __init__([...]):
self.__kontostand=0.0
def einzahlen(self, betrag):
self.__kontostand += [...]
def auszahlen(self, betrag):
if self.__kontostand [...] [...]:
[...]-= betrag
return betrag
else:
betrag = self.__kontostand
[...]=0.0
return [...]
def get_kontostand(self):
return [...]
```
A: class; self; betrag; > / >=; betrag; self.__kontostand; self.__kontostand; betrag; self.__kontostand

Aufgabe: Entwickeln Sie die Klasse Temp. Im Konstruktor der Klasse wird ein Wert übergeben, der einer Temperatur in °C entspricht und im privaten Attribut __tempC gespeichert wird. Über die Methode get_Kelvin() kann der in Kelvin umgewandelte Wert von __tempC abgefragt werden.

Hinweis: Temperatur in Kelvin = Temperatur in °C + 273,15 [Image: LS7_2-Aufgabe_Klasse entwickeln in Python 3 (K)]

Q: [Image: Objekte Werte Colaflasche Python 3]Aufgabe: Der unten dargestellte Programmcode erzeuge die Flaschen f1, f2 und f3. Der Konstruktor hat folgende Signatur: __init__(inhalt="Wasser"). Wird bei der Objekterzeugung kein Parameter angegeben, so wird der Defaultwert übernommen, in diesem Fall "Wasser". Ansonsten wird der bei Objekterzeugung angegebene Parameter für das Attribut inhalt übernommen.

Ordnen Sie die Beschriftungsfelder so zu, wie sie am Ende der Programmausführung sein werden?

```def main():
        f1 = Flasche()
        f2 = Flasche("Sprite")
        f3 = Flasche("Cola")
        f1.setVolumen(1.0)
        f2.setInhalt("Fanta")
        f3.setInhalt(f1.getInhalt())
        f2.setVolumen(0.5);
        f3.setVolumen(f1.getVolumen()+f2.getVolumen())
        f2.setInhalt(f3.getInhalt())
#
********************* Hauptprogramm
if __name__ == '__main__':
 main()```
- Zone 1 | Wasser
- Zone 2 | Wasser
- Zone 3 | Wasser
- Zone 4 | 1.0
- Zone 5 | 0.5
- Zone 6 | 1.5
Also offered: Cola; Fanta; Sprite
If partly right: Die Antwort ist teilweise richtig.

Q: Ordnen Sie den Aussagen die passenden Begriffe zu!

[...]: In der Programmiersprache Python heißt diese Methode __init__
[...]: Dient als Vorlage für die Erzeugung von Objekten.
[...]: Eine Schreibweise, mit der man auf Attribute eines Objekts zugreifen kann. <Objekt>.<Attribut>
[...]: Attribute oder eine Methoden, denen in der UML-Darstellung ein Pluszeichen vorangestellt wird.
[...]: Die Sichtbarkeit eines Attributes oder einer Methode ist auf den Bereich der Klasse beschränkt. Von außen kann darauf nicht zugegriffen werden.
[...]: Eine Notation, mit der der Bauplan einer Klasse oder die Beziehungen zwischen Klassen beschrieben werden kann.
[...]: Eine feste Bindung zwischen zwei Klassen. Beim Löschen des einen Objektes wird das andere auch mit gelöscht.
Also offered: Destruktor; Erzeuger; Schweizerische Notation; Abtrennung; global; lokal; Klassenrelation; Klassensynopse; Aggregation
A: Konstruktor; Klasse; Punktnotation; public; private; Klassendiagramm; Komposition
If partly right: Die Antwort ist teilweise richtig.