Einführung in die imperative Programmierung

Stand: 29.04.2009

Zeitrichtwert: 18 Unterrichtsstunden

Inhaltliche Schwerpunkte Bemerkungen

Vorbemerkung

Diese Unterrichtsreihe setzt die Unterrichtsreihe Algorithmisches Problemlösen fort, in der Grundkonzepte der imperativen Programmierung spielerisch mit Schratch erarbeitet wurden. Ziel ist es, das erworbene Wissen und Können zu vertiefen, indem jetzt eine richtige Programmiersprache beim Problemlösen eingesetzt wird. Diese Vorgehensweise erlaubt es, grundlegende Konzepte der imperativen Programmierung in einem neuen Kontext reaktivierend zu wiederholen.

Als Programmiersprache nutzen wir Python. Python ist in erster Linie ... eine Sprache für professionelle Programmierer. Aber in den letzten Jahren habe ich begriffen, dass es ebenso eine der besten Sprachen ist, um Programmieren zu lernen. So beschreibt der "Erfinder" Guido von Rossum in der Einleitung zum Buch Python für Kids, wie er die von ihm entwickelte Sprache Python heute sieht.

Die Programmierwelt Python stellt Lernenden keine großen Verständnisbarrieren in den Weg. Sie ermöglicht sehr einfach strukturierte Programme und erlaubt es, diese interaktiv zu testen. Zudem sind alle Wege zu modernen, weiterführenden Konzepten offen.

Die folgende Unterrichtsreihe ist problemorientiert angelegt. Im Mittelpunkt steht der Problemkontext Ver- und Entschüsselung von Nachrichten. Bei der Bearbeitung spezieller Problemstellungen kommen schrittweise zentrale Konzepte der imperativen Programmierung zum Einsatz. Zudem wird ihre Umsetzung in Python aufgezeigt. Im Vordergrund steht dabei stets die Vermittlung allgemeiner Strukturen, die Behandlung programmiersprachlicher Details orientiert sich an der Umsetzung der algorithmischen Lösungen. Für weitergehende Informationen siehe auch inf-schule.

Variablen (2)

  • Variablen
  • Zuweisungen

Zum Einstieg wird das Verschlüsselungsverfahren nach Caesar erarbeitet. Anschließend wird Python als Werkzeug zur Verschlüsselung einzelner Zeichen eingeführt: Mit Variablen und Zuweisungen können einfache Zeichenumwandlungen interaktiv vorgenommen werden. Dabei wird ein erster Umgang mit der Programmierumgebung von Python erlernt.

Programme (2)

  • Programm
  • EVA-Struktur

Das interaktive Ausführen von Anweisungen ist mühevoll, da man die Anweisungen immer wieder neu eintippen muss. Im nächsten Schritt erfahren die Schülerinnen und Schüler, wie man Programme, die beliebig oft ausgeführt werden können, zur Durchführung von Anweisungsfolgen nutzt. Zudem lernen Sie Möglichkeiten kennen, Benutzereingaben zu verarbeiten und auszugeben und Programme entsprechend dem EVA-Prinzip zu strukturieren.

Datentypen (2)

  • Einfache Datentypen

Schnell stößt man auf das Problem, dass Operationen mit bestimmten Daten nicht ausgeführt werden können, wenn der Datentyp nicht passt. Dies ist Anlass, sich etwas intensiver mit Datentypen zu beschäftigen. Die im Problemkontext benötigten Datentypen werden intensiver besprochen, weitere Datentypen werden nur kurz angesprochen.

Fallunterscheidungen (2)

  • if-Anweisung

Zunächst wird ein Problem gelöst, bei dem Anweisungen nur unter einer bestimmten Bedingung durchgeführt werden: Beim Verschieben von Zeichen muss man den Fall, dass über das Ende des Alphabets veschoben wird, gesondert behandeln.

Die Schülerinnen und Schüler kennen Fallunterscheidungen als Kontrollstruktur zur adäquaten Beschreibung einer Problemlösung. Zur Umsetzung in Python benötigen sie nur Informationen darüber, wie Fallunterscheidungen hier dargestellt werden. Inwieweit bei dieser Gelegenheit noch einmal wesentliche Aspekte der Kontrollstruktur Fallunterscheidung angesprochen und geübt werden müssen, hängt von der Lerngruppe ab.

Wiederholungen (3)

  • while-Anweisung
  • for-Anweisung

Zunächst wird ein konkretes Problem gelöst, bei dem Anweisungen wiederholt durchgeführt werden müssen: Beim Verschlüsseln eines Textes nach der Caesar-Methode muss wiederholt jedes Zeichen einzeln codiert werden.

Die Schülerinnen und Schüler kennen Wiederholungen als Kontrollstruktur zur adäquaten Beschreibung einer Problemlösung. Zur Umsetzung in Python benötigen sie nur Informationen darüber, wie Wiederholungen hier dargestellt werden. Inwieweit bei dieser Gelegenheit noch einmal wesentliche Aspekte der Kontrollstruktur Wiederholung angesprochen und geübt werden müssen, hängt von der Lerngruppe ab.

Bedingungen (1)

  • logische Operatoren

Das Vorbereiten von Texten (Umwandlung von Umlauten, ...) ist Anlass, sich mit komplexeren Bedingungen auseinanderzusetzten. Hierbei werden die logischen Grundoperatoren nicht, und und oder wiederholt und deren Implementierung in Python aufgezeigt.

Unterprogramme (6)

  • Funktionen
  • Prozeduren
  • Parameter

Wir gehen hier davon aus, dass Unterprogramme noch nicht im Rahmen der Unterrichtsreihe Algorithmisches Problemlösen behandelt wurden.

Ausgangspunkt bildet die Analyse umfangreicher Programme zum Vorbereiten und Verschlüsseln von Texten. Durch einen Vergleich eines additiv aus vielen Anweisungen zusammengesetzten Programms und eines mit Unterprogrammen strukturierten Programms werden die Vorteile dieser Art der Strukturierung erarbeitet.

Schwerpunkt der weiteren Erarbeitung bildet dann das Funktionskonzept und dessen Implementierung in Python. Das Funktionskonzept ist von besonderer Bedeutung, da es die EVA-Sichtweise (Eingaben werden verarbeitet und als Ausgaben zur weiteren Verarbeitung zurückgegeben) unterstützt. Prozeduren als Unterprogramme ohne Rückgaben bilden einen Spezielfall, der nur dann zum Tragen kommt, wenn das Unterprogramm Seiteneffekte (wie Ausgaben auf dem Bildschirm) produziert. Die Übergabe von Daten mit Hilfe von Parametern wird von Beginn an genutzt und thematisiert.

Im Wahlfach reicht es, ein erstes Verständnis für das Unterprogrammkonzept zu entwickeln. Auf spezifische Probleme wie Seiteneffekte, Sichtbarkeit von Variablen, Parameterübergabemechanismen ... sollte man nur bei Bedarf eingehen.

Die Verwendung von Funktionen (und Prozeduren) muss vielfältig geübt werden. Die betrachteten Beispiele sollten gut gewählt werden und als Muster für weitere Programmierversuche dienen können. Es bietet sich auch an, Algorithmen, die bereits in der Unterrichtsreihe Algorithmisches Problemlösen bearbeitet wurden, noch einmal aufzugreifen.

Valid XHTML 1.0 Strict Valid XHTML 1.0