# Übungsaufgaben zur EidP (WS2023) Klausur Alle Aufgaben hier behandeln Konzepte aus der Vorlesung **Einführung in die Programmierung** von der Albert-Ludwig-Universität Freiburg. Hierbei handelt es sich um selbsterstellte Aufgaben der EidP-Tutoren [**Nils Pukropp**](mailto:nils@narl.io) und [**Daniel Mironow**](mailto:mail@danielmironov.dev) die bei der Vorbereitung auf die Klausur helfen sollen. ## Reihenfolge der Themen Es gibt keine direkte Reihenfolge, lediglich Themen die sich teilweise überschneiden. Dennoch gibt es eine Reihenfolge nach Wichtigkeit der Themen: - [Grundkonzept Schleifen (`for`, `while`, ...)](src/branch/main/loops) - allgemeine Knobelaufgaben rund um Schleifen - Einfach mit ein paar schwierigeren Aufgaben zum Nachdenken - [Zeichenketten (Strings `str`)](src/branch/main/strings) - allgemeine Knobelaufgaben rund um `str` - Einfach mit ein paar schwierigeren Aufgaben zum Nachdenken - [Dataclasses (OOP `@dataclass`)](src/branch/main/dataclasses) - Objekt orientierte Programmierung mit `@dataclass` - Einfach (Auswendig lernen) - [Pattern Matching (`match`)](src/branch/main/pattern_matching) - Intensive Übungen zu `match` - Mittel (Auswendig lernen, aber erfordert grundlegende Konzepte) - [Typvariabeln (Generics `[T]`)](src/branch/main/generics) - Platzhalter Variabeln um generische Typannotation umzusetzen - Mittel (Auswendig lernen, aber erfordert grundlegende Konzepte) - [Rekursion (Tree)](src/branch/main/recursion) - Sich selbst aufrufende Funktionen - Schwer, da das Konzept etwas verwirrend ist, aber gut für schnelle Punkte in der Klausur! - [Generator](src/branch/main/generator) - Erzeugen von Iteratoren auf die seltsame Python Art und Weise! - Mittel, da das Konzept etwas seltsam ist. Muss man einfach ein paar mal machen! - [Funktionale Programmierung](src/branch/main/functional_programming) - Programmieren-Paradigma bei dem der Programmfluss durch Funktionen bestimmt wird! - Schwer, da das Konzept etwas schwer zu verstehen ist und viele Grundlagen vorraussetzt ## Wie funktionierts? - In jedem Themen-Ordner habt ihr wieder verschiedene Ordner, welche jeweils beinhalten: - **Aufgabenstellungen** zum jeweiligen Thema als `README.md` - Eine **Template-Datei** - Eine **Test-Datei**, damit ihr nicht direkt in die Lösung schauen müsst - Und einen `solution` Ordner der die Musterlösung beinhaltet ## Wie benutze ich die Test-Datei? - Zunächst braucht Ihr `pytest` welches ihr mit `pip install -m pytest` installieren könnt - Könnt auch gerne nachfragen wenn was nicht funktioniert! - Dann könnt ihr einfach die Tests mit `pytest` in der Konsole aufrufen - Schlagen die Tests fehl sieht das so aus: ![image not found](https://cloud.narl.io/s/8Dj4E79RKnHZQNJ/preview) - Hier sagt euch Pytest auch was alles nicht an eurem Code funktioniert - Funktioniert euer Code sieht das so aus: ![image not found](https://cloud.narl.io/s/2HGdaiQkP4YEQ5K/preview) ## Kontakt - Nils Pukropp (Tutor) - [E-Mail](mailto:nils@narl.io) - [Discord](https://discord.com/users/208979474988007425) - [Telegram](https://t.me/narl_np) - Daniel Mironow (Tutor) - [E-Mail](mailto:mail@danielmironov.dev) - [Discord](https://discord.com/users/236939658301407243) - [Discord-Server](https://discord.gg/naeprrX7hB)