Informatik 
Fachdidaktik

- Einführung in die Programmierung -

Dokumente - Ergebnisse

S. Spolwig
Hauptseminar
SS 2002

[Aktuelles | Dokumente | Inhalt | Literatur | Organisation]
[Startseite]


Mark Ausborn:

 

Aufgabenstellung: *

Einführung *

Überblick der zu behandelnden wichtigen Komponenten und Begriffe des ersten Unterrichtsjahrs: *

Anforderungen an eine Programmierumgebung für den Unterrichtseinsatz: *

Wahl der Programmierumgebung *

Vorstellung meiner gewählten Programmierumgebung "Kara" *

Kara und seine Welt *

Programmierung von Kara *

Vor und Nachteile der variablenfreien Programmierumgebung "Kara" *

Einordnung der Stunden in den Berliner Rahmenplan für Unterricht *

 

 Aufgabenstellung:

Häufig wird immer noch Informatikunterricht in den Schulen als Programmierkurs durchgeführt und missverstanden, wobei den Schülern oft ein völlig falsches Bild von den Aufgaben der Informatik und Softwareentwicklung vermittelt wird. In der jüngeren didaktischen Diskussion hat sich eine Verschiebung der Inhalte abgezeichnet, die Modellierung und Objektorientierung in den Mittelpunkt stellt.
Dieser Ansatz wird als vielversprechend beschrieben, stellt aber erhebliche Anforderungen an Lernende und Lehrende. Der Schüler lernt eine neue Fremdsprache, daneben Konzepte der Softwaretechnik und die Bedienung eines professionellen Entwicklungstools. Diese drei Ebenen stellen am Anfang ein Gemenge von kaum überschaubarer Komplexität dar.

Vor dem Hintergrund realitätsnaher Rahmenbedingungen soll versucht werden, ein schlüssiges Unterrichtskonzept für das erste Halbjahr der Programmierung zu entwickeln, das zur objektorientierten Modellierung und Programmierung hinführt.

Das Ergebnis soll ein Lehrplanentwurf sein sowie die Entwicklung von 2 bis3 Unterrichtseinheiten, die gewissermaßen 'starkes' auf dem Wege zum gewünschten Ergebnis darstellen.

Einführung

Im Folgenden möchte ich eine Unterrichtseinheit von 18 Unterrichtsstunden vorstellen, die den Einstieg in die Programmierung bzw. den Einstieg in den Unterricht der Informatik in der Klasse 11 eines allgemeinbildenden Gymnasiums des ersten Halbjahres darstellen könnte.

Ich halte es dazu für notwendig, einen Überblick über die wichtigen Komponenten und Begriffe zu geben, die im ersten Unterrichtsjahr besprochen und berücksichtigt werden sollten. Im Einstieg sollte ein Teil dieser Begriffe eingeführt werden, so dass später darauf zurückgegriffen werden kann.

Ausgangspunkt im Unterricht ist immer ein Problem, welches für einen Computer umgesetzt werden muss. Hierzu ist es wichtig, dass der Schüler zwischen verschiedenen Sichtweisen auf ein Programm zu unterscheiden vermag. Ein vorliegendes Problem muss für den Rechner in eine bestimmte Struktur gebracht werden. Hierzu muss der Schüler mit verschiedenen Entwurfs- und Analysemethoden vertraut gemacht werden. Mit Hilfe eines Modells wird ein reeller Sachverhalt nachgebildet, der mit Hilfe von Algorithmen umgesetzt wird. Dieses muss geübt werden!

Einen wichtigen Stellenwert nehmen dabei die Kontrollstrukturen in der Computersprache ein. Hier sind die Zählschleife (FOR-Schleife), die Vor-, die Nachprüfende-Schleife (WHILE- , REPEAT-Schleife) und die Fallbehandlung (IF ) zu benennen.

