Informatik 7: Prozedurale, Funktionale und Objektorientierte Programmierung
26.1 Lernziele
- Paradigmen nennen
- Ansätze vergleichen
- Funktionen erklären
- Prozeduren erklären
- Klassen erklären
- Objekte deuten
- Zustände erkennen
- Daten kapseln
- Vererbung nennen
- Beispiele zuordnen
- Lösungen begründen
- Code vergleichen
26.2 Lerninhalte
Prozedurale, funktionale und objektorientierte Programmierung lassen sich besonders gut verstehen, wenn sie als verschiedene Organisationsformen von Lösungen betrachtet werden, die jeweils eigene Stärken bei Struktur, Wiederverwendung, Übersicht und Modellierung besitzen.
Programmierparadigmen als unterschiedliche Denkweisen
Ein grundlegendes Verständnis entsteht dann, wenn Programmierung nicht nur als Schreiben von Code, sondern als Wahl einer bestimmten Denk- und Strukturierungsweise gesehen wird, mit der Probleme geordnet und Lösungen aufgebaut werden. Ein Programmierparadigma beschreibt eine typische Art, Programme zu strukturieren. Prozedurale Programmierung ordnet eine Lösung vor allem als Folge von Anweisungen und Prozeduren. Funktionale Programmierung denkt stärker in Funktionen, Eingaben und Rückgabewerten. Objektorientierte Programmierung organisiert Programme über Objekte, Zustände und Methoden. Python beschreibt Funktionen mit def und Klassen als Bündelung von Daten und Funktionalität; MDN erklärt Funktionen als grundlegende Bausteine von JavaScript und Klassen als Vorlagen zur Erzeugung von Objekten. Für den Unterricht ist wichtig, dass diese Paradigmen nicht als völlig getrennte Welten verstanden werden müssen. Das hochgeladene Skriptum zeigt am Beispiel von Python und JavaScript, dass Funktionen, Aufrufe und Methoden didaktisch bewusst thematisiert werden
können und dass textbasierte Programmierung an strukturierter Algorithmik anknüpfen sollte. So wird deutlich, dass Paradigmen nicht nur Theorie sind, sondern konkrete Denkwerkzeuge für den Aufbau von Programmen. Begriffe: Paradigma, Denkweise Struktur, Lösung Prozedur, Funktion Klasse, Objekt Methode, Zustand Vergleich, Ansatz
Prozedurale Programmierung
Prozedurale Programmierung wird besonders anschaulich, wenn Programme als geordnete Folge von Befehlen und Teilaufgaben verstanden werden, die schrittweise ausgeführt werden und dadurch eng mit algorithmischem Denken verbunden bleiben. In der prozeduralen Programmierung steht der Ablauf im Mittelpunkt. Ein Problem wird in Teilprozeduren oder Funktionen zerlegt, die nacheinander oder unter Bedingungen ausgeführt werden. Typische Elemente sind Variablen, Zuweisungen, Bedingungen, Schleifen und Funktionsaufrufe. Python beschreibt Kontrollstrukturen wie if, for und while im Abschnitt über Kontrollfluss, was sehr gut zur prozeduralen Sicht auf Programme passt. Ein einfaches Beispiel ist ein Rezeptprogramm oder ein Taschenrechner. Zuerst werden Eingaben gelesen, dann wird geprüft, welche Rechenoperation gewählt wurde, anschließend wird das Ergebnis berechnet und ausgegeben. Auch ein Fangspiel in Scratch, wie es im Skriptum thematisiert wird, folgt in vielen Teilen einer prozeduralen Logik: Bühne vorbereiten, Figuren erzeugen, Bewegungen definieren, Bedingungen prüfen, Punkte ändern. Damit passt prozedurales Denken besonders gut zu algorithmischen Schrittfolgen. Stärken der prozeduralen Programmierung liegen in Übersichtlichkeit bei linearen Abläufen, einfacher Nachvollziehbarkeit und engem Bezug zu Algorithmen. Grenzen zeigen sich oft bei sehr großen Programmen, wenn viele Datenzustände, viele zusammenhängende Objekte oder komplexe Wechselwirkungen organisiert werden müssen. Dann werden andere Paradigmen häufig hilfreicher. Beispiele: Ablauf, Schleife Bedingung, Variable Rezept, Taschenrechner Spielablauf, Eingabe Ausgabe, Schrittfolge Prozedur, Algorithmus
Funktionale Programmierung
Funktionale Programmierung wird besonders klar, wenn Programme als Verarbeitung von Eingaben zu Ausgaben gedacht werden und Funktionen nicht nur Befehlsblöcke, sondern eigenständige Werte und zentrale Bausteine der Lösung bilden. Die Python-Dokumentation zur funktionalen Programmierung betont Konzepte wie kleine, klar abgegrenzte Funktionen, Iteratoren, Generatoren und passende Bibliotheken wie itertools und
functools. MDN erklärt für JavaScript, dass Funktionen first-class objects sind, also wie Werte behandelt werden können: Sie können zugewiesen, weitergegeben und zurückgegeben werden. Genau diese Eigenschaften sind für funktionales Denken zentral. Ein einfaches Beispiel ist eine Notenliste, die verarbeitet wird. Eine Funktion berechnet den Durchschnitt, eine weitere filtert nur positive Ergebnisse, eine dritte wandelt Zahlen in Texturteile um. Statt viele Zustandsänderungen direkt nacheinander auszuführen, wird die Aufgabe als Kette von Transformationen gedacht. Auch Listenverarbeitung, Umwandlung von Text in Großbuchstaben oder das Erzeugen von Listen mit List Comprehensions in Python passen gut in diese Denkweise. Stärken funktionaler Programmierung liegen in klaren Abhängigkeiten zwischen Eingabe und Ausgabe, guter Zerlegbarkeit und oft hoher Wiederverwendbarkeit kleiner Funktionen. Für den Einstieg kann sie anspruchsvoller wirken, weil sie stärker auf Abstraktion und Komposition setzt als auf sichtbare Schrittfolgen. Gerade deshalb sind alltagsnahe Beispiele mit Datenumwandlung, Filtern und Berechnen didaktisch besonders geeignet. Beispiele: Funktion, Rückgabewert Filter, Transformation Durchschnitt, Textumwandlung List Comprehension, Generator Eingabe, Ausgabe Komposition, Verarbeitung
Objektorientierte Programmierung
Objektorientierte Programmierung wird besonders verständlich, wenn Programme als Zusammenwirken von Dingen mit Eigenschaften und Verhalten betrachtet werden, weil sich viele reale oder gedachte Systeme so gut als Modell strukturieren lassen. Python beschreibt Klassen als Mittel, Daten und Funktionalität zusammenzubündeln. MDN erklärt Klassen in JavaScript als Vorlagen zur Erzeugung von Objekten und betont zugleich, dass JavaScript prototypenbasiert ist, Klassen aber eine vertraute Form für Hierarchien und Vererbung bieten. Objektorientierte Programmierung arbeitet daher mit Begriffen wie Klasse, Objekt, Attribut, Methode, Kapselung und oft auch Vererbung. Ein Beispiel ist ein Spiel mit Figuren. Eine Klasse Spieler kann Position, Punkte und Lebenszahl speichern und Methoden wie bewegen() oder treffer_pruefen() besitzen. Eine Klasse Gegner kann ähnliches Verhalten haben, aber andere Werte oder zusätzliche Eigenschaften besitzen. Auch eine Bibliothekssoftware lässt sich objektorientiert denken: Buch, Leser, Ausleihe oder Konto sind Objekte mit eigenen Merkmalen und Aktionen. So wird OOP besonders nützlich, wenn viele Dinge mit Zustand und Verhalten zusammenarbeiten. Stärken objektorientierter Programmierung liegen in guter Modellierbarkeit komplexerer Systeme, klarer Bündelung von Daten und Verhalten sowie Wiederverwendbarkeit über Klassenstrukturen. Für Anfängerinnen und Anfänger kann sie schwieriger sein, weil nicht nur Abläufe, sondern auch Beziehungen zwischen Objekten verstanden werden müssen. Deshalb sind Beispiele mit Figuren, Geräten, Konten oder Sensoren besonders geeignet. Beispiele: Klasse, Objekt Attribut, Methode
Spieler, Gegner Buch, Konto Kapselung, Vererbung Zustand, Verhalten
Dieselbe Aufgabe in verschiedenen Paradigmen denken
Die Unterschiede der Paradigmen werden besonders deutlich, wenn dieselbe Aufgabe auf mehrere Arten beschrieben wird, weil dadurch sichtbar wird, wie sich Fokus, Struktur und Ausdrucksweise je nach Ansatz verändern. Nehmen wir ein einfaches Notensystem. Prozedural könnte der Ablauf lauten: Eingaben lesen, Summe berechnen, durch Anzahl teilen, Ergebnis ausgeben. Funktional könnte man mehrere Funktionen kombinieren, etwa eingaben_bereinigen, durchschnitt_berechnen, note_text. Objektorientiert könnte eine Klasse Schueler Noten speichern und eine Methode durchschnitt() bereitstellen. Die Aufgabe bleibt ähnlich, aber die Denkweise und die Struktur der Lösung verändern sich deutlich. Ein weiteres Beispiel ist ein Roboter oder Microcontroller. Prozedural wird eine Schrittfolge formuliert, funktional werden Sensordaten verarbeitet und in Ergebnisse überführt, objektorientiert werden Gerätebestandteile oder Zustände als Objekte organisiert. Das hochgeladene Skriptum mit Microbit-, Scratch- und Robotikbeispielen bietet dafür einen gut anschlussfähigen didaktischen Rahmen. Vergleiche: gleiche Aufgabe, andere Sicht Ablauf, Transformation Objekt, Zustand Rechnung, Spiel Roboter, Daten Struktur, Ausdruck
Funktionen, Methoden und Aufrufe unterscheiden
Ein zentrales Verständnis entsteht dann, wenn Lernende erkennen, dass Funktionen, Methoden und Aufrufe zwar ähnlich wirken können, aber in den Paradigmen unterschiedliche Rollen und Beziehungen zu Daten und Objekten besitzen. Python erklärt Funktionen mit def und Klassenmethoden als Verhalten von Instanzen. Das Skriptum betont didaktisch, dass Lernende bei der Definition eigener Funktionen Wahlfreiheit beim Namen besitzen, beim Aufruf von Memberfunktionen dagegen an vorhandene Namen gebunden sind. Genau diese Unterscheidung ist für das Verstehen objektorientierter Strukturen wichtig. Didaktisch hilfreich ist ein Vergleich: Eine Funktion wie berechne_preis() arbeitet oft allgemeiner mit übergebenen Werten. Eine Methode wie konto.einzahlen() gehört zu einem Objekt und verändert oder nutzt dessen Zustand. Im funktionalen Stil wird die Funktion stärker als unabhängiger Baustein gesehen, im objektorientierten Stil als Verhalten eines Objekts. Diese Differenz hilft, Paradigmen nicht nur über Schlagworte, sondern über konkrete Sprachmittel zu verstehen. Begriffe: Funktion, Methode Aufruf, Objekt
Parameter, Rückgabe Instanz, Member Definition, Verhalten Zustand, Zugriff
Paradigmen im Unterricht sinnvoll aufbauen
Didaktisch tragfähig wird das Thema vor allem dann, wenn Lernende zunächst algorithmische Grundideen verstehen und erst darauf aufbauend Funktionen, Klassen und textbasierte Strukturen in geeigneten Beispielen nachvollziehen und anwenden. Das Skriptum betont ausdrücklich, dass im Lehrplan nicht eine bestimmte Programmiersprache, sondern Kompetenzen wie Algorithmen entwerfen, formal darstellen, implementieren und testen im Vordergrund stehen. Außerdem wird vor einem Unterricht gewarnt, der sich nur auf Syntax konzentriert. Als didaktischer Weg werden visuell-symbolische Ansätze, hybride Übergänge und projektorientierte Beispiele mit Scratch, MakeCode, Microbit oder Open Roberta beschrieben. Für dieses Kapitel bedeutet das: Prozedurale Sichtweisen können über Schrittfolgen und Scratch gut eingeführt werden, funktionale Elemente über kleine Funktionen zur Datenverarbeitung, objektorientierte Ideen über Figuren, Geräte oder Klassenmodelle. So bleiben Paradigmen verständlich, ohne in formale Überforderung zu kippen, und werden zugleich anwendbar auf reale Unterrichtsprojekte. Aspekte: Algorithmik, Syntax Projekt, Hybridansatz Scratch, Python JavaScript, Microbit Funktion, Klasse Didaktik, Aufbau
26.3 Weiterführende Links
- Python, Funktionen.
- Python, Klassen.
- Python, funktionale Programmierung.
- Python, List Comprehensions.
- JavaScript, Funktionen.
- JavaScript, First-class Functions.
- JavaScript, Klassen.
26.4 Aufgaben für den Unterricht
26.4.1 Eine Aufgabe in drei Paradigmen betrachten
Ein besonders hoher Lerneffekt entsteht, wenn dieselbe Problemstellung nacheinander prozedural, funktional und objektorientiert gedacht wird, weil Unterschiede in Struktur, Blickrichtung und Lösungslogik dadurch unmittelbar sichtbar und sprachlich gut vergleichbar werden. Die Klasse erhält eine einfache Aufgabe, etwa Notendurchschnitt berechnen, Warenkorb verwalten oder Spielfigur bewegen. Die Gruppen beschreiben zuerst eine prozedurale Lösung als Schrittfolge, danach eine funktionale Lösung mit Eingaben und Rückgabewerten und schließlich eine objektorientierte Lösung mit Klassen, Attributen und Methoden. Anschließend vergleichen sie, welche Denkweise jeweils im Vordergrund steht und welche Darstellung ihnen für die Aufgabe besonders passend erscheint.
- gleiche Aufgabe, drei Sichten
- Schrittfolge, Funktion
- Klasse, Objekt
- Vergleich, Unterschiede
- Passung, Begründung
- Darstellung, Reflexion
26.4.2 Prozedurale Abläufe aus Alltagssituationen entwickeln
Prozedurale Programmierung wird besonders verständlich, wenn alltägliche Handlungen in eindeutige, geordnete und überprüfbare Schritte zerlegt werden, weil der enge Zusammenhang zwischen Algorithmus, Kontrollstruktur und Programmablauf so sehr anschaulich erfahrbar wird. Die Gruppen erhalten Alltagssituationen wie Getränkeautomat, Passwortprüfung, Ticketkontrolle oder Quizspiel. Sie formulieren eine lineare oder verzweigte Schrittfolge mit Bedingungen, Wiederholungen und klarer Reihenfolge. Danach übertragen sie diese in Pseudocode oder Blockcode. In der Auswertung wird besprochen, wie stark prozedurales Denken den Ablauf und weniger die „Dinge“ des Problems in den Mittelpunkt stellt.
- Alltagssituation, Schrittfolge
- Bedingung, Schleife
- Reihenfolge, Ablauf
- Pseudocode, Blockcode
- Prüfung, Korrektur
- Prozedur, Erklärung
26.4.3 Funktionale Lösungen mit kleinen Bausteinen entwerfen
Funktionale Programmierung entfaltet ihre Stärke besonders dann, wenn komplexere Aufgaben in kleine, klar abgegrenzte Funktionen zerlegt werden, die aus Eingaben berechenbare Ausgaben erzeugen und dadurch gut kombinierbar und übersichtlich bleiben. Die Klasse bearbeitet Aufgaben wie Temperaturen umrechnen, Texte bereinigen, Noten in Beurteilungen umwandeln oder Listen filtern. Die Gruppen entwerfen mehrere kleine Funktionen, die jeweils nur eine klar umrissene Aufgabe übernehmen. Danach kombinieren sie diese Bausteine zu einer Gesamtlösung. In der Auswertung vergleichen sie, wie stark dieser Ansatz auf Transformation und weniger auf veränderliche Zustände setzt.
- Eingabe, Ausgabe
- kleine Funktion, Baustein
- Filter, Umwandlung
- Kombination, Gesamtlösung
- Klarheit, Wiederverwendung
- Funktional, Vergleich
26.4.4 Objektorientierte Modelle zu realen Systemen gestalten
Objektorientiertes Denken wird besonders gut gelernt, wenn reale oder gedachte Systeme in Dinge mit Eigenschaften und Verhalten übersetzt werden, weil Klassen, Objekte und Methoden dadurch nicht abstrakt, sondern als Modellierungswerkzeuge erfahrbar werden. Die Gruppen wählen ein System wie Bibliothek, Schulcafé, Spielwelt, Roboter oder Tierheim. Danach bestimmen sie passende Klassen, etwa Buch, Kunde, Spieler oder Sensor, und notieren dazu Attribute und Methoden. Im nächsten Schritt beschreiben sie, wie Objekte miteinander interagieren. Anschließend begründen sie, warum eine objektorientierte Sicht auf dieses Problem sinnvoll erscheint.
- System, Klassen
- Objekt, Attribut
- Methode, Verhalten
- Interaktion, Modell
- Auswahl, Begründung
- OOP, Darstellung
26.4.5 Funktionen und Methoden gezielt unterscheiden
Ein vertieftes Verständnis entsteht, wenn Lernende bewusst zwischen allgemeinen Funktionen und objektgebundenen Methoden unterscheiden, weil dadurch zentrale Unterschiede zwischen funktionaler und objektorientierter Struktur klarer und fachsprachlich präziser werden. Die Lehrkraft gibt kurze Beispiele vor, etwa berechne_preis(), spieler.bewegen(), filtere_liste() oder konto.einzahlen(). Die Gruppen ordnen zu, was eher als freie Funktion und was eher als
Methode verstanden wird. Danach formulieren sie zu jedem Beispiel eine Begründung mit Bezug auf Eingaben, Zustand und Objektbezug. In der Auswertung werden Zweifelsfälle diskutiert und begrifflich geschärft.
- Funktion, Methode
- Objektbezug, Zustand
- Eingabe, Rückgabe
- Zuordnung, Begründung
- Beispiel, Fachsprache
- Abgrenzung, Klärung
26.4.6 Dieselbe Codeidee vergleichen und umformen
Besonders nachhaltiges Lernen entsteht, wenn eine vorhandene Lösung in ein anderes Paradigma übertragen wird, weil Schülerinnen und Schüler dadurch nicht nur Wiedererkennen üben, sondern die jeweilige Denkweise aktiv umformen und reflektieren müssen. Die Gruppen erhalten eine einfache prozedurale Lösung, etwa für ein Punktesystem oder eine Auswahllogik. Danach übertragen sie dieselbe Idee entweder in eine stärker funktionale Struktur mit kleinen Funktionen oder in ein objektorientiertes Modell mit Klassen und Methoden. Anschließend vergleichen sie Ursprung und neue Form und beschreiben, was sich an Lesbarkeit, Zustandsverwaltung und Struktur verändert hat.
- Ursprung, Umformung
- Prozedural, funktional
- Objektorientiert, Vergleich
- Struktur, Lesbarkeit
- Zustand, Veränderung
- Transfer, Reflexion
26.4.7 Paradigmen an Spiel- oder Robotikbeispielen untersuchen
Lernwirksame Zugänge entstehen besonders dann, wenn abstrakte Programmierideen an bewegten, sichtbaren und interaktiven Beispielen bearbeitet werden, weil Unterschiede zwischen Ablauf, Funktion und Objektverhalten in Spielen oder Robotik besonders deutlich hervor treten. Die Klasse arbeitet mit einer Spielidee oder einem Robotikproblem wie Linien folgen, Kollision erkennen oder Punkte zählen. Die Gruppen analysieren, welche Teile des Problems prozedural gedacht werden können, wo funktionale Verarbeitung sinnvoll wäre und welche Elemente sich gut als Objekte modellieren lassen. Danach halten sie ihre Beobachtungen in einer strukturierten Übersicht fest und präsentieren Beispiele aus dem gewählten Szenario.
- Spiel, Robotik
- Ablauf, Verarbeitung
- Objekt, Zustand
- Sensor, Figur
- Übersicht, Präsentation
- Paradigma, Beispiel
26.4.8 Fehlvorstellungen zu Paradigmen korrigieren
Ein hoher Lerneffekt entsteht, wenn typische Missverständnisse nicht nur berichtigt, sondern mit Gegenbeispielen widerlegt werden, weil dadurch ein genaueres und belastbareres Begriffsverständnis aufgebaut wird. Die Lehrkraft gibt Aussagen vor wie „Objektorientiert heißt nur mit Klassen arbeiten“, „Funktional bedeutet ohne Funktionenaufruf“ oder „Prozedural ist nur für einfache Programme geeignet“. Die Gruppen prüfen diese Aussagen, korrigieren sie und formulieren zu jeder eine kurze passende Erklärung mit Beispiel. Anschließend vergleichen sie, welche Missverständnisse besonders häufig auftreten und warum sie naheliegend sind.
- Fehlaussage, Korrektur
- Gegenbeispiel, Erklärung
- Klasse, Funktion
- Ablauf, Objekt
- Missverständnis, Klärung
- Begriffe, Sicherung
26.4.9 Ein Lernplakat mit Leitbeispielen gestalten
Konzepte werden besonders dauerhaft gesichert, wenn sie mit wenigen, prägnanten Leitbeispielen verbunden und übersichtlich dargestellt werden, weil dadurch aus vielen Einzelbeobachtungen ein klar strukturiertes Gesamtbild der drei Paradigmen entsteht. Die Gruppen gestalten ein Lernplakat oder digitales Übersichtsblatt zu prozeduraler, funktionaler und objektorientierter Programmierung. Für jedes Paradigma notieren sie typische Merkmale, passende Schlüsselbegriffe und ein oder zwei Leitbeispiele. Anschließend markieren sie Gemeinsamkeiten und Unterschiede zwischen den drei Ansätzen. Die Produkte werden im Raum verglichen und zu einer gemeinsamen Klassenübersicht verdichtet.
- Lernplakat, Übersicht
- Merkmale, Leitbeispiele
- Prozedural, funktional
- Objektorientiert, Vergleich
- Gemeinsamkeit, Unterschied
- Klassenprodukt, Sicherung
26.4.10 Eine begründete Paradigmenwahl treffen
Transfer gelingt besonders gut, wenn Schülerinnen und Schüler nicht nur Paradigmen erklären, sondern für eine neue Aufgabe bewusst auswählen und begründen, welcher Ansatz ihnen am passendsten erscheint. Zum Abschluss erhalten die Gruppen neue Problemszenarien wie Terminplaner, Medienverwaltung, Textanalyse oder Spielfigurensystem. Sie entscheiden, welches Paradigma für den Einstieg am geeignetsten ist und ob Mischformen sinnvoll wären. Danach formulieren sie ein kurzes Urteil mit Begründung. So wird deutlich, dass Paradigmen keine reinen Schubladen sind, sondern Werkzeuge zur bewussten Strukturierung von Lösungen.
- neue Aufgabe, Wahl
- Paradigma, Passung
- Mischform, Begründung
- Terminplaner, Spielsystem
- Struktur, Urteil
- Transfer, Entscheidung
Grundlage: Informatik – Lehrband 7. Klasse, Final V1.7 (2026).