logik2021/code/README.md

3.0 KiB

Code

Die Inhalte dieses Ordners sind absolut kein Pflichtbestandteil des Kurses.

Diese dienen nur zur Demonstration / konkreten Verwirklichung von Verfahren, die im Kurs auftauchen. Für Wissbegierige mit auch grundlegenden Programmierkenntnissen bietet sich dies als Möglichkeit an, um sich selbst zu überzeugen, dass strukturelle Rekursion funktioniert.

Der Gebrauch dieser Skripte unterliegt der Eigenverantwortung von Studierenden.

Da ich kein Informatiker bin, sind auch einige Aspekt bestimmt nicht optimal programmiert/strukturiert.

Systemvoraussetzungen

  • bash (auch bash-for-windows).
  • python (mind. 3.9.x)

Natürlich wäre eine Implementierung in einer besseren Sprache wie go idealer, aber vielleicht in Zukunft.

Voreinstellungen

  • In einer bash-console zu diesem Ordner navigieren und folgenden Befehl ausführen:
    chmod +x run.sh test.sh
    ## oder
    chmod +x *.sh
    
  • In run.sh gibt es eine Zeile, die zur Ausführung der Python-Skripte notwendigen Module über PIP installieren lässt. (Die Liste der Packages findet man in der Datei requirements). Diese Zeile kann man ruhig nach der ersten Ausführung rauskommentieren.

Daten

In data.env kann man Daten (aktuell: auszuwertenden Ausdruck + Interpretation/Modell) eintragen. Man beachte dabei die Syntax.

Gebrauchshinweise

In einer bash-console zu diesem Ordner navigieren und

./run.sh
## oder (für Linux)
python3 main.py
## oder (für Windows)
py -3 main.py

ausführen. Man kann natürlich alles ohne bash machen, wenn man PyCharm o.Ä. besitzt.

Offene Challenges

In der Datei aussagenlogik/rekursion.py (relativ zu diesem Ordner) findet man mehrere leere Methoden (mit dem Kommentar ## Herausforderung...). Wer es mag, kann versuchen, an seinem Rechner diese Methoden zu definieren und auszuprobieren.

Händisch testen

Probiere es mit Stift-und-Zettel und anhand von Beispielen die Werte händisch zu berechnen. Vergleiche dies mit den durch den Code rekursiv berechneten Werten. Stimmt alles überein?

Automatisierte Tests

Wer etwas standardisierter seine Methoden testen will, kann automatisiertes Testing tätigen. Diese Tests sind im Unterordner utests eingetragen.

  • In der Console (wenn noch nicht geschehen) folgenden Befehl einmalig ausführen:
    chmod +x test.sh
    
  • In utests/u_rekursion.py beim relevanten Testteil eine oder mehrere der Zeilen
    @unittest.skip('Methode noch nicht implementiert')
    
    rauskommentieren/löschen.

Jetzt test.sh ausführen. Die unittests testen Methoden gegen mehrere vorkonstruierte Testfälle samt erwarteten Ergebnissen geprüft. Sollten einige Tests scheitern, dann Fehlermeldung durchlesen,und Methode entsprechend der Kritik überarbeiten.

Die geschriebenen Unittests sind natürlich nicht ausführlich. Man kann diese nach Bedarf ergänzen. Am sinnvollsten baut man welche, die wirklich scheitern können, sonst sagen die Tests nichts aus.