tag:blogger.com,1999:blog-28245750453174256122024-02-07T08:27:57.014+01:00bachkiesl---blubbUnknownnoreply@blogger.comBlogger15125tag:blogger.com,1999:blog-2824575045317425612.post-6106205166118439562011-05-25T16:34:00.001+02:002011-05-25T16:34:50.225+02:00100 Fortbildungen<div xmlns='http://www.w3.org/1999/xhtml'><br />... die ich mal machen möchte.<br /><br /><ul><li dir='ltr'>Programmieren lernen mit Groovy<br /></li><li dir='ltr'>Schulverwaltung mit Moodle<br /></li><li dir='ltr'>Projektmanagement<br /></li><li dir='ltr'>Wissensmanagement im Internet<br /></li><li dir='ltr'>Socialnetworx@school<br /></li><li dir='ltr'>Chinesisch<br /></li><li dir='ltr'>Arabisch<br /></li><li dir='ltr'>Allgemeinbildung heute<br /></li><li dir='ltr'>Kreatives Schreiben lehren<br /></li><li dir='ltr'>email-Rhetorik<br /></li><li dir='ltr'>Die Portfolio Methode<br /></li><li dir='ltr'>Fächerübergreifender Unterricht<br /></li><li dir='ltr'>Speedreading<br /></li><li dir='ltr'>Supervision als eSession<br /></li><li dir='ltr'>praktische Archäologie<br /></li><li dir='ltr'>Physical Computing<br /></li><li dir='ltr'>Literaturgeschichte der Kinder- und Jugendliteratur<br /></li><li dir='ltr'>Hacking<br /></li><li dir='ltr'>Comics lesen<br /></li><li dir='ltr'>Aufmerksamkeit trainieren<br /></li><li dir='ltr'>Linux-Desktop<br /></li><li dir='ltr'>Grenzfälle literarischer Werke<br /></li><li dir='ltr'>kulturelle Bildung<br /></li><li dir='ltr'>soziale Filter<br /></li><li dir='ltr'>Selbstorganisation<br /></li><li dir='ltr'>Semantic Web<br /></li><li dir='ltr'>Türkisch für Anfänger<br /></li><li dir='ltr'>Russisch für Anfänger<br /></li><li dir='ltr'>neue Schreibformen<br /></li><li dir='ltr'>Zusammenarbeiten mit dem Netz<br /></li><li dir='ltr'>Philosophie<br /></li><li dir='ltr'>Das Mittelalter, historisch betrachtet<br /></li><li dir='ltr'>Sponsoring<br /></li><li dir='ltr'>Lyrik<br /></li><li dir='ltr'>international vergleichbare Abschlüsse<br /></li><li dir='ltr'>Südamerika am Ende des 20. Jhdts.<br /></li><li dir='ltr'>Das Kunstwerk im Video-Spiel<br /></li><li dir='ltr'>Programmieren mit JavaScript<br /></li><li dir='ltr'>Animationsfilme<br /></li><li dir='ltr'>Desktop-Korrektur<br /></li><li dir='ltr'>Verwaltung-Online<br /></li><li dir='ltr'>Video-Schnitt ...</li></ul></div><div class="blogger-post-footer">--------------------- <a href="mailto:bachkiesel@gmail.com">bachkiesel@gmail.com</a></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2824575045317425612.post-72667816800876387032010-01-18T11:07:00.000+01:002011-05-25T15:22:44.281+02:00Über Medienpädagogik und Mediendidaktik<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaqGVUIk0wjBy3VBvLqD0PNoIEFBJ3rDaXFGAw8jBkMXmglV2PleLLc4eyffFhBFfuci5ffF5RlBRbd29F7smmoLEa4R3qxwVVfcbPtN-1Eqw98uHbL7sBYWyp2OX9ii8DmPVOXTjK5_g/s1600-h/rousseau.png"><img style="margin: 0pt 0pt 10px 10px; cursor: pointer; width: 320px; height: 288px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaqGVUIk0wjBy3VBvLqD0PNoIEFBJ3rDaXFGAw8jBkMXmglV2PleLLc4eyffFhBFfuci5ffF5RlBRbd29F7smmoLEa4R3qxwVVfcbPtN-1Eqw98uHbL7sBYWyp2OX9ii8DmPVOXTjK5_g/s320/rousseau.png" alt="" id="BLOGGER_PHOTO_ID_5428022190660312802" border="0" /></a><br />Das Rezipieren von Inhalten, die Artikulation von Verstehensprozessen und das Produzieren neuer Inhalte sind Grundfähigkeiten, über die man sowohl in einer vom Buch als auch in einer multimedial geprägten Welt verfügen muss, wenn man von sich behaupten möchte, irgendeine Form von Bildung genossen zu haben. Da besteht überhaupt kein Unterschied zur Zeit vor 250 Jahren, als die Bürgerskinder begannen vogelwilde Dramen zu lesen.<br /><br />Der "Digital Native" ist so gesehen im gleichen Maße ein potentielles Opfer der menschlichen Kultur, wie es schon Rousseaus 'Emile' war. Heute wie damals besteht die Befürchtung, durch die wahllose Neukombination von unter Umständen verdorbenen Versatzstücken der Kultur könne der heranwachsende menschliche Geist Schaden nehmen. Formen der Gewalt, die heute ausgeübt wird, heißen z.B. Cybermobbing, Abstumpfung der Gefühle durch Konsum von Brutalität und Aggression, Verführung zu rechtsextremen Ideen, Raub der Lebenszeit. Aber außer Cybermobbing geht das alles mit Büchern auch. Man vergleiche den süchtigen WoW-Spieler mit dem "Bücherwurm" - sind die in unserer Vorstellung nicht beide gleich bleich und weltfern?<br /><br />Von der Seite der Produktion sind aber die Form der Texte und ihre vielfältige Verknüpfung mit Bild und Ton neu. Die traditionelle Erzählung hat einen mehr oder minder sinnstiftenden oder sinnzerstörenden Anfang und Schluss, aber sie überlässt es völlig dem Leser oder Hörer, so genannte "Anspielungen" auf andere Erzählungen - ggfs. auch Bilder - zu vermuten, also intertextuelle Beziehungen zu erkennen. Der Text des 21. Jahrhunderts ist dagegen nach Innen völlig offen, da er an beliebigen Stellen durch Links auf andere Medieninhalte verweisen kann. Diese Implosion der Semantik wird erst dann wieder verschleiert, wenn der Text gedruckt wird. Solange der Text online ist, trägt er durch beständige Rekursion der Inhalte dazu bei, Meme zu stabilisieren, deren schiere Existenz - isoliert betrachtet - völlig irrwitzig bis brutal sein kann. Man denke an Flaschenkatzen.<br /><br />Neu sind natürlich Phänomene wie "Cybermobbing". Cybermobbing funktioniert aber nur, weil es eine Diffusion der moralischen Erwartung in die sozialen Netzwerke gibt. Würden z.B. die Mitglieder bei Facebook sich gegenseitig nur als Projektion von Pixeln betrachten, dann gäbe es viele interessante Wortwechsel via Internet nicht. Versuche von "Cybermobbing" wären absolut gegenstandslos, weil deren Opfer die Meinung realer anderer Menschen in der Online-Community fürchten und nicht die bunten Pixel. Hybridformen wären denkbar, wenn Computer endlich den Turingtest bestehen. Dann darf man auf Situationen wie in Bladerunner warten, auch ohne einem Nexus 6 in die Augen schauen zu müssen, denn es könnte ja immer auch die Instanz eines Netzagenten sein, mit der man fröhlich parliert. Ob das aber dann den großen Unterschied macht, ist schon wieder fraglich. Schließlich akzeptiert der Kinobesucher bei Filmen wie "Avatar" in Sekundenbruchteilen die fiktive Wirklichkeit, ohne sich bei jedem Blatt zu fragen, ob das jetzt eine reale Vorform hatte oder frei erfunden ist. Ebenso nehmen alle Teilnehmer sozialer Netzwerke an, dass ihr Gegenüber menschlich ist, und unterstellen menschliches Verhalten. Das bedeutet, sie knüpfen mehr oder weniger starke Gefühle und Erwartungen an ihr virtuelles Gegenüber, sie wünschen oder befürchten bestimmtes Verhalten und sind enttäuscht, wenn sie nicht bekommen, was sie sich versprochen haben. Man bleibt grundsätzlich verletzbar.<br /><br />Die Implosion der Semantik und die Diffusion der moralischer Erwartung machen Medienpädagogik und Mediendidaktik wichtig. Medienpädagogik und Mediendidaktik haben die Aufgabe aufzuklären und Medienverwahrlosung zu bekämpfen, indem sie Wege zur Selbstverteidigung des menschlichen Geistes gegen den medialen Overkill zeigen. Im Unterschied zur rein beschreibenden Wissenschaft verfolgen sie ethische Ziele, die durch die Gesellschaft definiert werden.<div class="blogger-post-footer">--------------------- <a href="mailto:bachkiesel@gmail.com">bachkiesel@gmail.com</a></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2824575045317425612.post-84657720007999876732010-01-06T15:23:00.000+01:002010-01-06T16:20:52.206+01:00TextadventureTextadventures gehören zum Urgestein der Computerspiele. Eines der ersten ist "Adventure" von William Crowter, danach kommt schon sehr schnell Zork in verschiedenen Versionen. Das reizvolle an Textadventures ist das Fehlen einer graphischen Oberfläche und die Notwendigkeit, sich die Räumlichkeiten selbst vorzustellen, um die enthaltenenn Aufgaben zu lösen.<br /><br /><span style="font-size:85%;">Vgl. zu Genre <a href="http://de.wikipedia.org/wiki/Adventure">http://de.wikipedia.org/wiki/Adventure</a> und <a href="http://de.wikipedia.org/wiki/Adventure_%281976%29">http://de.wikipedia.org/wiki/Adventure_(1976)</a>. Hier gibt es den originalen Fortran-Quelltext: <a href="http://jerz.setonhill.edu/if/crowther/">http://jerz.setonhill.edu/if/crowther/</a>. Manche der alten Textadventures kann man wieder online spielen: vgl. <a href="http://www.ifiction.org/games/index.php?cat=2">http://www.ifiction.org/games/index.php?cat=2</a>.<br /></span><br />Zu jedem folgenden Schritt im Textadventure gehört notwendig die Interaktion des Spielers. Anders als bei gängigen 3d-Spielen mit komplexer Graphik schaut man also nicht erst 20 Minuten zu, bis der im Spiel enthaltene 3D-animierte Film endlich abgelaufen ist.<br />Bei Textadventures muss man immer zuerst eine Vorstellung von die Miniaturwelt im Spiel machen, also sich eine Bandbreite von möglichen Spielverläufe ausdenken. Im nächsten Schritt muss man die Verläufe bewerten und eine Entscheidung für einen gewünschten Verlauf treffen. Dann muss man eine Vermutung aufstellen, wie man denn nun diesen Verlauf auslösen kann und schließlich muss mann es ausprobieren. Wenn es geklappt hat, bestärkt das denn Spieler in seiner Vorstellung von der Spielewelt, wenn nicht, kann er entweder die Art ändern, wie er einen bestimmten Spielverlauf auslösen wollte, oder er kann die Vorstellung von der Welt modifizieren.<br />Dieser Prozess ist dann für den Spieler erfolgreich, wenn er ihn möglichst individuell gestalten kann. Das bedeutet, die Interaktion mit dem Spieler muss so aufgefangen werden, dass möglichst wenige oder wenigstens eindeutige Sackgassen entstehen. Ein Maximum der Interaktion ist erreicht, wenn ein Spieler die eingeschlossene Welt während des Spielens völlig frei verändern kann.<br /><br /><a href="http://www.e-trichter.de/www/projekte/textadventure/textadventure.zip">Fragment eines Textadventures</a> ist Miniaturversuch, diese Interaktivität nachzubasteln. Es gibt eine Eingabezeile, deren Inhalt in einer Schleife an eine Parser-Funktion übergeben wird. Der Parser versucht aus der Zeichenkette Wörter zu erkennen und sie nach einer einfachsten Grammatik in eine Reihe von Funktionen umzuwandeln. Die Funktionen ihrerseits rufen Methoden von Klassen auf, die festgelegt sind. Es gibt: Orte, Botschaften, Maschinen, Werkzeuge und Links. Die Links sind dabei die Verbinder zwischen den Orten. Botschaften, Maschinen und Werkzeuge können zu einem Ort gehören. Alle diese Objekte werden über XML-Dateien definiert, die in diversen Unterordnern abgelegt sind. Und eigentlich bräuchte ich beim momentanen Stand nur noch einen eingebauten Editor zum Verändern der Welt durch Hinzufügen oder Bearbeiten von XML-Dateien. Zum Beispiel soll ein Spieler, der denkt, dass er gerne in der Hütte ein Bild an der Wand hängen hätte, das einen beim Daraufzugehen an einen Ort portiert, welcher der Beschreibung des Bildes entspricht, dass der Spieler sich so ein Bild also machen kann. Und dann hätte ich gerne, dass man sich beim Spiel anmelden kann und über Netzwerk mit anderen zusammenspielen.<br />- Naja. Das kann dauern. Wahrscheinlich müsste man auch überhaupt das Konzept der Links als Verhältnisse zwischen Objekten im Gegensatz zu den Objekten neu überdenken.<div class="blogger-post-footer">--------------------- <a href="mailto:bachkiesel@gmail.com">bachkiesel@gmail.com</a></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2824575045317425612.post-10791274067551885012009-12-06T14:04:00.000+01:002009-12-06T14:28:55.274+01:00Text und Programm III<h2><span style="font-weight: normal; float: none; margin-left: 0px;font-size:x-small;" class="editsection" ></span></h2> <div class="poem"> <span style="font-weight: bold;">2. Ist jeder Text ein Programm?</span><br /><p><span style="font-style: italic;">b) Ein Gedicht</span><br /></p><p>Dies ist meine Mütze,<br />dies ist mein Mantel,<br />hier mein Rasierzeug<br />im Beutel aus Leinen.<br /><br />Konservenbüchse:<br />Mein Teller, mein Becher,<br />ich hab in das Weißblech<br />den Namen geritzt. [...]</p><p>Aus: Günter Eich, Inventur.<br /></p><p>Vgl. <a href="http://www.philosophia-online.de/mafo/heft2007-1/Jo_Eich.htm">http://www.philosophia-online.de/mafo/heft2007-1/Jo_Eich.htm</a>.<br /></p><p>Oder <a href="http://de.wikipedia.org/wiki/Inventur_%28G%C3%BCnter_Eich%29">http://de.wikipedia.org/wiki/Inventur_(G%C3%BCnter_Eich)</a><br /></p><p> Wenn man mit diesem Gedicht Ähnliches versucht, wie mit einer Einkaufliste, stößt man doch recht schnell an seine Grenzen. Mit den ersten zwei Versen wiederholt sich eine Form, im dritten Vers wird ein Teil der Form aus V1 und V2 einfach weggelassen. Der vierte erweitert den dritten. Der fünfte Vers ist dann noch kürzer, aber der Leser ahnt inzwischen auch so, was das einzelne Wort bedeuten kann.<br /></p><p>Für menschliche Interpreter ist das alles kein besonderes Problem, weil man die Form des Gedichts im Vollzug lernt um den Inhalt zu erschließen, während man mögliche Bedeutungen mit seiner eigenen Lebenswirklichkeit abgleicht. Am Schluss bleibt man dann bei einer Interpretation hängen, die im Vergleich mit anderen Interpretationen anderer Menschen noch nicht mal die Wahrscheinlichste seien muss. - Erst wenn man dann mit anderen die Interpretation diskutiert, kann man zu einer oder mehreren Deutungen finden, die man weitgehend teilt.</p><p>Vergleichbares in der Maschinensprache hätte man, wenn man z.B. das Ende einer Schleife offenlassen könnte, weil der Interpreter dann schon irgendwie merkt, dass die Schleife fünf Codezeilen vorher zu Ende gewesen sein müsste.</p><p><span style="font-weight: bold; font-style: italic;">Schluss:</span> Nicht jeder Text ist ein Programm. Vielmehr sind Programme ganz spezielle maschinenlesbare Texte. Ihre Variabilität ist an die Fähigkeit der Maschine gebunden, Texte zu verstehen und ggfs. sinnvoll zu ergänzen. Diese Fähigkeit ist bislang recht gering.</p><p>- So richtig neu ist diese Erkenntnis jetzt auch nicht. Aber es ist doch überraschend, welche Wege es nimmt, wenn man mal etwas für sich plausibel machen möchte.<br /></p></div><div class="blogger-post-footer">--------------------- <a href="mailto:bachkiesel@gmail.com">bachkiesel@gmail.com</a></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2824575045317425612.post-40044865263585366072009-11-04T23:12:00.000+01:002009-12-06T14:27:21.321+01:00Text und Programm II<span style="font-weight: bold;">2. Ist jeder Text ein Programm?</span><br /><br />Das würde man ablehnen wollen, denn es gibt so viele verschiedenartige Texte, dass einfach gar nicht alle Texte Programme sein können. Die Bandbreite möglicher Texte variiert zum Beispiel vom Einkaufszettel über die Packungsbeilage der Kopfschmerztablette oder die Bedienungsanleitung für Kühlschränke bis hin zu Lyrik, Epik und dramatischen Werken.<br /><br /><span style="font-style: italic;">a) Einkaufszettel</span><br />1 Paket Butter<br />1 Packung Toastbrot<br />2 Liter Milch<br />1 Tube Zahnpasta, ...<br /><br />Man könnte das tatsächlich als ein Programm verstehen, weil die Abfolge der Punkte auf dem Einkaufszettel einer Aufforderung entspricht, jeden der Punkte zu kaufen. Das einfache Programm lautet etwa:<br /><br />for a,b,c in zettel:<br /><span style="margin-left: 20px;">Kaufe a Stück nach b Maßeinheit von c Sache</span><br /><br />Der Einkaufszettel ist also in seiner Kurzform als Programm denkbar, wenn wir annehmen, dass die enthaltenen Anweisungen implizit formuliert sind. Eine Maschine kann daher Einkaufszettel lesen und die implizierten Anweisungen ausführen, wenn sie weiß, dass ein Zettel ein Einkaufszettel sein soll. Was auf dem Einkaufzettel steht, ist dabei unerheblich, da man jeden Schleifendurchgang mit einer Fehlerbehandlung absichern könnte. Die Maschine startet dann oben, liest anschließend die einzelnen Punkte und versucht jeweils eine Ausführung. Am Ende des Einkaufszettels endet auch das Programm.<div class="blogger-post-footer">--------------------- <a href="mailto:bachkiesel@gmail.com">bachkiesel@gmail.com</a></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2824575045317425612.post-74481040963929185732009-11-02T10:51:00.000+01:002009-12-06T14:27:11.540+01:00Text und Programm I<span style="font-weight: bold;">1. Sind alle Programme nicht auch Texte? </span><br /><br />Wenn das stimmen soll, dann muss jedes Programm alles haben, was ein Text auch hat. Hervorstechende Textmerkmale sind die Kohäsion, die Kohärenz und die Situationsabhängigkeit.<br /><br /><span style="font-style: italic;">a) Kohäsion</span><br />Die Syntax bei Programmen ist zwar variabel, aber nicht beliebig. Die Abfolge einzelner Anweisungen und Kontrollstrukturen ist grundsätzlich frei. Aber wenn eine Kontrollstruktur begonnen wird, muss sie auch beendet werden. Oder man muss Zuweisungen so schreiben, dass sie von rechts nach links funktionieren. Beachtet man das nicht, ist das Programm defekt. Überhaupt kann man defekte, d.h. nicht interpretierbare oder nicht kompilierbare Programme erzeugen,indem man die Syntaxregeln missachtet. In diesem Sinn darf man also von Kohäsion sprechen: Es gibt einen grammatischen Zusammenhang in Programmen, der falsifiziert werden kann.<br /><span style="font-style: italic;"><br />b) Kohärenz</span><br />Kohärenz meint den Bedeutungszusammenhang, die durchgängig wahrnehmbare semantische Ebene. Man könnte das als Zustandsdeutungen in einem Programm suchen. Ein Programm operiert auf der Annahme einer Reihe von Zuständen, die je nach Programmablauf verändert werden können. Das Programm funktioniert nur dann richtig, wenn die Zustände immer gleich interpretiert, das heißt die Zustandsvariablen immer im gleichen Sinn verwendet werden. Ein Gegenbeispiel ist die Änderung der Zählvariable einer ForNext-Schleife aus dem Inneren der Schleife heraus. Diese Operation wäre syntaktisch möglich, aber eine Verletzung der Kohärenz. Die Folge ist wieder ein defektes Programm. Auch Kohärenz existiert in Programmen.<br /><span style="font-style: italic;"><br />c) Situationsabhängigkeit</span><br />Ein großer Teil der Programmierarbeit ist es, von der Situation, in der das Programm läuft, soweit zu abstrahieren, dass es tatsächlich immer läuft. Das bedeutet aber nicht, dass es immer gleich abläuft. Teilweise sind die Situationen auch nur bedingt vorhersehbar. Etwa lebt die Idee der MMPORGs ja davon, dass einzelne Spieler miteinander interagieren und nicht alle zentral mit der Instanz eines Rechenhirns. Programmierte Spiele brauchen also eine gewisse Distanz von den Eingabemöglichkeiten und müssen trotzdem eine möglichst große Bandbreite von Spielverläufen ermöglichen. Grundlage dafür ist die Fehlerbehandlung, das Werfen einer Ausnahme. Programme sind also situationsabhängig. Andere Situationen produzieren andere Abläufe.<br /><br />Die Betrachtung von Kohäsion, Kohärenz und Situationsabhängigkeit zeigt also, dass jedes Programm auch ein Text ist.<div class="blogger-post-footer">--------------------- <a href="mailto:bachkiesel@gmail.com">bachkiesel@gmail.com</a></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2824575045317425612.post-40586717757600670152009-10-27T20:57:00.000+01:002009-10-27T21:11:01.184+01:00MergesortDas Sortieren einer Liste gehört zu den Standardübungen beim Programmieren.<br /><br />Mergesort wurde zum ersten Mal von John von Neumann präsentiert. Vgl. <a href="http://de.wikipedia.org/wiki/Mergesort">Art. s.v. Mergesort in Wikipedia</a>. Die Idee ist, dass eine Liste, die aus einem Element besteht, bereits sortiert ist. Um eine größere List zu sortieren, muss man also nur eine Liste teilen können, bis jeder Teil sortiert ist und dann die entstandenen Teile neu sortiert zusammensetzen.<br /><br />Implementierung in Python am Beispiel von Zeichenketten:<br /><pre><br /><br /># ein Zeichen in eine sortierte Kette einfuegen<br />def eins_sortiert_einfuegen(p,q):<br /> z = 0<br /> for n in q:<br /> if p <= n:<br /> return q[:z]+p+q[z:]<br /> z = z + 1<br /> return q+p<br /><br /># viele unsortierte Zeichen in eine sortierte Kette einfuegen<br />def viele_sortiert_einfuegen(a, b):<br /> y = 0<br /> for n in a:<br /> b = eins_sortiert_einfuegen(n, b)<br /> return b<br /><br /># zwei sortierte Ketten sortiert miteinander verbinden<br />def merge(a,b):<br /> x = 0<br /> for m in a:<br /> t = 0<br /> y = len(b)<br /> for n in range(x, y):<br /> if m <= b[n]:<br /> b = b[:n]+m+b[n:]<br /> x = n<br /> break<br /> if y == len(b):<br /> b = b + m<br /> x = n + 1<br /> return b<br /><br />def mergesort(zeichenkette):<br /> a = len(zeichenkette)<br /> if a > 1: <br /> #return viele_sortiert_einfuegen(<br /> mergesort(zeichenkette[:int(a/2)]), <br /> mergesort(zeichenkette[int(a/2):])<br /> )<br /> return merge(mergesort(zeichenkette[:int(a/2)]),<br /> mergesort(zeichenkette[int(a/2):]))<br /> else: return zeichenkette<br /><br />## Voruebung<br />print eins_sortiert_einfuegen("r", "abcmnopz")<br />print viele_sortiert_einfuegen("rdz", "abcmnopz")<br /><br />## Sortierung<br />print mergesort("rio bravo john hugo")<br /></pre><div class="blogger-post-footer">--------------------- <a href="mailto:bachkiesel@gmail.com">bachkiesel@gmail.com</a></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2824575045317425612.post-85606379947977253612009-10-14T21:27:00.000+02:002009-10-14T21:59:05.097+02:00Das Medium für die Didaktik der Informatik<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFRL3Hxki4fXCoc0k_KqZ-vBXzXo3Y9lekbdbo7v79cncOpRIGnPFWRJRnJZhLV-NRbAfJNbSoayS6zEx2iOM4mVspOSxwKJB07D566r0gww9gNcNXxSKtZi3qe5ZJfoqBcRQ8WUeHxaQ/s1600-h/programmieren.pdf-Seiten.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 150px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFRL3Hxki4fXCoc0k_KqZ-vBXzXo3Y9lekbdbo7v79cncOpRIGnPFWRJRnJZhLV-NRbAfJNbSoayS6zEx2iOM4mVspOSxwKJB07D566r0gww9gNcNXxSKtZi3qe5ZJfoqBcRQ8WUeHxaQ/s320/programmieren.pdf-Seiten.jpg" alt="" id="BLOGGER_PHOTO_ID_5392546943633940882" border="0" /></a><br />Wie trage ich den Lernstoff zum Schüler? Das heißt: Welches Medium setze ich ein?<br /><br /><span style="font-weight: bold;">Erzählen</span><br /><br />Das klingt ganz nett. Hin und wieder eine kleine Geschichte zu großen Geistern der Informatik mag ganz nett sein. Nur wer möchte die rekursiv definierte Fakultätsfunktion in eine Geschichte fassen? Das wird schwer. Und man würde nicht darauf wetten wollen, dass diese Geschichte jemand hören möchte. Aber natürlich, wenn jemand etwas Spannendes zu erzählen weiß, dann hört man auch zu.<br /><br /><span style="font-weight: bold;">Lehrbücher</span><br /><br />Da geht grundsätzlich mehr als mit Erzählen. Wir können Diagramme betrachten, Texte wiederholt nachschlagen, Programmcode abdrucken und analysieren. Es kann illustrierende Bilder geben. Wer etwas wissen will, der kann in aller Regel ein geeignetes Buch finden, das ihm den gesuchten Sachverhalt aufschlüsselt und irgendwie näher bringt. Wer Bücher liest, der lernt Bilder und Texte zu analysieren und im Gegenzug je nach Bedarf zu reproduzieren. Nur: Informatik lernt man ja nicht mit dem Vorsatz Texte zu produzieren.<br /><br /><span style="font-weight: bold;">Online-Medien</span><br /><br />Online-Medien bieten alles, was ein Buch auch bietet. Und: Das Medium ist Teil der Zielplattform des Informatikunterrichts, des Computers. Oder würden Sie Informatik lernen wollen, weil Sie einen Algorithmus zur Entfachung eines Lagerfeuers brauchen? Niemals. Mag auch die Wissenschaft der Informatik Ziele verfolgen, die jenseits eines Rechners angesiedelt sind. Gelernt wird Informatik, weil die Leute programmieren wollen. Und programmiert wird am Rechner. Daher ist der Druck von Schulbüchern für das Fach Informatik allenfalls kein Fehler. Nützen wird er niemandem.<br />Weil der Online-Kurs Teil der Zielplattform ist, darum sind auch Tutorials im Internet und Foren so beliebt. Es ist einfach total praktisch, ein Code-Beispiel zu kopieren, in der IDE der Wahl einzufügen, zu testen und dann ggfs. anzupassen. Das Buch kann da nicht mithalten. Man müsste ja erstmal alles abtippen.<br />Speziell für den Unterricht gibt es als Lernplattform zum Beispiel <a href="http://www.moodle.org/">Moodle</a>. Virtuelle Klassenräume erstellen oder Thematische Kurse einrichten: Beides ist möglich. Aufgaben können eine Upload-Möglichkeit beinhalten und von Trainern bewertet werden. Links ins Internet sind mit drei bis vier Klicks geschafft. Interaktive Elemente erlauben es, mit anderen Teilnemern zusammenzuarbeiten.<br /><br />Wer sich Gedanken über Medieneinsatz imInformatikunterricht macht, der wird zwangsläufig bei Online-Medien enden, selbst wenn er sich die Gestaltung von Lernplattformen wie Moodle noch anders vorstellen könnte.<div class="blogger-post-footer">--------------------- <a href="mailto:bachkiesel@gmail.com">bachkiesel@gmail.com</a></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2824575045317425612.post-31265759581827197202009-07-19T10:20:00.001+02:002009-07-19T10:23:07.578+02:00Vektoren und Animation von Bewegungen<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEis9FrLWFEp0_jJThl7xIFUXpIU1V35Rc9q_pmyaiNzvJ3Kj6qwpGAU2Gc7K8_NlClHdKX1lnOhJY3doX5ltXvter70_kCar2DGqkz4SGLoEYqT71E67FYIXSlfosMPW4CQXtKLSWxQBhc/s1600-h/vektoren1.png"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 236px; height: 202px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEis9FrLWFEp0_jJThl7xIFUXpIU1V35Rc9q_pmyaiNzvJ3Kj6qwpGAU2Gc7K8_NlClHdKX1lnOhJY3doX5ltXvter70_kCar2DGqkz4SGLoEYqT71E67FYIXSlfosMPW4CQXtKLSWxQBhc/s320/vektoren1.png" alt="" id="BLOGGER_PHOTO_ID_5360083298078052290" border="0" /></a><br /><br />Was passiert, wenn zwei animierte Objekte auf dem Bildschirm kollidieren? Wenn die Regeln der Physik gelten sollen, beobachten wir zentrale und nicht zentrale, elastische Stöße.<br />Aus dem Physikunterricht kennt man den zentralen, elastischen Stoß aus dem Experiment mit der Reihe von Kugeln, die zwischen zwei parallelen Streben an jeweils zwei Fäden aufgehängt sind. Zieht man auf der einen Seite der Reihe eine Kugel weg und lässt sie zurückfallen, löst sie durch ihren eine gleichgerichtete Bewegung auf der anderen Seite der Reihe aus.<br />Dieses Beispiel kann man noch eindimensional betrachten: Durch die Fadenaufhängung bewegt sich die Kugel immer auf einer Linie, die durch die Zentren der aufgehängten Kugeln verläuft. Die einzelne Kugel läuft in der senkrechten Projektion wie ein Zug auf Gleisen.<br />Andere Fälle erfordern eine zwei- oder dreidimensionale Betrachtung: Der Zusammenstoß von zwei Billardkugeln ist ein Beispiel für einen zweidimensionalen, einen nicht zentralen, elastischen Stoß. Durch die Abweichung des Treffpunktes vom Bewegungsvektor ergibt sich eine Ablenkung der Kugeln nach dem Stoß aus der vorherigen Bahn. Ein Beispiel für dreidimensional zu betrachtende Kollisionen wäre die Betrachtung von Gasteilchen in einem Raum. Der Zusammenstoß von Planeten ist nochmals etwas anderes, weil die Körper hinterher verändert sind, es sind ja nicht elastische Stöße.<br /><br />Zu <a href="http://www.e-trichter.de/projekte/docs/vektoren_und_bewegungsanimation.pdf">Vektoren und ihrer Verwendung in Bewegungsanimationen</a><div class="blogger-post-footer">--------------------- <a href="mailto:bachkiesel@gmail.com">bachkiesel@gmail.com</a></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2824575045317425612.post-10370547839344074782009-06-09T09:47:00.000+02:002009-06-09T10:37:59.513+02:00Modelleisenbahn<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://de.geocities.com/bierwagen_spur_n/Minitrix/mt91033l.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px; height: 105px;" src="http://de.geocities.com/bierwagen_spur_n/Minitrix/mt91033l.jpg" alt="" border="0" /></a>Einmal - vor ziemlich langer Zeit - hat mein Vater eine Modelleisenbahn für mich gekauft. Das war so eine kleine Minitrix-Bahn, mit einem winzigen Zug, Gleisen, Weichen, Signalen, elendig vielen Schaltern, Kabeln und einem Trafo. Alles war zusammen auf eine Pressspanplatte genagelt. Es war ein tolles Geschenk, das ihn viel Zeit gekostet hat. Mittlerweile beobachte ich meine eigenen Kinder, wie sie Brio- oder Legobahnen aufbauen und großen Spaß daran haben, weil sie den ganzen Aufbau selbst machen können.<br />Da ich jetzt also auch etwas brauche, das ich basteln kann, habe ich mal versucht, eine Modelleisenbahn in Software nachzubauen. Als Grundlage wähle ich Python, weil ich es einigermaßen kann, weil's gut zu lesen ist und man damit ziemlich schnell voran kommt. Python hat selbst keine Oberfläche. Aber ich werde die Zeichenmethode der Objekte so gestalten, dass ich zunächst mit der Turtle arbeiten kann und werde danach auf Pygame umstellen.<br /><br /><span style="font-weight: bold;">Entwicklungziele:</span><br />So ein Eisenbahnset besteht aus Gleiskörper, Zug, Kontrollsystem und Energieversorgung.<br /><ol><li>Der Gleiskörper - den braucht man sowieso: Gleise (Gerade, Kurven, Poller, Weichen ...). Er soll eine doppelt verkettete Liste sein. Jedes Element der Liste hat eine graphische Komponente.</li><li>Das Kontrollsystem: Weichen und Signale. Eine Weiche kann aus Gerade und Kurve zusammengesetzt werden, aber sie hat einen Vorgänger und zwei Nachfolger. Signal muss die aktuelle Weichenstellung angeben und umschalten können. Signal und Weiche sollen zunächst zusammengehören.</li><li>Zug - eine Lok und mehrere Wagons. An der Lok hängen die Wagons. Das sollte eine einfach verkettete Liste werden. Der Zug muss ein Gleisstück nach dem anderen befahren können und anhalten, wen ein Signal auf Rot steht.</li><li>Die Energieversorgung = CPU-Spinner, Animationsschleife.</li></ol><br />Einen ersten Entwurf findet man hier: <a href="http://www.e-trichter.de/projekte/modelleisenbahn/eisenbahn-0.1.zip">Eisenbahn-0.1.py</a><br />Der Entwurf beinhaltet einen ersten Gleiskörper mit Weichen und Signalen. Eine einfachste Animationsschleife lässt das Ganze ein paar Mal zeichnen.<div class="blogger-post-footer">--------------------- <a href="mailto:bachkiesel@gmail.com">bachkiesel@gmail.com</a></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2824575045317425612.post-53538514416026671782009-04-30T09:14:00.000+02:002009-04-30T09:26:52.717+02:00Gimp-Plugin 'batch_convert2tifgray'Da man das Plugin <a href="http://registry.gimp.org/files/batch_convert2tifgray.py">'batch_convert2tifgray</a>' bei <a href="http://www.gimp.org">Gimp</a> 2.6 nicht mehr vernünftig einsetzen konnte, habe ich es mal wieder aktualisiert. Es wird jetzt bei den Filtern unter 'batch' angezeigt.<br /><br />Nächste Ziele: Die Vorwahl der Filtereinstellungen wieder durch eine eigene Wahl einsetzen und das Schreiben eines Log-Files wieder einzuschalten. - Lustig wäre überhaupt mal eine dynamische Kombination von Filtern zu ermöglichen. Die müsste man dann jeweils einmal kombinieren und einstellen können und anschließend das ganze Set von Filtern auf ein einzelnes Bild, ein Verzeichnis von Bildern oder einen ganzen Verzeichnisbaum anwenden können. Weil: In aller Regel hat man ja nicht ein Bild, sondern eher 300.<div class="blogger-post-footer">--------------------- <a href="mailto:bachkiesel@gmail.com">bachkiesel@gmail.com</a></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2824575045317425612.post-70819744301391101562009-04-28T17:47:00.000+02:002009-04-28T18:21:28.062+02:00Gimp-Plugin<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8A2M9QVztC8ZR7lO6o00e6AHUtRfgHQulRySAZcOFK0Sr6BBvUVxDetAYjRwq_mgYhuY09k8zFDlRrlTGU94JeK7uVOElnyht7g3pCzY5Zq6xShmi2aTvxrUfsllLrJmcJmRxtuTh4Kc/s1600-h/Unbenannt.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 122px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8A2M9QVztC8ZR7lO6o00e6AHUtRfgHQulRySAZcOFK0Sr6BBvUVxDetAYjRwq_mgYhuY09k8zFDlRrlTGU94JeK7uVOElnyht7g3pCzY5Zq6xShmi2aTvxrUfsllLrJmcJmRxtuTh4Kc/s320/Unbenannt.jpg" alt="" id="BLOGGER_PHOTO_ID_5329776270275436114" border="0" /></a>Vor einiger Zeit hatte ich mal das Problem Massen von JPG's für den Graustufen-Offset-Druck vorzubereiten. Die Vorgaben der Druckerei waren dabei, dass die Bilder um ca. 10% im Tonwert zunehmen. Außerdem musste man die reinen Weißtöne soweit reduzieren, dass Sie z.B. in Bildern noch ein bisschen Farbe abbekamen. Im Endeffekt durften die Bilder also nicht zu schwarz und nicht zu weiß werden. In <a href="http://www.gimp.org/">Gimp</a> kann man das Problem lösen, indem man bei den Farbwerten das Spektrum der Zielwerte entsprechend reduziert, das also nach der Bearbeitung die Farbwerte von minimal 25 bis maximal 252 reichen, statt von 0 bis 255.<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiP_tJ_xZ5YaOGHA72XQ2HSZo4VeHvqWxgMsP7Ywdc2FeAVO50Z5gH5gxyFKV41B1lWtVyBtzgY5RXwtstos9htjfNQZ8Mk1c34rZG3pzH9e62P8U6hANDEFYEEZjid4e-NtvUZ3KSSBGE/s1600-h/Unbenannt1.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 122px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiP_tJ_xZ5YaOGHA72XQ2HSZo4VeHvqWxgMsP7Ywdc2FeAVO50Z5gH5gxyFKV41B1lWtVyBtzgY5RXwtstos9htjfNQZ8Mk1c34rZG3pzH9e62P8U6hANDEFYEEZjid4e-NtvUZ3KSSBGE/s320/Unbenannt1.jpg" alt="" id="BLOGGER_PHOTO_ID_5329776516379017170" border="0" /></a>Wenn man das oft mit der Maus machen muss, wird es schnell grausam. Und um mir das zu ersparen, habe ich das Gimp-Plugin "<a href="http://registry.gimp.org/files/batch_convert2tifgray.py">Batch Convert to Tif-grayscale</a>" programmiert. Damit kann man die Bilder in Graustufen umwandeln, dann durch "Unscharf maskieren" etwas kontrastreicher machen und die Konturen betonen und schließlich die Verteilung der Farbwerte wieder reduzieren. Das geht dann auch automatisch in den Unterverzeichnissen. Für misslungene Fälle sollte eine Log-Datei produziert werden. Leider ist die alte Fassung des Plugins noch für Gimp 2.3 und es geht sowieso nur, wenn die Python-Unterstützung mit installiert ist.<br /><br />Bei starken Kontrasten sieht man die Farbwertreduktion am Bildschirm praktisch gar nicht. Das macht sich erst bemerkbar, wenn der Druck fertig ist.<div class="blogger-post-footer">--------------------- <a href="mailto:bachkiesel@gmail.com">bachkiesel@gmail.com</a></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2824575045317425612.post-23382259315753208702009-04-24T08:31:00.000+02:002009-04-30T09:41:43.680+02:00Pygame-ExperimenteSeit einiger Zeit versuche ich kleine 2D-Spiele mit Python und Pygame zum Laufen zu bringen. Alle Versuche beginnen mit den Tutorials von<a href="http://www.pygame.org/"> www.pygame.org</a>. Besonders dankbar bin ich für das Tutorial von<a href="http://ezide.com/games/writing-games.html"> Shandy Brown</a>.<br /><br />Mein letzter Versuch<a href="http://www.e-trichter.de/projekte/pygame_gui/pygame_gui.zip"> pygame_gui</a> beinhaltet eine Art GUI mit Engine und kleinem Testprogramm. Zwei Spielfiguren - als Boxes oder Bilder - kann man über die Pfeiltasten bzw. w-a-s-d gleichzeitig steueren kann. Dazu kommt als Simulation haufenweise zufällig herunterschwebende Rechtecke. Was auch geht, ist ein Klappmenü im normalen Fensterstil und eingeblendeter Text.<br /><br />Weitere Ziele sind eine Hintergrundmap, Kollisionserkennnung und die Möglichkeit, dass Spielfigur A oder B etwas wegwerfen. Dann eine Texteingabemöglicheit, dann die Umsetzung von einer Art Laufbewegung ...<div class="blogger-post-footer">--------------------- <a href="mailto:bachkiesel@gmail.com">bachkiesel@gmail.com</a></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2824575045317425612.post-8095288962144988152009-04-23T10:50:00.001+02:002009-04-23T11:10:46.049+02:00Homepage für GM-Film<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxPDVwdFrgk4w06IeIskyYO5uYVYowQ0D33l9IPNhWB-HT8EMyHw4YZ-dvlmbT6kWyD1oGnWF8OEB4Wbv2LxZpmjFU6AHUW9a1QILI8W_N568qGRGjOGbPfxziwWXD-9CCAZW6QKK4JhE/s1600-h/Bildschirmfoto.png"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px; height: 99px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxPDVwdFrgk4w06IeIskyYO5uYVYowQ0D33l9IPNhWB-HT8EMyHw4YZ-dvlmbT6kWyD1oGnWF8OEB4Wbv2LxZpmjFU6AHUW9a1QILI8W_N568qGRGjOGbPfxziwWXD-9CCAZW6QKK4JhE/s200/Bildschirmfoto.png" alt="" id="BLOGGER_PHOTO_ID_5327808879874919762" border="0" /></a><br />GM-Film wollte seinen Webauftritt völlig umgestalten. In ca. drei Monaten wurde dafür ein winziges CMS auf der Grundlage von PHP5, Mysql und Ajax-Elementen entwickelt. Die daraus entstandene Website <a href="http://www.gm-film.net/">www.gm-film.net</a> habe ich in enger Zusammenarbeit mit GM-Film entworfen und dann die ersten Schritte realisiert. Die Website ist nun eigenständig und wird vom Besitzer selbst weitergepflegt.<br /><br />Hier finden sich die Dateien für das CMS: <a href="http://www.e-trichter.de/projekte/damnsmallcms/damnsmallcms.0.1.zip">Damnsmallcms</a>. Wer will kann sich noch <a href="http://tinymce.moxiecode.com/">tinyMCE</a> in das Javascript-Verzeichnis legen. Dann wird der Editor etwas komfortabler. Bei der nächsten Gelegenheit packe ich noch ein Setup für die Datenbank dazu.<div class="blogger-post-footer">--------------------- <a href="mailto:bachkiesel@gmail.com">bachkiesel@gmail.com</a></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-2824575045317425612.post-31038865706894261482009-04-23T09:08:00.001+02:002009-07-19T10:25:23.192+02:00BachkieselDas sind meistens kleine, vom Herumpoltern im Wasser rundgewaschene Steine. Solange sie nass sind, zeigen sie viele verschiedene Farben und glitzern in der Sonne.<div class="blogger-post-footer">--------------------- <a href="mailto:bachkiesel@gmail.com">bachkiesel@gmail.com</a></div>Unknownnoreply@blogger.com0