Mit den Schlüsselworten sind die vorgegebenen Codewörter (FOR, WHILE, REPEAT, PRINT, INPUT und alle weiteren Befehle), mit denen vorgegebene Funktionen abgerufen werden können, gemeint. Der Schüler sollte den Rechner zu einem bestimmten Maß selbständig beherrschen lernen. Hier seien nur Starten von Programmen, Programmieren in vorgegebenen Programmierumgebungen und Fehlerbehebung durch bestimmte Werkzeuge, dem Debugger genannt. Beim Entwickeln eigener Programme ist es häufig nötig, dass der Schüler sich konzeptionelle Gedanken bezüglich der Variablen, der Typenwahl, der Funktionseinheiten (Prozeduren) und Parameterübergaben macht.

Diese und weitere Aspekte sind in folgender Tabelle als Übersicht dargestellt.

 

Überblick der zu behandelnden wichtigen Komponenten und Begriffe des ersten Unterrichtsjahrs:

 

( aus dem Hauptseminar Fachdidaktik der Informatik, HU-Berlin unter der Leitung von Herrn Spolwig, 2.7.2002)

Analyse/

Entwurf Methode

Begriffe Sprache Umgebung Konzepte
Struktogramm (Nassi-Schneider Diagramm) Programm, Sichtweisen auf ein Progr. Kontrollstruk-turen Bedienung Variablen Konz.
OOA Algorithmus Schlüsselworte einer Sprache Debugger Typen Konz.
Strukturen Methoden Syntax Fehler

(logische,Syntax, semantische)

Kontrollstrukturen
Klassen Model   Compiler / Interpreter Prozedur Konz.
        Parameterübergabe
        (Unit Konz.)

Neben den Inhalten, für die sich eine Programmierumgebung eignet, sind auch einige wichtige "äußere" Faktoren, die sich im Umgang im Schulalltag bemerkbar machen, zu berücksichtigen.

Da sind zunächst einmal die Kostenfaktoren. Sinnvoll ist sicherlich eine kostengünstige Programmierumgebung zu wählen (am besten kostenlos), die der Schüler auch zu Hause benutzen kann ohne Schutzrechte zu verletzen. Zum anderen sollte sie auch im Unterrichtsalltag leicht konfigurierbar und störungssicher sein, so dass systembetreuende Arbeiten möglichst gering gehalten werden. Diese und weitere Faktoren sind unten tabellarisch dargestellt.

 

Anforderungen an eine Programmierumgebung für den Unterrichtseinsatz:

( aus dem Seminar "Analyse, Planung, Beurteilung von Informatikunterricht", HU-Berlin unter der Leitung von Herrn Penon, 26.5.2002)

Universalität Sicherheit Kosten / Verfügbarkeit Benutzbarkeit
vielfältiger Anwendungsbereich stabil kostengünstig benutzerfreundlich
Netzwerkfähig wartungsarm frei verfügbar voreinstellbare Oberfläche
Plattform unabhängig absturzsicher   allgemeine Funktionalität
Netzwerkunterstütz-ung     aussagekräftige Fehlermeldungen
Kompatibilität     leichte Bedienbarkeit/ kurze Einarbeitungszeit
leichte Konfigurierbarkeit     deutschsprachig /evtl. Englisch

 

 

Wahl der Programmierumgebung

Wie sollte man die Schüler in die Programmierung einführen? Beginnt man unmittelbar mit einer Programmiersprache wie Java, so muss man von Anfang an sehr viele Details berücksichtigen, die aber für das Verständnis des Programmierens nicht relevant sind. Im Gegenteil, sie behindern die Schüler bei der Arbeit, ihre Ideen und Abläufe in ein Programm umzusetzen. Diese bewirkt häufig Frust und Demotivation.

Was ist die Grundlage der Programmierung? Was macht die Tätigkeit eines Programmierers aus, unabhängig von der Sprache, in der er programmiert? In erster Linie muss vermittelt werden, dass das Problemlösen im Vordergrund steht. Dabei sollen die Schüler lernen, strikt analytisch vorzugehen und ihre Gedanken, Problemlösungen in Abläufe zu fassen.

Für meinen Unterrichtseinstieg wählte ich daher eine leicht zu bedienende variablenfreie pädagogische Programmierumgebung.

Die Schüler werden an eine graphische Programmierumgebung herangeführt, wobei die Elemente mit der Maus zusammengestellt werden. Dadurch können keine Syntaxfehler entstehen, so dass die Konzentration im Unterricht auf die Modellierung der Aufgabe konzentriert wird. Das Produkt der Schüler ist die bildliche Darstellung eines endlichen Automaten.

