Programmierprojekte, Ideen gesucht, und zwei tolle Programme für die Schule

By | 1.8.2013

Studierende für das Lehramt Informatik müssen laut Lehramtsprüfungsordnung ein Programmierprojekt vorweisen. Mit diesem zeigen sie, dass Sie selbstständig Prinzipien der Softwareentwicklung anwenden können – Entwicklungsmodelle, Testverfahren, Entwurfsmuster. Inhaltlich kann das alles mögliche sein, solange die Studierenden einen Betreuer für das Projekt finden. Ein potentieller solcher Betreuer bin ich. Ab und zu werde ich auch nach möglichen Themen für solche Programmierprojekte gefragt.

Programmieraufträge, die mich interessieren, betreffen hauptsächlich Software, die man irgendwie für die Schule nutzen könnte. Und oft, wenn mir da etwas Schönes einfällt, das es noch nicht gibt und das ein Student in einem Semester programmieren könnte und das für den Unterricht nützlich wäre – oft genug, wenn ich dann mal recherchiere, dann gibt es so eine Software schon. Zefix!

(Falls einer von euch einen Wunsch hat für eine Software, bitte mir sagen. Ich hab da eine Liste, auf die ich Ideen setze, die ich Studierenden anbiete.)

So ging es mir auch mit dieser Software:

1. Orinoco von Christoph Gräßl

(Link zur Seite)

Das ist das beste Programm zur Datenflussmodellierung, das ich für die Schule kenne. In Bayern braucht man das in der 9. Klasse.

Das Programm läuft – wichtig für die Schule – ohne Installation (wenn auch nur unter Windows). Mit Drag & Drop kann man Funktions-Ellipsen anlegen, Kästen für Ein- und Ausgabewert, und gerichtete Verbindungen dazwischen. Man kann außerdem probeweise Werte eingeben und sich alle Zwischenergebnisse anzeigen lassen, sogar animiert, so dass die Daten wirklich der Reihe nach von oben nach unten fließen. (Das sieht man hier natürlich nicht.)

promilleformel1

Wenn man die Funktion für die Berechnung des Blutalkoholgehalts gespeichert hat, kann man sie wie die anderen, vorgebenenen Standardfunktionen benutzen:

promilleformel2

Und als Term gibt er die Funktion auch aus:

Blutalkoholgehalt = PRODUKT(PRODUKT(Menge ; Alkoholgehalt) ; 0.8) / PRODUKT(WENN(Geschlecht = w ; 0.6 ; 0.7) ; Körpermasse)

Da fehlen mir eigentlich nur ein paar Kleinigkeiten. Datentypen. Die Möglichkeit, im umgekehrten Weg aus einer Termnotation die Grafik erstellen zu lassen. Aber im Prinzip wär’s das gewesen mit meiner Idee für mein Programmierprojekt.

2. AuDeSe – auch von Christoph Gräßl

(Vom gleichen Autor, auf der gleichen Seite.)

Programme zum Erstellen von endlichen Automaten kenne ich einige. Dieses hier ist einfach zu bedienen, die Grafik nicht ganz so schön wie bei Orinoco, aber okay. Hier ein kleiner Automat, der eine Wache in einem Comotuerspiel steuert. Normalerweise patroulliert die Wache um ihre Wachposition herum. Hört sie ein Geräusch, bleibt sie stehen, sieht sie einen Gegner, verfolgt sie ihn. Wenn Zeit vergeht, nähert sich die Wache wieder nach und der Normalität – solange der einmal gesehene Gegner in Reichweite ist, verfolgt sie ihn aber.

automat_wache_spiel

Das mit den Bedingungen ist noch nicht optimal gelöst, aber für die meisten Schulfälle reicht es.
Das besondere an diesem Programm: Es generiert sehr einfach den Java-Code zu dem entworfenen Automaten, und wenn man will, gleich das ganze BlueJ-Projekt dazu.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
public class AUTOMAT
{
 
    // Attribute
    private String Zustand;
 
    // Bedingungen
    private boolean nicht_in_Reichweite;
    private boolean in_Reichweite;
 
    // Methoden
 
    // Konstruktor
    public AUTOMAT()
    {
        // Startzustand setzen
        Zustand = "auf Patrouille";
        System.out.println("Startzustand: auf Patrouille");    }
 
    // Ausgelöste Aktion "stehen bleiben"
    private void stehen_bleiben( )
    {
        // Hier den Code für die ausgelöste Aktion eingeben!
        System.out.println("Ausgelöste Aktion stehen_bleiben() wurde aufgerufen!");
    }
 
