So muss programmieren heute gehen!

Zumindest fast, aber dazu später.

Vor kurzem habe ich über twitter von code_it erfahren, dass der wdr eine Online-Programmierumgebung zu Verfügung stellt. Die musste ich natürlich gleich mal ausprobieren. Und nachdem bei uns im Haus immer die Diskussion ist, ob die Kinder eine Jacke anziehen müssen oder nicht, habe ich gleich mal eine passende App dazuerstellt, die ich hier zur Verfügung stelle, sozusagen als Startpunkt für weitere Ideen.

Hier noch die zugehörige Textdatei zum Importieren: AppMaker_JackeAnziehen Und natürlich der Link zur App. Jetzt aber noch kurz meine Gedanken dazu.

Bewertung

Ich das Angebot total geil hervorragend!!!! Man kann auf Wetter- und Fußballinfos zugreifen und die Daten weiter verwenden. Die Programmierung ist graphisch, so dass man keine ; suchen muss. Man kann sich auf die Idee konzentrieren. Für Einsteiger sehr gut.

Man kann einen Link erstellen und so könnten Schüler den Eltern auch mal eine sinnvolle “App” während des Unterrichts zusammenbasteln, die die Eltern dann auf dem Handy haben. Das könnte Spaß machen! Wie wärs zum Beispiel mit einer “Was soll ich kochen App?”. Je nach Zufallszahl wird dann “Spaghetti Bolo” oder “Burger” oder was auch immer ausgegeben. Das wird zwar mühsam, da mangels Array das eine Reihe von “Wenn-Dann-Abfragen” wird, aber das ist am Anfang nicht so schlimm.

Was ich nicht so ganz gelungen aus Lehrersicht finde, ist die Tatsache, dass es keinen eindeutigen Startblock gibt. Es geht halt gleich mit “Ausgabe” los. Und bei mehreren Ausgaben wird alles irgendwie dargestellt. Das kann man jetzt positiv oder negativ nutzen, aber für Anfänger hätte ich mir einen klaren Startpunkt gewünscht, um so zu verdeutlichen, wo das Programm anläuft.

Die Verschachtelung der Ausgabe, “Überschrift” muss Teil von “Ausgabe” sein, ist etwas gewöhnungsbedürftig und sollte erklärt werden.

Aber das war es auch schon an Kritik. Ach ja, hier noch ein paar Ideen, was man programmieren könnte:

  • Auf Basis der Idee für die Entscheidungsapp lassen sich noch weitere Entscheidungshelfer programmieren: “Welche Schuhe?” “Soll ich Hausaufgaben machen?” “Soll ich…..?” “Eis-Auswähler”, etc.
  • Auf Basis der Wetterdaten vielleicht so etwas wie “Ist T-Shirt-Wetter?”, “Brauche ich einen Regenschirm?”, “Muss ich die Pflanzen winterfest machen?” oder so.
  • Auf Basis der Fußballdaten vielleicht etwas wie: “Hat mein Verein gewonnen?”

Okay, das meiste sind Fragen, aber euch fällt bestimmt noch mehr ein. Ich nehme auf alle Fälle den Link zum wdr in meiner Sammlung auf und würde, wenn ich eine 7. Klasse in Informatik hätte, das unbedingt benutzen.

Update Arbeitsheft Excel und mehr

Das erste Kapitel zu meinem Arbeitsheft zu Tabellenkalkulationsprogrammen wie Excel oder Openoffice Calc oä. ist jetzt erstmal fertig. Ich werde es ausprobieren und eventuell korrigieren, aber ich lade es hier schon mal hoch: FunktionalesProgrammierenLSG

Da ich wegen meines gebrochenen Fußes ein paar Stunden ausgefallen sind, hinke ich etwas hinterher, werde aber bald zu den Datenflussdiagrammen kommen. Das wird dann zweites Kapitel.

Mein Zehntklassunterricht läuft. Langsam, aber er läuft. Ich bin gerade dabei den Wechsel auf Grafikprogrammierung in processing zu machen. Denn im Moment werden nur Klassen definiert und  ausgegeben. Aktuell soll z.B. eine Klasse Kreis und eine Klasse Rechteck umgesetzt werden, wobei sich leider wieder viele schwer tun mit Attributen und Konstruktoren. Im nächsten Schritt wird dann eine Methode show() ergänzt, die das jeweilige geometrische Objekt grafisch anzeigt. Ob ich dann schon auf Vererbung eingehen soll, weiß ich noch nicht. Passend würde es, aber hätte ich Vorteile an dieser Stelle?