Die Funktionstüchtigkeit und die Erfüllung der Aufgabenstellung kann sofort durch Ausführung des Programms erprobt werden. Durch den spielerischen handlungsorientierten Ansatz können die Schüler sich selbständig den Unterrichtsstoff erarbeiten. Die Staffelung der Aufgaben im Schwierigkeitsgrad ermöglicht ein leistungsdifferenzierendes Arbeiten der Schüler und führt zu einer besseren Verinnerlichung des Gelernten an immer komplexeren Modellen und Lösungswegen.

 

Vorstellung meiner gewählten Programmierumgebung "Kara"

Kara ist ein Marienkäfer, der in einer einfachen graphischen Welt auf dem Bildschirm lebt. Er kann programmiert werden, um in seiner Welt Aufgaben zu erledigen. Wenn die Programme laufen, ist dieses sofort erkennbar.

 Kara und seine Welt

Kara lebt in einer rechteckigen Welt, die aus einzelnen Feldern besteht. Er kann sich nur von Feld zu Feld bewegen.

Auf den Feldern in dieser Welt gibt es

  • unbewegliche Baumstümpfe: Wenn Kara in einen Baumstumpf läuft, beschwert er sich. Auf einem Feld mit einem Baumstumpf kann kein anderer Gegenstand liegen.
  • verschiebbare Pilze: Läuft Kara in einen Pilz hinein, so verschiebt er ihn geradeaus ins nächste Feld. Allerdings ist er zu schwach, um zwei Pilze miteinander zu verschieben! Kara kann nicht auf einem Feld stehen, das von einem Pilz belegt ist.
  • Kleeblätter: Kara kann beliebig viele Kleeblätter aufnehmen. Auch hat er einen unerschöpflichen Vorrat an Blättern zum Ablegen. Kara kann auf einem Kleeblatt stehen, und ein Pilz kann über einem Kleeblatt sein.

Damit Kara programmiert werden kann, verfügt er über Sensoren. Diese erlauben es ihm, seine unmittelbare Umgebung wahrzunehmen:

Stehe ich vor einem Baumstumpf?

Ist links neben mir ein Baumstumpf?

Ist rechts neben mir ein Baumstumpf?

Stehe ich vor einem Pilz?

Stehe ich auf einem Kleeblatt?

Das ist alles, was Kara über die Welt weiß! Er weiß nicht, auf welchem Feld er steht oder in welche Himmelsrichtung er schaut. Natürlich könnte man Kara zwei Sensoren für seine Richtung spendieren. Aber die vorhandenen fünf Sensoren sollten ausreichen, um viele interessante und anspruchsvolle Aufgaben zu lösen!

Kara kennt nur wenige Befehle:

Mache einen Schritt vorwärts

Drehe um 90° nach links

Drehe um 90° nach rechts

Lege ein Kleeblatt hin

Nimm ein Kleeblatt auf

 

Programmierung von Kara

Kara und Automaten – Kara’s Programmierung

Kara wird programmiert, indem ein Automat erstellt wird. Als Beispiel wird ein einfaches Programm geschrieben, das Kara bis zum nächsten Baumstumpf führt und dort um 180° dreht. Die Abbildung zeigt eine mögliche Situation.

Die erste Frage beim Entwurf eines Automaten ist immer, welche Zustände brauche ich? Hier lautet die Antwort: einen Zustand "suche Baum" und einen Zustand "STOP". Im Zustand "suche Baum" soll Kara solange verweilen, bis er einen Baum gefunden hat. Dann soll er in den Zustand "STOP" gehen. Dieser Zustand existiert in jedem Automaten, der für Kara erstellt wird! Aus ihm gibt es keine Übergänge. Wenn er erreicht ist, hört Kara mit der Programmausführung auf.

Für den Zustand "suche Baum" stellt sich die Frage, welche Sensoren braucht Kara in diesem Zustand? Der Einfachheit halber kann der Benutzer bei Kara auswählen, welche Sensoren in welchem Zustand relevant sind. Alle anderen werden einfach ignoriert. Für "suche Baum" braucht es nur den Sensor "tree in front?"

