Kara (Programmierumgebung)

Kara (Programmierumgebung)
KaraToJava
Bild:Kara_logo.gif

Kara, ein Marienkäfer in einer 2D-Welt
Basisdaten
Entwickler: Raimond Reichert
Aktuelle Version: versionslos
(24.01.2006)
Betriebssystem: Windows, Linux, Mac OS, u. v. m.
Kategorie: Programmier-Lernumgebung
Lizenz: Freeware
Deutschsprachig: ja
SwissEduc: Kara

KaraToJava ist eine weitverbreitete Lernsoftware der endlichen Automatentheorie sowie genereller Programmiertechniken und Kontrollstrukturen in Java. Sie kann den so genannten Minisprachen zugeordnet werden. Alle javafähigen Plattformen (ab J2SE, mindestens die JRE, für JavaKara sogar das JSDK) unterstützen Kara.

Näheres zu KaraToJava unter den Versionen wie Kara und JavaKara.

Inhaltsverzeichnis

Geschichte

Eine erste Version von Kara entstand von 1999 bis 2003 an der ETH Zürich unter der Beteiligung von Jürg Nievergelt, Werner Hartmann, Raimond Reichert, Markus Brändle, Tobias Schlatter, mit Beiträgen von Philipp Boksberger, Horst Gierhardt, Reto Lamprecht, Remo Meier, Horst Müller, Nicole Völki, Samuel Zürcher. Kara wird heute von Raimond Reichert[1] laufend weiterentwickelt.

Preise

2000 gewann Kara als Diplomarbeit Raimond Reicherts den Fritz-Kutter-Preis zur Förderung praxisbezogener Informatik mit dem Titel „Ein spielerischer Einstieg ins Programmieren: Kara, der programmierbare Marienkäfer“.[2]

Er gewann 2002 mit KaraToJava den European Academic Software Award im Bereich „Computer science“ (engl. für Computerwissenschaft).[3]

Versionen

Alle Kara-Versionen und -Derivate


Beim Starten von Kara kann die Umgebung ausgewählt werden. Je nachdem werden die komplette Welt, das Programmfenster und die Hilfe geladen. Die Auswahl kann während der Programmausführung nicht geändert werden, allerdings kann Kara mehrfach instanziert werden.


Das Kara-Weltfenster

Die Entwicklungsumgebung sieht immer mindestens eine selbst erstellbare Welt sowie eine Möglichkeit Kara automatisch handeln zu lassen vor.

Kara an sich ist ein Marienkäfer in einer zweidimensionalen Welt, zusammen mit Baumstümpfen, Fliegenpilzen und Kleeblättern. Kleeblätter können überquert und Pilze verschoben werden, Bäume sind allerdings fest.

Gesteuert wird der Käfer entweder manuell über Schaltflächen neben der Weltkarte oder über ein der jeweiligen Version entsprechendes „Programm“.

Beim Ablauf eines Kara-Programmes, sei es nun logisch über Zustände in der grafischen Kara-Oberfläche oder mit JavaKara, kann die Geschwindigkeit jederzeit reguliert und die Berechnung pausiert werden.

Alle Versionen beinhalten immer Aufgaben in verschiedenen Schwierigkeitsgraden, in einigen Downloads gibt es sogar Lösungen.

Der grafische Programmeditor von Kara

Kara – programmieren mit Automaten

Kara ist Anlaufpunkt für die endliche Automatentheorie. Es kann vorerst an einfachen Welten ausprobiert werden, wie sich Kara in seiner Welt verhält und mit ihr interagieren kann.

Nachdem wie üblich Welten erstellt wurden kann man in einem grafischen Programmeditor Karas Reaktionen bestimmen.

Es gibt einen Startpunkt, den das Programm anfänglich anspringt und von dort aus durch Sensorprüfungen vornimmt. Es können verschiedene Sensoren wie „Baum vorne?“ oder „Kleeblatt unten?“ boole'sch geprüft und je nachdem verschiedene Aktionen vorgenommen und in andere Zustände übergegangen werden.

MultiKara – nebenläufige Programmierung

MultiKara ähnelt Kara sehr, eignet sich aber eher für fortgeschrittenere Zwecke und wird, wenn Kara als Lernumgebung genutzt wird, meist (vorerst) übersprungen.

Im Gegensatz zum normalen Kara können hier bis zu vier Marienkäfer nebenläufig eingesetzt werden und einzeln - immer noch grafisch - programmiert werden.

Karas Welt wird um Straßensymbole, welche die Begehbarkeit eines Feldes einschränken, sowie mehrere Synchronisationsmechanismen ergänzt. So kann ein Marienkäfer beispielsweise solange gesperrt werden, bis alle anderen Marienkäfer (Threads) einen bestimmten Punkt im Programmablauf oder der Welt erreicht haben.