Ansonsten sitze ich noch vor einem Berg von W-Seminararbeiten zum Thema “Physik in Filmen”, die es zu korrigieren gilt. Ab Dezember kommen dann die Referate dazu. Themen sind neben Schwarzen Löcher aus dem Film Interstellar und manches aus dem Film der Marsianer auch die UpsideDown-Szene aus “Pirates of the Caribbean” – die wohl anspruchvollste Arbeit. Es gibt aber auch ein paar klassische Sprunganalysen wie bei “Fast&Furious” oder “Speed”. Wer mag, kann sich in der Doktorarbeit von Stefan Krejci einen Überblick verschaffen.

Und dann habe ich ja noch den Inktober 2019 fertig gestellt. Meine Zeichnungen finden sich entweder bei Instagram oder ausnahmsweise, weil ich zunächst nicht wusste, wie ich mehr als 1 Minute bei Instagram hochladen kann, als Film bei youtube.

Programmieraufgabe 107

In den letzten Tage habe ich noch ein bisschen weiter an dem Genetischen Algorithmus von der Aufgabe 106 rumprobiert und ein paar Verbesserungen durchgeführt. Der zugehörige Quelltext steht wieder ganz unten und kann gerne benutzt werden.

Verbesserungen

In der letzten Version habe ich an einer Stelle zwei zufällig große Kreise gemalt und die Fitnessfunktion verglichen. Wenn die bessere Version auch besser ist als das, was ich schon erzeugt habe, dann habe ich es übernommen.

Dies habe ich jetzt insofern verbessert, als das

  • es nicht mehr nur 2 Kreise, sondern pro Genereation eine vorher einstellbare Anzahl ist. 20 ist ganz gut und 100 sollte das Maximum sein, da sonst das Programm zu langsam wird. Diese Anzahl wird durch die Klasse Population verwaltet.
  • die Kreise jetzt beginnend mit 1 Pixel Durchmesser schrittweise hochskaliert werden und nicht mehr nur einfach zufällig groß gewählt werden.
  • es jetzt auch möglich wäre andere geometrische Formen zu benutzen, da ich – hoffe ich, alles auf einer abstrakten Basisklasse GeoObject beruht.
  • die Entstehung der Bilder in einer Art Genom, nämlich einer ArrayList der GeoObject verwaltet wird.

Dennoch ist das Ergebnis nicht so gut, wie ich gehofft hatte (das erste ist nach 500 Kreisen, das zweite ist nach 2000):

Probleme

Vor allem der zeitliche Aufwand ist deutlich gestiegen. Zunächst habe ich zur Berechnung der Fitnessfunktion für jedes der 20 Bilder, die pro Generation erzeugt werden, das Bild komplett neu zeichnen lassen, um dann die Fitnessfunktion zu berechnen. Das war mit zunehmener Anzahl von Kreisen natürlich irre zeitaufwendig. Daher wird das Bild der besten Annäherung an die jeweils nächste Generation weitergegeben und nur ergänzt.

Was aber immer noch schlecht ist, ist die Tatsache, dass ich ganz häufig Generationen habe, in den denen keine Verbesserung auftritt. Man erkennt das daran, dass “frameCount” hochzählt, aber kein Kreis ergänzt wurde. Im Bild lässt sich erkennen, dass framecount die Werte 16-22 annimmt ohne das eine neue Generation erzeugt wurde. Und dieser Effekt wird natürlich mit zunehmender Generation immer deutlicher.

Eine geschickte Lösung ist mir dazu noch nicht eingefallen. Der Autor spricht da von “simulated annealing” als Ansatz, aber ich habe noch keine Idee, wie genau ich das genau umsetzen soll (s. Aufgabe unten). Vor allem nicht, bei anderen geometrischen Figuren wie beispielweisen Ellipsen (2 Halbachsen + Rotation) oder Dreiecken (3 Ecckpunkte + Rotation) oder Rechtecken (4 Eckpunkte + Rotation). Im Grunde muss ich halt geschickter die geometrischen Figuren durchprobieren, aber wie?

Aufgabe 107

Lade dir den Quelltext herunter bearbeite die folgenden Teilaufgaben:

a) Verändere die Zahl der GeoObjects pro Generation.

b) Verändere die Mutierung dieser Objekte.

c) Überlege dir eine neue Fitnessfunktion.

d) Ergänze das Programm so, dass Ellipsen mit Rotation statt Kreise gezeichnet werden.

Hier noch der Quelltext: GenetischerAlgBsp5

Durch die weitere Nutzung der Seite (Scrollen, Navigieren) stimmen Sie der Verwendung von Cookies zu. Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen