Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

Kara (Programmierumgebung)

Kara ist eine Lernsoftware zur spielerischen Einführung in die Programmierung. Kara basiert auf dem Konzept endlicher Automaten und kann den sogenannten …

Inhalt6 Abschnitte
  1. 1. Grundidee und Bedeutung
  2. 2. Entwicklung und Auszeichnungen
  3. 3. Versionen und gemeinsame Grundlagen
  4. 4. Kara als endlicher Automat
  5. 5. Übergang zu realen Programmiersprachen
  6. 6. Spezialisierte Umgebungen

Grundidee und Bedeutung

Kara ist eine Lernsoftware zur spielerischen Einführung in die Programmierung. Die Lernumgebung basiert auf dem Konzept endlicher Automaten und gehört damit zu den sogenannten Minisprachen. Im Mittelpunkt steht ein programmierbarer Marienkäfer, der sich in einer einfachen zweidimensionalen Welt bewegt und Aufgaben unterschiedlicher Schwierigkeit löst, etwa Kleeblätter einzusammeln oder einen Weg durch ein Labyrinth zu finden.

Kara kann manuell über Schaltflächen oder durch ein Programm gesteuert werden. Die Welt enthält Marienkäfer, Baumstümpfe, Fliegenpilze und Kleeblätter. Kleeblätter können überquert, aufgenommen und abgelegt werden; Pilze können verschoben werden. Bäume sind unbeweglich und beenden das Programm, wenn Kara gegen sie läuft. Während ein Programm ausgeführt wird, lassen sich Geschwindigkeit und Pause steuern. Alle Versionen enthalten Aufgaben mit verschiedenen Schwierigkeitsgraden; einige Downloads bieten zusätzlich Lösungen.

Entwicklung und Auszeichnungen

Eine erste Version von Kara entstand von 1999 bis 2003 an der ETH Zürich unter Beteiligung von Jürg Nievergelt, Werner Hartmann, Raimond Reichert, Markus Brändle und Tobias Schlatter sowie weiteren Mitwirkenden. Heute wird Kara von Raimond Reichert laufend weiterentwickelt.

Im Jahr 2000 erhielt Raimond Reichert für seine Diplomarbeit „Ein spielerischer Einstieg ins Programmieren: Kara, der programmierbare Marienkäfer“ den Fritz-Kutter-Preis zur Förderung praxisbezogener Informatik. 2002 gewann er mit KaraToJava den European Academic Software Award im Bereich „Computer science“.

Versionen und gemeinsame Grundlagen

Beim Start kann die Kara-Umgebung ausgewählt werden. Abhängig von der Auswahl werden die passende Welt, das Programmfenster und die Hilfe geladen. Während der Programmausführung kann die Auswahl nicht geändert werden; Kara kann jedoch mehrfach instanziert werden.

Jede Entwicklungsumgebung enthält mindestens eine selbst erzeugbare Welt und eine Möglichkeit, Kara automatisch handeln zu lassen. Die konkrete Steuerung hängt von der Version ab. In der grafischen Kara-Oberfläche werden beispielsweise Zustände verwendet, während JavaKara, RubyKara, PythonKara und JavaScriptKara mit realen Programmiersprachen arbeiten.

Alle javafähigen Plattformen ab J2SE unterstützen Kara; mindestens die JRE ist erforderlich, für JavaKara sogar das JSDK. Kara ist als Freeware für Windows, Linux, macOS und weitere Betriebssysteme verfügbar. Die in den Basisdaten angegebene Version ist „versionslos“ (27. Februar 2007).

Kara als endlicher Automat

Die ursprüngliche grafische Umgebung führt in die Theorie endlicher Automaten ein. Zunächst werden Welten erstellt, anschließend wird mit einem grafischen Programmeditor festgelegt, wie Kara auf seine Umgebung reagiert.

Ein Programm besitzt einen Startpunkt. Von dort aus führt Kara Sensorprüfungen durch und wechselt abhängig von deren Ergebnissen in andere Zustände. Sensoren können boolesch geprüft werden, also nur die Werte wahr oder falsch liefern. Beispiele sind „Baum vorne?“ und „Kleeblatt unten?“. Auf das Ergebnis folgen Aktionen wie Bewegen oder der Übergang in einen anderen Zustand. So lernen Schülerinnen und Schüler, Zustände, Bedingungen, Sensoren und Aktionen zu einem Ablauf zu verbinden.

Übergang zu realen Programmiersprachen

JavaKara verwendet dieselbe Grundwelt wie Kara, wird aber nicht mit dem grafischen Editor, sondern mit Java programmiert. Kara kann bewegt werden, Aktionen ausführen und seine Sensoren abfragen. Die Bibliotheken kara, world und tools sind direkt in der allkara.jar-Klasse JavaKaraProgram implementiert. Es besteht vollständiger Zugriff auf übliche Java-Kontrollstrukturen und -Pakete.

Jedes JavaKara-Programm benötigt ein bestimmtes Grundgerüst:

public class /Dateiname/ extends JavaKaraProgram { public void myProgram() { // Hauptprogramm } }

Das Programmfenster enthält eine integrierte Entwicklungsumgebung mit automatischer Einrückung, Syntaxhervorhebung und Kompiliermöglichkeit.

Für Ruby, Python und JavaScript existieren ebenfalls Kara-Versionen. Die üblichen Kontrollstrukturen der jeweiligen Sprache stehen vollständig zur Verfügung. Wegen der einfacheren Syntax ist kein festgelegtes Grundgerüst nötig. Ein vollständiges RubyKara-Programm kann beispielsweise so aussehen:

while (!kara.treeFront){ kara.putLeaf(); if (kara.onLeaf()) kara.move(); }

Die Schleife läuft, solange kein Baum vor Kara steht; innerhalb der Schleife legt Kara ein Kleeblatt ab und bewegt sich weiter, wenn es auf einem Kleeblatt steht.

Spezialisierte Umgebungen

MultiKara richtet sich eher an fortgeschrittene Aufgaben der nebenläufigen Programmierung. Bis zu vier Marienkäfer können gleichzeitig eingesetzt und einzeln grafisch programmiert werden. Die Welt enthält zusätzliche Straßensymbole, die die Begehbarkeit einschränken, sowie Synchronisationsmechanismen. Ein Marienkäfer kann beispielsweise gesperrt werden, bis alle anderen Marienkäfer, die als Threads bezeichnet werden, einen bestimmten Programmpunkt oder Ort erreicht haben. Außerdem lassen sich Sensoren für die drei angrenzenden Felder rechts, links und vorne sowie für das eigene Feld definieren. Kleeblätter gelten für jeden Käfer einzeln.

TuringKara ist eine Turing-vollständige Version von Kara. Anstelle des Marienkäfers wird ein Lese- und Schreibkopf verwendet. Die Welt kann mit Einsen und Nullen, Doppelkreuzen oder Pfeilen belegt werden. Diese Symbole verhalten sich wie Kleeblätter und befinden sich stets unter dem Lesekopf; ihre Bedeutung ist nicht festgelegt. Der Lesekopf untersucht nur seinen aktuellen Standpunkt und nicht die drei umliegenden Felder. Die Programmierung erfolgt weiterhin grafisch mit Zuständen und Sensorprüfungen.

LegoKara passt die Programmausgabe an den Lego-Mindstorms-RCX an. Grafisch erstellte Programme können auf den RCX heruntergeladen werden. Die Welt enthält nur den Marienkäfer, Kleeblätter als Lichtsensor und Baumstümpfe als Drucksensor. Zusätzlich gibt es die RCX-Funktionen „links drehen“, „rechts drehen“ und „Einstellungen“. Weitere Varianten sind ScratchKara als Verbindung von Scratch und Kara sowie GreenfootKara als Implementierung von Kara in Greenfoot.

Lernvideos zu Kara (Programmierumgebung)

Weiterlesen

Microsoft Windows Microsoft Windows (englische Aussprache [ˈmaɪ.kɹoʊ.sɒft ˈwɪn.doʊz]) bzw. Windows ist eine Reihe proprietärer grafischer Betriebssystemfamilien von Microsoft … Programmierung Beim Programmieren sind wesentliche Aspekte zur Softwarequalität zu berücksichtigen und durch die Gestaltung des Quellcodes umzusetzen. Siehe dazu als Beispiele … Lernsoftware Das didaktische Instrumentarium reicht bei diesem Lernmedium heute vom Vokabeltraining und Grammatikquiz über das Hörverstehen bis hin zum Aussprachetraining. Endlicher Automat Ein endlicher Automat (EA, auch Zustandsmaschine, Zustandsautomat; englisch finite state machine, FSM) ist ein Modell eines Verhaltens, bestehend aus … Java (Programmiersprache) Java ist eine objektorientierte Programmiersprache und eine eingetragene Marke des Unternehmens Sun Microsystems, welches 2010 von Oracle übernommen wurde. Python (Programmiersprache) Python ([ˈpʰaɪθn̩], [ ˈpʰaɪθɑn], auf Deutsch auch [ ˈpʰyːtɔn]) ist eine universell nutzbare, üblicherweise interpretierte, höhere Programmiersprache. Turingmaschine Eine Turingmaschine ist ein mathematisches Modell der theoretischen Informatik, das eine abstrakte Maschine definiert. Bei diesem Rechnermodell werden nach … Java-Technologie Programme für die Java-Plattform werden in der Regel mit Hilfe der Programmiersprache Java erstellt. Die Verwendung anderer Programmiersprachen ist möglich, z. Englische Sprache Die englische Sprache (Eigenbezeichnung: [ˈɪŋɡlɪʃ]) ist eine ursprünglich in England beheimatete germanische Sprache, die zum westgermanischen Zweig gehört. Informatik Als einfache Rechengeräte leisteten Abakus und später der Rechenschieber unschätzbare Dienste. 1641 konstruierte Blaise Pascal eine mechanische … Objekt (Programmierung) Ein Objekt in der Programmierung bezeichnet eine inhaltlich zusammengehörige Datenmenge: In der objektorientierten Programmierung wird eine Objektinstanz … Integrierte Entwicklungsumgebung Eine integrierte Entwicklungsumgebung (IDE, von englisch integrated development environment) ist eine Sammlung von Computerprogrammen, mit denen die …