3. Python3 Einführung

Nach der visuellen Programmierung wurde uns eine neue Programmiersprache (zumindest für mich) vorgestellt: Python. Python ist eine Skriptsprache. Eine Skriptsprache ist eine Programmiersprache mit sehr vielen Vorteilen, die mehr Möglichkeiten und Vereinfachungen zur Ausführung des Roboters bietet als andere Programmiersprachen (z.B. Java als objektorientierte Programmiersprache). Zur Verdeutlichung erkläre ich es jetzt mit Beispielen: Bei einer objektorientierten Programmiersprache, wie Java, muss man eine Variable oder eine Methode deklarieren (z.B.: sagen ob die Variable eine Zahl (int) ist oder ein Buchstabe (char)). Bei einer Skriptsprache wie Python gibt es sowas nicht. Variablen können einfach initialisiert werden (einen Wert der Variable geben) ohne darauf zu achten ob man es als Zeichenkette (String), Buchstabe (char), Zahl (int) oder als Kommazahl (float) deklariert hat. Ein Nachteil davon ist die mögliche fehlerhafte Initialisierung einer Variable (falscher Datentyp), die bei der Ausführung einer Methode zu einem Fehler führt, weil der Datentyp der Variable, die in der Methode gebraucht wird, nicht stimmt oder von der Methode nicht benutzt werden kann. Bei einer objektorientierten Programmiersprache, wie Java, hätte man schon beim Kompilieren eine Fehleranzeige bei der Variable bekommen und nicht beim Ausführen der Methode, wie bei Python. Dies führt auch zu unserem zweiten Unterschied und zwar: der Interpreter. Bei einer Programmiersprache, wie Java, wird ein Quelltext erstmal kompiliert (mit der Hilfe eines Compilers), das heißt der Quelltext, den wir geschrieben haben, wird erstmal maschinensprachegerecht übersetzt. Erst nach dem Kompilieren kann ein Programm (bzw. eine Klasse) ausgeführt werden. Bei einer Skriptsprache, wie Python, gibt es Anstelle eines Compilers einen Interpreter. Der Interpreter kompiliert, während das Programm (bzw. die Methode) ausgeführt wird. Ein Interpreter ist also wie ein Compiler, der aber während der Ausführung der Methode den Quelltext kompiliert und nicht davor. Durch die ,,Übersetzung in eine maschinengerechte Sprache“ in Echtzeit wird die Ausführung des Programms verlangsamt. Bei einer nicht-Skriptsprache, die mit einem Compiler arbeitet, läuft die Ausführung schneller als bei einer Skriptsprache, die einen Interpreter benutzt.

Java Übungsaufgaben

Bevor wir anfingen Python kennenzulernen, haben wir die Aufgabe bekommen ein ,,Gangsterkrankehaus“-Programm (der Lehrer hat es so genannt) in Java zu erstellen. Da die Meisten aus dem Projektkurs Informatikunterricht in der Schule hatten, wussten wir schon das Grundgerüst und die Basisbefehle, die wir für das Programm benötigten. Für das Programm haben wir drei Klassen benötigt: Arzt, Patient, und Gangster (Gangster wird als Unterklasse von Patient gebildet, also wird die Klasse Gangster alle öffentlichen Methoden und Variablen von der Klasse Patient übernehmen). Der Arzt muss den Patienten und den Gangster behandeln. Dabei hat der Arzt eine bestimmte Arbeitszeit, die er einhalten muss. Wenn er die Stunden abgearbeitet hat, die er pro Tag hat, kann er nach Hause gehen und am nächsten Morgen die Patienten weiterbehandeln. Die Patienten haben einen Wert von 0 bis 100 für ihre Gesundheit und der Arzt muss dann den Patienten behandeln, bis er als Wert für seine Gesundheit eine höhere Zahl als 89 erreicht hat. Bei dem Gangster darf der Arzt nur in Anwesenheit eines Polizisten behandeln und der Arzt darf den Gangster nur bis zum Gesundheitswert 50 behandeln.

Bei der zweiten Übungsaufgabe mussten wir ein ,,Zoo“-Programm in Java erstellen. Für das Programm brauchten wir drei Klassen: Zoowärter, Tier und Übertier (Übertier ist eine Unterklasse von Tier). Der Zoowärter soll Tier und Übertier füttern, dabei bekommt das Übertier mehr Essen als das Tier.

Python Übersetzung

Nach jedem Programm, welches wir mit Java erstellt haben, mussten wir es in Python nachbilden. Das war eine Herausforderung, weil keiner aus dem Kurs vorher mit Python gearbeitet hat. Als Hilfe hat unser Lehrer die Seite python-kurs.eu angeboten, die uns Schritt für Schritt die Grundlagen von Python erklärt. Es wurde auch eine Kapitelliste erstellt für die Abschnitte, die wir auf dieser Internetseite lesen sollten. Darüber hinaus haben wir die Grundlagen von Python3 gelernt. Als erstes fragt man sich warum es nicht einfach Python sondern Python3 heißt. Es heißt so, weil es die dritte Version von Python ist. Das Problem bei jeder Version von Python ist, dass nach jeder Version fast alles geändert wird. Zum Beispiel hat man für den Befehl ,,X“ in der ersten Version ,,XX“ benutzt, in der zweiten Version ,,ZZ“ und in der dritten Version wird es komplett anders gemacht. Deswegen ist es wichtig als Anfänger die neueste bzw. aktuellste Version von Python zu lernen, weil in verschiedenen Versionen andere Bezeichnungen gegeben sind. Nachdem ich die nötigen Seiten durchgelesen habe, fing ich an die Programme auf Python zu übertragen. Als Entwicklungsumgebung (ein Editor zur Vereinfachung beim Schreiben eines Quelltextes für eine Programmiersprache) für Python benutzen wir ,,JetBrains PyCharm Community Edition“.

Unterschiede von Java und Python

Hier werde ich noch paar Beispiele von den Unterschieden zeigen und erklären.

Bei Java fangen eine Klasse und eine Methode so an:

Bei Python kann man einfach mit einer Methode in einer neuen Datei anfangen ohne eine Klasse zu erstellen:

In Python kann eine Methode mit def angefangen werden. Bei Java muss man erst angeben, ob die Methode frei benutzt werden kann (public) oder nur die Klasse, wo die Methode drinsteht, die Methode benutzen darf (private). Bei Python existiert sowas nicht und deswegen muss die Methode einfach nur mit def angefangen werden. Wegen der fehlenden Nötigkeit der Deklaration, muss man in Python z.B. kein void schreiben, was auch zur Flexibilität bei Skriptsprachen beiträgt.

In den Bildern wird bei der Ausführung der beiden Methoden „Hallo“ angezeigt. In Java wird für die Anzeige eine Textes System.out.print(“Text“) und in Python einfach nur print(“Text“) geschrieben.

Noch ein Unterschied ist die Eingrenzung der Methoden. In Java werden die Klassen und Methoden durch geschweifte Klammern eingegrenzt. In Python dagegen fängt man nach der Angabe des Namens der Methode oder der Klasse mit einem Doppelpunkt an und alles, was zur Methode oder Klasse gehört, wird durch das Einrücken der Zeilen, die zur Methode oder zur Klasse gehören, gezeigt. Durch die Wichtigkeit des Einrückens wird eine Strukturierung des Quelltextes wichtig sein, was auch einen schlechten Programmierstil vorbeugt, weil durch das Einrücken das Lesen von Quelltexten erleichtert wird.