Edison Robotik: Lektion 10

Arbeitsblatt 10.1 - Vampirroboter
In dieser herausforderungsbasierten Lektion wendest du alles an, was du bisher gelernt hast, um ein Programm mit vielen interessanten Verhaltensweisen zu erstellen, das dein Edison-Roboter ausführen kann, während er sich in einen Vampir-Roboter verwandelt.
Um deinen Edison in einen Vampirroboter zu verwandeln, verwenden wir objektorientierten Code.
Objekte und Klassen in Python
Python ist eine objektorientierte Programmiersprache. Objektorientierter Code ist eine leistungsstarke Methode zur Reduzierung der Komplexität innerhalb eines Programms. Aus diesem Grund verwenden viele Programmierer in großen, komplizierten Programmen objektorientierten Code.
In einer objektorientierten Programmiersprache können Programme anstelle von eigenständigen Variablen und Funktionen auch "Objekte" verwenden.
Ein Objekt ist eine Sammlung von Funktionen und Variablen, die miteinander in Beziehung stehen. Objekte werden durch eine "Klasse" definiert.
Eine Klasse (auch Klassendefinition genannt) ist wie eine Blaupause, die beschreibt, wie ein Objekt erstellt wird.
In einem Programm können Sie viele verschiedene Objekte aus einer Klasse erstellen und diese Objekte dann einzeln in Ihrem Programm für verschiedene Zwecke bearbeiten. Alle aus der Klasse erstellten Objekte haben beim Erstellen den gleichen „Entwurf“, aber Sie können dann verschiedene Aktionen für verschiedene Objekte in Ihrem Programm ausführen.
Beispiel: Klasse "Shape"
Das häufigste Beispiel für eine Klasse ist eine Form.
Alle Formen, wie Quadrate, Dreiecke und Sechsecke, haben gemeinsame Attribute. Beispielsweise haben alle Formen eine bestimmte Anzahl von Seiten und eine bestimmte Anzahl von Scheitelpunkten. Es gibt auch allgemeine Dinge, die Sie mit Formen tun, z. B. den Bereich oder den Umfang der Form zu finden.
Mit diesen allgemeinen Elementen können Sie eine Klasse für Shape in Python erstellen. Durch das Erstellen der Klasse erstellen wir einen Entwurf, der nur die bekannten, gemeinsamen Elemente enthält. Wir werden dann in der Lage sein, viele verschiedene Objekte aus dieser Klasse zu erstellen, wie z. B. "Quadrat" und "Dreieck".
Die Syntax zum Definieren einer Klasse in Python lautet "class" und anschließend der Name, den Sie dieser Klasse geben möchten, gefolgt von einem Doppelpunkt (:). Beispielsweise:

classl shape
Alles, was du als eingerückten Code in die folgenden Zeilen einfügst, befindet sich in der Klassendefinition.

Schaue dir das folgende Beispiel einer Klasse für Shape in Python an:

yxsaaw
Diese Klasse gibt an, dass die Blaupause für jedes Objekt, das aus der Klasse Shape erstellt wurde, zwei Eingabeparameter (x und y) hat. Die Klasse definiert auch drei Funktionen: "init", "area" und "perimeter".
Die  __init__ function und 'self'
Jede Klasse muss immer eine  __init__function haben.
Die  __init__function  ist der Startcode. Der Begriff "Init" steht für "Initialisierung".
Wenn das Programm ein Objekt erstellen muss, wechselt das Programm in die Klassendefinition und führt die __init__function aus. Diese Funktion enthält Code, der das Objekt einrichtet. Dies bedeutet normalerweise, dass die Startwerte der Objektvariablen festgelegt werden.
Funktionen in einer Klasse müssen immer "self" als ersten Parameter haben. Dies weist das erstellte Objekt an, seine eigenen Funktionen und Variablen zu verwenden.
Beispiel: Objekt "Rechteck"
Sobald wir eine Klassendefinition erstellt haben, können wir damit Objekte in unserem Programm erstellen.
Angenommen, wir möchten ein Objekt "Rechteck" in der Klasse "Shape" erstellen.
Wenn du in Python ein Objekt aus einer Klasse erstellen möchtest, verwendest du die Syntax object_name = class_name (parameters).
Sieh dir das Beispiel zum Erstellen eines Objekts "Rechteck" an:

rectangle = Shape(100,45)
In einem Programm ruft dies die  __init__function auf, die ausgeführt wird und unter Verwendung des Bauplans aus der Formklassendefinition ein Objekt-Rechteck erstellt. Das Objekt "Rechteck" ist so eingestellt, dass 100 der "x" -Eingabewert und 45 der "y" -Eingabewert ist. (du musst nicht "self" eingeben - dies ist nur eine Referenz, damit das Programm weiß, wo es suchen muss.)
Sobald das Programm das Objekt erstellt hat, kann es auf die von der Klasse definierten Funktionen des Objekts zugreifen.

