1.1.2 Programmierkonzepte und -paradigmen (z.B. Objektorientierung, Modularisierung, Rekursion) nennen, unterscheiden, vergleichen und anwenden
Unterrichtsmaterial zum Lernziel: Die Maturandinnen und Maturanden können Programmierkonzepte und -paradigmen (z.B. Objektorientierung, Modularisierung, Rekursion) nennen, unterscheiden, vergleichen und anwenden.
Objektorientierte Programmierung (OOP) Grundprinzipien in Python
Dieses Unterrichtsmaterial führt anhand eines durchgehenden Geometrie-Projekts in Python in die vier Grundprinzipien der objektorientierten Programmierung ein: Abstraktion, Vererbung, Datenkapselung und Polymorphie. Es enthält Definitionen, Analogien, Programmieraufgaben und vollständige Code-Lösungen.
Datenkapselung und Sichtbarkeit in Python
Dieses Unterrichtsmaterial führt in das Konzept der Datenkapselung und objektorientierten Sichtbarkeiten (public, protected, private) in Python ein. Anhand praktischer Code-Beispiele mit Klassen wie Sheep und Person lernen die Schülerinnen und Schüler den Einsatz von Gettern, Settern und Namenskonventionen.
Objects-First with Java (BlueJ Edition)
Dieses Lehrbuch vermittelt die objektorientierte Programmierung in Java anhand von praxisnahen Projekten und der Entwicklungsumgebung BlueJ. Es verfolgt einen reinen 'Objects-First'-Ansatz und enthält integrierte Übungen zum direkten Programmieren.
Umwandlung iterativer Algorithmen in rekursive Algorithmen
Dieses Unterrichtsmaterial behandelt detailliert die Umwandlung von iterativen Algorithmen in rekursive Algorithmen am Beispiel der Potenzfunktion. Es enthält Programmierbeispiele in Python, Analysen von Ablaufprotokollen sowie praktische Programmieraufgaben zur Simulation von Programmausführungen.
Übungen zur Rekursion und Programmentwicklung in Python
Eine Sammlung von Programmieraufgaben und Übungen, bei denen rekursive Algorithmen in Python analysiert, angewendet, schrittweise entwickelt und getestet werden. Die Lernenden nutzen problemreduzierende Ansätze und visualisierende Hilfsmittel wie Aufrufbäume, um rekursive Funktionen für Listenoperationen zu verstehen und zu programmieren.
Arbitrarily Large Data and Lists in Programming
Dieses Lehrmaterial behandelt die Verarbeitung von Daten beliebiger Größe mithilfe von Listen und selbstbezüglichen Datenstrukturen. Anhand von Beispielen wird das Entwurfsrezept für rekursive Programme (Templates, Basisfälle, natürliche Rekursion) in einer funktionalen Programmiersprache eingeführt.
Deklarative Programmierung: Funktionale und logische Programmierung mit Python, Elm, Racket und Prolog
Umfassendes und didaktisch hervorragend strukturiertes Lehrmittel zur deklarativen Programmierung. Es führt fundiert in die funktionale Programmierung (mittels Python, Elm und Racket) sowie die logische Programmierung (mit Prolog) ein und bietet zahlreiche Fachkonzepte, Beispiele und Übungen.
GameGridKara 2.0 – Java lernen mit Kara
Dieses Unterrichtsmaterial führt spielerisch und anschaulich in die Programmierung mit Java ein, indem der Marienkäfer Kara in einer grafischen Mini-Umgebung gesteuert wird. Es enthält strukturierte Handouts, Programmierübungen sowie vollständige Lösungen für mehrere Lektionen.
Einführung in die Objektorientierte Programmierung mit Python und Turtle
Dieses Unterrichtsmaterial führt in die Grundlagen der objektorientierten Programmierung (OOP) in Python ein. Anhand von Beispielen wie einer Turtle, Schafen und rationalen Zahlen werden Klassen, Objekte, Konstruktoren, Vererbung und Datenkapselung praxisnah vermittelt.
Prüfung zu Python-Grundlagen und Objektorientierter Programmierung
Dieses Dokument beschreibt eine zweiteilige Prüfung zu den Grundlagen von Python, einschliesslich Kontrollstrukturen, Datentypen und Funktionen, sowie zu grundlegenden Konzepten der objektorientierten Programmierung (OOP).
Objektorientierte Programmierung: Vererbung und Polymorphie in Python
Dieses Unterrichtsmaterial führt in die Konzepte der objektorientierten Programmierung (OOP) wie Vererbung, Überschreiben von Methoden und Polymorphie an konkreten Beispielen in Python ein. Es enthält kurze Erklärungen, Code-Beispiele und eine praktische Programmieraufgabe inklusive Lösung.
Eigene Klasse für rationale Zahlen in Python programmieren
Die Lernenden schreiben eine eigene Python-Klasse für rationale Zahlen (Brüche), um das Konzept der objektorientierten Programmierung und das Erstellen von Methoden und Konstruktoren zu üben. Dabei implementieren sie mathematische Operationen und optional auch Operatorüberladungen.
Einführung in die objektorientierte Programmierung mit Python
Dieses Unterrichtsmaterial führt anhand eines einfachen Beispiels (Klasse Sheep) in die Grundlagen der objektorientierten Programmierung mit Python ein. Es behandelt das Erstellen von Klassen, das Instanziieren von Objekten sowie die Definition und Nutzung von Attributen und Methoden.
Einführung in die Objektorientierung mit Python und Turtle
Das Unterrichtsmaterial führt in die grundlegenden Konzepte der objektorientierten Programmierung (Klassen, Objekte, Eigenschaften und Methoden) anhand der Programmiersprache Python und der Turtle-Grafik ein. Es beinhaltet Erklärungen zur Abstraktion sowie praktische Aufgaben zum Erzeugen von Objekten und zum Setzen von Eigenschaften.
Auffrischung und Erweiterung der Python-Kenntnisse
Dieses Kapitel dient der Repetition und Vertiefung grundlegender Python-Kenntnisse sowie der Einführung in die objektorientierte Programmierung. Anhand praktischer Aufgaben werden Daten aus Textdateien eingelesen, analysiert, aufbereitet und dargestellt.
Implementierung des Amb-Operators in verschiedenen Programmiersprachen
Das Material präsentiert Code-Beispiele und Erklärungen zur Implementierung des nicht-deterministischen Amb-Operators (ambiguous) in verschiedenen Programmiersprachen wie C#, C++, Ada und Pseudocode. Anhand eines Wortketten-Rätsels wird demonstriert, wie Such- und Backtracking-Probleme elegant gelöst werden können.
15 Puzzle Solver
Dieses Material präsentiert Implementierungen in ARM-Assembler und einer weiteren Programmiersprache zur automatischen Lösung des klassischen 15-Puzzles mittels Suchalgorithmen. Es demonstriert fortgeschrittene Programmierkonzepte und Algorithmik anhand eines konkreten Problembeispiels.
Advent of Code: Memory Maneuver (Baumstrukturen und Rekursion)
Eine Programmieraufgabe im Rahmen von Advent of Code, bei der ein hierarchischer Baum aus Zahlen eingelesen, repräsentiert und rekursiv ausgewertet werden muss. Das Material eignet sich hervorragend, um fortgeschrittene Programmierkonzepte wie rekursive Datenstrukturen und Baum-Traversierung praktisch anzuwenden.
Course of Raku: Rekursion
Dieses Unterrichtsmaterial aus einem Raku-Programmierkurs führt in das Konzept der Rekursion als Teil der funktionalen Programmierung ein. Es enthält Erklärungen, Quizzes sowie Programmierübungen zur Funktionsweise und Anwendung rekursiver Unterprogramme.
Course of Raku: Inheritance
Ein kompakter und verständlicher Lehrmittelabschnitt zur objektorientierten Programmierung mit Fokus auf Vererbung in der Programmiersprache Raku, inklusive Praxisbeispielen und Übungen.
Type objects and instances in Raku
Das Unterrichtsmaterial erklärt anhand von Beispielen in der Programmiersprache Raku den Unterschied zwischen Typobjekten (Klassennamen) und konkreten Instanzen. Es behandelt die Konzepte von Definition, Zustand und Objekterstellung im Rahmen der objektorientierten Programmierung.
Objects, I/O, and exceptions in programming
Dieses Unterrichtsmaterial deckt fortgeschrittene Programmierkonzepte wie objektorientierte Programmierung mit Klassen und Rollen, Ein- und Ausgabeoperationen sowie Fehlerbehandlung ab. Es enthält zahlreiche strukturierte Übungen und Quiz zu Themen wie Vererbung, Dateihandling und externen Programmen.
Course of Raku: Advanced - Modules and Code Organization
Dieses fortgeschrittene Material behandelt die Strukturierung, Organisation und das Teilen von Code in Raku. Es fokussiert sich auf das Schreiben und Importieren von Modulen, Introspection, Paketmanagement und Software-Distribution.
Implementierung von Schlangen in Python
Dieses Material erklärt die objektorientierte Implementierung des abstrakten Datentyps Schlange (Queue) in Python anhand einer Klasse. Anhand eines Python-Protokolls wird die Nutzung der Schlangenoperationen demonstriert und mit einer praktischen Aufgabe zum Testen ergänzt.
Exkurs: Umwandlung rekursiver Algorithmen in iterative Algorithmen
Dieses Unterrichtsmaterial behandelt die Umwandlung von rekursiven in iterative Algorithmen anhand von Beispielen wie der Fakultätsfunktion und der Ackermann-Funktion. Anhand von Python-Code und Aufgaben wird gezeigt, wie Zustände mithilfe von Stapeln simuliert und iterative Alternativen entwickelt werden können.
Rekursion und Iteration
Dieses Unterrichtsmaterial erklärt die grundlegenden Konzepte von Rekursion und Iteration als Modellierungswerkzeuge für wiederholte Berechnungen. Es zeigt die Vorzüge beider Ansätze auf und thematisiert die systematische Umwandlung zwischen rekursiven und iterativen Algorithmen.
Exkurs: Grenzen der rekursiven Verarbeitung bei realen Systemen an der Leibniz-Reihe
Das Material behandelt die Annäherung der Kreiszahl Pi mithilfe der Leibniz-Reihe. Anhand von Codebeispielen in Python werden iterative und rekursive Lösungsansätze verglichen und die Grenzen der Rekursionstiefe bei realen Systemen thematisiert.
Exkurs: Rekursive Berechnungen mit hohem Aufwand
Das Material behandelt rekursive Funktionen in Python anhand des Galtonbretts und der Ackermann-Funktion. Es analysiert die Ineffizienz kaskadenartiger und verschachtelter Rekursionen durch Beobachtung der Funktionsaufrufe und Reduktionsketten.
Übungen zu rekursiven Algorithmen mit dem RecursionTutor
Dieses Unterrichtsmaterial enthält praktische Programmier- und Analyseaufgaben zur Rekursion anhand konkreter Anwendungsbeispiele wie Zinseszins, Medikamentenabbau und geometrischen Wachstumsprozessen. Lernende nutzen einen interaktiven Tutor zur Visualisierung von Aufrufbäumen, um rekursive Algorithmen zu entwickeln, zu testen und zu verstehen.
Natürliche Zahlen als rekursive Datenstruktur
Das Unterrichtsmaterial erklärt anhand des Beispiels der Summenbildung, wie natürliche Zahlen als rekursive Datenstruktur aufgefasst und verarbeitet werden können. Es zeigt die Entwicklung und Ausführung rekursiver Algorithmen sowie deren Umsetzung in Python.
Wege im Galton-Brett
Dieses Unterrichtsmaterial führt anhand des Galton-Bretts in die mathematisch-informatische Modellierung und Untersuchung von Rekursionen ein. Die Lernenden bestimmen Anzahl von Wegen, analysieren Eigenschaften der entsprechenden Funktion und vergleichen verschiedene rekursive Implementierungen.
Einstieg in geschachtelte Listen anhand einer Hochzeitsgästeliste
Dieses Unterrichtsmaterial führt anhand eines praktischen Beispiels zur Verwaltung einer Gästeliste in Python in die Verarbeitung von Listen und insbesondere geschachtelten Listen ein. Die Lernenden vergleichen iterative und rekursive Ansätze zur Ausgabe von Datenstrukturen und analysieren den dazugehörigen Quelltext.
Rekursive Algorithmen für selbstähnliche Figuren und Fraktale in Python
Das Unterrichtsmaterial enthält praktische Programmierübungen zu rekursiven Algorithmen und Selbstähnlichkeit. Die Lernenden sollen geometrische Figuren wie das Sierpinski-Dreieck oder den Pythagoras-Baum in Teilprobleme zerlegen, entsprechende Algorithmen entwickeln und diese in Python implementieren.
Fallstudie - Selbstähnliche Figuren
Dieses Material behandelt die rekursive Problemreduktion am Beispiel von selbstähnlichen Figuren. Lernende entwerfen rekursive Algorithmen und setzen diese mithilfe von Turtlegrafik praktisch um.
Exkurs: Implementierung von Rekursion und den Türmen von Hanoi in Python
Das Material führt anhand des Konzepts der Rekursion und des Beispiels der 'Türme von Hanoi' in die Implementierung rekursiver Algorithmen in Python ein. Lernende schreiben und testen eigenständig rekursive Programme und untersuchen deren Komplexität.
Rekursive Problemreduktion am Beispiel der Türme von Hanoi
Dieses Unterrichtsmaterial erklärt das Konzept der rekursiven Problemlösung und der rekursiven Algorithmen anhand des klassischen Beispiels der Türme von Hanoi. Es führt schrittweise von der manuellen Lösung über die Problemreduktion bis hin zur Formulierung eines allgemeinen rekursiven Algorithmus.
Sierpiński Triangle and Recursion
Dieses Unterrichtsmaterial führt in das Konzept der Rekursion am Beispiel des Sierpiński-Dreiecks ein. Lernende implementieren eine rekursive Funktion, um Fraktale zu zeichnen, und erkunden dabei algorithmische Prinzipien.
Weihnachtslieder singen mit Raku: Das Metaobject Protocol (MOP) verstehen
Der Artikel erklärt anhand eines spielerischen Beispiels mit Weihnachtsliedern fortgeschrittene Programmierkonzepte in der Programmiersprache Raku. Dabei wird gezeigt, wie Klassen, Rollen und insbesondere das Metaobject Protocol (MOP) sowie Metamethoden zur Laufzeit manipuliert werden können.
Deklarative APIs in Raku entwerfen
Der Artikel erklärt, wie man in der Programmiersprache Raku elegante und deklarative APIs mithilfe von Blöcken, Signaturen und dynamischen Variablen baut. Anhand eines praktischen Beispiels zur Verzeichnisüberwachung wird gezeigt, wie Bibliotheksautoren boilerplate-armen Code für Endbenutzer ermöglichen.
Becoming a Time Lord in Raku
Der Artikel beschreibt praxisnah und mit viel Humor, wie man in der Programmiersprache Raku fehlende Zeitzonen-Unterstützung für DateTime-Objekte durch fortgeschrittene Techniken wie Method Wrapping, Mixins (Roles) und Fallbacks nachrüstet.
Typed Raku, Part 1: Taming State
Der Artikel erklärt anhand eines Schach-Beispiels das strenge Typsystem von Raku, einschliesslich Laufzeit-Typüberprüfungen, Variablentypen, Typsmileys, objektorientierter Datenmodellierung mit Klassen, Enums und Subsets.
Recursive Segment Trees and Lazy Propagation
Dieses Material erklärt die Implementierung von rekursiven Segmentbäumen und Lazy Propagation in C++. Es beschreibt mathematische Grundlagen wie Assoziativität und Distributivität sowie praktische Code-Beispiele für Bereichsabfragen und Updates.
Divide and Conquer on Ranges and Segment Trees
Der Text erklärt detailliert die theoretischen Grundlagen und die Implementierung von Segmentbäumen (Segment Trees) in C++. Dabei werden Divide-and-Conquer-Algorithmen, Bereichsanfragen (Range Queries) und effiziente Array-Updates behandelt.
Generative Recursion and Algorithms
Dieses Lehrmaterial behandelt das Konzept der generativen Rekursion im Gegensatz zur strukturellen Rekursion anhand von Beispielen wie Quick-Sort und dem Erstellen von Algorithmen. Es erläutert das Entwurfsrezept für generative Rekursionen inklusive Terminierungsargumenten.
Interscheded Data, S-Expressions and Trees in Racket
Dieses Lehrmaterial behandelt fortgeschrittene Programmierkonzepte in Racket mit Fokus auf ineinander verschränkte Datenstrukturen (intertwined data), wie z.B. Bäume, Wälder, S-Expressionen und binäre Suchbäume (BSTs). Es zeigt, wie man parallele Funktionen für komplexe Datenstrukturen entwirft und bestehende Implementierungen durch den Einsatz von Abstraktionen wie map oder local vereinfacht.
Programmierung und Abstraktion in Scheme (How to Design Programs)
Dieses Lehrmaterial behandelt fortgeschrittene Programmierkonzepte wie funktionale Abstraktion, parametrische Datendefinitionen und Funktionen als Werte anhand von Beispielen in einer Scheme-artigen Sprache. Es zeigt, wie man Redundanzen in Code und Datendefinitionen durch das Einführen von Parametern systematisch eliminiert.
Das Strategy Design Pattern in Perl am Beispiel von SOLID
Der Blogbeitrag erklärt das Strategy-Entwurfsmuster anhand eines Beispiels in Perl und zeigt, wie es im Sinne der SOLID-Prinzipien (insbesondere des Open/Closed-Prinzips) zu sauberem und erweiterbarem Code führt. Anhand von Textformatierungen wird demonstriert, wie bedingte Verzweigungen durch objektorientierte Strategien ersetzt werden.
SOLID Design Principles in Perl
Der Blogbeitrag erklärt die fünf SOLID-Prinzipien der objektorientierten Softwareentwicklung anhand von praktischen Beispielen in der Programmiersprache Perl. Für jedes Prinzip wird eine Verletzung des Konzepts gezeigt und anschliessend durch Refactoring eine saubere Lösung demonstriert.