Nach der Auswahl der Sensoren für den Zustand "suche Baum" kommen die Übergänge an die Reihe. Mit den Sensoren erkundet Kara seine Umwelt. Sie sind gleichermassen die Fragen, die er an seine Umgebung stellt: "Stehe ich vor einem Baum?" Je nachdem, wie die Antwort auf diese Frage ausfällt, muss Kara sich anders verhalten. "Verhalten" heisst, vorgegebene Befehle ausführen und in einen Zustand übergehen.

In unserem Beispiel: Wenn Kara noch nicht vor einem Baum steht, kann er einen Schritt nach vorne tun und im Zustand "suche Baum" verharren. Steht er aber vor einem Baum, vollzieht er die 180° Drehung und geht in den Zustand "STOP" über. Damit ist die Aufgabe erfüllt und das Programm beendet.

Die Abbildung zeigt, wie das Programm in Kara’s Entwicklungsumgebung aussieht. Die Tabelle muss zeilenweise gelesen werden. Die oberste Zeile ist nur Beschriftung. Ganz links in ihr sind die Sensoren abgebildet, die für diesen Zustand ausgewählt wurden. Diese Sensoren sind die "Fragen". Die erste Spalte gibt in der restlichen Tabelle an, für welche Sensorwerte der Rest der Zeile ausgeführt wird. Anders gesagt, bei welchen "Antworten" der Übergang gewählt wird. Der Übergang ist in der zweiten und dritten Spalte beschrieben. Er gibt die Befehle an, die Kara auszuführen hat, und den Zustand, in den Kara nach der Ausführung der Befehle übergehen soll.

 Jeder Zustand ist eine Reihe von "wenn-dann"-Anweisungen an Kara. Die Tabelle ist zu lesen als:

  • "wenn Kara nicht vor einem Baum steht, dann soll er einen Schritt vorwärts machen und danach in den Zustand "suche Baum" übergehen",
  • "wenn Kara vor einem Baum steht, dann soll er zwei Rechtsdrehungen machen und danach in den Zustand STOP übergehen".

Das ist das ganze Programm! Es ist unabhängig davon, wo und mit welcher Himmelsrichtung Kara gestartet wird. Kara ist es egal, ob er horizontal oder vertikal läuft. Allerdings terminiert das Programm natürlich nur dann, wenn Kara zu Beginn geradeaus auf Bäume sieht!

Hätten wir einen Logikfehler im Programm wie zum Beispiel zweimal die Antwort "yes", dann würde Kara während der Programmausführung darauf hinweisen. Er bleibt stehen, wo er gerade ist und zeigt die entsprechende Fehlermeldung an. Im Programmierfenster sieht man den Zustand, in dem der Fehler aufgetreten ist. So hilft Kara den Schüler/innen, Logikfehler in ihren Programmen zu beseitigen.

 

Vor und Nachteile der variablenfreien Programmierumgebung "Kara"

( aus dem Seminar "Analyse, Planung, Beurteilung von Informatikunterricht", HU-Berlin unter der Leitung von Herrn Penon, 3.6.2002)

Das Programmieren mit Kara hat gegenüber anderen Programmierumgebungen gewisse Vorteile, aber auch erhebliche Nachteile.

Diese Programmierumgebung ist sehr einfach und somit fast intuitiv, selbsterforschend zu erlernen und eignet sich somit als Einführung in die Programmierung in der Oberstufe. Die Schüler können sich durch bloßes ausprobieren Schritt für Schritt an die Lösung der Aufgaben herantasten. Dieses erweist sich aber als nicht ökonomisch, da die Modellierung auf einem Stück Papier vorzustrukturieren ist, bei komplexen Aufgaben viel schneller bzw. nur so im vorgegebenen Zeitrahmen zum Ziel führt. Diese Erkenntnis hat mich verblüfft und diese Erfahrung den Schülern zu vermitteln halte ich für wertvoll und reizvoll.