Außerdem können eigene Sensoren für die drei Felder um den Marienkäfer (rechts, links, vorne) und sein eigenes definiert werden. Kleeblätter gelten für jeden Käfer einzeln.

Der JavaKara-Programmeditor mit dem Standardprogramm

JavaKara – mit Java Programmieren

JavaKaras Welt ist analog zu der herkömmlichen Kara aufgebaut, nur wird nicht mehr mit der grafischen Oberfläche sondern mit Java programmiert. Kara kann wie üblich bewegt werden, Aktionen durchführen und seine Sensoren prüfen.

Die Kara-Bibliotheken kara, world und tools sind direkt in der allkara.jar-Klasse JavaKaraProgram implementiert. Es ist vollkommener Zugriff auf übliche Java-Kontrollstrukturen und -Pakete gegeben.

Alle JavaKara-Programme müssen einem bestimmten Grundgerüst (und natürlich geltenden Java-Regeln) folgen, damit sie syntaktisch richtig sind und damit korrekt interpretiert werden können.

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

Das Programmfenster bietet außerdem eine integrierte „Entwicklungsumgebung“ mit automatischer Einrückung und Syntaxhervorhebung sowie eine integrierte Kompiliermöglichkeit.


Hauptentwickler Raimond Reicher selbst über JavaKara:

„[JavaKara] ist sehr zeitabhängig. Kara hingegen ist zeitlos und auch noch aktuell, wenn Java eines Tages nicht mehr aktuell ist.

Derivate

Derivate von Kara nutzen die gleiche Welt wie die normalen Kara-Versionen, ändern aber die Akteure und Gegenstände in ihr fundamental. Sie haben weniger mit dem normalen Lehrmittel Kara zu tun und erfordern teilweise zusätzliches Material oder Wissen.

Karas Welt turing-komplett
rot: Lesekopf

TuringKara – Turing Maschinen anschaulich

TuringKara ist eine turing-komplette Version von Kara und bietet statt dem Marienkäfer Kara einen Lese- und Schreibkopf (kurz nur Lesekopf, vergleiche Festplatte).

Statt den Natursymbolen kann die Welt mit Einsen und Nullen, Rautenzeichen oder Pfeilen belegt werden. Sie verhalten sich wie die Kleeblätter aus Kara, sind also immer unter dem Lesekopf. Es gibt keine festgelegten Funktionen für die einzelnen Symbole, so können die Pfeile beispielsweise als Wegweiser in der Welt (ähnlich einer Lochkarte) oder als Rechenoperatoren interpretiert werden.

Folgerichtig kann der Lesekopf nicht mehr – wie der Marienkäfer in Kara – die drei umliegenden Felder untersuchen, sondern nur noch seinen momentanen Standpunkt. Es wird wieder grafisch mit Zuständen und Sensorprüfungen programmiert.

LegoKara – Kara für Lego Mindstorms

Kara modifiziert seinen Programmausgang in LegoKara RCX-gerecht. Die grafisch geschriebenen Programme können auf den RCX heruntergeladen werden.

Die Welt bietet nur noch den Marienkäfer (LegoKara), Kleeblätter (Lichtsensor) und Baumstümpfe (Drucksensor), allerdings kommen drei RCX-Funktionen links drehen, rechts drehen und Einstellungen hinzu.

Quellen

  1. SwissEduc: Raimond Reichert
  2. Fritz-Kutter Fonds: Frühere Preisträger
  3. EASA 2002: KaraToJava

Siehe auch

Literatur

  • Raimond Reichert, Jürg Nievergelt, Werner Hartmann: Programmieren mit Kara. Springer-Verlag, Berlin 2005, ISBN 3540403620

Weblinks


Wikimedia Foundation.

Игры ⚽ Нужно сделать НИР?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Kara — steht für: eine Region in Togo, siehe Kara (Region) eine Stadt in Togo, siehe Kara (Togo) eine Ethnie in Äthiopien, siehe Kara (Volk) deren Sprache, siehe Kara (Sprache) eine visuelle Programmierumgebung, siehe Kara (Programmierumgebung) ein… …   Deutsch Wikipedia

  • LEGO Mindstorms — (eigene Schreibweise LEGO Mindstorms) ist der Name einer Produktserie des Spielwarenherstellers Lego, die einen programmierbaren Legostein (RCX = Robotics Command System) sowie Elektromotoren, Sensoren und Lego Technik Teile (Zahnräder, Achsen,… …   Deutsch Wikipedia

  • Mindstorms — Lego Mindstorms (eigene Schreibweise LEGO Mindstorms) ist der Name einer Produktserie des Spielwarenherstellers Lego, die einen programmierbaren Legostein (RCX = Robotics Command System) sowie Elektromotoren, Sensoren und Lego Technik Teile… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”