    // Ausgelöste Aktion "Patrouille aufnehmen"
    private void Patrouille_aufnehmen( )
    {
        // Hier den Code für die ausgelöste Aktion eingeben!
        System.out.println("Ausgelöste Aktion Patrouille_aufnehmen() wurde aufgerufen!");
    }
 
    // Ausgelöste Aktion "verfolge Gegner"
    private void verfolge_Gegner( )
    {
        // Hier den Code für die ausgelöste Aktion eingeben!
        System.out.println("Ausgelöste Aktion verfolge_Gegner() wurde aufgerufen!");
    }
 
    // Ausgelöste Aktion "gehen nach Wachposition"
    private void gehen_nach_Wachposition( )
    {
        // Hier den Code für die ausgelöste Aktion eingeben!
        System.out.println("Ausgelöste Aktion gehen_nach_Wachposition() wurde aufgerufen!");
    }
 
    // Auslösende Aktion "hört Geräusch"
    public void hört_Geräusch()
    {
        if ( Zustand.equals("auf Patrouille"))
        {
            stehen_bleiben();
            Zustand = "misstrauisch";
            System.out.println("Neuer Zustand: misstrauisch");
            return;
        }
    }
 
    // Auslösende Aktion "Zeit vergeht"
    public void Zeit_vergeht()
    {
        if ( Zustand.equals("misstrauisch"))
        {
            Patrouille_aufnehmen();
            Zustand = "auf Patrouille";
            System.out.println("Neuer Zustand: auf Patrouille");
            return;
        }
        if ( Zustand.equals("verfolgend") && nicht_in_Reichweite==true)
        {
            gehen_nach_Wachposition();
            Zustand = "misstrauisch";
            System.out.println("Neuer Zustand: misstrauisch");
            return;
        }
        if ( Zustand.equals("verfolgend") && in_Reichweite==true)
        {
            verfolge_Gegner();
            Zustand = "verfolgend";
            System.out.println("Neuer Zustand: verfolgend");
            return;
        }
    }
 
    // Auslösende Aktion "sieht Gegner"
    public void sieht_Gegner()
    {
        if ( Zustand.equals("misstrauisch"))
        {
            verfolge_Gegner();
            Zustand = "verfolgend";
            System.out.println("Neuer Zustand: verfolgend");
            return;
        }
        if ( Zustand.equals("auf Patrouille"))
        {
            verfolge_Gegner();
            Zustand = "verfolgend";
            System.out.println("Neuer Zustand: verfolgend");
            return;
        }
    }
 
}

