Abschnittsübersicht

  • Das Fach "Informatik und Medienbildung" in der Jahrgangsstufe 10 baut die Brücke zur Wissenschaft der Informatik. Alle Schülerinnen und Schüler, die in der Qualifikationsphase der gymnasialen Oberstufe keinen Grund- oder Leistungskurs Informatik wählen möchten, erhalten so einen Einblick in Grundkonzepte und Sichtweisen der Informatik, aber auch auf die Grenzen. Sie sollen dadurch in die Lage versetzen werden, mündig in der der digitalen Welt agieren und reagieren zu können. Diejenigen, die Informatik weiterhin belegen wollen, erlernen so die Grundbausteine für die Informatik in der gymnasialen Oberstufe.

    Im Kurs "Problemlösen durch Programmieren" analysieren, erweitern und entwickeln wir ausgehend von einer Modelldarstellung Algorithmen und stellen diese in einer imperativen, textuellen Programmiersprache dar. Mit diesem Vorgehen lernen wir eine in der  Informatik übliche Form der Problemlösung kennen.

    Stand: 2025-04-06 - Der Kurs wird aktuell gepflegt.

  • Hervorgehoben
    • Informieren Sie sich im Video-Clip über "Algorithmen und ihre Eigenschaften".  

      1. Beschreiben Sie den Begriff "Algorithmus".
      2. Nennen Sie vier Anforderungen/Eigenschaften an/von Algorithmen.
      3. Geben Sie die Darstellungsformen für Algorithmen an, die Sie im Unterricht bislang kennengelernt haben.
      4. Für das Knacken eines dreistelligen Codeschlosses soll ein Algorithmus entwickelt werden.
        Untersuchen Sie mithilfe der vier Eigenschaften von Algorithmen, ob eine der folgenden Formulierungen als Problemlösealgorithmus geeignet ist.
        1. Teste nacheinander jede Kombination der Ziffern 0 bis 9.
        2. Stelle Code 0000 ein
          Versuche Schloss zu öffnen
          Wiederhole bis Schloss offen ist:
            Stelle nächsten Code ein
          Versuche Schloss zu öffnen
        3. Wiederhole für 1. bis 4. Stelle des Codes:
            Wiederhole bis Ziffer an dieser Stelle richtig ist:
              Stelle nächste Ziffer ein
          Öffne Schloss
      5. Wandeln Sie das folgende Struktogramm in einen Scratch-Algorithmus um.
        Struktogramm

    • Herzlich Willkommen in unserer Welt, Ina und Joe!

      Ina und Joe sind zwei junge Schildkröten. Joe ist eine halbe Stunde vor seiner Schwester Ina geschlüpft ist. Ina erkennt man im Bild sehr gut, denn sie hat auf den letzten zwei Platten des Wirbelschildes (fünf Platten) keine schwarzen Punkte. Joe hingegen besitzt auf der vierten Platte einen schwarzen Punkt und auf der fünften Platte keinen Punkt. Beide bewegen sich so langsam vorwärts.

      Joe (links oben) und Ina, zwei soeben geschlüpfte Schildkröten

      ... und schon sind wir mittendrin in der Beschreibung der Welt mithilfe der objektorientierten Modellierung. In der Informatik werden Joe und Ina Objekte der Klasse Schildkröte genannt. Eine Klasse ist dabei eine Art Bauplan für gleichartige Objekte, die durch Eigenschaften (Attribute) und Fähigkeiten (Methoden) definiert werden. Ein Objekt ist also eine konkrete Realisierung und wird als Instanz bezeichnet. Die Attribute des Objekts/der Instanz besitzen bestimmte Werte.

      Hinweis: Eine ähnliche Art der Modellierung ist uns aus der Unterrichtseinheit Datenbanksysteme schon bekannt. Dort betrachteten wir Entitäten mit Attributen und Attributwerten und stellten die Abstraktion als Entitätstyp im ER-Diagramm dar. Allerdings spielten die Fähigkeiten keine Rolle.

      Eine Objektkarte dient der übersichtlichen Darstellung des Zustands eines Objekts zu einem bestimmten Zeitpunkt. Für Ina und Joe sehen die Objektkarten so aus:

      Zur Darstellung der Klasse verwenden wir das Klassendiagramm. Es gibt neben dem Namen und den Eigenschaften auch die Fähigkeiten (Methoden) an. Einige Methoden benötigen weitere Angaben, die mithilfe von Parametern übergeben werden können.

    • Seymor Papert CC-BY-SA 3, Matematicamente.it, Wikipedia

      Seymour Papert war Professor für Mathematik und Erziehungswissenschaften am Massachusetts Institute of Technology. Er wollte Schülern informatische Fähigkeiten bei gleichzeitiger Mündigkeit von der IT vermitteln. Dazu entwickelte er in den 1960er die Programmiersprache LOGO. In dieser gab es eine Turtle, also eine Schildkröte, die man durch Befehle steuern konnte und die den dabei abgelaufenen Weg zeichnete. 

      ... und das können wir auch machen!

      Die Turtles verfügen über Befehle zum Bewegen und Drehen, können aber auch die Stiftfarbe ändern. Eine Übersicht über die Fähigkeiten unserer Turtles liefert diese Hilfe. Unsere Turtles leben in der Programmiersprache Java in der Entwicklungsumgebung BlueJ und solle neue Fähigkeiten erlernen. Aus dem Klassendiagramm wissen wir bereits, dass Fähigkeiten = Methoden sind. Also müssen wir Methoden (in Java) entwickeln.

    • Wir erweitern die Klasse Turtlezeichner nun immer weiter um Fähigkeiten mit dem Objekt Joe und nutzen dabei die Aufgaben aus dem SOL-Kurs "Turtle-Grafik mit Java".

    • Das Tutorial führt uns durch algorithmische Strukturen und Grundlagen der Programmierung. Beachten Sie, dass sich die Turtle-Befehle in den Beispielen von unseren hier unterscheiden. Sie können also nicht die Quelltexte kopieren.

    • Methoden in Java

      In unserer BlueJ-Welt existiert das Objekt joe der Klasse Turtle in der Klasse Turtlezeichner. Für das Lernen neuer Zeichnungen nutzen wir diese Klasse und ergänzen sie um eigene Methoden.

      Eine Methode, die wir von außen aufrufen können (public) und die nichts zurück gibt (void) - also einen Auftrag ausführt - hat in Java folgenden Aufbau:

      public void machWas(){
        //hier Algorithmus einfügen
      }

      Sind Parameter zur Übergabe von Werten notwendig, dann verwenden wir folgende Struktur:

      public void machWasAnderes(Datentyp pParameter){
        //hier Algorithmus einfügen
      }

      Beispiele:

      Joe zeichnet ein Quadrat mit fester Seitenlänge:

      public void zeichneQuadrat(){
        for (int i = 1; i <= 4; i++){
          joe.move(100);
          joe.turn(90);  
        }
      }

      Joe zeichnet ein Rechteck mit variablen Seitenlängen:

      public void zeichneRechteck(int pLaenge, int pBreite){
        for (int i = 1; i <= 2; i++){
          joe.move(pLaenge);
          joe.turn(90);  
          joe.move(pBreite);
          joe.turn(90);
        }
      }