Um eine dieser Funktionen in Python aufzurufen, verwendest du die Syntax object_name.function_name (parameters).Zum Beispiel:

rechtangle.area()
In diesem Beispiel gibt die Funktion rectangle.area () den Wert des Eingabeparameters "x" des Rechteckobjekts multipliziert mit seinem Eingabeparameter "y" zurück.
Eine Möglichkeit, diese spezielle Funktion zu verwenden, besteht darin, diesen Wert in einer Variablen in Ihrem Programm zu speichern.Zum Beispie:l
AreaOfRectangle = rectangle.area()
Einrichten einer Klasse in EdPy
In EdPy können wir mit einer Klasse verschiedene Objekte in einem Programm für Edison erstellen..
Hier ist eine einfache Klasse für einen Vampir-Roboter mit einer __init__function und zwei weiteren Funktionen: eine für das Tagesverhalten des Roboters und eine für das Nachtverhalten. Die Vampire-Klasse enthält auch eine Variable für das Alter des Roboters.

vbeth
Mit dieser Klassendefinition kannst du verschiedene Vampire-Objekte erstellen.
Du kannst diese Vampire-Objekte dann in einem Programm für deinen Edison-Roboter verwenden.

Schreibe  den folgenden Code und überprüfe, ob du verstehst, was im Programm geschieht:
vfdhk
Du bist dran:
Aufgabe 1: Entwerfe das Verhalten der Vampire
Jetzt ist es an der Zeit, weitere interessante Verhaltensweisen für deinen Vampir-Roboter zu entwickeln. Sei kreativ! Du kannst deien Roboter veranlassen, auf Knopfdruck, Klatschen oder Hindernisse zu reagieren. Erwäge die Verwendung der Ereignisbehandlung in deinem Programm. Du kannst mehrere Vampir-Objekte mit jedem gewünschten Alter herstellen. Du kannst das Basisprogramm auch so ändern, dass deine Objekte mehrere Eingabeparameter haben.
Überlege dir, was du in deinem Programm aufnehmen möchtest, und arbeite dann deine Programmdesign durch, indem du zuerst Flussdiagramme und dann einen Pseudocode erstellst, der auf den Flussdiagrammen basiert..

Aufgabe 1: Flussdiagramme
Zeichne Flussdiagramme für das Tages- und Nachtverhalten, entweder von Hand oder mit einem Programm wie Google Slides oder einem ähnlichen Zeichenprogramm. Füge hier deine Flussdiagramme ein. Verwende bei Bedarf zusätzliches Papier.


Aufgabe 2: Pseudocode
Übersetze  deine Flussdiagramme in Pseudocode. Trage hier deinen Pseudocode ein. Verwende bei Bedarf zusätzliches Papier..

Aufgabe 2: Schreibe dein Program
Übersetze deinen Pseudocode mit der EdPy-App in Python-Code. Lade es auf deinen Edison-Roboter herunter und führe dein Programm aus, um es zu testen..

Aufgabe 3: Problemlösung
In der Programmierung ist es sehr verbreitet, dass nicht alles so funktioniert, wie du es dir beim ersten Mal vorstellst. Keine Schweißausbrüche! Denke daran: Thomas Edison ist 10.000 Mal gescheitert, bevor er die Glühbirne erfolgreich erfunden hat. Also, versuche es weiter!
Wir lernen aus den Problemen, auf die wir stoßen. Daher ist es eine gute Angewohnheit, sich Zeit zu nehmen, um darüber nachzudenken, was schief gelaufen ist. Beschreibe alle Probleme, die du hattest, welche Ideen du hattest, um sie zu beheben, und die Lösungen, die du in späteren Versuchen gefunden haben. Verwendebei Bedarf zusätzliches Papier..

Aufgabe 4: Beschreibe einige der Programmierstrukturen in deinem Programm
Wähle  drei verschiedene Programmierstrukturen, die du in deinem Programm verwendet haben. Beschreibe unten, was jede tut.
1. Name der Programmierstruktur: _________________________________________________________
Was tut sie?
_

2. Name der Programmierstruktur: _________________________________________________________
Was tut sie?
_


3. Name der Programmierstruktur: _________________________________________________________
Was tut sie?


Aufgabe 5: Präsentiere dein Programm
Demonstriere deinen Vampir-Roboter deinem Partner, deiner Gruppe oder deiner Klasse. Spreche über deine Ideen, das Programm, die aufgetretenen Probleme und wie du sie gelöst hast.