Programmieren in der 9. Jahrgangsstufe

By | 16.2.2017

In Bayern beschäftigen sich Schülerinnen und Schüler der 9. Jahrgangsstufe (Gymnasium, naturwissenschaftlich-technologischer Zweig) mit Tabellenkalkulations- und Datenbanksoftware. Das ist bei dem aktuellen, etwa zehn Jahre alten Lehrplan so, und bei dem kommenden neuen ebenfalls. Dabei sollen die Schülerinnen nicht Excel lernen, sondern vor allem: Datenflussmodellierung, und ein Verständnis für Funktionen im informatischen Sinn. Und sie sollen auch bei Datenbanken neben SQL vor allem Datentypen und die Modellierung mit Klassendiagrammen lernen, als Vorarbeit für die 10. Jahrgangsstufe, die ganz unter dem Stern der Objektorientierten Programmierung steht.

Ein halbes Jahr Excel, ein halbes Jahr SQL – das hängt einem zum Hals heraus. Beides braucht man danach im Informatikunterricht nur spärlich, jedenfalls nicht bis in die jeweiligen Feinheiten.

Da ich dieses Jahr zum Halbjahr unter anderem meine 9. Klasse abgeben muss (und stattdessen eine Deutschklasse übernehme; so etwas kommt zum Halbjahr immer mal wieder vor), habe ich nicht mit Datenbanken angefangen, obwohl ich schon vor einer Weile mit Tabellenkalkulation abgeschlossen habe. Stattdessen habe ich mit den Schülern das getan, was sich logischerweise anschließt an die Auseinandersetzung mit Tabellenkalkulation unter funktionalem Begriff: selber Funktionen programmiert.

Das geht mit Python so kinderleicht und so natürlich, dass die Schüler damit keine Probleme haben. Man kann fast die gleichen Aufgaben, die sie vorher mit Calc gelöst haben, jetzt mit Python programmieren. Aus Zellbezeichnern werden Variablenbezeichner, schließlich ist so eine Zelle fast auch nur ein Behälter für einen Wert – wie Variablen.

Arbeiten mit der Programmiersprache Python

Python ist eine einfache Programmiersprache. Du schreibst die Befehle dazu in eine Datei (Menü: “File>New Window” oder einfach STRG+N), die du dann mit der Taste F5 (“Run”) ausführen lässt.
Die Funktionen darin ähnen denen in Tabellenkalkulationsprogrammen, nur dass du die Zellen nicht siehst:

a1 = 14 in Zelle a1 wird 14 eingetragen
b1 = 12 in Zelle b1 wird 12 eingetragen
c1 = a1+b1 in Zelle c1 wird die Summe von a1 und b1 eingetragen
a1 = -5 in Zelle a1 wird -5 eingetragen – anders als bisher ändert sich dabei c1 nicht, die Werte anderer gemerkter Sachen werden nicht automatisch aktualisiert

Um die Werte anzuzeigen, kannst du die print-Funktion verwenden:

print(c1) druckt “26” aus
print(„Ergebnis:“, c1) druckt “Ergebnis: 26” aus
print(a1, b1, c1) druckt “-5 12 26” aus

Vordefiniert sind diese Funktionen in Infix-Schreibweise: +, -, /, *

Andere Funktionen musst du dir selber schreiben. Das geht so:

def quadrat(x):
    return x*x

Wichtig sind dabei das Schlüsselwort def für Definition, die Klammern, der Doppelpunkt und die automatische Einrückung nach dem Doppelpunkt. Mit dem Schlüsselwort return bestimmst du, was die Funktion zurückgeben soll.
Sobald du das getan hast, kannst du die Funktion in den Zeilen darunter benutzen:

d1 = quadrat(3)
print(d1) druckt “9” aus
print(quadrat(quadrat(3+2)) druckt “625” aus

AUFGABE 1: Ergänze und teste folgende Funktionen

Testwerte

Ergebnis

def quader_volumen(laenge, breite, hoehe)

2,3,4

24

def kreis_flaeche(radius)

3

28.27431

def kreis_umfang(radius)

3

18.84954

def zylinder_volumen(radius, hoehe)

3,4

113.09724

def quadrat_umfang(seitenlaenge)

3.5

12.25

Hinweise: Nimm für Pi den Wert 3.14159 – achte darauf, wie bisher kein Komma zu nehmen, sondern einen Dezimalpunkt.
Umlaute und Sonderzeichen funktionieren meistens bei Programmiersprachen, machen aber ab und zu doch Probleme, deshalb verzichte ich meistens ganz auf sie

AUFGABE 2: Schreibe dir eine Funktion, mit der du die vorherigen Funktionen testest:

def test():
    print("Quadrat von 2:", quadrat(2))
    print("Volumen Quader 2*3*4:", quader_volumen(2,3,4))
    print("Kreis Umfang Radius 1:", kugel_umfang(1))

Und so weiter. (Diese Funktion gibt nichts zurück.)
Starte den test mit der Zeile: test()

AUFGABE 3: Ergänze Funktionen

  • zum Berechnen des Durchschnitts zweier Zahlen
  • zum Berechnen der Fläche eines Trapezes
  • zum Berechnen der Blutalkoholkonzentration, abhängig von Masse des Menschen, Menge des Getränks, Alkoholgehalt des Getränks – entscheide dich dabei für die Formel für Männer oder Frauen

AUFGABE 4:

  1. Schreibe eine Funktion verschieben(zeichen), die
    1. ein eingebenes Zeichen in eine Zahl umwandelt. Das geht mit der bereits vorhandenen Funktion ord(zeichen) (=> wandelt Zeichen in Zahl um).
    2. Zähle dann 1 zu dem Ergebnis dazu
    3. und wandle das Ergebnis mit der vorhandenen Funktionen chr(Zahl) (=> wandelt
      Zahl in Zeichen um) wieder in ein neues Zeichen um,
    4. das die Funktion dann zurückgibt
  2. Schreibe eine entsprechende Funktion zurueckschieben(zeichen)
  3. Schreibe die neuen Funktionen verschiebenUm(zeichen, verschiebung_um) und zurueckschiebenUm(zeichen, verschiebung_um)
  4. Teste das jeweils mit der folgenden Funktion an einem ganzen Satz:
def verschluesseln(satz):
    for buchstabe in satz:
        print (verschiebenUm(buchstabe, 2))

Aufgabe 5: Die Kontrollstruktur: Wenn, dann, sonst (“Bedingte Anweisung”)

Es gibt keine wenn-Funktion, aber so etwas Ähnliches. Du kennst das noch von Robot Karol:

def darfBierBestellen(alter, eltern_sind_dabei):
    if alter>16:
        return True
    else:
        if alter>14 and eltern_sind_dabei==True:
            return True
        else:
            return False

Zum Testen:

x1 = darfBierBestellen(15, False)
print (x1) druckt “False” aus

Warum steht das nicht im Lehrplan, wo es sich doch organisch an die Tabellenkalkulation anfügt? Und eine gute Vorbereitung für die 10. Klasse ist? Außerdem halte ich es für äußerst sinnvoll, erst einmal nicht objektorientiert zu programmieren, Algorithmik zu üben – nur dann erkennen Schüler später auch den Sinn und Nutzen von objektorientierter Programmierung.

Ich vermute mal, dass das mit der Geschichte des Pflichtfachs Informatik in Bayern zu tun hat. Bayern ist da ja mit Vorreiter, und wenn ich mir anschaue, wie schwer sich andere Länder mit dem Einführen eines solchen Fachs tun, dann war das wohl auch hier eine große Leistung. Bei den Entscheidungsträgern hatte Informatik, und das ist wohl immer noch so, den Ruf, etwas mit Programmierung zu tun – und das war ja total verpönt. Das brauchte man allenfalls in der Berufsbildung, aber doch nicht an allgemeinbildenden Schulen. — Und so hat man sich mit dem Verzicht auf frühes Programmieren vielleicht den Pflichtfachstatus erkauft. Trotzdem schade, dass der neue Lehrplan keien Verbesserung gegenüber dem alten bringt.

4 thoughts on “Programmieren in der 9. Jahrgangsstufe

  1. Streicher

    Es ist schon interessant, dass Excel und SQL als höherwertig gegenüber dem Programmieren betrachtet werden, dabei sieht für mich das viel mehr nach Berufsausbildung aus.

    Auch das der Lehrplan direkt mit dem objekt-orientierten Programmieren einsteigt, finde ich überraschend. In der Mathematik sind Funktionen auch nicht Teil von einer Klasse, warum sollte das beim Programmieren so sein?
    Bei der neuen Programmiersprache Julia, die für das wissenschaftliche Rechnen entwickelt wird/wurde, gibt es u.a. deswegen auch keine Klassen wie bei C++, in denen Variablen und Funktionen gemischt werden (andere OO-Features wie Vererbung gibt es hingegen schon).

  2. Herr Rau Post author

    Wobei es bei Excel tatsächlich vor allem um Datenflussdiagramme geht und – zumindest bei mir – sicher nicht um Mathematik oder Buchhaltung. – Die Objektorientierungsorientierung liegt sicher auch daran, dass man damit schon in der Unterstufe anfangen kann, ohne zu programmieren, indem man Objekte beschrieben lässt. Das ist die Vorstufe zum statischen Modellieren bei SQL und zur OOP in der 10. Klasse. Aber ich wünsche mir das auch manchmal anders.

  3. Aginor

    Oh, das ist nett. Hätte mir viel Spaß gemacht damals.
    Ich mag Python sowieso irgendwie, einfach schön leicht zugänglich und erstaunlich schnell.

    (ich hätte lediglich gleich noch das importieren geübt: import math, dann kriegt man sogar das richtige pi. :) )

    Gruß
    Aginor

  4. Anonymous

    Ich finde es toll das ein Lehrer meine meine teilt :).Ich bin selber in der neunten Klasse(also nicht ganz so objektiv :) ) und lerne privat Python und Javascript und ich finde Excel kann vlld irgendwann mal nützlich sein aber python ist sehr universell und man lernt das Denken und und Problemlösen(und Englisch, da wir deutsche Excel Funktionen lernen :( ). Wer eine Programmiersprache kann wird sich in jeder formalen Sprache viel leichter tun und wissen wie man ein Problem löst. Deswegen bin ich der Meinung man sollte ein Halbjahr lang Python lernen, da man damit sowieso auch auf Datenbanken zugreifen, sie verändern und erstellen kann.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.