4 thoughts on “Programmierprojekte, Ideen gesucht, und zwei tolle Programme für die Schule

  1. Hokey

    Was es nicht alles gibt! Programme zum Erstellen von Programmcode! Habe den Beitrag gern gelesen. Und da ich ab und an meine Nase in verschiedene Programmiersprachen stecke (ohne auch nur je irgendein Projekt realisiert zu haben), fällt mir auf, dass alle Sprachen sich doch mehr oder minder zu ähneln scheinen. Zumindest Syntax und auch Befehle kommen mir, je öfter ich mir Sprachen wie C++, ObjectiveC oder PHP anschaue, sehr vertraut vor.

  2. Herr Rau Post author

    Genau! Alle gängigen imperativen Sprachen sind sich dann doch recht ähnlich, vor allem, wenn sie auch noch objektorientiert sind. Unterschiede gibt es bei der Ein- und Ausgabe (Fenster, Tastatur, Maus), das ist manchmal komfortabel und manchmal nicht, und bei den Datentypen, die zur Verfügung stehen (Liste, Feld).

    Deswegen sollen die Schüler im Informatikunterricht ja eigentlich auch nicht eine bestimmte Sprache lernen, sondern die Konstrukte, die es typischerweise in Programmiersprachen gibt.

    Die imperativen Sprachen sind wohl die größte Familie, aber es gibt auch noch andere Familien (etwa funktionale Sprachen), die dann doch wieder anders aussehen.

    Programme zum Erstellen von Programmcode: Oh ja. (Für die Schule gibt es da noch zu wenig, da gibt es eher Programme, die man mit Drag & Drop erstellt und den Code überhaupt nie zu sehen kriegt.) Typisch sind Programme, in denen man etwa ein Klassendiagramm erstellt, und der Editor erstellt den Programmcode dazu, und die üblichen Standardmethoden gleich mit. Oder Programme zum Erstellen von grafischen Benutzeroberflächen, die man mit der Maus zusammenklickt, und am Schluss hat man den Java-Code, den man dann weiterverwenden kann.

    Faszinierend ist für mich ein Programm namens Trizbort. Wenn ich ein Textadventure spiele, zeichnet das Programm selbstständig und in Echtzeit eine Karte meiner Bewegung, also aller Räume und Ausgänge, mit den Bezeichnungen aus dem Spiel. Ich kann mit dem Programm auch eine Karte entwerfen, also mit Räumen und Verbindungen und Gegenständen, und das Programm erstellt daraus den Inform-7-Code, wenn auch ohne einige wünschenswerte Feinheiten.

  3. karl

    Ich weiss noch, wie alles anfing. Mit einem kleinen Computer und einer Speichererweiterung von 16 KB begann ich damals vor vielen vielen Jahren. Die gängigste Programmiersprache war BASIC. Mein Rechner war ein Sinclair ZX 81 mit so einer Datasette. Aus Programmzeitschriften tippten wir noch Buchstabe für Buchstabe die Programme ab, da es kaum eine Möglichkeit gab, Programme zu kaufen. Sogar im WDR Fernsehen wurde damals EXTRA für den Computer Sinclair ZX 81 gesendet, und wer ein AUDIO Kabel am Fernsehen angeschlossen hatte, konnte auf Kommando auf REC drücken, und dann quasi vom WDR irgend ein Programm runterladen. Das Fernsehen war quasi unser Modem. Oftmals ratterten die Computer Minutenlang für ein kleines Programm von etwa 10 kilobyte.
    Jahre Später kamen dann SYSOPS raus,.. sogenannte Mailbox Programme etc,.. das war meine Commodore 64 und danach meine Amiga Zeit..

    Das was da heute so alles abgeht, ist ein Hammer. Für mich ( für einen der die Zeit komplett miterlebt ) ist es wie ein Wunder.
    Jedes Handy kann heutzutage mehr, als eine Raumkapsel oder eine Boing…

    Die Programmiersprachen ähneln sich tatsächlich, da die Ursprünge alle gleich waren.
    Ich bin froh, das ich HEUTE lebe,. jedoch würde ich gern mal einen blick in so etwa 200 Jahren werfen können,.. OH weia,..

    Es ist für mich nun leicht, mit den einzelnen Computersprachen fertig zu werden, und ich schreibe oftmals stundenlang an einigen kurzen Programmen für einige Firmen ( SEO Programme ).

    Wenn ich mich noch an früher so erinnere,. ( ich hatte eine 1 in Informatik, weil ich quasi einschlief, als ein lehrer uns einen PC vorstellte den die Schule nach Endlosen Genehmigungs Verfahren endlich bekam. Das was ich jedoch HEUTE kann, verdanke ich nicht der Schule, sondern meinem Ehrgeiz.

    Es gibt Schüler, die kennen nicht mal das EVA SYSTEM, nachdem jeder Computer arbeitet.

    Eingabe
    Verarbeitung
    Ausgabe

    Die Eingabe kann geschehen durch . blabla…
    Die Ausgabe,… Blaba,…

    Ich habe erlebt, das „KINDER“ Superschnell mit einem Handy umgehen können, aber die Problematik der oftmaligen Programme und deren Verknüpfungen nicht verstehen.

    Ein kleiner Einführungs Kurs von den jeweiligen Schulen wäre da eigentlich EMPFEHLENSWERT.. denn so lernen Schüler meines Erachtens Nach Baumstrukturen – Menü Führungen – etc.. dies dürfte somit auch für später einmal sehr hilfreich sein.

    UPPS… zurück zum Thema..
    Also ich bin auch der Meinung, das ie Programmiersprachen sich in vielen Punkten ähneln, und das man sich vielleicht mal auf eine einzige einigen sollte. ( Die gibt es eigentlich ja schon ,.. ) 1 ser und Nuller…
    Gruß KARL

  4. karl

    10 Print “ hallo “
    20 Run

    oder

    10 Print “ Hallo “
    20 goto 10

    wer dann diese Änderung machte,..
    10 Print “ Hallo „;
    20 goto 10

    tja der stellte dann einiges fest… so wurden die Programme Komplexer und aus bytes wurden Kilobytes – aus Kilobytes Megabytes… dann Gigabyte,. und heute,.. Terrabyte,. etc,. etc,.. es wird immer immer größer … die Programmierer nutzen viele Hilfs Programme um Grafiken , Sounds und Datenbanken zu erstellen.. und irgendwann ( So denke ich ,. wird die Zeitung aussterben, die CD , der Usb Stick und mit Sicherheit auch der Monitor… es wird irgendwann auch nicht mal notwendig sein, das Haus zu verlassen, da man vielleicht einen AVATAR losschickt,.. und so verblöden die Menschen langsam.
    Welcher Schüler kann noch 10 Bäume aufsagen ??
    bei 10 Handys ist es leichter,..
    etc,. etc,..
    gruß KARL

Schreibe einen Kommentar

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