Zum Inhalt springen

Kara (Programmierumgebung)

aus Wikipedia, der freien Enzyklopädie
{{#if: | | {{#invoke:WLink|getArticleBase}} }}

{{#if: Logo |

colspan="2" class="notheme" style="text-align:center; background:#Vorlage:Standardfarbe; color:#202122;" | Logo |
 {{#if: {{#invoke:Wikidata|claim|P154}} | 
[[Datei:{{#invoke:Wikidata|claim|P154}}|150px]]
 }}
}}{{#if:
Marienkäfer
Marienkäfer
|
Marienkäfer
Marienkäfer
{{#if: Kara, ein Marienkäfer in einer 2D-Welt |
Kara, ein Marienkäfer in einer 2D-Welt }}|

}}

Basisdaten

{{#if: |

Hauptentwickler
 {{#if: {{#invoke:Wikidata|claim|P126}} | 
Maintainer claim|P126|parameter=link|references=ja|list=, }}
 }}

}}{{#if: Raimond Reichert |

Entwickler Raimond Reichert |
 {{#if: {{#invoke:Wikidata|claim|P178}} | 
Entwickler claim|P178|parameter=link|references=ja|list=, }}
 }}

}}{{#if: |

Erscheinungsjahr
 {{#if: {{#invoke:Wikidata|claim|P577}} | 
Erscheinungsjahr claim|P577|references=ja|list=, }} |
   {{#if: {{#invoke:Wikidata|claim|P571}} | 
Erscheinungsjahr claim|P571|references=ja|list=, }}
   }}
 }}

}}{{#ifeq: versionslos | KEINE_ANGABE || {{#if: versionslos |

Aktuelle Version
({{#if: | Vorlage:Datum – die Form mit drei unbenannten Parametern oder anderen einzelnen Zeiteinheiten ist veraltet und wird nicht mehr unterstützt. Bitte gib das Datum einfach im Klartext an.
format 27. Februar 2007 | {{#timefl:now|date}}}} {{{2}}} | T._Monat JJJJ}} lang= {{#switch: -|=de #default=de-AT
            }}
   }}

}}) }}

 {{#if: {{#invoke:Wikidata|claim|P348|P548|!Q3295609,Q51930650,Q2122918,Q21727724,Q1072356,Q6736813}} | 
Aktuelle Version claim|P348|P548|!Q3295609,Q51930650,Q2122918,Q21727724,Q1072356,Q6736813|references=ja}} {{#if: {{#invoke:Wikidata|claim|P348|P548|!Q3295609,Q51930650,Q2122918,Q21727724,Q1072356,Q6736813|qualifier=P577}} |
({{#invoke:Wikidata|claim|P348|P548|!Q3295609,Q51930650,Q2122918,Q21727724,Q1072356,Q6736813|qualifier=P577}}) }}}}}}

}}{{#ifeq: {{{AktuelleVorabVersion}}} | KEINE_ANGABE || {{#if: |

Aktuelle Vorabversion
({{#if: | Vorlage:Datum – die Form mit drei unbenannten Parametern oder anderen einzelnen Zeiteinheiten ist veraltet und wird nicht mehr unterstützt. Bitte gib das Datum einfach im Klartext an.
format {{{AktuelleVorabVersionFreigabeDatum}}} | {{#timefl:now|date}}}} {{{2}}} | T._Monat JJJJ}} lang= {{#switch: -|=de #default=de-AT
            }}
   }}

}}) }}

 {{#if: {{#invoke:Wikidata|claim|P348|P548|Q1072356,Q51930650,Q3295609,Q2122918,Q21727724}} | 
Aktuelle Vorabversion claim|P348|P548|Q1072356,Q51930650,Q3295609,Q2122918,Q21727724|references=ja}} {{#if: {{#invoke:Wikidata|claim|P348|P548|Q1072356,Q51930650,Q3295609,Q2122918,Q21727724|qualifier=P577}} |
({{#invoke:Wikidata|claim|P348|P548|Q1072356,Q51930650,Q3295609,Q2122918,Q21727724|qualifier=P577}}) }}}}}}

}}{{#if: |

Ausführungsumgebung
 {{#if: Windows, Linux, macOS, u. v. m. | 
Betriebssystem Windows, Linux, macOS, u. v. m. |
   {{#if: {{#invoke:Wikidata|claim|P306}} | 
Betriebssystem claim|P306|parameter=link|references=ja|list=, }}
   }}
 }}

}}{{#if: |

Programmier­sprache
 {{#if: {{#invoke:Wikidata|claim|P277}} | 
Programmier­sprache claim|P277|parameter=link|references=ja|list=, }}
 }}

}}{{#if: Programmier-Lernumgebung |

Kategorie Programmier-Lernumgebung

}}{{#if: Freeware |

Lizenz Freeware |
 {{#if: {{#invoke:Wikidata|claim|P275}} | 
Lizenz claim|P275|parameter=link|references=ja|list=, }}
 }}

}}{{#if: ja |

deutschsprachig faculty|ja}} | ja | nein }}

}}{{#if: |

Sonstiges {{{Sonstiges}}}Vorlage:Infobox Software/Wartung/Sonstiges

}}{{#if: www.swisseduc.ch |

www.swisseduc.ch |
 {{#if: {{#invoke:Wikidata|claim|P856|notdeprecated=1}} | 
{{#invoke: WLink | formatURL | {{#invoke:Wikidata|claim|P856|parameter=link|notdeprecated=1}}}}
 }}

}}{{#if: |

Dateien [[c:Category:Created with {{{Dateien}}}|{{{Dateien}}}]]

}}

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

Kara ist ein programmierbarer Marienkäfer, der in einer einfachen grafischen Welt lebt und Aufgaben unterschiedlicher Schwierigkeit lösen muss, zum Beispiel Kleeblätter einsammeln oder den Weg durch ein Labyrinth finden.

Neben der Version mit grafischem Programmeditor existieren auch Versionen, die den Übergang zu realen Programmiersprachen bilden können, wie zum Beispiel Java, Ruby oder Python, sowie Umgebungen zu speziellen Themen, zum Beispiel Turingmaschinen.

Alle javafähigen Plattformen (ab J2SE, mindestens die JRE, für JavaKara sogar das JSDK) unterstützen Kara.

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<ref name="RaimondReichert">SwissEduc: Raimond Reichert</ref> 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“.<ref name="FritzKutter">Fritz-Kutter Fonds: <templatestyles src="Webarchiv/styles.css" />{{#if:20060820043421

      | {{#ifeq: 20060820043421 | *
    | Vorlage:Webarchiv/Wartung/Stern{{#if: Frühere Preisträger | {{#invoke:WLink|getEscapedTitle|Frühere Preisträger}} | {{#invoke:Webarchiv|getdomain|http://www.kutter-fonds.ethz.ch/preistr.html}} }} (Archivversionen)
    | {{#iferror: {{#time: j. F Y|20060820043421}}
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/DatumDer Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
         | {{#if: Frühere Preisträger | {{#invoke:WLink|getEscapedTitle|Frühere Preisträger}} | {{#invoke:Webarchiv|getdomain|http://www.kutter-fonds.ethz.ch/preistr.html}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if: 2019-04-22 03:42:26 InternetArchiveBot | 2019-04-22 03:42:26 InternetArchiveBot |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y|20060820043421}} im Internet Archive{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
      }}
  }}
      | {{#if:
          | {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
    | {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
       | 16= {{#if: Frühere Preisträger | {{#invoke:WLink|getEscapedTitle|Frühere Preisträger}} | {{#invoke:Webarchiv|getdomain|http://www.kutter-fonds.ethz.ch/preistr.html}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if: 2019-04-22 03:42:26 InternetArchiveBot | 2019-04-22 03:42:26 InternetArchiveBot |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | 9 = {{#if: Frühere Preisträger | {{#invoke:WLink|getEscapedTitle|Frühere Preisträger}} | {{#invoke:Webarchiv|getdomain|http://www.kutter-fonds.ethz.ch/preistr.html}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if: 2019-04-22 03:42:26 InternetArchiveBot | 2019-04-22 03:42:26 InternetArchiveBot |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!Vorlage:Webarchiv/Wartung/webcitation{{#if:  || }}
      }}
    | c|{{{webciteID}}}}} {{#if: Frühere Preisträger | {{#invoke:WLink|getEscapedTitle|Frühere Preisträger}} | {{#invoke:Webarchiv|getdomain|http://www.kutter-fonds.ethz.ch/preistr.html}} }} (Memento{{#if: {{#if: 2019-04-22 03:42:26 InternetArchiveBot | 2019-04-22 03:42:26 InternetArchiveBot |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
  }}
          | {{#if: 
              | Vorlage:Webarchiv/Today
              | {{#if:
                      | Vorlage:Webarchiv/Generisch
                      | {{#if: Frühere Preisträger | {{#invoke:WLink|getEscapedTitle|Frühere Preisträger}} | {{#invoke:Webarchiv|getdomain|http://www.kutter-fonds.ethz.ch/preistr.html}} }}  
                 }}}}}}}}{{#if:2019-04-22 03:42:26 InternetArchiveBot
    | Vorlage:Webarchiv/archiv-bot
  }}{{#invoke:TemplatePar|check
     |all      = url=
     |opt      = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
     |cat      = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
     |errNS    = 0
     |template = Vorlage:Webarchiv
     |format   = *
     |preview  = 1
  }}{{#ifexpr: {{#if:20060820043421|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
  }}{{#if: 
    | {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
        | web.archive.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}} 
        | webcitation.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}} 
        | archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
      }}{{#if: 
         | {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
             | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
          |  }} 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
      }}
    | {{#if: 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
      }}
  }}{{#if:{{#invoke:URLutil|isHostPathResource|http://www.kutter-fonds.ethz.ch/preistr.html}}
    || {{#if:  || }}
  }}{{#if: Frühere Preisträger
    | {{#if: {{#invoke:WLink|isBracketedLink|Frühere Preisträger}}
        | {{#if:  || }}
      }}
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Linktext_fehlt
  }}{{#switch: 
    |addlarchives|addlpages= {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/Parameter}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
  }}{{#ifeq: {{#invoke:Str|find|http://www.kutter-fonds.ethz.ch/preistr.html%7Carchiv}} |-1
    || {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://www.kutter-fonds.ethz.ch/preistr.html%7C4}}%7Chttp}} |-1
         || {{#switch: {{#invoke:Webarchiv|getdomain|http://www.kutter-fonds.ethz.ch/preistr.html }}
              | abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org = 
              | #default = {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/URL}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
            }} 
       }}
  }}</ref>

Er gewann 2002 mit KaraToJava den European Academic Software Award im Bereich „Computer science“ (engl. für Informatik).<ref name="EASA">EASA 2002: <templatestyles src="Webarchiv/styles.css" />{{#if:20070927062635

      | {{#ifeq: 20070927062635 | *
    | Vorlage:Webarchiv/Wartung/Stern{{#if: KaraToJava | {{#invoke:WLink|getEscapedTitle|KaraToJava}} | {{#invoke:Webarchiv|getdomain|http://www.bth.se/llab/easa_2002.nsf/4b007747d14a37f0c1256c7d007aacad/018d54e5d1aa7693c1256b480039503e}} }} (Archivversionen)
    | {{#iferror: {{#time: j. F Y|20070927062635}}
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/DatumDer Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
         | {{#if: KaraToJava | {{#invoke:WLink|getEscapedTitle|KaraToJava}} | {{#invoke:Webarchiv|getdomain|http://www.bth.se/llab/easa_2002.nsf/4b007747d14a37f0c1256c7d007aacad/018d54e5d1aa7693c1256b480039503e}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if:  | {{{archiv-bot}}} |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y|20070927062635}} im Internet Archive{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
      }}
  }}
      | {{#if:
          | {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
    | {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
       | 16= {{#if: KaraToJava | {{#invoke:WLink|getEscapedTitle|KaraToJava}} | {{#invoke:Webarchiv|getdomain|http://www.bth.se/llab/easa_2002.nsf/4b007747d14a37f0c1256c7d007aacad/018d54e5d1aa7693c1256b480039503e}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if:  | {{{archiv-bot}}} |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | 9 = {{#if: KaraToJava | {{#invoke:WLink|getEscapedTitle|KaraToJava}} | {{#invoke:Webarchiv|getdomain|http://www.bth.se/llab/easa_2002.nsf/4b007747d14a37f0c1256c7d007aacad/018d54e5d1aa7693c1256b480039503e}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if:  | {{{archiv-bot}}} |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!Vorlage:Webarchiv/Wartung/webcitation{{#if:  || }}
      }}
    | c|{{{webciteID}}}}} {{#if: KaraToJava | {{#invoke:WLink|getEscapedTitle|KaraToJava}} | {{#invoke:Webarchiv|getdomain|http://www.bth.se/llab/easa_2002.nsf/4b007747d14a37f0c1256c7d007aacad/018d54e5d1aa7693c1256b480039503e}} }} (Memento{{#if: {{#if:  | {{{archiv-bot}}} |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
  }}
          | {{#if: 
              | Vorlage:Webarchiv/Today
              | {{#if:
                      | Vorlage:Webarchiv/Generisch
                      | {{#if: KaraToJava | {{#invoke:WLink|getEscapedTitle|KaraToJava}} | {{#invoke:Webarchiv|getdomain|http://www.bth.se/llab/easa_2002.nsf/4b007747d14a37f0c1256c7d007aacad/018d54e5d1aa7693c1256b480039503e}} }}  
                 }}}}}}}}{{#if:
    | Vorlage:Webarchiv/archiv-bot
  }}{{#invoke:TemplatePar|check
     |all      = url=
     |opt      = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
     |cat      = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
     |errNS    = 0
     |template = Vorlage:Webarchiv
     |format   = *
     |preview  = 1
  }}{{#ifexpr: {{#if:20070927062635|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
  }}{{#if: 
    | {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
        | web.archive.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}} 
        | webcitation.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}} 
        | archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
      }}{{#if: 
         | {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
             | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
          |  }} 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
      }}
    | {{#if: 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
      }}
  }}{{#if:{{#invoke:URLutil|isHostPathResource|http://www.bth.se/llab/easa_2002.nsf/4b007747d14a37f0c1256c7d007aacad/018d54e5d1aa7693c1256b480039503e}}
    || {{#if:  || }}
  }}{{#if: KaraToJava
    | {{#if: {{#invoke:WLink|isBracketedLink|KaraToJava}}
        | {{#if:  || }}
      }}
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Linktext_fehlt
  }}{{#switch: 
    |addlarchives|addlpages= {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/Parameter}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
  }}{{#ifeq: {{#invoke:Str|find|http://www.bth.se/llab/easa_2002.nsf/4b007747d14a37f0c1256c7d007aacad/018d54e5d1aa7693c1256b480039503e%7Carchiv}} |-1
    || {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://www.bth.se/llab/easa_2002.nsf/4b007747d14a37f0c1256c7d007aacad/018d54e5d1aa7693c1256b480039503e%7C4}}%7Chttp}} |-1
         || {{#switch: {{#invoke:Webarchiv|getdomain|http://www.bth.se/llab/easa_2002.nsf/4b007747d14a37f0c1256c7d007aacad/018d54e5d1aa7693c1256b480039503e }}
              | abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org = 
              | #default = {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/URL}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
            }} 
       }}
  }}</ref>

Versionen

Alle Kara-Versionen und -Derivate
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.


Datei:Kara help.gif
Das Kara-Weltfenster

Die Integrierte Entwicklungsumgebung sieht immer mindestens eine selbst erzeugbare 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, aufgenommen und abgelegt werden. Pilze können nur verschoben werden. Bäume sind allerdings fest und führen zum Programmende, wenn Kara gegen sie läuft.

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 enthalten immer Aufgaben in verschiedenen Schwierigkeitsgraden, in einigen Downloads gibt es sogar Lösungen.

Kara – Programmieren mit Automaten

Datei:Kara-programeditor.gif
Der grafische Programmeditor von Kara

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 erschaffen wurden, kann man in einem grafischen Programmeditor Karas Reaktionen bestimmen.

Es gibt einen Startpunkt, den das Programm anfänglich anspringt. Von dort aus werden die ersten Sensorprüfungen vorgenommen. Es können verschiedene Sensoren wie „Baum vorne?“ oder „Kleeblatt unten?“ boolesch geprüft und je nach Ergebnis des Sensors verschiedene Aktionen vorgenommen und in andere Zustände übergegangen werden.

Umgebungen für reale Programmiersprachen

JavaKara – mit Java programmieren

Datei:Javakara-programeditor.gif
Der JavaKara-Programmeditor mit dem Standardprogramm

JavaKaras Welt ist analog zu der des 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. <syntaxhighlight lang="java">

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

</syntaxhighlight>

Das Programmfenster bietet außerdem eine integrierte „Entwicklungsumgebung“ (IDE) 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.“

RubyKara, PythonKara, JavaScriptKara

Wie für Java gibt es inzwischen weitere Versionen von Kara für die Programmiersprachen Ruby, Python und JavaScript.

Die üblichen Kontrollstrukturen der jeweiligen Sprache stehen vollständig zur Verfügung. Ein bestimmtes "Grundgerüst" ist anders als bei JavaKara wegen der einfacheren Syntax dieser Sprachen nicht nötig. Ein sehr einfaches, vollständiges Programm für RubyKara sieht z. B. folgendermaßen aus:

while (!kara.treeFront){  // Eine while-Schleife läuft solange wie der wert true ist, also wahr
//!kara.treeFront Bedeutet: Ist kein Baum vor mir
  kara.putLeaf();
if (kara.onLeaf()) //if (Bedingung) und
  kara.move();// die if-Abfrage zählt nur 1 Zeile darunter
}// ende der while-Schleife

Umgebungen zu bestimmten Themen

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.

MultiKara – nebenläufige Programmierung

MultiKara ähnelt Kara sehr, eignet sich aber eher für fortgeschrittenere Zwecke und wird, wenn Kara als Lernumgebung genutzt wird, meistens (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.

TuringKara – Turingmaschinen anschaulich

Datei:Turingkara-worldeditor.gif
Karas Welt Turing-vollständig
rot: Lesekopf

TuringKara ist eine Turing-vollständige Version von Kara und bietet statt des Marienkäfers Kara einen Lese- und Schreibkopf (kurz nur Lesekopf, vergleiche Festplatte).

Statt mit Natursymbolen kann die Welt mit Einsen und Nullen, Doppelkreuz 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.

Weitere Versionen

  • ScratchKara, eine Verknüpfung der Programmierumgebungen Scratch und Kara
  • GreenfootKara, eine Implementierung von Kara in Greenfoot

Siehe auch

Einzelnachweise

<references />

Literatur

Weblinks