Die Modellierung oder die Umsetzung der Lösung des Problems mit den Mitteln des Programms steht eigentlich immer im Mittelpunkt, da die Befehle die zu dessen Lösung zur Verfügung stehen sehr eingeschränkt sind und dabei häufig umgedacht werden muss.

Dieses führt meines Erachtens sogar dazu, dass Schüler mit Programmiererfahrungen in Pascal oder anderen höheren Sprachen den Anfängern gleich gestellt sind. Dieses liegt daran, weil eigentlich die Umsetzung der Logik im Vordergrund steht und nicht die Umsetzung des Problems in eine maschinenverständliche Form.

Als Kontrollstrukturen gibt es nur die Fallunterscheidungen, die durch geschickte Verknüpfung zu Schleifen umgesetzt werden. Beim Umstieg auf eine höhere Programmiersprache kann immer wieder auf Kara zurückgegriffen und es kann überlegt werden, wie dieses in Kara umgesetzt wurde.

Die Notation von Kara hat eine von Grund auf verschiedene Notation von allen mir bekannten Programmiersprachen, da Zustandsgrafiken in einen Algorithmus umgesetzt werden. Diese führt zwangsläufig zu einem Umdenken. Dieses führt zu einem Zeitnachteil, den man sich vom Stundenplan her leisten können muss!

Ein Vorteil ist, dass die Schüler bereits innerhalb relativ kurzer Zeit eine eigenständige Programmierumgebung kennengelernt haben und der Lehrer immer wieder auf Kara zurückgreifen kann, um dieses da zu erklären. (z. B Unterschied einer Fallunterscheidung (IF-Anweisung ) von einer vorprüfenden (WHILE-Schleife).

Dabei muss man aber auch sehen, dass gewisse Probleme sich durch Kara nicht modellieren lassen. Hierzu sei die Nachprüfende Schleife erwähnt. Die Programmierumgebung "Kara" hat ihre Einschränkungen, denen sich Schüler und Lehrer bewusst sein müssen, aber die sich auch leicht durchschauen lassen.

Es lassen sich zum Beispiel auch keine Befehlsfolgen zu einer Funktionseinheit zusammenfassen (PROCEDURE). Die Aufgaben die man mit Kara lösen kann, sind somit sehr eingeschränkt lösbar und komplexere Aufgabe lassen sich nur unter nicht zu vertretendem Aufwand bzw. nicht umsetzen. Man könnte Kara somit eine gewisse Realitätsfremdheit vorwerfen.

Aber da muss man sich auf die Möglichkeiten besinnen und sich bewusst sein, dass Kara anfängertauglich ist und "man hoffentlich" damit in der Oberstufe einen guten Unterrichtseinstieg bilden kann.

Im Folgenden sind diese und weitere Vor- und Nachteile tabellarisch dargestellt.

Vorteil Nachteil
guter Unterrichtseinstieg eingeschränkte Kontrollstrukturen
guter Experimentiercharakter reale Beispiele lassen sich kaum finden
einfache Programmierung doppelte Einarbeitung in Systeme/ Programmumgebung
Beispiele sehr anschaulich  
variabel einsetzbar  
preisgünstig - > Freeware  
Methodenwechsel (methodische Vielfalt)  
schnelles Erfolgserlebnis  

 

Einordnung der Stunden in den Berliner Rahmenplan für Unterricht

Für meinen Unterrichtseinstiegsentwurf habe ich mich an dem o. g. Rahmenplan des ersten Unterrichtsjahrs mit dem Thema: Einführung in die Informatik (I und II) orientiert.

Die Doppelstunden 1 bis 7, 9 bis 12 und 15 bis 17 orientieren sich an der Vorgabe von : "1.2. Konstruktion von Teilalgorithmen zu Anwendungsfällen".

In den Doppelstunden 8 und 13 werden jeweils fertige Programme vorgegeben, die durch die Schüler modifiziert werden. Dieses entspricht der Vorgabe des Lehrplans unter "1.1 Benutzung und Analyse eines dokumentierten Systems".

- - > siehe Anhang: vorläufiger Rahmenplan für Unterricht und Erziehung in der Berliner Schule, gymnasiale Oberstufe, Fach Informatik

  

 


27. Juli 2006   Mark Ausborn

page_top