<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://cgd.zum.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=PT59kripke</id>
	<title>ComeniusWiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://cgd.zum.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=PT59kripke"/>
	<link rel="alternate" type="text/html" href="https://cgd.zum.de/wiki/Spezial:Beitr%C3%A4ge/PT59kripke"/>
	<updated>2026-10-22T23:15:36Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Kapitel_7:_Objekte_und_Klassen&amp;diff=2490</id>
		<title>Kapitel 7: Objekte und Klassen</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Kapitel_7:_Objekte_und_Klassen&amp;diff=2490"/>
		<updated>2014-03-31T08:29:17Z</updated>

		<summary type="html">&lt;p&gt;PT59kripke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Informatik_10._Klasse_13-14|Zur Startseite]] - [[Kapitel_1:_Vorbereitende_Aufgaben_und_Einstieg|Kapitel 1]] - [[Kapitel_2:_Variablen_und_Datentypen|Kapitel 2]] - [[Kapitel_3:_Kontrollstrukturen|Kapitel 3]] - [[Kapitel_4:_Methoden|Kapitel 4]] - [[Kapitel_5:_Arrays|Kapitel 5]] - [[Kapitel_6:_Objektorientierung|Kapitel 6]] - [[Kapitel_8:_Zustände|Kapitel 8]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bisher haben wir vornehmlich Datentypen verwendet, die in JAVA vordefiniert sind (z.B.&#039;&#039;int&#039;&#039;, &#039;&#039;double&#039;&#039;, &#039;&#039;String&#039;&#039;). Die große Stärke einer objektorientierten Programmiersprache besteht darin, dass wir als Programmierer eigene Datentypen in Form von Klassen nach unseren Vorstellungen und Bedürfnissen erstellen können. Eine &#039;&#039;&#039;Klasse&#039;&#039;&#039; beschreibt entsprechend den &#039;&#039;&#039;Aufbau eines komplexen Datentyps&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Beispiele für Objekte der Klasse &#039;&#039;Rechteck&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
[[Datei:Obj1.JPG]]&lt;br /&gt;
&lt;br /&gt;
Wie wir bereits aus der 6.Klasse wissen, lassen sich diese Objekte der Klasse Rechteck auch in Form von &#039;&#039;&#039;Objektdiagrammen&#039;&#039;&#039; darstellen. &lt;br /&gt;
&lt;br /&gt;
[[Datei:Klass1.JPG]]&lt;br /&gt;
&lt;br /&gt;
Diese Darstellung von Objekten beinhaltet neben dem Objektnamen, der nach einer Konvention immer klein geschrieben wird, die &#039;&#039;&#039;Attribute&#039;&#039;&#039; des Objekts und die jeweiligen &#039;&#039;&#039;Attributwerte&#039;&#039;&#039;. Sie definieren den &#039;&#039;&#039;Zustand&#039;&#039;&#039; des Objekts. Objekte mit den denselben Attributen sind &#039;&#039;&#039;Instanzen&#039;&#039;&#039; einer Klasse. Eine Klasse stellt einen Konstruktionsplan für bestimmte Objekte dar, der mit all seinen Informationen auch ohne diese Objekte existiert. Eine Klasse ist also keine Menge von Objekten! &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Die Definition einer Klasse beinhaltet drei Bestandteile: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*Die Datenfelder bzw. Instanzvariablen speichern die Daten, die das jeweilge Objekt benutzt. &lt;br /&gt;
*Die Konstruktoren erlauben es, neue Objekte zu erzeugen und diese in einen bestimmten Anfangszustand zu versetzen. &lt;br /&gt;
*Die Methoden implementieren das Verhalten der Objekte.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;[[Exkurs: UML]]&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Beispiel: Die Klasse &#039;&#039;Rechteck&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
[[Datei:Klass2.JPG]]&lt;br /&gt;
&lt;br /&gt;
Instanzvariablen und Methoden haben wir bereits kennengelernt. Neu sind die sogenannten Konstruktoren. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Konstruktor  ===&lt;br /&gt;
&lt;br /&gt;
Eine Klasse kann keinen, einen oder mehrere unterschiedliche Konstruktoren besitzen. Sie dienen dazu, ein neu gebildetes Objekt einer Klasse in einen definierten Anfangszustand zu versetzen. Welcher dies ist hängt davon ab, welcher Konstruktor bei der Objektbildung aufgerufen wird. Ein leerer (Standard-) Konstruktor muss nicht angegeben werden, er wird bei Fehlen von der JVM (Java Virtual Machine) automatisch erzeugt. Aus diesem Grund hatten wir in unseren bisherigen Aufgaben keinen expliziten Konstruktor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Syntax:&#039;&#039;&#039; &lt;br /&gt;
&amp;lt;pre&amp;gt; public nameDerKlasse(Parameter) {}&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&amp;lt;br&amp;gt; &#039;&#039;&#039;Beispiel&#039;&#039;&#039;: Konstruktoren der obigen Klasse &#039;&#039;Rechteck&#039;&#039;: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;public Rechteck()&#039;&#039;&#039; weist dem Rechteck standardmäßig Werte zu. &lt;br /&gt;
&amp;lt;pre&amp;gt;public Rechteck(){&lt;br /&gt;
breite = 10;&lt;br /&gt;
hoehe = 7;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
Wir erhalten bei Aufruf des Konstruktors ein Rechteck der Größe 10x7. Die restlichen Werte werden von der JVM auf einen internen Standardwert gesetzt. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;public Rechteck(breite, hoehe)&#039;&#039;&#039; gibt dem User die Möglichkeit, die Größe des Rechtecks selbst zu bestimmen. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;pre&amp;gt;public Rechteck(int breite, int hoehe){&lt;br /&gt;
this.breite = breite;&lt;br /&gt;
this.hoehe = hoehe;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
Hier werden nach Aufruf des Konstruktors den Instanzvariablen die entsprechenden Werte der Parameter zugewiesen. Das Schlüsselwort &#039;&#039;&#039;this&#039;&#039;&#039; liefert innerhalb eines Objekts immer eine Referenz auf das Objekt selbst, d.h. es steht in der bekannten Punktschreibweise an der Stelle des Objektnamens einfach das Wort &#039;&#039;&#039;this&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;public Rechteck(breite, hoehe, fuellfarbe)&#039;&#039;&#039; gibt dem User die Möglichkeit, neben der Größe des Rechtecks auch noch dessen Füllfarbe festzulegen. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;pre&amp;gt;public Rechteck(int breite, int hoehe, String fuellfarbe){&lt;br /&gt;
this.breite = breite;&lt;br /&gt;
this.hoehe = hoehe;&lt;br /&gt;
this.fuellfarbe = fuellfarbe&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Konstruktoren können also mit unterschiedlichen Parameterlisten deklariert sein. Man spricht hier vom &#039;&#039;&#039;Überladen&#039;&#039;&#039; des Konstruktors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Konstruktoraufruf  ====&lt;br /&gt;
&lt;br /&gt;
Neue Instanzen einer Klasse werden mit dem Operator &#039;&#039;&#039;&#039;&#039;new&#039;&#039;&#039;&#039;&#039; erzeugt. &lt;br /&gt;
&amp;lt;pre&amp;gt;Rechteck rechteck1 = new Rechteck();&lt;br /&gt;
&lt;br /&gt;
Rechteck rechteck2 = new Rechteck(12,8);&lt;br /&gt;
&lt;br /&gt;
Rechteck rechteck3 = new Rechteck(15,4,&amp;quot;rot&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
Die drei erzeugten Rechtecke sind vom Typ Rechteck; d.h. sie sind Instanzen der Klasse Rechteck.&amp;lt;br&amp;gt; &#039;&#039;rechteck1&#039;&#039; wird mit dem Standardkonstruktor erzeugt und hat die Größe 10x7.&amp;lt;br&amp;gt; &#039;&#039;rechteck2&#039;&#039; wird vom User auf die Größe 12x8 festgelegt&amp;lt;br&amp;gt; &#039;&#039;rechteck3&#039;&#039; bekommt vom User die Größe 15x4 und die Füllfarbe &#039;&#039;rot&#039;&#039; zugewiesen. &lt;br /&gt;
&lt;br /&gt;
Hier sollte nun deutlich werden, dass das erzeugte Objekt eine Variable ist, die nach dem Plan der Klasse &#039;&#039;Rechteck&#039;&#039; aufgebaut ist. Erst wenn das Objekt erzeugt wurde, kann mittels Punktschreibweise auch auf die Eigenschaften des Objekts zugegriffen werden. Beispiel:&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
rechteck1.breite = 10; &lt;br /&gt;
&lt;br /&gt;
rechteck3.fuellfarbe = &amp;quot;rot&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;[[Aufgaben 7.1.]]&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Getter- und Setter-Methoden===&lt;br /&gt;
&lt;br /&gt;
Will man von außen auf &#039;&#039;private&#039;&#039; gesetzte Attribute zugreifen, ist dies nur indirekt möglich. Wir nutzen dazu Methoden, die das betreffende Objekt veranlassen, Werte zurückzugeben bzw. zu verändern. Zur Rückgabe von Werten nutzt man sogenannte &#039;&#039;&#039;sondierende Methoden&#039;&#039;&#039; oder &#039;&#039;&#039;Getter-Methoden&#039;&#039;&#039;. Üblicherweise verwendet man als Namen für eine derartige Methode den Bezeichner &#039;&#039;getAttributname&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Soll der Benutzer auch schreibenden Zugriff auf die Attribute haben, dann erstellt man sogenannte &#039;&#039;&#039;Setter-Methoden&#039;&#039;&#039;, die von außen einen Wert übernehmen und dem auf &#039;&#039;private&#039;&#039; gesetzten Attribut zuweisen. Als Bezeichner verwendet man analog zu den Getter-Methoden &#039;&#039;setAttributname&#039;&#039;. Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class Rechteck {&lt;br /&gt;
&lt;br /&gt;
private int laenge;&lt;br /&gt;
private int breite;&lt;br /&gt;
&lt;br /&gt;
public Rechteck(int laenge, int breite){&lt;br /&gt;
this.laenge=laenge;&lt;br /&gt;
this.breite=breite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public int getLaenge(){&lt;br /&gt;
   return laenge;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public int getBreite(){&lt;br /&gt;
   return breite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public void setLaenge(int l){&lt;br /&gt;
   laenge=l;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public void setBreite(int b){&lt;br /&gt;
   breite=b;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setter- und Getter-Methoden müssen natürlich auf &#039;&#039;public&#039;&#039; gesetzt werden, um die ihnen zugedachte Aufgabe zu erfüllen.&lt;br /&gt;
&lt;br /&gt;
Bis hierher ist eigentlich noch nicht klar, warum wir den direkten Lese- bzw. Schreibzugriff auf die Attribute kontrollieren sollten. Die Stärke dieses Verfahrens zeigt sich dann, wenn es für den Zugriff Beschränkungen gibt. So kann beispielsweise die Eingabe auf einen bestimmten Wertebereich beschränkt werden und im Fall einer unerlaubten Eingabe die Eingabe verweigert werden. Beispiel: Um zu vermeiden, dass ein Objekt der obigen Klasse &#039;&#039;&#039;Rechteck&#039;&#039;&#039; einen bestimmten Wert für die Länge bzw. Breite überschreitet, kann man die Methode mit einer bedingten Anweisung versehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public void setLaenge(int l){&lt;br /&gt;
if(l&amp;gt;=100){System.out.println(&amp;quot;Unzulaessiger Wert !&amp;quot;);}else{&lt;br /&gt;
   laenge=l;}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public void setBreite(int b){&lt;br /&gt;
if(b&amp;gt;=100){System.out.println(&amp;quot;Unzulaessiger Wert !&amp;quot;);}else{&lt;br /&gt;
   breite=b;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;[[Aufgaben 7.2.]]&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Assoziationen===&lt;br /&gt;
&lt;br /&gt;
Eine wichtige Eigenschaft objektorientierter Systeme ist der Austausch von Botschaften zwischen Objekten. Dazu muss ein Objekt andere Objekte &amp;quot;kennen&amp;quot; und kann Botschaften weitergeben. Diese Verbindung nennt sich &#039;&#039;&#039;Assoziation&#039;&#039;&#039;. Bei Assoziationen ist zu unterscheiden, ob nur eine Seite die andere kennt oder ob eine Navigation in beiden Richtungen möglich ist:&lt;br /&gt;
&lt;br /&gt;
* Eine &#039;&#039;&#039;unidirektionale&#039;&#039;&#039; Beziehung geht nur in eine Richtung.&lt;br /&gt;
* Eine &#039;&#039;&#039;bidirektionale&#039;&#039;&#039; Beziehung geht in beide Richtungen.&lt;br /&gt;
&lt;br /&gt;
Daneben ist bei Beziehungen die &#039;&#039;&#039;Multiplizität&#039;&#039;&#039; zu beachten (siehe [[Exkurs: UML]]). Sie sagt aus, mit wie vielen Objekten eine Seite eine Beziehung haben kann. Übliche Beziehungen sind 1:1 und 1:n. Wir beschränken uns hier auf unidirektionale Beziehungen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Implementierung einer unidirektionalen 1:1-Beziehung&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Bei bekannten Computerspielen kann ein Spieler seine Fahrkünste auf einem Formel 1-Kurs testen oder als Pilot einen Flughafen anfliegen. Dabei muss jeweils ein Spieler mit einem Kurs/Flughafen assoziiert werden. Damit ein Spieler sich auf einem Kurs befinden kann, lässt sich in &#039;&#039;Spieler&#039;&#039; eine Referenzvariable vom Typ &#039;&#039;Kurs&#039;&#039; anlegen. In Java sähe das in etwa so aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class Spieler {&lt;br /&gt;
 &lt;br /&gt;
    public Kurs k;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class Kurs {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Während des Spiels müssen dann natürlich noch entsprechende Referenzen gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class Spiel {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Spieler uschi = new Spieler();&lt;br /&gt;
Kurs   hockenheim  = new Kurs();&lt;br /&gt;
uschi.k   = hockenheim;  &lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;[[Aufgaben 7.3.]]&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Implementierung einer unidirektionalen 1:n-Beziehung&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Immer dann, wenn ein Objekt auf mehrere andere Objekte verweisen muss, reicht eine einfache Referenzvariable vom Typ der anderen Seite nicht mehr aus. Dann werden Datenstrukturen benötigt, die mehrere Referenzen aufnehmen können. In Computerspielen kann ein Spieler häufig Gegenstände, Waffen etc. sammeln. Um dies in der Programmierung umzusetzen, müssen auf der 1-Seite eine Datenstruktur verwenden, die eine Anzahl anderer Objekte aufnimmt. Handelt es sich um eine feste Anzahl von Gegenständen, ist als Datenstruktur das bereits bekannte &#039;&#039;&#039;Array&#039;&#039;&#039; gut geeignet. Bei Spielen, in denen sich die Anzahl der Gegenstände dynamisch ändert, ist ein Array wenig elegant, da die manuelle Vergrößerung oder Verkleinerung des Arrays aufwendig ist. Hier kann man beispielsweise die Klasse &#039;&#039;&#039;ArrayList&#039;&#039;&#039; aus dem Package &#039;&#039;&#039;java.util.ArrayList&#039;&#039;&#039; zum Einsatz bringen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;[[Exkurs:Die Klasse ArrayList]]&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn wir von einem Spiel ausgehen, in dem ein Spieler Waffen sammeln kann, könnte die Umsetzung folgendermaßen aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class Weapon&lt;br /&gt;
{&lt;br /&gt;
  public String bezeichnung;&lt;br /&gt;
&lt;br /&gt;
  public Weapon( String bezeichnung )&lt;br /&gt;
  {&lt;br /&gt;
    this.bezeichnung = bezeichnung;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Klasse &#039;&#039;&#039;Spieler&#039;&#039;&#039; erhält nun ein Attribut weapons von Typ ArrayList:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
private ArrayList&amp;lt;Weapon&amp;gt; weapons = new ArrayList&amp;lt;Weapon&amp;gt;();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit sieht die Klasse wie folgt aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class Spieler&lt;br /&gt;
{&lt;br /&gt;
  private ArrayList&amp;lt;Weapon&amp;gt; weapons = new ArrayList&amp;lt;Weapon&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
  public void addWeapon( Weapon w )&lt;br /&gt;
  {&lt;br /&gt;
    weapons.add(w);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public void listWeapons()&lt;br /&gt;
  {&lt;br /&gt;
    for(int i=0;i&amp;lt;weapons.size();i++){&lt;br /&gt;
      System.out.println( weapons.get(i).bezeichnung );}&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zuletzt führen wir Spieler und Waffen in der Klasse &#039;&#039;&#039;Spiel&#039;&#039;&#039; zusammen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class Spiel{&lt;br /&gt;
&lt;br /&gt;
public Spiel(){&lt;br /&gt;
&lt;br /&gt;
Spieler uschi = new Spieler();&lt;br /&gt;
&lt;br /&gt;
uschi.addWeapon( new Weapon( &amp;quot;Keule&amp;quot; ) );&lt;br /&gt;
uschi.addWeapon( new Weapon( &amp;quot;Morgenstern&amp;quot; ) );&lt;br /&gt;
uschi.listWeapons();                      // Ausgabe: Keule   Morgenstern&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Klassenvariablen und Klassenmethoden ===&lt;br /&gt;
&lt;br /&gt;
Bis jetzt kennen wir bei Variablen zwei Typen: &#039;&#039;&#039;Lokale Variablen&#039;&#039;&#039;, wie wir sie beispielsweise in Schleifen als Zählvariablen verwenden, und &#039;&#039;&#039;Instanzvariablen&#039;&#039;&#039;. Innerhalb der Klasse &#039;&#039;Kreis&#039;&#039;, die sozusagen den Datentyp &#039;&#039;Kreis&#039;&#039; definiert, haben wir beispielsweise &#039;&#039;Radius&#039;&#039;, &#039;&#039;Fuellfarbe&#039;&#039; oder &#039;&#039;Linienstärke&#039;&#039; als Instanzvariablen. Jede Variable wird für sich separat für eine Instanz (also ein aus der Klasse erzeugtes Objekt) angelegt, d.h. jede Instanz hat eine eigene Kopie der Variablen. Die Methoden beziehen sich auf die jeweils angelegte Instanz.&lt;br /&gt;
&lt;br /&gt;
Damit alle Objekte einer Klasse eine bestimmte Variable gemeinsam verwenden können, gibt es die sog. &#039;&#039;&#039;Klassenvariablen&#039;&#039;&#039;. Analog dazu benutzt man &#039;&#039;&#039;Klassenmethoden&#039;&#039;&#039; für Operationen, die sich nicht auf ein bestimmtes Objekt, sondern auf die Klasse an sich beziehen. Variablen und Methoden werden mit dem Schlüsselwort &#039;&#039;&#039;&#039;&#039;static&#039;&#039;&#039;&#039;&#039; an die jeweilige Klasse gebunden. Der Zugriff auf statische Variablen erfolgt über &#039;&#039;&#039;Klassenname.Variablenname&#039;&#039;&#039;, der Zugriff auf statische Methoden über &#039;&#039;&#039;Klassenname.Methodennname&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Folgendes Beispiel soll das Konzept verdeutlichen:&lt;br /&gt;
&lt;br /&gt;
In einer Klasse &#039;&#039;&#039;Testobjekt&#039;&#039;&#039; wird eine statische Variable &#039;&#039;&#039;&#039;&#039;zaehler&#039;&#039;&#039;&#039;&#039; angelegt, in der die Anzahl der erzeugten Instanzen der Klasse abgespeichert wird. Über eine statische Getter-Methode kann der aktuelle Wert des Zählers abgefragt werden. In einer zweiten Klasse &#039;&#039;&#039;ZaehlerTest&#039;&#039;&#039; werden drei Instanzen der Klasse &#039;&#039;&#039;Testobjekt&#039;&#039;&#039; erzeugt und als Kontrolle ihre jeweilige Rangzahl ausgegeben. Am Ende wird über die Methode &#039;&#039;&#039;getZaehler()&#039;&#039;&#039; die Anzahl der erzeugten Instanzen abgefragt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
public class Testobjekt {&lt;br /&gt;
   &lt;br /&gt;
// Klassenvariable&lt;br /&gt;
    static int zaehler = 0;&lt;br /&gt;
&lt;br /&gt;
// Instanzvariable&lt;br /&gt;
    int nummer;&lt;br /&gt;
    &lt;br /&gt;
    // Konstruktor &lt;br /&gt;
    public Testobjekt() {&lt;br /&gt;
        zaehler= zaehler+1;&lt;br /&gt;
        nummer = zaehler;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Klassenmethode&lt;br /&gt;
    static int getZaehler() {&lt;br /&gt;
       return zaehler;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class Zaehlertest{&lt;br /&gt;
&lt;br /&gt;
public void zaehlerTest(){&lt;br /&gt;
    System.out.println(&amp;quot;Klassenvariable zaehler:&amp;quot;+ Testobjekt.getZaehler());&lt;br /&gt;
        &lt;br /&gt;
        Testobjekt obj_1 = new Testobjekt();&lt;br /&gt;
        Testobjekt obj_2 = new Testobjekt();&lt;br /&gt;
        Testobjekt obj_3 = new Testobjekt();&lt;br /&gt;
    &lt;br /&gt;
        System.out.println(&amp;quot;Instanzvariable nummer im 1. Objekt: &amp;quot;+ obj_1.nummer);&lt;br /&gt;
        System.out.println(&amp;quot;Instanzvariable nummer im 2. Objekt: &amp;quot;+ obj_2.nummer);&lt;br /&gt;
        System.out.println(&amp;quot;Instanzvariable nummer im 3. Objekt: &amp;quot;+ obj_3.nummer);&lt;br /&gt;
        System.out.println(&amp;quot;Klassenvariable zaehler: &amp;quot; + Testobjekt.getZaehler());&lt;br /&gt;
   &lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;[[Aufgaben 7.4.]]&amp;lt;/big&amp;gt;&lt;/div&gt;</summary>
		<author><name>PT59kripke</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Aufgaben_2.1.&amp;diff=1240</id>
		<title>Aufgaben 2.1.</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Aufgaben_2.1.&amp;diff=1240"/>
		<updated>2013-10-09T14:54:34Z</updated>

		<summary type="html">&lt;p&gt;PT59kripke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Zur Lösung der Aufgaben soll folgendes Grundgerüst verwendet werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import java.util.Scanner;&lt;br /&gt;
&lt;br /&gt;
public class Aufgaben_2_1{&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Beispielaufgabe Addieren&lt;br /&gt;
public void addieren(){&lt;br /&gt;
   Scanner eingabe = new Scanner (System.in);&lt;br /&gt;
   System.out.print (&amp;quot;Geben Sie die erste Zahl ein: &amp;quot;);&lt;br /&gt;
   int z1 = eingabe.nextInt(); &lt;br /&gt;
   System.out.print (&amp;quot;Geben Sie die zweite Zahl ein: &amp;quot;);&lt;br /&gt;
   int z2 = eingabe.nextInt();&lt;br /&gt;
   int add = z1 + z2;&lt;br /&gt;
   System.out.println(&amp;quot;Die Summe aus &amp;quot;+z1+&amp;quot; und &amp;quot;+z2+&amp;quot; lautet: &amp;quot;+add);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erläuterungen:&lt;br /&gt;
* Mit &#039;&#039;import java.util.Scanner&#039;&#039; wird ein sogenanntes Package importiert, das die Möglichkeit bietet, Zahlen oder Text auf der Konsole einzugeben. ([http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html Dokumentation der Klasse Scanner])&lt;br /&gt;
* Mit &#039;&#039;Scanner eingabe = new Scanner (System.in)&#039;&#039; wird ein Scanner-Objekt mit dem Namen &#039;&#039;eingabe&#039;&#039; erzeugt, das die Verwendung der benötigten Eingabemethoden ermöglicht.&lt;br /&gt;
* Die Eingabe erfolgt nach folgendem Schema:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
System.out.print (&amp;quot;Geben Sie die erste Zahl ein: &amp;quot;);        // Der Text zwischen den Anführungszeichen kann beliebig sein&lt;br /&gt;
   int zahl1 = eingabe.nextInt();                           // für ganze Zahlen&lt;br /&gt;
double zahl2 = eingabe.nextDouble();                        // für Fließkommazahlen&lt;br /&gt;
String ein   = eingabe.next();                                // für Zeichenketten&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Der Wert wird nach der ausgegebenen Eingabeaufforderung eingegeben. Nach Betätigen der ENTER-Taste wird der jeweilige Wert der entsprechenden Variable zugewiesen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2.1.1.&#039;&#039;&#039; (Kreisberechnung)&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Methode &#039;&#039;&#039;&#039;&#039;public void kreisberechnung()&#039;&#039;&#039;&#039;&#039;, die nach Eingabe des Radius den Umfang und den Inhalt des Kreises berechnet und auf der Konsole ausgibt. Pi kann mit dem gerundeten Wert &#039;&#039;3.1415926&#039;&#039; verwendet werden.&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Aufgabe 2.1.1|Lösungsvorschlag ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2.1.2&#039;&#039;&#039; (&amp;quot;Mondbremse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Aufgrund der Gezeitenkräfte des Mondes wird die Rotation der Erde abgebremst. Als Folge daraus verlängern sich in den nächsten 1000 Jahren die Tage jedes Jahres um 0.0016 Sekunden. Erstelle eine Methode &#039;&#039;&#039;&#039;&#039;public void mondbremse()&#039;&#039;&#039;&#039;&#039;, die nach Eingabe des Kalenderjahres angibt, um wieviel länger der Tag im Vergleich zu heute dauert. (Achtung: Typumwandlung nicht vergessen!)&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Aufgabe 2.1.2|Lösungsvorschlag ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2.1.3.&#039;&#039;&#039; (&amp;quot;Temperaturumrechnung&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Methode &#039;&#039;&#039;&#039;&#039;public void umrechnung_F_C ()&#039;&#039;&#039;&#039;&#039;, die die eingegebene Temperatur von Fahrenheit in Celsius umrechnet und ausgibt. Die Umrechnungsformel lautet: C=5/9(F-32). Vorsicht mit den verwendeten Datentypen, da sonst als Ergebnis immer 0.0 erscheinen wird! (Kontrolle: 212 Grad Fahrenheit entsprechen 100 Grad Celsius.)&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Aufgabe 2.1.3|Lösungsvorschlag ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2.1.4.&#039;&#039;&#039; (&amp;quot;Zinsrechnung&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Methode &#039;&#039;&#039;&#039;&#039;public void zinsrechnung()&#039;&#039;&#039;&#039;&#039;, die nach Eingabe von Kapital und Zinssatz (in Prozent) das Kapital nach einem Jahr berechnet. Erweitere anschließend das Programm um die Ausgabe des Kapitals nach zwei Jahren. &lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Aufgabe 2.1.4|Lösungsvorschlag ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2.1.5.&#039;&#039;&#039; (&amp;quot;Bogenmaß&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Erstelle eine Methode &#039;&#039;&#039;&#039;&#039;public void Bogenmaß()&#039;&#039;&#039;&#039;&#039;, die einen Winkel von Grad nach Bogenmaß umrechnet. Tipp: Die Funktion &#039;&#039;&#039;&#039;&#039;Math.round(x)&#039;&#039;&#039;&#039;&#039; rundet auf die nächste ganze Zahl auf oder ab. &amp;lt;br&amp;gt;&lt;br /&gt;
(Kontrolle: 180° entsprechen 3,141)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Lösungsvorschlag Aufgabe 2.1.5|Lösungsvorschlag ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2.1.6.&#039;&#039;&#039; (&amp;quot;Inchumrechnung&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Erstelle eine Methode &#039;&#039;&#039;&#039;&#039;public void inchUmrechnung()&#039;&#039;&#039;&#039;&#039;, die von der Einheit Inch nach cm umrechnet.&lt;br /&gt;
(Kontrolle: 1cm entsprechen 2,54)&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Aufgabe 2.1.6|Lösungsvorschlag ]]&lt;/div&gt;</summary>
		<author><name>PT59kripke</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Aufgaben_2.1.&amp;diff=1239</id>
		<title>Aufgaben 2.1.</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Aufgaben_2.1.&amp;diff=1239"/>
		<updated>2013-10-09T14:53:51Z</updated>

		<summary type="html">&lt;p&gt;PT59kripke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Zur Lösung der Aufgaben soll folgendes Grundgerüst verwendet werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import java.util.Scanner;&lt;br /&gt;
&lt;br /&gt;
public class Aufgaben_2_1{&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Beispielaufgabe Addieren&lt;br /&gt;
public void addieren(){&lt;br /&gt;
   Scanner eingabe = new Scanner (System.in);&lt;br /&gt;
   System.out.print (&amp;quot;Geben Sie die erste Zahl ein: &amp;quot;);&lt;br /&gt;
   int z1 = eingabe.nextInt(); &lt;br /&gt;
   System.out.print (&amp;quot;Geben Sie die zweite Zahl ein: &amp;quot;);&lt;br /&gt;
   int z2 = eingabe.nextInt();&lt;br /&gt;
   int add = z1 + z2;&lt;br /&gt;
   System.out.println(&amp;quot;Die Summe aus &amp;quot;+z1+&amp;quot; und &amp;quot;+z2+&amp;quot; lautet: &amp;quot;+add);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erläuterungen:&lt;br /&gt;
* Mit &#039;&#039;import java.util.Scanner&#039;&#039; wird ein sogenanntes Package importiert, das die Möglichkeit bietet, Zahlen oder Text auf der Konsole einzugeben. ([http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html Dokumentation der Klasse Scanner])&lt;br /&gt;
* Mit &#039;&#039;Scanner eingabe = new Scanner (System.in)&#039;&#039; wird ein Scanner-Objekt mit dem Namen &#039;&#039;eingabe&#039;&#039; erzeugt, das die Verwendung der benötigten Eingabemethoden ermöglicht.&lt;br /&gt;
* Die Eingabe erfolgt nach folgendem Schema:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
System.out.print (&amp;quot;Geben Sie die erste Zahl ein: &amp;quot;);        // Der Text zwischen den Anführungszeichen kann beliebig sein&lt;br /&gt;
   int zahl1 = eingabe.nextInt();                           // für ganze Zahlen&lt;br /&gt;
double zahl2 = eingabe.nextDouble();                        // für Fließkommazahlen&lt;br /&gt;
String ein   = eingabe.next();                                // für Zeichenketten&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Der Wert wird nach der ausgegebenen Eingabeaufforderung eingegeben. Nach Betätigen der ENTER-Taste wird der jeweilige Wert der entsprechenden Variable zugewiesen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2.1.1.&#039;&#039;&#039; (Kreisberechnung)&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Methode &#039;&#039;&#039;&#039;&#039;public void kreisberechnung()&#039;&#039;&#039;&#039;&#039;, die nach Eingabe des Radius den Umfang und den Inhalt des Kreises berechnet und auf der Konsole ausgibt. Pi kann mit dem gerundeten Wert &#039;&#039;3.1415926&#039;&#039; verwendet werden.&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Aufgabe 2.1.1|Lösungsvorschlag ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2.1.2&#039;&#039;&#039; (&amp;quot;Mondbremse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Aufgrund der Gezeitenkräfte des Mondes wird die Rotation der Erde abgebremst. Als Folge daraus verlängern sich in den nächsten 1000 Jahren die Tage jedes Jahres um 0.0016 Sekunden. Erstelle eine Methode &#039;&#039;&#039;&#039;&#039;public void mondbremse()&#039;&#039;&#039;&#039;&#039;, die nach Eingabe des Kalenderjahres angibt, um wieviel länger der Tag im Vergleich zu heute dauert. (Achtung: Typumwandlung nicht vergessen!)&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Aufgabe 2.1.2|Lösungsvorschlag ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2.1.3.&#039;&#039;&#039; (&amp;quot;Temperaturumrechnung&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Methode &#039;&#039;&#039;&#039;&#039;public void umrechnung_F_C ()&#039;&#039;&#039;&#039;&#039;, die die eingegebene Temperatur von Fahrenheit in Celsius umrechnet und ausgibt. Die Umrechnungsformel lautet: C=5/9(F-32). Vorsicht mit den verwendeten Datentypen, da sonst als Ergebnis immer 0.0 erscheinen wird! (Kontrolle: 212 Grad Fahrenheit entsprechen 100 Grad Celsius.)&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Aufgabe 2.1.3|Lösungsvorschlag ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2.1.4.&#039;&#039;&#039; (&amp;quot;Zinsrechnung&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Methode &#039;&#039;&#039;&#039;&#039;public void zinsrechnung()&#039;&#039;&#039;&#039;&#039;, die nach Eingabe von Kapital und Zinssatz (in Prozent) das Kapital nach einem Jahr berechnet. Erweitere anschließend das Programm um die Ausgabe des Kapitals nach zwei Jahren. &lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Aufgabe 2.1.4|Lösungsvorschlag ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2.1.5.&#039;&#039;&#039; (&amp;quot;Bogenmaß&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Erstelle eine Methode &#039;&#039;&#039;&#039;&#039;public void Bogenmaß()&#039;&#039;&#039;&#039;&#039;, die einen Winkel von Grad nach Bogenmaß umrechnet. Tipp: Die Funktion &#039;&#039;&#039;&#039;&#039;Math.round(x)&#039;&#039;&#039;&#039;&#039; rundet auf die nächste ganze Zahl auf oder ab. &amp;lt;/br&amp;gt;&lt;br /&gt;
(Kontrolle: 180° entsprechen 3,141)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Lösungsvorschlag Aufgabe 2.1.5|Lösungsvorschlag ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2.1.6.&#039;&#039;&#039; (&amp;quot;Inchumrechnung&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Erstelle eine Methode &#039;&#039;&#039;&#039;&#039;public void inchUmrechnung()&#039;&#039;&#039;&#039;&#039;, die von der Einheit Inch nach cm umrechnet.&lt;br /&gt;
(Kontrolle: 1cm entsprechen 2,54)&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Aufgabe 2.1.6|Lösungsvorschlag ]]&lt;/div&gt;</summary>
		<author><name>PT59kripke</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Aufgaben_2.1.&amp;diff=1219</id>
		<title>Aufgaben 2.1.</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Aufgaben_2.1.&amp;diff=1219"/>
		<updated>2013-10-08T15:48:51Z</updated>

		<summary type="html">&lt;p&gt;PT59kripke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Zur Lösung der Aufgaben soll folgendes Grundgerüst verwendet werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import java.util.Scanner;&lt;br /&gt;
&lt;br /&gt;
public class Aufgaben_2_1{&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Beispielaufgabe Addieren&lt;br /&gt;
public void addieren(){&lt;br /&gt;
   Scanner eingabe = new Scanner (System.in);&lt;br /&gt;
   System.out.print (&amp;quot;Geben Sie die erste Zahl ein: &amp;quot;);&lt;br /&gt;
   int z1 = eingabe.nextInt(); &lt;br /&gt;
   System.out.print (&amp;quot;Geben Sie die zweite Zahl ein: &amp;quot;);&lt;br /&gt;
   int z2 = eingabe.nextInt();&lt;br /&gt;
   int add = z1 + z2;&lt;br /&gt;
   System.out.println(&amp;quot;Die Summe aus &amp;quot;+z1+&amp;quot; und &amp;quot;+z2+&amp;quot; lautet: &amp;quot;+add);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erläuterungen:&lt;br /&gt;
* Mit &#039;&#039;import java.util.Scanner&#039;&#039; wird ein sogenanntes Package importiert, das die Möglichkeit bietet, Zahlen oder Text auf der Konsole einzugeben. ([http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html Dokumentation der Klasse Scanner])&lt;br /&gt;
* Mit &#039;&#039;Scanner eingabe = new Scanner (System.in)&#039;&#039; wird ein Scanner-Objekt mit dem Namen &#039;&#039;eingabe&#039;&#039; erzeugt, das die Verwendung der benötigten Eingabemethoden ermöglicht.&lt;br /&gt;
* Die Eingabe erfolgt nach folgendem Schema:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
System.out.print (&amp;quot;Geben Sie die erste Zahl ein: &amp;quot;);        // Der Text zwischen den Anführungszeichen kann beliebig sein&lt;br /&gt;
   int zahl1 = eingabe.nextInt();                           // für ganze Zahlen&lt;br /&gt;
double zahl2 = eingabe.nextDouble();                        // für Fließkommazahlen&lt;br /&gt;
String ein   = eingabe.next();                                // für Zeichenketten&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Der Wert wird nach der ausgegebenen Eingabeaufforderung eingegeben. Nach Betätigen der ENTER-Taste wird der jeweilige Wert der entsprechenden Variable zugewiesen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2.1.1.&#039;&#039;&#039; (Kreisberechnung)&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Methode &#039;&#039;&#039;&#039;&#039;public void kreisberechnung()&#039;&#039;&#039;&#039;&#039;, die nach Eingabe des Radius den Umfang und den Inhalt des Kreises berechnet und auf der Konsole ausgibt. Pi kann mit dem gerundeten Wert &#039;&#039;3.1415926&#039;&#039; verwendet werden.&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Aufgabe 2.1.1|Lösungsvorschlag ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2.1.2&#039;&#039;&#039; (&amp;quot;Mondbremse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Aufgrund der Gezeitenkräfte des Mondes wird die Rotation der Erde abgebremst. Als Folge daraus verlängern sich in den nächsten 1000 Jahren die Tage jedes Jahres um 0.0016 Sekunden. Erstelle eine Methode &#039;&#039;&#039;&#039;&#039;public void mondbremse()&#039;&#039;&#039;&#039;&#039;, die nach Eingabe des Kalenderjahres angibt, um wieviel länger der Tag im Vergleich zu heute dauert. (Achtung: Typumwandlung nicht vergessen!)&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Aufgabe 2.1.2|Lösungsvorschlag ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2.1.3.&#039;&#039;&#039; (&amp;quot;Temperaturumrechnung&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Methode &#039;&#039;&#039;&#039;&#039;public void umrechnung_F_C ()&#039;&#039;&#039;&#039;&#039;, die die eingegebene Temperatur von Fahrenheit in Celsius umrechnet und ausgibt. Die Umrechnungsformel lautet: C=5/9(F-32). Vorsicht mit den verwendeten Datentypen, da sonst als Ergebnis immer 0.0 erscheinen wird! (Kontrolle: 212 Grad Fahrenheit entsprechen 100 Grad Celsius.)&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Aufgabe 2.1.3|Lösungsvorschlag ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2.1.4.&#039;&#039;&#039; (&amp;quot;Zinsrechnung&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Methode &#039;&#039;&#039;&#039;&#039;public void zinsrechnung()&#039;&#039;&#039;&#039;&#039;, die nach Eingabe von Kapital und Zinssatz (in Prozent) das Kapital nach einem Jahr berechnet. Erweitere anschließend das Programm um die Ausgabe des Kapitals nach zwei Jahren. &lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Aufgabe 2.1.4|Lösungsvorschlag ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2.1.5.&#039;&#039;&#039; (&amp;quot;Bogenmaß&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Erstelle eine Methode &#039;&#039;&#039;&#039;&#039;public void Bogenmaß()&#039;&#039;&#039;&#039;&#039;, die einen Winkel von Grad nach Bogenmaß umrechnet. (Kontrolle: 180° entsprechen 3,141)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Lösungsvorschlag Aufgabe 2.1.5|Lösungsvorschlag ]]&lt;/div&gt;</summary>
		<author><name>PT59kripke</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=L%C3%B6sungsvorschlag_Aufgabe_2.1.5&amp;diff=1216</id>
		<title>Lösungsvorschlag Aufgabe 2.1.5</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=L%C3%B6sungsvorschlag_Aufgabe_2.1.5&amp;diff=1216"/>
		<updated>2013-10-07T15:11:06Z</updated>

		<summary type="html">&lt;p&gt;PT59kripke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
import java.util.Scanner;&lt;br /&gt;
&lt;br /&gt;
public class Aufgaben_2_1{&lt;br /&gt;
&lt;br /&gt;
public void Bogenmaß(){&lt;br /&gt;
   Scanner eingabe = new Scanner (System.in);&lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   System.out.print (&amp;quot;Geben Sie den Winkel in Grad ein: &amp;quot;);&lt;br /&gt;
   int grad = eingabe.nextInt(); &lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   double rad = Math.round( grad * 0.0174);&lt;br /&gt;
   &lt;br /&gt;
   System.out.println(+grad+&amp;quot; grad entsprechen im Bogenmaß&amp;quot;+rad+&amp;quot; rad&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>PT59kripke</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=L%C3%B6sungsvorschlag_Aufgabe_2.1.5&amp;diff=1215</id>
		<title>Lösungsvorschlag Aufgabe 2.1.5</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=L%C3%B6sungsvorschlag_Aufgabe_2.1.5&amp;diff=1215"/>
		<updated>2013-10-07T15:10:42Z</updated>

		<summary type="html">&lt;p&gt;PT59kripke: Die Seite wurde neu angelegt: „&amp;lt;pre&amp;gt;  public void Bogenmaß(){    Scanner eingabe = new Scanner (System.in);            System.out.print (&amp;quot;Geben Sie den Winkel in Grad ein: &amp;quot;);    int grad = ei…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
public void Bogenmaß(){&lt;br /&gt;
   Scanner eingabe = new Scanner (System.in);&lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   System.out.print (&amp;quot;Geben Sie den Winkel in Grad ein: &amp;quot;);&lt;br /&gt;
   int grad = eingabe.nextInt(); &lt;br /&gt;
   &lt;br /&gt;
   &lt;br /&gt;
   double rad = Math.round( grad * 0.0174);&lt;br /&gt;
   &lt;br /&gt;
   System.out.println(+grad+&amp;quot; grad entsprechen im Bogenmaß&amp;quot;+rad+&amp;quot; rad&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>PT59kripke</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Aufgaben_2.1.&amp;diff=1214</id>
		<title>Aufgaben 2.1.</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Aufgaben_2.1.&amp;diff=1214"/>
		<updated>2013-10-07T14:57:56Z</updated>

		<summary type="html">&lt;p&gt;PT59kripke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Zur Lösung der Aufgaben soll folgendes Grundgerüst verwendet werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import java.util.Scanner;&lt;br /&gt;
&lt;br /&gt;
public class Aufgaben_2_1{&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Beispielaufgabe Addieren&lt;br /&gt;
public void addieren(){&lt;br /&gt;
   Scanner eingabe = new Scanner (System.in);&lt;br /&gt;
   System.out.print (&amp;quot;Geben Sie die erste Zahl ein: &amp;quot;);&lt;br /&gt;
   int z1 = eingabe.nextInt(); &lt;br /&gt;
   System.out.print (&amp;quot;Geben Sie die zweite Zahl ein: &amp;quot;);&lt;br /&gt;
   int z2 = eingabe.nextInt();&lt;br /&gt;
   int add = z1 + z2;&lt;br /&gt;
   System.out.println(&amp;quot;Die Summe aus &amp;quot;+z1+&amp;quot; und &amp;quot;+z2+&amp;quot; lautet: &amp;quot;+add);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erläuterungen:&lt;br /&gt;
* Mit &#039;&#039;import java.util.Scanner&#039;&#039; wird ein sogenanntes Package importiert, das die Möglichkeit bietet, Zahlen oder Text auf der Konsole einzugeben. ([http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html Dokumentation der Klasse Scanner])&lt;br /&gt;
* Mit &#039;&#039;Scanner eingabe = new Scanner (System.in)&#039;&#039; wird ein Scanner-Objekt mit dem Namen &#039;&#039;eingabe&#039;&#039; erzeugt, das die Verwendung der benötigten Eingabemethoden ermöglicht.&lt;br /&gt;
* Die Eingabe erfolgt nach folgendem Schema:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
System.out.print (&amp;quot;Geben Sie die erste Zahl ein: &amp;quot;);        // Der Text zwischen den Anführungszeichen kann beliebig sein&lt;br /&gt;
   int zahl1 = eingabe.nextInt();                           // für ganze Zahlen&lt;br /&gt;
double zahl2 = eingabe.nextDouble();                        // für Fließkommazahlen&lt;br /&gt;
String ein   = eingabe.next();                                // für Zeichenketten&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Der Wert wird nach der ausgegebenen Eingabeaufforderung eingegeben. Nach Betätigen der ENTER-Taste wird der jeweilige Wert der entsprechenden Variable zugewiesen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2.1.1.&#039;&#039;&#039; (Kreisberechnung)&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Methode &#039;&#039;&#039;&#039;&#039;public void kreisberechnung()&#039;&#039;&#039;&#039;&#039;, die nach Eingabe des Radius den Umfang und den Inhalt des Kreises berechnet und auf der Konsole ausgibt. Pi kann mit dem gerundeten Wert &#039;&#039;3.1415926&#039;&#039; verwendet werden.&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Aufgabe 2.1.1|Lösungsvorschlag ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2.1.2&#039;&#039;&#039; (&amp;quot;Mondbremse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Aufgrund der Gezeitenkräfte des Mondes wird die Rotation der Erde abgebremst. Als Folge daraus verlängern sich in den nächsten 1000 Jahren die Tage jedes Jahres um 0.0016 Sekunden. Erstelle eine Methode &#039;&#039;&#039;&#039;&#039;public void mondbremse()&#039;&#039;&#039;&#039;&#039;, die nach Eingabe des Kalenderjahres angibt, um wieviel länger der Tag im Vergleich zu heute dauert. (Achtung: Typumwandlung nicht vergessen!)&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Aufgabe 2.1.2|Lösungsvorschlag ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2.1.3.&#039;&#039;&#039; (&amp;quot;Temperaturumrechnung&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Methode &#039;&#039;&#039;&#039;&#039;public void umrechnung_F_C ()&#039;&#039;&#039;&#039;&#039;, die die eingegebene Temperatur von Fahrenheit in Celsius umrechnet und ausgibt. Die Umrechnungsformel lautet: C=5/9(F-32). Vorsicht mit den verwendeten Datentypen, da sonst als Ergebnis immer 0.0 erscheinen wird! (Kontrolle: 212 Grad Fahrenheit entsprechen 100 Grad Celsius.)&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Aufgabe 2.1.3|Lösungsvorschlag ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2.1.4.&#039;&#039;&#039; (&amp;quot;Zinsrechnung&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Methode &#039;&#039;&#039;&#039;&#039;public void zinsrechnung()&#039;&#039;&#039;&#039;&#039;, die nach Eingabe von Kapital und Zinssatz (in Prozent) das Kapital nach einem Jahr berechnet. Erweitere anschließend das Programm um die Ausgabe des Kapitals nach zwei Jahren. &lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Aufgabe 2.1.4|Lösungsvorschlag ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2.1.5.&#039;&#039;&#039; (&amp;quot;Bogenmaß&amp;quot;)&amp;lt;br&amp;gt;&lt;br /&gt;
Erstelle eine Methode &#039;&#039;&#039;&#039;&#039;public void Bogenmaß()&#039;&#039;&#039;&#039;&#039;, die einen Winkel von Grad nach Bogenmaß umrechnet. (Kontrolle 180° entsprechen 3,141)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Lösungsvorschlag Aufgabe 2.1.5|Lösungsvorschlag ]]&lt;/div&gt;</summary>
		<author><name>PT59kripke</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Aufgaben_2.1.&amp;diff=1213</id>
		<title>Aufgaben 2.1.</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Aufgaben_2.1.&amp;diff=1213"/>
		<updated>2013-10-07T14:55:45Z</updated>

		<summary type="html">&lt;p&gt;PT59kripke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Zur Lösung der Aufgaben soll folgendes Grundgerüst verwendet werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import java.util.Scanner;&lt;br /&gt;
&lt;br /&gt;
public class Aufgaben_2_1{&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Beispielaufgabe Addieren&lt;br /&gt;
public void addieren(){&lt;br /&gt;
   Scanner eingabe = new Scanner (System.in);&lt;br /&gt;
   System.out.print (&amp;quot;Geben Sie die erste Zahl ein: &amp;quot;);&lt;br /&gt;
   int z1 = eingabe.nextInt(); &lt;br /&gt;
   System.out.print (&amp;quot;Geben Sie die zweite Zahl ein: &amp;quot;);&lt;br /&gt;
   int z2 = eingabe.nextInt();&lt;br /&gt;
   int add = z1 + z2;&lt;br /&gt;
   System.out.println(&amp;quot;Die Summe aus &amp;quot;+z1+&amp;quot; und &amp;quot;+z2+&amp;quot; lautet: &amp;quot;+add);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erläuterungen:&lt;br /&gt;
* Mit &#039;&#039;import java.util.Scanner&#039;&#039; wird ein sogenanntes Package importiert, das die Möglichkeit bietet, Zahlen oder Text auf der Konsole einzugeben. ([http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html Dokumentation der Klasse Scanner])&lt;br /&gt;
* Mit &#039;&#039;Scanner eingabe = new Scanner (System.in)&#039;&#039; wird ein Scanner-Objekt mit dem Namen &#039;&#039;eingabe&#039;&#039; erzeugt, das die Verwendung der benötigten Eingabemethoden ermöglicht.&lt;br /&gt;
* Die Eingabe erfolgt nach folgendem Schema:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
System.out.print (&amp;quot;Geben Sie die erste Zahl ein: &amp;quot;);        // Der Text zwischen den Anführungszeichen kann beliebig sein&lt;br /&gt;
   int zahl1 = eingabe.nextInt();                           // für ganze Zahlen&lt;br /&gt;
double zahl2 = eingabe.nextDouble();                        // für Fließkommazahlen&lt;br /&gt;
String ein   = eingabe.next();                                // für Zeichenketten&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Der Wert wird nach der ausgegebenen Eingabeaufforderung eingegeben. Nach Betätigen der ENTER-Taste wird der jeweilige Wert der entsprechenden Variable zugewiesen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2.1.1.&#039;&#039;&#039; (Kreisberechnung)&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Methode &#039;&#039;&#039;&#039;&#039;public void kreisberechnung()&#039;&#039;&#039;&#039;&#039;, die nach Eingabe des Radius den Umfang und den Inhalt des Kreises berechnet und auf der Konsole ausgibt. Pi kann mit dem gerundeten Wert &#039;&#039;3.1415926&#039;&#039; verwendet werden.&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Aufgabe 2.1.1|Lösungsvorschlag ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2.1.2&#039;&#039;&#039; (&amp;quot;Mondbremse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Aufgrund der Gezeitenkräfte des Mondes wird die Rotation der Erde abgebremst. Als Folge daraus verlängern sich in den nächsten 1000 Jahren die Tage jedes Jahres um 0.0016 Sekunden. Erstelle eine Methode &#039;&#039;&#039;&#039;&#039;public void mondbremse()&#039;&#039;&#039;&#039;&#039;, die nach Eingabe des Kalenderjahres angibt, um wieviel länger der Tag im Vergleich zu heute dauert. (Achtung: Typumwandlung nicht vergessen!)&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Aufgabe 2.1.2|Lösungsvorschlag ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2.1.3.&#039;&#039;&#039; (&amp;quot;Temperaturumrechnung&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Methode &#039;&#039;&#039;&#039;&#039;public void umrechnung_F_C ()&#039;&#039;&#039;&#039;&#039;, die die eingegebene Temperatur von Fahrenheit in Celsius umrechnet und ausgibt. Die Umrechnungsformel lautet: C=5/9(F-32). Vorsicht mit den verwendeten Datentypen, da sonst als Ergebnis immer 0.0 erscheinen wird! (Kontrolle: 212 Grad Fahrenheit entsprechen 100 Grad Celsius.)&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Aufgabe 2.1.3|Lösungsvorschlag ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2.1.4.&#039;&#039;&#039; (&amp;quot;Zinsrechnung&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Methode &#039;&#039;&#039;&#039;&#039;public void zinsrechnung()&#039;&#039;&#039;&#039;&#039;, die nach Eingabe von Kapital und Zinssatz (in Prozent) das Kapital nach einem Jahr berechnet. Erweitere anschließend das Programm um die Ausgabe des Kapitals nach zwei Jahren. &lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Aufgabe 2.1.4|Lösungsvorschlag ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2.1.5.&#039;&#039;&#039; (&amp;quot;Winkelmaßumrechnung&amp;quot;)&lt;br /&gt;
Erstelle eine Methode &#039;&#039;&#039;&#039;&#039;public void Bogenmaß()&#039;&#039;&#039;&#039;&#039;, die das einen Winkel in Bogenmaß angibt. (Kontrolle 180° entsprechen 3,141)&amp;lt;br&amp;gt;&lt;br /&gt;
[[Lösungsvorschlag Aufgabe 2.1.5|Lösungsvorschlag ]]&lt;/div&gt;</summary>
		<author><name>PT59kripke</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Aufgaben_2.1.&amp;diff=1212</id>
		<title>Aufgaben 2.1.</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Aufgaben_2.1.&amp;diff=1212"/>
		<updated>2013-10-07T14:55:12Z</updated>

		<summary type="html">&lt;p&gt;PT59kripke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Zur Lösung der Aufgaben soll folgendes Grundgerüst verwendet werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import java.util.Scanner;&lt;br /&gt;
&lt;br /&gt;
public class Aufgaben_2_1{&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//Beispielaufgabe Addieren&lt;br /&gt;
public void addieren(){&lt;br /&gt;
   Scanner eingabe = new Scanner (System.in);&lt;br /&gt;
   System.out.print (&amp;quot;Geben Sie die erste Zahl ein: &amp;quot;);&lt;br /&gt;
   int z1 = eingabe.nextInt(); &lt;br /&gt;
   System.out.print (&amp;quot;Geben Sie die zweite Zahl ein: &amp;quot;);&lt;br /&gt;
   int z2 = eingabe.nextInt();&lt;br /&gt;
   int add = z1 + z2;&lt;br /&gt;
   System.out.println(&amp;quot;Die Summe aus &amp;quot;+z1+&amp;quot; und &amp;quot;+z2+&amp;quot; lautet: &amp;quot;+add);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erläuterungen:&lt;br /&gt;
* Mit &#039;&#039;import java.util.Scanner&#039;&#039; wird ein sogenanntes Package importiert, das die Möglichkeit bietet, Zahlen oder Text auf der Konsole einzugeben. ([http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html Dokumentation der Klasse Scanner])&lt;br /&gt;
* Mit &#039;&#039;Scanner eingabe = new Scanner (System.in)&#039;&#039; wird ein Scanner-Objekt mit dem Namen &#039;&#039;eingabe&#039;&#039; erzeugt, das die Verwendung der benötigten Eingabemethoden ermöglicht.&lt;br /&gt;
* Die Eingabe erfolgt nach folgendem Schema:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
System.out.print (&amp;quot;Geben Sie die erste Zahl ein: &amp;quot;);        // Der Text zwischen den Anführungszeichen kann beliebig sein&lt;br /&gt;
   int zahl1 = eingabe.nextInt();                           // für ganze Zahlen&lt;br /&gt;
double zahl2 = eingabe.nextDouble();                        // für Fließkommazahlen&lt;br /&gt;
String ein   = eingabe.next();                                // für Zeichenketten&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Der Wert wird nach der ausgegebenen Eingabeaufforderung eingegeben. Nach Betätigen der ENTER-Taste wird der jeweilige Wert der entsprechenden Variable zugewiesen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2.1.1.&#039;&#039;&#039; (Kreisberechnung)&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Methode &#039;&#039;&#039;&#039;&#039;public void kreisberechnung()&#039;&#039;&#039;&#039;&#039;, die nach Eingabe des Radius den Umfang und den Inhalt des Kreises berechnet und auf der Konsole ausgibt. Pi kann mit dem gerundeten Wert &#039;&#039;3.1415926&#039;&#039; verwendet werden.&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Aufgabe 2.1.1|Lösungsvorschlag ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2.1.2&#039;&#039;&#039; (&amp;quot;Mondbremse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Aufgrund der Gezeitenkräfte des Mondes wird die Rotation der Erde abgebremst. Als Folge daraus verlängern sich in den nächsten 1000 Jahren die Tage jedes Jahres um 0.0016 Sekunden. Erstelle eine Methode &#039;&#039;&#039;&#039;&#039;public void mondbremse()&#039;&#039;&#039;&#039;&#039;, die nach Eingabe des Kalenderjahres angibt, um wieviel länger der Tag im Vergleich zu heute dauert. (Achtung: Typumwandlung nicht vergessen!)&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Aufgabe 2.1.2|Lösungsvorschlag ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2.1.3.&#039;&#039;&#039; (&amp;quot;Temperaturumrechnung&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Methode &#039;&#039;&#039;&#039;&#039;public void umrechnung_F_C ()&#039;&#039;&#039;&#039;&#039;, die die eingegebene Temperatur von Fahrenheit in Celsius umrechnet und ausgibt. Die Umrechnungsformel lautet: C=5/9(F-32). Vorsicht mit den verwendeten Datentypen, da sonst als Ergebnis immer 0.0 erscheinen wird! (Kontrolle: 212 Grad Fahrenheit entsprechen 100 Grad Celsius.)&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Aufgabe 2.1.3|Lösungsvorschlag ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2.1.4.&#039;&#039;&#039; (&amp;quot;Zinsrechnung&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Erstelle eine Methode &#039;&#039;&#039;&#039;&#039;public void zinsrechnung()&#039;&#039;&#039;&#039;&#039;, die nach Eingabe von Kapital und Zinssatz (in Prozent) das Kapital nach einem Jahr berechnet. Erweitere anschließend das Programm um die Ausgabe des Kapitals nach zwei Jahren. &lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Aufgabe 2.1.4|Lösungsvorschlag ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2.1.5.&#039;&#039;&#039; (&amp;quot;Winkelmaßumrechnung&amp;quot;)&lt;br /&gt;
Erstelle eine Methode &#039;&#039;&#039;&#039;&#039;public void Bogenmaß()&#039;&#039;&#039;&#039;&#039;, die das einen Winkel in Bogenmaß angibt. (Kontrolle 180° entsprechen 3,141)&lt;br /&gt;
[[Lösungsvorschlag Aufgabe 2.1.5|Lösungsvorschlag ]]&lt;/div&gt;</summary>
		<author><name>PT59kripke</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=L%C3%B6sungsvorschlag_Zweiseitige_bedingte_Anweisung&amp;diff=1137</id>
		<title>Lösungsvorschlag Zweiseitige bedingte Anweisung</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=L%C3%B6sungsvorschlag_Zweiseitige_bedingte_Anweisung&amp;diff=1137"/>
		<updated>2013-09-17T16:30:24Z</updated>

		<summary type="html">&lt;p&gt;PT59kripke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Aufgabe 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wiederhole solange nicht istziegel&lt;br /&gt;
&lt;br /&gt;
  wenn nicht istwand&lt;br /&gt;
  dann&lt;br /&gt;
   hinlegen&lt;br /&gt;
    schritt&lt;br /&gt;
  sonst&lt;br /&gt;
   linksdrehen&lt;br /&gt;
  &lt;br /&gt;
  *wenn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*wiederhole&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Lösungstrategie&amp;lt;/u&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
Hier wird Karol einfach solange abgefragt ob er schon an der Wand steht oder noch einen Zigel legen kann,&lt;br /&gt;
bis er wieder den ersten Ziegel erreicht hat.&lt;/div&gt;</summary>
		<author><name>PT59kripke</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=L%C3%B6sungsvorschlag_Zweiseitige_bedingte_Anweisung&amp;diff=1136</id>
		<title>Lösungsvorschlag Zweiseitige bedingte Anweisung</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=L%C3%B6sungsvorschlag_Zweiseitige_bedingte_Anweisung&amp;diff=1136"/>
		<updated>2013-09-17T16:26:51Z</updated>

		<summary type="html">&lt;p&gt;PT59kripke: Die Seite wurde neu angelegt: „&amp;#039;&amp;#039;&amp;#039;Aufgabe 1&amp;#039;&amp;#039;&amp;#039;  &amp;lt;pre&amp;gt; wiederhole solange nicht istziegel    wenn nicht istwand   dann    hinlegen     schritt   sonst    linksdrehen      *wenn   *wiederhole &amp;lt;/pre&amp;gt;“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Aufgabe 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wiederhole solange nicht istziegel&lt;br /&gt;
&lt;br /&gt;
  wenn nicht istwand&lt;br /&gt;
  dann&lt;br /&gt;
   hinlegen&lt;br /&gt;
    schritt&lt;br /&gt;
  sonst&lt;br /&gt;
   linksdrehen&lt;br /&gt;
  &lt;br /&gt;
  *wenn&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*wiederhole&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>PT59kripke</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=L%C3%B6sungsvorschlag_Wiederholung_mit_Anfangsbedingung&amp;diff=1134</id>
		<title>Lösungsvorschlag Wiederholung mit Anfangsbedingung</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=L%C3%B6sungsvorschlag_Wiederholung_mit_Anfangsbedingung&amp;diff=1134"/>
		<updated>2013-09-17T16:19:59Z</updated>

		<summary type="html">&lt;p&gt;PT59kripke: Erklärung hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Aufgabe 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wiederhole 4 mal&lt;br /&gt;
&lt;br /&gt;
  wiederhole solange nicht istwand&lt;br /&gt;
    hinlegen&lt;br /&gt;
    schritt&lt;br /&gt;
  *wiederhole&lt;br /&gt;
  &lt;br /&gt;
  linksdrehen&lt;br /&gt;
  &lt;br /&gt;
*wiederhole&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Lösungsstrageie&amp;lt;/u&amp;gt;:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da die Teilaufgabe, eine Seite des Quadrates abzuschreiten und Ziegel zu setzen, 4 mal (wegen der 4 Seiten eines Quadrats)&lt;br /&gt;
ausgeführt werden muss,&amp;lt;br&amp;gt;&lt;br /&gt;
empfiehlt es sich das Skript so zu gestalten, dass ein Teil wiederholt werden kann:&lt;br /&gt;
&lt;br /&gt;
*Anfangs muss Karo solange einen Ziegel legen und einen Schritt machen, bis er die Wand berührt&lt;br /&gt;
&lt;br /&gt;
*Dann dreht er sich einmal nach links, damit er wieder so da steht dass er die nächst Bahn abschreiten kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wiederhole solange nicht istziegel&lt;br /&gt;
&lt;br /&gt;
  wenn nicht istwand dann&lt;br /&gt;
    hinlegen&lt;br /&gt;
    schritt&lt;br /&gt;
  sonst&lt;br /&gt;
    linksdrehen&lt;br /&gt;
  &lt;br /&gt;
  *wenn&lt;br /&gt;
&lt;br /&gt;
*wiederhole&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>PT59kripke</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=L%C3%B6sungsvorschlag_Wiederholung_mit_Anfangsbedingung&amp;diff=1132</id>
		<title>Lösungsvorschlag Wiederholung mit Anfangsbedingung</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=L%C3%B6sungsvorschlag_Wiederholung_mit_Anfangsbedingung&amp;diff=1132"/>
		<updated>2013-09-17T16:14:23Z</updated>

		<summary type="html">&lt;p&gt;PT59kripke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Aufgabe 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wiederhole 4 mal&lt;br /&gt;
&lt;br /&gt;
  wiederhole solange nicht istwand&lt;br /&gt;
    hinlegen&lt;br /&gt;
    schritt&lt;br /&gt;
  *wiederhole&lt;br /&gt;
  &lt;br /&gt;
  linksdrehen&lt;br /&gt;
  &lt;br /&gt;
*wiederhole&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lösungsstrageie:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Da die Teilaufgabe, eine Seite des Quadrates abzuschreiten und Ziegel zu setzen, 4 mal (wegen der 4 Seiten eines Quadrats)&lt;br /&gt;
ausgeführt werden muss, empfiehlt es sich das Skript so zu gestalten, dass ein Teil werden kann.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wiederhole solange nicht istziegel&lt;br /&gt;
&lt;br /&gt;
  wenn nicht istwand dann&lt;br /&gt;
    hinlegen&lt;br /&gt;
    schritt&lt;br /&gt;
  sonst&lt;br /&gt;
    linksdrehen&lt;br /&gt;
  &lt;br /&gt;
  *wenn&lt;br /&gt;
&lt;br /&gt;
*wiederhole&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>PT59kripke</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=L%C3%B6sungsvorschlag_Wiederholung_mit_Anfangsbedingung&amp;diff=1131</id>
		<title>Lösungsvorschlag Wiederholung mit Anfangsbedingung</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=L%C3%B6sungsvorschlag_Wiederholung_mit_Anfangsbedingung&amp;diff=1131"/>
		<updated>2013-09-17T16:04:03Z</updated>

		<summary type="html">&lt;p&gt;PT59kripke: horiz. Linie entfernt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Aufgabe 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wiederhole 4 mal&lt;br /&gt;
&lt;br /&gt;
  wiederhole solange nicht istwand&lt;br /&gt;
    hinlegen&lt;br /&gt;
    schritt&lt;br /&gt;
  *wiederhole&lt;br /&gt;
  &lt;br /&gt;
  linksdrehen&lt;br /&gt;
  &lt;br /&gt;
*wiederhole&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wiederhole solange nicht istziegel&lt;br /&gt;
&lt;br /&gt;
  wenn nicht istwand dann&lt;br /&gt;
    hinlegen&lt;br /&gt;
    schritt&lt;br /&gt;
  sonst&lt;br /&gt;
    linksdrehen&lt;br /&gt;
  &lt;br /&gt;
  *wenn&lt;br /&gt;
&lt;br /&gt;
*wiederhole&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>PT59kripke</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=L%C3%B6sungsvorschlag_Wiederholung_mit_Anfangsbedingung&amp;diff=1130</id>
		<title>Lösungsvorschlag Wiederholung mit Anfangsbedingung</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=L%C3%B6sungsvorschlag_Wiederholung_mit_Anfangsbedingung&amp;diff=1130"/>
		<updated>2013-09-17T16:03:20Z</updated>

		<summary type="html">&lt;p&gt;PT59kripke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Aufgabe 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wiederhole 4 mal&lt;br /&gt;
&lt;br /&gt;
  wiederhole solange nicht istwand&lt;br /&gt;
    hinlegen&lt;br /&gt;
    schritt&lt;br /&gt;
  *wiederhole&lt;br /&gt;
  &lt;br /&gt;
  linksdrehen&lt;br /&gt;
  &lt;br /&gt;
*wiederhole&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wiederhole solange nicht istziegel&lt;br /&gt;
&lt;br /&gt;
  wenn nicht istwand dann&lt;br /&gt;
    hinlegen&lt;br /&gt;
    schritt&lt;br /&gt;
  sonst&lt;br /&gt;
    linksdrehen&lt;br /&gt;
  &lt;br /&gt;
  *wenn&lt;br /&gt;
&lt;br /&gt;
*wiederhole&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>PT59kripke</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=L%C3%B6sungsvorschlag_Wiederholung_mit_Anfangsbedingung&amp;diff=1129</id>
		<title>Lösungsvorschlag Wiederholung mit Anfangsbedingung</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=L%C3%B6sungsvorschlag_Wiederholung_mit_Anfangsbedingung&amp;diff=1129"/>
		<updated>2013-09-17T15:50:13Z</updated>

		<summary type="html">&lt;p&gt;PT59kripke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Aufgabe 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wiederhole 4 mal&lt;br /&gt;
&lt;br /&gt;
  wiederhole solange nicht istwand&lt;br /&gt;
    hinlegen&lt;br /&gt;
    schritt&lt;br /&gt;
  *wiederhole&lt;br /&gt;
  &lt;br /&gt;
  linksdrehen&lt;br /&gt;
  &lt;br /&gt;
*wiederhole&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>PT59kripke</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=L%C3%B6sungsvorschlag_Wiederholung_mit_Anfangsbedingung&amp;diff=1128</id>
		<title>Lösungsvorschlag Wiederholung mit Anfangsbedingung</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=L%C3%B6sungsvorschlag_Wiederholung_mit_Anfangsbedingung&amp;diff=1128"/>
		<updated>2013-09-17T15:47:27Z</updated>

		<summary type="html">&lt;p&gt;PT59kripke: Die Seite wurde neu angelegt: „&amp;#039;&amp;#039;&amp;#039;Aufgabe 1&amp;#039;&amp;#039;&amp;#039;“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Aufgabe 1&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>PT59kripke</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Datei:ObjekteKarol.png&amp;diff=1125</id>
		<title>Datei:ObjekteKarol.png</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Datei:ObjekteKarol.png&amp;diff=1125"/>
		<updated>2013-09-16T20:31:35Z</updated>

		<summary type="html">&lt;p&gt;PT59kripke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Beschreibung ==&lt;br /&gt;
{{Information_ohne_UploadWizard&lt;br /&gt;
|Beschreibung = verschiedene Objekte aus Karos Welt &lt;br /&gt;
|Quelle = Screenshot&lt;br /&gt;
|Urheber = PT59Kripke   &lt;br /&gt;
|Datum = 16.09.2013&lt;br /&gt;
|Genehmigung = &lt;br /&gt;
|Andere Versionen = &lt;br /&gt;
|Anmerkungen = Screenshot aus &amp;quot;Robot Karol 2.3&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
== Lizenz ==&lt;br /&gt;
{{Bild-CC-by-sa/3.0/de}}&lt;/div&gt;</summary>
		<author><name>PT59kripke</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Programmieren_lernen_mit_Robot_Karol&amp;diff=1124</id>
		<title>Programmieren lernen mit Robot Karol</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Programmieren_lernen_mit_Robot_Karol&amp;diff=1124"/>
		<updated>2013-09-16T20:29:34Z</updated>

		<summary type="html">&lt;p&gt;PT59kripke: /* Objekte */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Das Programm ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Robot Karol ist eine Programmierumgebung mit einer Programmiersprache, die  zum Erlernen des Programmierens und zur Einführung in die Algorithmik in der Schule gedacht ist. Das Programm ist Freeware und kann über den Link [http://www.schule.bayern.de/karol/download.htm Karol] heruntergeladen werden.&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Die Oberfläche===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Die Programmoberfläche von Karol ist zweigeteilt: Auf der linken Seiten befindet sich der sogenannte Editor, in dem die Programme geschrieben werden. Auf der rechten Seite ist Karols Welt, in der das verfasste Programm ausgeführt werden kann.&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Objekte ===&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
In Karos Welt gibt es einige Objekte die von Karo verteilt und wieder eingesammelt werden können.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Ziegel&lt;br /&gt;
&lt;br /&gt;
:Karol kann Ziegel vor sich hinlegen. Sollte vor ihm bereits ein Ziegel liegen, wird der nächste Ziegel auf den anderen drauf gelegt. &amp;lt;br&amp;gt;&lt;br /&gt;
:Wenn Karol vor einem Ziegel steht und einen Schritt macht, steigt er auf den Ziegel. Allerdings kann er nicht über 2 Ziegel auf einmal steigen.&amp;lt;br&amp;gt; &lt;br /&gt;
:Das heißt um auf einen 2er Ziegelturm zu kommen, muss er über einen davorliegenden einzelnen Ziegelstein &amp;quot;klettern&amp;quot;.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Marke&lt;br /&gt;
&lt;br /&gt;
:Marken werden direkt auf das Feld unter Karol gelegt. Sie dienen zur Orientierung und haben keinen Einfluss auf Karols &amp;lt;br&amp;gt;&lt;br /&gt;
:Bewegungsmöglichkeiten; er kann einfach darüber laufen. Im Gegensatz zu Ziegeln können nicht mehrer Marken übereinander gestapelt werden. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Quader&lt;br /&gt;
&lt;br /&gt;
:Quader versperren Karol den Weg. Er kann nicht über sie gehen. Außerdem lassen sie sich nicht stapeln.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:ObjekteKarol.png]]&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Die Bewegungmöglichkeiten von Karol ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Die Bewegungsmöglichkeiten von Karol sind recht übersichtlich. Mit den angegebenen Anweisungen kann das entsprechende Verhalten gesteuert werden. &lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable &amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #DDFFDD;&amp;quot;&lt;br /&gt;
! Verhalten&lt;br /&gt;
! Anweisung&lt;br /&gt;
|-&lt;br /&gt;
| ein Schritt vorwärts&lt;br /&gt;
| &#039;&#039;&#039;Schritt&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| eine Vierteldrehung nach links&lt;br /&gt;
| &#039;&#039;&#039;LinksDrehen&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| eine Vierteldrehung nach rechts&lt;br /&gt;
| &#039;&#039;&#039;RechtsDrehen&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| einen Ziegel vor sich hinlegen&lt;br /&gt;
| &#039;&#039;&#039;Hinlegen&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| einen Ziegel vor sich entfernen&lt;br /&gt;
| &#039;&#039;&#039;Aufheben&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| eine gelbe Marke unter sich legen&lt;br /&gt;
| &#039;&#039;&#039;MarkeSetzen&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| eine gelbe Marke unter sich entfernen&lt;br /&gt;
| &#039;&#039;&#039;MarkeLöschen&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Karols Welt ===&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Auf der rechten Seite der Karoloberfläche befindet sich Karols Welt. Durch Aufruf von &#039;&#039;Welt - Neue Welt&#039;&#039; kann die gewünschte Ausdehnung der neuen Welt festgelegt werden. Wenn die Ausgangsposition vom Standardstartpunkt (1,1) abweicht oder Hindernisse zur von Karol zu lösenden Welt gehören, dann empfiehlt es sich, die Welt über &#039;&#039;Welt - Welt speichern&#039;&#039; mit der Endung &#039;&#039;&#039;.kdw&#039;&#039;&#039; abzuspeichern.&lt;br /&gt;
[[Datei:KarolsWelt.JPG]]&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Erste Programme ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Das Programm &amp;quot;Robot Karol&amp;quot; ermöglicht es uns, dem Roboter, der sich in seiner Welt bewegen und Aufgaben erfüllen kann,  Anweisungen zu geben.&lt;br /&gt;
{{Kasten_blass|Durch eine &#039;&#039;&#039;Anweisung&#039;&#039;&#039; (z.B. &amp;quot;Schritt&amp;quot;) sendet man eine Botschaft an ein &#039;&#039;&#039;Objekt&#039;&#039;&#039; (z.B. Karol), das darauf mit der zugehörigen &#039;&#039;&#039;Methode&#039;&#039;&#039; reagiert (z.B. Schritt() ). }}&lt;br /&gt;
&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Karol soll eine U-Form abschreiten&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lösung&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-style=&amp;quot;background:#DDFFDD;&amp;quot;&lt;br /&gt;
! umgangssprachlich formuliert&lt;br /&gt;
! Karolprogramm&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* 2 mal vorwärts&lt;br /&gt;
* Linksum&lt;br /&gt;
* 2 mal vorwärts&lt;br /&gt;
* Linksum&lt;br /&gt;
* 2 mal vorwärts&lt;br /&gt;
|&lt;br /&gt;
Schritt&amp;lt;br&amp;gt;&lt;br /&gt;
Schritt&amp;lt;br&amp;gt;&lt;br /&gt;
LinksDrehen&amp;lt;br&amp;gt;&lt;br /&gt;
Schritt&amp;lt;br&amp;gt;&lt;br /&gt;
Schritt&amp;lt;br&amp;gt;&lt;br /&gt;
LinksDrehen&amp;lt;br&amp;gt;&lt;br /&gt;
Schritt&amp;lt;br&amp;gt;&lt;br /&gt;
Schritt&amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Eine solche Folge von Anweisungen bezeichnet man als &#039;&#039;&#039;Algorithmus&#039;&#039;&#039;.&lt;br /&gt;
{{Kasten_blass|&lt;br /&gt;
Ein &#039;&#039;&#039;Algorithmus&#039;&#039;&#039; ist eine endliche Folge aus eindeutigen und ausführbaren Anweisungen zur Lösung eines allgemeinen Problems.&amp;lt;br&amp;gt;&lt;br /&gt;
Ein &#039;&#039;&#039;Programm&#039;&#039;&#039; ist ein Algorithmus, der in einer formalisierten Sprache abgefasst ist und maschinell ausgeführt werden kann.}}&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Aufgaben:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
# Karol soll ein Rechteck ablaufen und am Ende wieder in der Ausgangsposition stehen. &lt;br /&gt;
# Damit man besser erkennt, ob Karol auch ein „U“ durchläuft, soll er dabei Marken setzen. Es soll also eine „U-Form mit Markierungen“ gebildet werden. &lt;br /&gt;
# Karol soll vier Ziegel in einer Reihe nebeneinander legen. &lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Lösungen Abschnitt Erste Programme|Lösungsvorschlag]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Selbstdefinierte Methoden ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Die Fähigkeiten von Karol können durch neue, zusätzliche Methoden erweitert werden. Diese selbstdefinierten Anweisungen müssen vorher vom Programmierer festgelegt werden.&lt;br /&gt;
Neue Methoden beginnen stets mit dem Wort &#039;&#039;&#039;Anweisung&#039;&#039;&#039; und dann mit dem &#039;&#039;&#039;Bezeichner&#039;&#039;&#039; der Methode. Es folgt eine Sequenz von Anweisungen, die beim Aufruf der Methode abgearbeitet werden. Die Festlegung der Methode endet mit dem Schlüsselwort &#039;&#039;&#039;*Anweisung&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel 1:&#039;&#039;&#039; Neue Methode &#039;&#039;&#039;Umdrehen&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Anweisung Umdrehen&lt;br /&gt;
  LinksDrehen&lt;br /&gt;
  LinksDrehen&lt;br /&gt;
*Anweisung&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Aufgabe:&#039;&#039;&#039; Karol soll einen Schritt rückwärts gehen.&lt;br /&gt;
&#039;&#039;(Die Lösung greift nun auf die Anweisung &#039;&#039;&#039;Umdrehen&#039;&#039;&#039; zu.)&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Anweisung Umdrehen &lt;br /&gt;
  LinksDrehen &lt;br /&gt;
  LinksDrehen &lt;br /&gt;
*Anweisung &lt;br /&gt;
&lt;br /&gt;
Programm &lt;br /&gt;
  Umdrehen &lt;br /&gt;
  Schritt &lt;br /&gt;
  Umdrehen &lt;br /&gt;
*Programm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Aufgaben&#039;&#039;&#039;&lt;br /&gt;
# Bringe Karol mittels einer selbstdefinierten Anweisung bei, einen Riesenschritt auf einmal zu vollführen, der so groß wie drei normale Schritte ist.&lt;br /&gt;
# Bringe Karol den Rösslsprung bei, wie ihn die Springerfigur beim Schach ausführt. Erstelle ein Programm, so dass Karol mehrere Rösslsprünge ausführt und nach jedem Sprung eine Marke setzt.&amp;lt;br&amp;gt;&lt;br /&gt;
  [[Bild:Screenshot_Roesselsprung.JPG]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Lösungsvorschlag Selbstdefinierte Methoden|Lösungsvorschlag]]&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wiederholung mit fester Anzahl ==&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
&#039;&#039;&#039;Aufgabe:&#039;&#039;&#039;&lt;br /&gt;
Karol soll vier Ziegel in einer Reihe hintereinander legen.&amp;lt;br&amp;gt;&lt;br /&gt;
Erste Lösung durch sequentielles Anschreiben der Anweisungen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hinlegen&lt;br /&gt;
Schritt&lt;br /&gt;
Hinlegen&lt;br /&gt;
Schritt&lt;br /&gt;
Hinlegen&lt;br /&gt;
Schritt&lt;br /&gt;
Hinlegen&lt;br /&gt;
Schritt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Bei größerer Zahl von Wiederholungen erweist sich das Ganze als ungünstig.&lt;br /&gt;
&#039;&#039;&#039;Bessere Lösung:&#039;&#039;&#039; Wiederholung mit fester Anzahl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:12pt;&amp;quot;&amp;gt;&#039;&#039;&#039;Wiederholung mit fester Anzahl&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Die Anweisungen im Wiederholungsteil werden nacheinander mehrfach ausgeführt (entsprechend der angegebenen Anzahl).&amp;lt;br&amp;gt;&lt;br /&gt;
Sprache Karol:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wiederhole n mal &lt;br /&gt;
   Anweisungen &lt;br /&gt;
*wiederhole&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die günstigere Lösung für unsere Aufgabe sieht dann wie folgt aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wiederhole 4 mal&lt;br /&gt;
   hinlegen&lt;br /&gt;
   schritt&lt;br /&gt;
*wiederhole&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 1:&#039;&#039;&#039; Karol soll mit Ziegeln ein Quadrat auslegen.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Screenshot_Quadrat.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:12pt;&amp;quot;&amp;gt;&#039;&#039;&#039;Geschachtelte Wiederholung&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel:&#039;&#039;&#039; Karol soll einen Quadratrand auslegen.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Screenshot_Quadratrand.JPG]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lösung&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wiederhole 4 mal&lt;br /&gt;
   wiederhole 3 mal&lt;br /&gt;
      Hinlegen&lt;br /&gt;
      Schritt&lt;br /&gt;
   *wiederhole&lt;br /&gt;
   LinksDrehen&lt;br /&gt;
*wiederhole&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Der Quadratrand besteht aus vier Seiten (äußere Schleife). Jede Seite besteht wiederum aus drei Ziegeln (innere Schleife).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Karol soll eine Welt [8x8] vollständig mit Kacheln auslegen. Schreibe dazu ein&lt;br /&gt;
Programm, das Anweisungen für das Umdrehen und geschachtelte Wiederholungen&lt;br /&gt;
enthält. Überlege dir zuerst eine Strategie zur Lösung der Aufgabe, bei der du sie in Teilprobleme zerlegst.&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Wiederholung mit fester Anzahl|Lösungsvorschlag]]&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Wiederholung mit Anfangsbedingung ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Bestimmte Problemstellungen lassen sich mit den bisherigen Methoden und Kontrollstrukturen&lt;br /&gt;
nicht zufrieden stellend bearbeiten. Die Lösung der Aufgabe „Gehe bis zur nächsten&lt;br /&gt;
Wand“ hängt von der Startposition Karols ab. Um unabhängig von der Ausgangsstellung zu&lt;br /&gt;
sein, muss Karol eine Methode kennen, die eine Anfrage, ob er noch weitergehen kann, mit&lt;br /&gt;
WAHR oder FALSCH beantwortet. Der Aufruf derartiger Methoden wird mit „Bedingung“&lt;br /&gt;
umschrieben.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Kasten_blass|Karol hat auch Methoden, mit denen er auf eine Anfrage mit WAHR oder&lt;br /&gt;
FALSCH antwortet. Der Aufruf einer Methode dieser Art heißt &#039;&#039;&#039;Bedingung&#039;&#039;&#039;.}}&lt;br /&gt;
&lt;br /&gt;
Von Karol vorgegebene Bedingungen sind: &#039;&#039;&#039;IstWand(), NichtIstWand(), IstZiegel(), NichtIstZiegel(),&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;IstMarke(), NichtIstMarke(), IstSüden(), IstNorden(), IstOsten(), IstWesten().&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe:&#039;&#039;&#039; Karol soll, solange er nicht an eine Wand anstößt, vorwärts gehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Er muss den Vorgang „Schritt“ solange wiederholen, bis er auf die Frage &#039;&#039;&#039;NichtIstWand&#039;&#039;&#039; mit&lt;br /&gt;
WAHR antwortet, da man die Anzahl der möglichen Schritte nicht im Voraus kennt. Sie ist&lt;br /&gt;
von der Ausgangsposition Karols abhängig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lösung:&#039;&#039;&#039;  Wiederholung mit Anfangsbedingung&lt;br /&gt;
&lt;br /&gt;
Die Anweisungen im Wiederholungsteil werden so oft wiederholt, solange&lt;br /&gt;
die Bedingung WAHR ergibt. Die Überprüfung der Bedingung erfolgt am&lt;br /&gt;
Anfang jeder Wiederholung.&lt;br /&gt;
&lt;br /&gt;
Sprache Karol:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wiederhole solange Bedingung&lt;br /&gt;
   Anweisungen&lt;br /&gt;
*wiederhole&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 1:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Karol soll in einer rechteckigen Welt von einer Ecke aus genau einmal um die Welt&lt;br /&gt;
herumlaufen und seine Strecke dabei mit Ziegeln belegen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Wie Aufgabe 1. Aber nun soll Karol an einem beliebigen Ort an der Wand starten.&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Wiederholung mit Anfangsbedingung|Lösungsvorschlag]]&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Zweiseitige bedingte Anweisung ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Das Programm für die Lösung der Aufgabe &#039;&#039;&amp;quot;Karol soll von einem beliebigen Punkt an der Wand&lt;br /&gt;
aus einmal an der Wand entlang genau eine Runde laufen und dabei seine Ziegel hinlegen&amp;quot;&#039;&#039;, lässt&lt;br /&gt;
sich dadurch vereinfachen, dass wir ihn bei jedem Schritt entscheiden lassen, was er als nächstes&lt;br /&gt;
tut:&amp;lt;br&amp;gt;&lt;br /&gt;
Solange er nicht an der Wand anstößt macht er jeweils einen Schritt. Stößt er an der Wand an&lt;br /&gt;
dreht er sich nach links. Der Vorteil ist, dass wir nicht mehr anzugeben brauchen, wie oft Karol&lt;br /&gt;
sich drehen muss, bis er seine Runde absolviert hat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bedingte Anweisung (zweiseitig):&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
In Abhängigkeit davon, ob die Bedingung erfüllt wird oder nicht, werden die&lt;br /&gt;
Anweisungen1 bzw. die Anweisungen2 ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Sprache Karol:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wenn Bedingung dann&lt;br /&gt;
   Anweisungen1&lt;br /&gt;
sonst&lt;br /&gt;
   Anweisungen2&lt;br /&gt;
*wenn&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 1:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Das Beispielprogramm &amp;quot;Karol soll von einem beliebigen Punkt an der Wand aus einmal an der&lt;br /&gt;
Wand entlang genau eine Runde laufen und dabei seine Ziegel hinlegen&amp;quot; soll in ein Programm&lt;br /&gt;
mit einer bedingten Anweisung umgewandelt und dadurch vereinfacht werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Wie Aufgabe 1, nur dass Karol von einem beliebigen Feld in der Welt startet und auch wieder an&lt;br /&gt;
seinen Ausgangspunkt zurückkehrt.&amp;lt;br&amp;gt;&lt;br /&gt;
a) Lösung ohne Verwendung der bedingten Anweisung.&amp;lt;br&amp;gt;&lt;br /&gt;
b) Lösung unter Verwendung der bedingten Anweisung.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 3:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
a) Karol hat eine Reihe von Ziegelsteinen vor sich. Dort wo ein Stein liegt, soll er ihn wegnehmen, dort wo keiner liegt, soll er einen Stein hinlegen.&amp;lt;br&amp;gt;&lt;br /&gt;
b) Nun soll Karol das Ganze 4 mal wiederholen, wobei er jeweils an der Wand entlang zurückgehen und zu seinem Ausgangspunkt zurückkehren soll.&lt;br /&gt;
&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Zweiseitige bedingte Anweisung|Lösungsvorschlag]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Einseitige bedingte Anweisung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
&#039;&#039;&#039;Aufgabe:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Karol soll eine lückenhafte Ziegelreihe auffüllen, bis er an der Wand&lt;br /&gt;
ankommt. Vor jedem Schritt muss er nur dann einen Ziegel legen, wenn&lt;br /&gt;
vor ihm keiner liegt. Falls bereits ein Ziegel vor ihm liegt, geschieht nichts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bedingte Anweisung (einseitig):&#039;&#039;&#039;&lt;br /&gt;
Wenn die Bedingung WAHR ergibt, werden die Anweisungen ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Sprache Karol:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wenn Bedingung dann&lt;br /&gt;
   Anweisungen&lt;br /&gt;
*wenn&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lösung der obigen Aufgabe:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wiederhole solange NichtIstWand&lt;br /&gt;
   wenn NichtIstZiegel dann&lt;br /&gt;
      Hinlegen&lt;br /&gt;
   *wenn&lt;br /&gt;
   Schritt&lt;br /&gt;
*wiederhole&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
In einer Welt (9x8) sind 15 Marken beliebig verteilt. Karol soll von einem beliebigen&lt;br /&gt;
Startpunkt ausgehend, alle Marken mit Ziegelsteinen belegen und dabei keine Marke&lt;br /&gt;
vergessen. Teste das Programm mit verschiedenen Startpunkten von Karol.&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Einseitige bedingte Anweisung|Lösungsvorschlag]]&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>PT59kripke</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Programmieren_lernen_mit_Robot_Karol&amp;diff=1123</id>
		<title>Programmieren lernen mit Robot Karol</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Programmieren_lernen_mit_Robot_Karol&amp;diff=1123"/>
		<updated>2013-09-16T20:27:38Z</updated>

		<summary type="html">&lt;p&gt;PT59kripke: /* Objekte */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Das Programm ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Robot Karol ist eine Programmierumgebung mit einer Programmiersprache, die  zum Erlernen des Programmierens und zur Einführung in die Algorithmik in der Schule gedacht ist. Das Programm ist Freeware und kann über den Link [http://www.schule.bayern.de/karol/download.htm Karol] heruntergeladen werden.&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Die Oberfläche===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Die Programmoberfläche von Karol ist zweigeteilt: Auf der linken Seiten befindet sich der sogenannte Editor, in dem die Programme geschrieben werden. Auf der rechten Seite ist Karols Welt, in der das verfasste Programm ausgeführt werden kann.&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Objekte ===&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
In Karos Welt gibt es einige Objekte die von Karo verteilt und wieder eingesammelt werden können.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Ziegel&lt;br /&gt;
&lt;br /&gt;
:Karol kann Ziegel vor sich hinlegen. Sollte vor ihm bereits ein Ziegel liegen, wird der nächste Ziegel auf den anderen drauf gelegt. &amp;lt;br&amp;gt;&lt;br /&gt;
:Wenn Karol vor einem Ziegel steht und einen Schritt macht, steigt er auf den Ziegel. Allerdings kann er nicht über 2 Ziegel auf einmal steigen.&amp;lt;br&amp;gt; &lt;br /&gt;
:Das heißt um auf einen 2er Ziegelturm zu kommen, muss er über einen davorliegenden einzelnen Ziegelstein &amp;quot;klettern&amp;quot;.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Marke&lt;br /&gt;
&lt;br /&gt;
:Marken werden direkt auf das Feld unter Karol gelegt. Sie dienen zur Orientierung und haben keinen Einfluss auf Karols &amp;lt;br&amp;gt;&lt;br /&gt;
:Bewegungsmöglichkeiten; er kann einfach darüber laufen. Im Gegensatz zu Ziegeln können nicht mehrer Marken übereinander gestapelt werden. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Quader&lt;br /&gt;
&lt;br /&gt;
:Quader versperren Karol den Weg. Er kann nicht über sie gehen. Außerdem lassen sie sich nicht stapeln.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:ObjekteKarol.png]]&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Die Bewegungmöglichkeiten von Karol ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Die Bewegungsmöglichkeiten von Karol sind recht übersichtlich. Mit den angegebenen Anweisungen kann das entsprechende Verhalten gesteuert werden. &lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable &amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #DDFFDD;&amp;quot;&lt;br /&gt;
! Verhalten&lt;br /&gt;
! Anweisung&lt;br /&gt;
|-&lt;br /&gt;
| ein Schritt vorwärts&lt;br /&gt;
| &#039;&#039;&#039;Schritt&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| eine Vierteldrehung nach links&lt;br /&gt;
| &#039;&#039;&#039;LinksDrehen&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| eine Vierteldrehung nach rechts&lt;br /&gt;
| &#039;&#039;&#039;RechtsDrehen&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| einen Ziegel vor sich hinlegen&lt;br /&gt;
| &#039;&#039;&#039;Hinlegen&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| einen Ziegel vor sich entfernen&lt;br /&gt;
| &#039;&#039;&#039;Aufheben&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| eine gelbe Marke unter sich legen&lt;br /&gt;
| &#039;&#039;&#039;MarkeSetzen&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| eine gelbe Marke unter sich entfernen&lt;br /&gt;
| &#039;&#039;&#039;MarkeLöschen&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Karols Welt ===&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Auf der rechten Seite der Karoloberfläche befindet sich Karols Welt. Durch Aufruf von &#039;&#039;Welt - Neue Welt&#039;&#039; kann die gewünschte Ausdehnung der neuen Welt festgelegt werden. Wenn die Ausgangsposition vom Standardstartpunkt (1,1) abweicht oder Hindernisse zur von Karol zu lösenden Welt gehören, dann empfiehlt es sich, die Welt über &#039;&#039;Welt - Welt speichern&#039;&#039; mit der Endung &#039;&#039;&#039;.kdw&#039;&#039;&#039; abzuspeichern.&lt;br /&gt;
[[Datei:KarolsWelt.JPG]]&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Erste Programme ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Das Programm &amp;quot;Robot Karol&amp;quot; ermöglicht es uns, dem Roboter, der sich in seiner Welt bewegen und Aufgaben erfüllen kann,  Anweisungen zu geben.&lt;br /&gt;
{{Kasten_blass|Durch eine &#039;&#039;&#039;Anweisung&#039;&#039;&#039; (z.B. &amp;quot;Schritt&amp;quot;) sendet man eine Botschaft an ein &#039;&#039;&#039;Objekt&#039;&#039;&#039; (z.B. Karol), das darauf mit der zugehörigen &#039;&#039;&#039;Methode&#039;&#039;&#039; reagiert (z.B. Schritt() ). }}&lt;br /&gt;
&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Karol soll eine U-Form abschreiten&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lösung&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-style=&amp;quot;background:#DDFFDD;&amp;quot;&lt;br /&gt;
! umgangssprachlich formuliert&lt;br /&gt;
! Karolprogramm&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* 2 mal vorwärts&lt;br /&gt;
* Linksum&lt;br /&gt;
* 2 mal vorwärts&lt;br /&gt;
* Linksum&lt;br /&gt;
* 2 mal vorwärts&lt;br /&gt;
|&lt;br /&gt;
Schritt&amp;lt;br&amp;gt;&lt;br /&gt;
Schritt&amp;lt;br&amp;gt;&lt;br /&gt;
LinksDrehen&amp;lt;br&amp;gt;&lt;br /&gt;
Schritt&amp;lt;br&amp;gt;&lt;br /&gt;
Schritt&amp;lt;br&amp;gt;&lt;br /&gt;
LinksDrehen&amp;lt;br&amp;gt;&lt;br /&gt;
Schritt&amp;lt;br&amp;gt;&lt;br /&gt;
Schritt&amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Eine solche Folge von Anweisungen bezeichnet man als &#039;&#039;&#039;Algorithmus&#039;&#039;&#039;.&lt;br /&gt;
{{Kasten_blass|&lt;br /&gt;
Ein &#039;&#039;&#039;Algorithmus&#039;&#039;&#039; ist eine endliche Folge aus eindeutigen und ausführbaren Anweisungen zur Lösung eines allgemeinen Problems.&amp;lt;br&amp;gt;&lt;br /&gt;
Ein &#039;&#039;&#039;Programm&#039;&#039;&#039; ist ein Algorithmus, der in einer formalisierten Sprache abgefasst ist und maschinell ausgeführt werden kann.}}&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Aufgaben:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
# Karol soll ein Rechteck ablaufen und am Ende wieder in der Ausgangsposition stehen. &lt;br /&gt;
# Damit man besser erkennt, ob Karol auch ein „U“ durchläuft, soll er dabei Marken setzen. Es soll also eine „U-Form mit Markierungen“ gebildet werden. &lt;br /&gt;
# Karol soll vier Ziegel in einer Reihe nebeneinander legen. &lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Lösungen Abschnitt Erste Programme|Lösungsvorschlag]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Selbstdefinierte Methoden ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Die Fähigkeiten von Karol können durch neue, zusätzliche Methoden erweitert werden. Diese selbstdefinierten Anweisungen müssen vorher vom Programmierer festgelegt werden.&lt;br /&gt;
Neue Methoden beginnen stets mit dem Wort &#039;&#039;&#039;Anweisung&#039;&#039;&#039; und dann mit dem &#039;&#039;&#039;Bezeichner&#039;&#039;&#039; der Methode. Es folgt eine Sequenz von Anweisungen, die beim Aufruf der Methode abgearbeitet werden. Die Festlegung der Methode endet mit dem Schlüsselwort &#039;&#039;&#039;*Anweisung&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel 1:&#039;&#039;&#039; Neue Methode &#039;&#039;&#039;Umdrehen&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Anweisung Umdrehen&lt;br /&gt;
  LinksDrehen&lt;br /&gt;
  LinksDrehen&lt;br /&gt;
*Anweisung&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Aufgabe:&#039;&#039;&#039; Karol soll einen Schritt rückwärts gehen.&lt;br /&gt;
&#039;&#039;(Die Lösung greift nun auf die Anweisung &#039;&#039;&#039;Umdrehen&#039;&#039;&#039; zu.)&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Anweisung Umdrehen &lt;br /&gt;
  LinksDrehen &lt;br /&gt;
  LinksDrehen &lt;br /&gt;
*Anweisung &lt;br /&gt;
&lt;br /&gt;
Programm &lt;br /&gt;
  Umdrehen &lt;br /&gt;
  Schritt &lt;br /&gt;
  Umdrehen &lt;br /&gt;
*Programm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Aufgaben&#039;&#039;&#039;&lt;br /&gt;
# Bringe Karol mittels einer selbstdefinierten Anweisung bei, einen Riesenschritt auf einmal zu vollführen, der so groß wie drei normale Schritte ist.&lt;br /&gt;
# Bringe Karol den Rösslsprung bei, wie ihn die Springerfigur beim Schach ausführt. Erstelle ein Programm, so dass Karol mehrere Rösslsprünge ausführt und nach jedem Sprung eine Marke setzt.&amp;lt;br&amp;gt;&lt;br /&gt;
  [[Bild:Screenshot_Roesselsprung.JPG]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Lösungsvorschlag Selbstdefinierte Methoden|Lösungsvorschlag]]&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wiederholung mit fester Anzahl ==&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
&#039;&#039;&#039;Aufgabe:&#039;&#039;&#039;&lt;br /&gt;
Karol soll vier Ziegel in einer Reihe hintereinander legen.&amp;lt;br&amp;gt;&lt;br /&gt;
Erste Lösung durch sequentielles Anschreiben der Anweisungen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hinlegen&lt;br /&gt;
Schritt&lt;br /&gt;
Hinlegen&lt;br /&gt;
Schritt&lt;br /&gt;
Hinlegen&lt;br /&gt;
Schritt&lt;br /&gt;
Hinlegen&lt;br /&gt;
Schritt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Bei größerer Zahl von Wiederholungen erweist sich das Ganze als ungünstig.&lt;br /&gt;
&#039;&#039;&#039;Bessere Lösung:&#039;&#039;&#039; Wiederholung mit fester Anzahl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:12pt;&amp;quot;&amp;gt;&#039;&#039;&#039;Wiederholung mit fester Anzahl&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Die Anweisungen im Wiederholungsteil werden nacheinander mehrfach ausgeführt (entsprechend der angegebenen Anzahl).&amp;lt;br&amp;gt;&lt;br /&gt;
Sprache Karol:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wiederhole n mal &lt;br /&gt;
   Anweisungen &lt;br /&gt;
*wiederhole&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die günstigere Lösung für unsere Aufgabe sieht dann wie folgt aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wiederhole 4 mal&lt;br /&gt;
   hinlegen&lt;br /&gt;
   schritt&lt;br /&gt;
*wiederhole&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 1:&#039;&#039;&#039; Karol soll mit Ziegeln ein Quadrat auslegen.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Screenshot_Quadrat.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:12pt;&amp;quot;&amp;gt;&#039;&#039;&#039;Geschachtelte Wiederholung&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel:&#039;&#039;&#039; Karol soll einen Quadratrand auslegen.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Screenshot_Quadratrand.JPG]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lösung&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wiederhole 4 mal&lt;br /&gt;
   wiederhole 3 mal&lt;br /&gt;
      Hinlegen&lt;br /&gt;
      Schritt&lt;br /&gt;
   *wiederhole&lt;br /&gt;
   LinksDrehen&lt;br /&gt;
*wiederhole&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Der Quadratrand besteht aus vier Seiten (äußere Schleife). Jede Seite besteht wiederum aus drei Ziegeln (innere Schleife).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Karol soll eine Welt [8x8] vollständig mit Kacheln auslegen. Schreibe dazu ein&lt;br /&gt;
Programm, das Anweisungen für das Umdrehen und geschachtelte Wiederholungen&lt;br /&gt;
enthält. Überlege dir zuerst eine Strategie zur Lösung der Aufgabe, bei der du sie in Teilprobleme zerlegst.&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Wiederholung mit fester Anzahl|Lösungsvorschlag]]&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Wiederholung mit Anfangsbedingung ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Bestimmte Problemstellungen lassen sich mit den bisherigen Methoden und Kontrollstrukturen&lt;br /&gt;
nicht zufrieden stellend bearbeiten. Die Lösung der Aufgabe „Gehe bis zur nächsten&lt;br /&gt;
Wand“ hängt von der Startposition Karols ab. Um unabhängig von der Ausgangsstellung zu&lt;br /&gt;
sein, muss Karol eine Methode kennen, die eine Anfrage, ob er noch weitergehen kann, mit&lt;br /&gt;
WAHR oder FALSCH beantwortet. Der Aufruf derartiger Methoden wird mit „Bedingung“&lt;br /&gt;
umschrieben.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Kasten_blass|Karol hat auch Methoden, mit denen er auf eine Anfrage mit WAHR oder&lt;br /&gt;
FALSCH antwortet. Der Aufruf einer Methode dieser Art heißt &#039;&#039;&#039;Bedingung&#039;&#039;&#039;.}}&lt;br /&gt;
&lt;br /&gt;
Von Karol vorgegebene Bedingungen sind: &#039;&#039;&#039;IstWand(), NichtIstWand(), IstZiegel(), NichtIstZiegel(),&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;IstMarke(), NichtIstMarke(), IstSüden(), IstNorden(), IstOsten(), IstWesten().&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe:&#039;&#039;&#039; Karol soll, solange er nicht an eine Wand anstößt, vorwärts gehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Er muss den Vorgang „Schritt“ solange wiederholen, bis er auf die Frage &#039;&#039;&#039;NichtIstWand&#039;&#039;&#039; mit&lt;br /&gt;
WAHR antwortet, da man die Anzahl der möglichen Schritte nicht im Voraus kennt. Sie ist&lt;br /&gt;
von der Ausgangsposition Karols abhängig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lösung:&#039;&#039;&#039;  Wiederholung mit Anfangsbedingung&lt;br /&gt;
&lt;br /&gt;
Die Anweisungen im Wiederholungsteil werden so oft wiederholt, solange&lt;br /&gt;
die Bedingung WAHR ergibt. Die Überprüfung der Bedingung erfolgt am&lt;br /&gt;
Anfang jeder Wiederholung.&lt;br /&gt;
&lt;br /&gt;
Sprache Karol:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wiederhole solange Bedingung&lt;br /&gt;
   Anweisungen&lt;br /&gt;
*wiederhole&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 1:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Karol soll in einer rechteckigen Welt von einer Ecke aus genau einmal um die Welt&lt;br /&gt;
herumlaufen und seine Strecke dabei mit Ziegeln belegen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Wie Aufgabe 1. Aber nun soll Karol an einem beliebigen Ort an der Wand starten.&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Wiederholung mit Anfangsbedingung|Lösungsvorschlag]]&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Zweiseitige bedingte Anweisung ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Das Programm für die Lösung der Aufgabe &#039;&#039;&amp;quot;Karol soll von einem beliebigen Punkt an der Wand&lt;br /&gt;
aus einmal an der Wand entlang genau eine Runde laufen und dabei seine Ziegel hinlegen&amp;quot;&#039;&#039;, lässt&lt;br /&gt;
sich dadurch vereinfachen, dass wir ihn bei jedem Schritt entscheiden lassen, was er als nächstes&lt;br /&gt;
tut:&amp;lt;br&amp;gt;&lt;br /&gt;
Solange er nicht an der Wand anstößt macht er jeweils einen Schritt. Stößt er an der Wand an&lt;br /&gt;
dreht er sich nach links. Der Vorteil ist, dass wir nicht mehr anzugeben brauchen, wie oft Karol&lt;br /&gt;
sich drehen muss, bis er seine Runde absolviert hat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bedingte Anweisung (zweiseitig):&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
In Abhängigkeit davon, ob die Bedingung erfüllt wird oder nicht, werden die&lt;br /&gt;
Anweisungen1 bzw. die Anweisungen2 ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Sprache Karol:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wenn Bedingung dann&lt;br /&gt;
   Anweisungen1&lt;br /&gt;
sonst&lt;br /&gt;
   Anweisungen2&lt;br /&gt;
*wenn&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 1:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Das Beispielprogramm &amp;quot;Karol soll von einem beliebigen Punkt an der Wand aus einmal an der&lt;br /&gt;
Wand entlang genau eine Runde laufen und dabei seine Ziegel hinlegen&amp;quot; soll in ein Programm&lt;br /&gt;
mit einer bedingten Anweisung umgewandelt und dadurch vereinfacht werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Wie Aufgabe 1, nur dass Karol von einem beliebigen Feld in der Welt startet und auch wieder an&lt;br /&gt;
seinen Ausgangspunkt zurückkehrt.&amp;lt;br&amp;gt;&lt;br /&gt;
a) Lösung ohne Verwendung der bedingten Anweisung.&amp;lt;br&amp;gt;&lt;br /&gt;
b) Lösung unter Verwendung der bedingten Anweisung.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 3:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
a) Karol hat eine Reihe von Ziegelsteinen vor sich. Dort wo ein Stein liegt, soll er ihn wegnehmen, dort wo keiner liegt, soll er einen Stein hinlegen.&amp;lt;br&amp;gt;&lt;br /&gt;
b) Nun soll Karol das Ganze 4 mal wiederholen, wobei er jeweils an der Wand entlang zurückgehen und zu seinem Ausgangspunkt zurückkehren soll.&lt;br /&gt;
&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Zweiseitige bedingte Anweisung|Lösungsvorschlag]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Einseitige bedingte Anweisung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
&#039;&#039;&#039;Aufgabe:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Karol soll eine lückenhafte Ziegelreihe auffüllen, bis er an der Wand&lt;br /&gt;
ankommt. Vor jedem Schritt muss er nur dann einen Ziegel legen, wenn&lt;br /&gt;
vor ihm keiner liegt. Falls bereits ein Ziegel vor ihm liegt, geschieht nichts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bedingte Anweisung (einseitig):&#039;&#039;&#039;&lt;br /&gt;
Wenn die Bedingung WAHR ergibt, werden die Anweisungen ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Sprache Karol:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wenn Bedingung dann&lt;br /&gt;
   Anweisungen&lt;br /&gt;
*wenn&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lösung der obigen Aufgabe:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wiederhole solange NichtIstWand&lt;br /&gt;
   wenn NichtIstZiegel dann&lt;br /&gt;
      Hinlegen&lt;br /&gt;
   *wenn&lt;br /&gt;
   Schritt&lt;br /&gt;
*wiederhole&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
In einer Welt (9x8) sind 15 Marken beliebig verteilt. Karol soll von einem beliebigen&lt;br /&gt;
Startpunkt ausgehend, alle Marken mit Ziegelsteinen belegen und dabei keine Marke&lt;br /&gt;
vergessen. Teste das Programm mit verschiedenen Startpunkten von Karol.&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Einseitige bedingte Anweisung|Lösungsvorschlag]]&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>PT59kripke</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Programmieren_lernen_mit_Robot_Karol&amp;diff=1122</id>
		<title>Programmieren lernen mit Robot Karol</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Programmieren_lernen_mit_Robot_Karol&amp;diff=1122"/>
		<updated>2013-09-16T20:26:56Z</updated>

		<summary type="html">&lt;p&gt;PT59kripke: /* Objekte */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Das Programm ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Robot Karol ist eine Programmierumgebung mit einer Programmiersprache, die  zum Erlernen des Programmierens und zur Einführung in die Algorithmik in der Schule gedacht ist. Das Programm ist Freeware und kann über den Link [http://www.schule.bayern.de/karol/download.htm Karol] heruntergeladen werden.&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Die Oberfläche===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Die Programmoberfläche von Karol ist zweigeteilt: Auf der linken Seiten befindet sich der sogenannte Editor, in dem die Programme geschrieben werden. Auf der rechten Seite ist Karols Welt, in der das verfasste Programm ausgeführt werden kann.&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Objekte ===&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
In Karos Welt gibt es einige Objekte die von Karo verteilt und wieder eingesammelt werden können.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Ziegel&lt;br /&gt;
&lt;br /&gt;
:Karol kann Ziegel vor sich hinlegen. Sollte vor ihm bereits ein Ziegel liegen, wird der nächste Ziegel auf den anderen drauf gelegt. &amp;lt;br&amp;gt;&lt;br /&gt;
:Wenn Karol vor einem Ziegel steht und einen Schritt macht, steigt er auf den Ziegel.Allerdings kann er nicht über 2 Ziegel auf einmal steigen.&amp;lt;br&amp;gt; &lt;br /&gt;
:Das heißt um auf einen 2er Ziegelturm zu kommen, muss er über einen davorliegenden einzelnen Ziegelstein &amp;quot;klettern&amp;quot;.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Marke&lt;br /&gt;
&lt;br /&gt;
:Marken werden direkt auf das Feld unter Karol gelegt. Sie dienen zur Orientierung und haben keinen Einfluss auf Karols &amp;lt;br&amp;gt;&lt;br /&gt;
:Bewegungsmöglichkeiten; er kann einfach darüber laufen. Im Gegensatz zu Ziegeln können nicht mehrer Marken übereinander gestapelt werden. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Quader&lt;br /&gt;
&lt;br /&gt;
:Quader versperren Karol den Weg. Er kann nicht über sie gehen. Außerdem lassen sie sich nicht stapeln.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:ObjekteKarol.png]]&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Die Bewegungmöglichkeiten von Karol ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Die Bewegungsmöglichkeiten von Karol sind recht übersichtlich. Mit den angegebenen Anweisungen kann das entsprechende Verhalten gesteuert werden. &lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable &amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #DDFFDD;&amp;quot;&lt;br /&gt;
! Verhalten&lt;br /&gt;
! Anweisung&lt;br /&gt;
|-&lt;br /&gt;
| ein Schritt vorwärts&lt;br /&gt;
| &#039;&#039;&#039;Schritt&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| eine Vierteldrehung nach links&lt;br /&gt;
| &#039;&#039;&#039;LinksDrehen&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| eine Vierteldrehung nach rechts&lt;br /&gt;
| &#039;&#039;&#039;RechtsDrehen&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| einen Ziegel vor sich hinlegen&lt;br /&gt;
| &#039;&#039;&#039;Hinlegen&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| einen Ziegel vor sich entfernen&lt;br /&gt;
| &#039;&#039;&#039;Aufheben&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| eine gelbe Marke unter sich legen&lt;br /&gt;
| &#039;&#039;&#039;MarkeSetzen&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| eine gelbe Marke unter sich entfernen&lt;br /&gt;
| &#039;&#039;&#039;MarkeLöschen&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Karols Welt ===&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Auf der rechten Seite der Karoloberfläche befindet sich Karols Welt. Durch Aufruf von &#039;&#039;Welt - Neue Welt&#039;&#039; kann die gewünschte Ausdehnung der neuen Welt festgelegt werden. Wenn die Ausgangsposition vom Standardstartpunkt (1,1) abweicht oder Hindernisse zur von Karol zu lösenden Welt gehören, dann empfiehlt es sich, die Welt über &#039;&#039;Welt - Welt speichern&#039;&#039; mit der Endung &#039;&#039;&#039;.kdw&#039;&#039;&#039; abzuspeichern.&lt;br /&gt;
[[Datei:KarolsWelt.JPG]]&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Erste Programme ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Das Programm &amp;quot;Robot Karol&amp;quot; ermöglicht es uns, dem Roboter, der sich in seiner Welt bewegen und Aufgaben erfüllen kann,  Anweisungen zu geben.&lt;br /&gt;
{{Kasten_blass|Durch eine &#039;&#039;&#039;Anweisung&#039;&#039;&#039; (z.B. &amp;quot;Schritt&amp;quot;) sendet man eine Botschaft an ein &#039;&#039;&#039;Objekt&#039;&#039;&#039; (z.B. Karol), das darauf mit der zugehörigen &#039;&#039;&#039;Methode&#039;&#039;&#039; reagiert (z.B. Schritt() ). }}&lt;br /&gt;
&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Karol soll eine U-Form abschreiten&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lösung&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-style=&amp;quot;background:#DDFFDD;&amp;quot;&lt;br /&gt;
! umgangssprachlich formuliert&lt;br /&gt;
! Karolprogramm&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* 2 mal vorwärts&lt;br /&gt;
* Linksum&lt;br /&gt;
* 2 mal vorwärts&lt;br /&gt;
* Linksum&lt;br /&gt;
* 2 mal vorwärts&lt;br /&gt;
|&lt;br /&gt;
Schritt&amp;lt;br&amp;gt;&lt;br /&gt;
Schritt&amp;lt;br&amp;gt;&lt;br /&gt;
LinksDrehen&amp;lt;br&amp;gt;&lt;br /&gt;
Schritt&amp;lt;br&amp;gt;&lt;br /&gt;
Schritt&amp;lt;br&amp;gt;&lt;br /&gt;
LinksDrehen&amp;lt;br&amp;gt;&lt;br /&gt;
Schritt&amp;lt;br&amp;gt;&lt;br /&gt;
Schritt&amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Eine solche Folge von Anweisungen bezeichnet man als &#039;&#039;&#039;Algorithmus&#039;&#039;&#039;.&lt;br /&gt;
{{Kasten_blass|&lt;br /&gt;
Ein &#039;&#039;&#039;Algorithmus&#039;&#039;&#039; ist eine endliche Folge aus eindeutigen und ausführbaren Anweisungen zur Lösung eines allgemeinen Problems.&amp;lt;br&amp;gt;&lt;br /&gt;
Ein &#039;&#039;&#039;Programm&#039;&#039;&#039; ist ein Algorithmus, der in einer formalisierten Sprache abgefasst ist und maschinell ausgeführt werden kann.}}&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Aufgaben:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
# Karol soll ein Rechteck ablaufen und am Ende wieder in der Ausgangsposition stehen. &lt;br /&gt;
# Damit man besser erkennt, ob Karol auch ein „U“ durchläuft, soll er dabei Marken setzen. Es soll also eine „U-Form mit Markierungen“ gebildet werden. &lt;br /&gt;
# Karol soll vier Ziegel in einer Reihe nebeneinander legen. &lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Lösungen Abschnitt Erste Programme|Lösungsvorschlag]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Selbstdefinierte Methoden ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Die Fähigkeiten von Karol können durch neue, zusätzliche Methoden erweitert werden. Diese selbstdefinierten Anweisungen müssen vorher vom Programmierer festgelegt werden.&lt;br /&gt;
Neue Methoden beginnen stets mit dem Wort &#039;&#039;&#039;Anweisung&#039;&#039;&#039; und dann mit dem &#039;&#039;&#039;Bezeichner&#039;&#039;&#039; der Methode. Es folgt eine Sequenz von Anweisungen, die beim Aufruf der Methode abgearbeitet werden. Die Festlegung der Methode endet mit dem Schlüsselwort &#039;&#039;&#039;*Anweisung&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel 1:&#039;&#039;&#039; Neue Methode &#039;&#039;&#039;Umdrehen&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Anweisung Umdrehen&lt;br /&gt;
  LinksDrehen&lt;br /&gt;
  LinksDrehen&lt;br /&gt;
*Anweisung&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Aufgabe:&#039;&#039;&#039; Karol soll einen Schritt rückwärts gehen.&lt;br /&gt;
&#039;&#039;(Die Lösung greift nun auf die Anweisung &#039;&#039;&#039;Umdrehen&#039;&#039;&#039; zu.)&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Anweisung Umdrehen &lt;br /&gt;
  LinksDrehen &lt;br /&gt;
  LinksDrehen &lt;br /&gt;
*Anweisung &lt;br /&gt;
&lt;br /&gt;
Programm &lt;br /&gt;
  Umdrehen &lt;br /&gt;
  Schritt &lt;br /&gt;
  Umdrehen &lt;br /&gt;
*Programm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Aufgaben&#039;&#039;&#039;&lt;br /&gt;
# Bringe Karol mittels einer selbstdefinierten Anweisung bei, einen Riesenschritt auf einmal zu vollführen, der so groß wie drei normale Schritte ist.&lt;br /&gt;
# Bringe Karol den Rösslsprung bei, wie ihn die Springerfigur beim Schach ausführt. Erstelle ein Programm, so dass Karol mehrere Rösslsprünge ausführt und nach jedem Sprung eine Marke setzt.&amp;lt;br&amp;gt;&lt;br /&gt;
  [[Bild:Screenshot_Roesselsprung.JPG]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Lösungsvorschlag Selbstdefinierte Methoden|Lösungsvorschlag]]&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wiederholung mit fester Anzahl ==&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
&#039;&#039;&#039;Aufgabe:&#039;&#039;&#039;&lt;br /&gt;
Karol soll vier Ziegel in einer Reihe hintereinander legen.&amp;lt;br&amp;gt;&lt;br /&gt;
Erste Lösung durch sequentielles Anschreiben der Anweisungen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hinlegen&lt;br /&gt;
Schritt&lt;br /&gt;
Hinlegen&lt;br /&gt;
Schritt&lt;br /&gt;
Hinlegen&lt;br /&gt;
Schritt&lt;br /&gt;
Hinlegen&lt;br /&gt;
Schritt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Bei größerer Zahl von Wiederholungen erweist sich das Ganze als ungünstig.&lt;br /&gt;
&#039;&#039;&#039;Bessere Lösung:&#039;&#039;&#039; Wiederholung mit fester Anzahl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:12pt;&amp;quot;&amp;gt;&#039;&#039;&#039;Wiederholung mit fester Anzahl&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Die Anweisungen im Wiederholungsteil werden nacheinander mehrfach ausgeführt (entsprechend der angegebenen Anzahl).&amp;lt;br&amp;gt;&lt;br /&gt;
Sprache Karol:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wiederhole n mal &lt;br /&gt;
   Anweisungen &lt;br /&gt;
*wiederhole&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die günstigere Lösung für unsere Aufgabe sieht dann wie folgt aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wiederhole 4 mal&lt;br /&gt;
   hinlegen&lt;br /&gt;
   schritt&lt;br /&gt;
*wiederhole&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 1:&#039;&#039;&#039; Karol soll mit Ziegeln ein Quadrat auslegen.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Screenshot_Quadrat.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:12pt;&amp;quot;&amp;gt;&#039;&#039;&#039;Geschachtelte Wiederholung&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel:&#039;&#039;&#039; Karol soll einen Quadratrand auslegen.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Screenshot_Quadratrand.JPG]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lösung&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wiederhole 4 mal&lt;br /&gt;
   wiederhole 3 mal&lt;br /&gt;
      Hinlegen&lt;br /&gt;
      Schritt&lt;br /&gt;
   *wiederhole&lt;br /&gt;
   LinksDrehen&lt;br /&gt;
*wiederhole&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Der Quadratrand besteht aus vier Seiten (äußere Schleife). Jede Seite besteht wiederum aus drei Ziegeln (innere Schleife).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Karol soll eine Welt [8x8] vollständig mit Kacheln auslegen. Schreibe dazu ein&lt;br /&gt;
Programm, das Anweisungen für das Umdrehen und geschachtelte Wiederholungen&lt;br /&gt;
enthält. Überlege dir zuerst eine Strategie zur Lösung der Aufgabe, bei der du sie in Teilprobleme zerlegst.&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Wiederholung mit fester Anzahl|Lösungsvorschlag]]&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Wiederholung mit Anfangsbedingung ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Bestimmte Problemstellungen lassen sich mit den bisherigen Methoden und Kontrollstrukturen&lt;br /&gt;
nicht zufrieden stellend bearbeiten. Die Lösung der Aufgabe „Gehe bis zur nächsten&lt;br /&gt;
Wand“ hängt von der Startposition Karols ab. Um unabhängig von der Ausgangsstellung zu&lt;br /&gt;
sein, muss Karol eine Methode kennen, die eine Anfrage, ob er noch weitergehen kann, mit&lt;br /&gt;
WAHR oder FALSCH beantwortet. Der Aufruf derartiger Methoden wird mit „Bedingung“&lt;br /&gt;
umschrieben.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Kasten_blass|Karol hat auch Methoden, mit denen er auf eine Anfrage mit WAHR oder&lt;br /&gt;
FALSCH antwortet. Der Aufruf einer Methode dieser Art heißt &#039;&#039;&#039;Bedingung&#039;&#039;&#039;.}}&lt;br /&gt;
&lt;br /&gt;
Von Karol vorgegebene Bedingungen sind: &#039;&#039;&#039;IstWand(), NichtIstWand(), IstZiegel(), NichtIstZiegel(),&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;IstMarke(), NichtIstMarke(), IstSüden(), IstNorden(), IstOsten(), IstWesten().&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe:&#039;&#039;&#039; Karol soll, solange er nicht an eine Wand anstößt, vorwärts gehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Er muss den Vorgang „Schritt“ solange wiederholen, bis er auf die Frage &#039;&#039;&#039;NichtIstWand&#039;&#039;&#039; mit&lt;br /&gt;
WAHR antwortet, da man die Anzahl der möglichen Schritte nicht im Voraus kennt. Sie ist&lt;br /&gt;
von der Ausgangsposition Karols abhängig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lösung:&#039;&#039;&#039;  Wiederholung mit Anfangsbedingung&lt;br /&gt;
&lt;br /&gt;
Die Anweisungen im Wiederholungsteil werden so oft wiederholt, solange&lt;br /&gt;
die Bedingung WAHR ergibt. Die Überprüfung der Bedingung erfolgt am&lt;br /&gt;
Anfang jeder Wiederholung.&lt;br /&gt;
&lt;br /&gt;
Sprache Karol:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wiederhole solange Bedingung&lt;br /&gt;
   Anweisungen&lt;br /&gt;
*wiederhole&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 1:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Karol soll in einer rechteckigen Welt von einer Ecke aus genau einmal um die Welt&lt;br /&gt;
herumlaufen und seine Strecke dabei mit Ziegeln belegen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Wie Aufgabe 1. Aber nun soll Karol an einem beliebigen Ort an der Wand starten.&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Wiederholung mit Anfangsbedingung|Lösungsvorschlag]]&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Zweiseitige bedingte Anweisung ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Das Programm für die Lösung der Aufgabe &#039;&#039;&amp;quot;Karol soll von einem beliebigen Punkt an der Wand&lt;br /&gt;
aus einmal an der Wand entlang genau eine Runde laufen und dabei seine Ziegel hinlegen&amp;quot;&#039;&#039;, lässt&lt;br /&gt;
sich dadurch vereinfachen, dass wir ihn bei jedem Schritt entscheiden lassen, was er als nächstes&lt;br /&gt;
tut:&amp;lt;br&amp;gt;&lt;br /&gt;
Solange er nicht an der Wand anstößt macht er jeweils einen Schritt. Stößt er an der Wand an&lt;br /&gt;
dreht er sich nach links. Der Vorteil ist, dass wir nicht mehr anzugeben brauchen, wie oft Karol&lt;br /&gt;
sich drehen muss, bis er seine Runde absolviert hat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bedingte Anweisung (zweiseitig):&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
In Abhängigkeit davon, ob die Bedingung erfüllt wird oder nicht, werden die&lt;br /&gt;
Anweisungen1 bzw. die Anweisungen2 ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Sprache Karol:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wenn Bedingung dann&lt;br /&gt;
   Anweisungen1&lt;br /&gt;
sonst&lt;br /&gt;
   Anweisungen2&lt;br /&gt;
*wenn&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 1:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Das Beispielprogramm &amp;quot;Karol soll von einem beliebigen Punkt an der Wand aus einmal an der&lt;br /&gt;
Wand entlang genau eine Runde laufen und dabei seine Ziegel hinlegen&amp;quot; soll in ein Programm&lt;br /&gt;
mit einer bedingten Anweisung umgewandelt und dadurch vereinfacht werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Wie Aufgabe 1, nur dass Karol von einem beliebigen Feld in der Welt startet und auch wieder an&lt;br /&gt;
seinen Ausgangspunkt zurückkehrt.&amp;lt;br&amp;gt;&lt;br /&gt;
a) Lösung ohne Verwendung der bedingten Anweisung.&amp;lt;br&amp;gt;&lt;br /&gt;
b) Lösung unter Verwendung der bedingten Anweisung.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 3:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
a) Karol hat eine Reihe von Ziegelsteinen vor sich. Dort wo ein Stein liegt, soll er ihn wegnehmen, dort wo keiner liegt, soll er einen Stein hinlegen.&amp;lt;br&amp;gt;&lt;br /&gt;
b) Nun soll Karol das Ganze 4 mal wiederholen, wobei er jeweils an der Wand entlang zurückgehen und zu seinem Ausgangspunkt zurückkehren soll.&lt;br /&gt;
&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Zweiseitige bedingte Anweisung|Lösungsvorschlag]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Einseitige bedingte Anweisung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
&#039;&#039;&#039;Aufgabe:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Karol soll eine lückenhafte Ziegelreihe auffüllen, bis er an der Wand&lt;br /&gt;
ankommt. Vor jedem Schritt muss er nur dann einen Ziegel legen, wenn&lt;br /&gt;
vor ihm keiner liegt. Falls bereits ein Ziegel vor ihm liegt, geschieht nichts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bedingte Anweisung (einseitig):&#039;&#039;&#039;&lt;br /&gt;
Wenn die Bedingung WAHR ergibt, werden die Anweisungen ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Sprache Karol:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wenn Bedingung dann&lt;br /&gt;
   Anweisungen&lt;br /&gt;
*wenn&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lösung der obigen Aufgabe:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wiederhole solange NichtIstWand&lt;br /&gt;
   wenn NichtIstZiegel dann&lt;br /&gt;
      Hinlegen&lt;br /&gt;
   *wenn&lt;br /&gt;
   Schritt&lt;br /&gt;
*wiederhole&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
In einer Welt (9x8) sind 15 Marken beliebig verteilt. Karol soll von einem beliebigen&lt;br /&gt;
Startpunkt ausgehend, alle Marken mit Ziegelsteinen belegen und dabei keine Marke&lt;br /&gt;
vergessen. Teste das Programm mit verschiedenen Startpunkten von Karol.&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Einseitige bedingte Anweisung|Lösungsvorschlag]]&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>PT59kripke</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Programmieren_lernen_mit_Robot_Karol&amp;diff=1121</id>
		<title>Programmieren lernen mit Robot Karol</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Programmieren_lernen_mit_Robot_Karol&amp;diff=1121"/>
		<updated>2013-09-16T20:26:36Z</updated>

		<summary type="html">&lt;p&gt;PT59kripke: &amp;quot;Objekte&amp;quot; angelegt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Das Programm ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Robot Karol ist eine Programmierumgebung mit einer Programmiersprache, die  zum Erlernen des Programmierens und zur Einführung in die Algorithmik in der Schule gedacht ist. Das Programm ist Freeware und kann über den Link [http://www.schule.bayern.de/karol/download.htm Karol] heruntergeladen werden.&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Die Oberfläche===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Die Programmoberfläche von Karol ist zweigeteilt: Auf der linken Seiten befindet sich der sogenannte Editor, in dem die Programme geschrieben werden. Auf der rechten Seite ist Karols Welt, in der das verfasste Programm ausgeführt werden kann.&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Objekte ===&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
In Karos Welt gibt es einige Objekte die von Karo verteilt und wieder eingesammelt werden können.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Ziegel&lt;br /&gt;
&lt;br /&gt;
:Karol kann Ziegel vor sich hinlegen. Sollte vor ihm bereits ein Ziegel liegen, wird der nächste Ziegel auf den anderen drauf gelegt. &amp;lt;br&amp;gt;&lt;br /&gt;
:Wenn Karol vor einem Ziegel steht und einen Schritt macht, steigt er auf den Ziegel.Allerdings kann er nicht über 2 Ziegel auf einmal steigen.&amp;lt;br&amp;gt; &lt;br /&gt;
:Das heißt um auf einen 2er Ziegelturm zu kommen, muss er über einen davorliegenden einzelnen Ziegelstein &amp;quot;klettern&amp;quot;.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Marke&lt;br /&gt;
&lt;br /&gt;
:Marken werden direkt auf das Feld unter Karol gelegt. Sie dienen zur Orientierung und haben keinen Einfluss auf Karols &amp;lt;br&amp;gt;&lt;br /&gt;
:Bewegungsmöglichkeiten; er kann einfach darüber laufen. Im Gegensatz zu Ziegeln können nicht mehrer Marken übereinander gestapelt werden. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Quader&lt;br /&gt;
&lt;br /&gt;
:Quader versperren Karol den Weg. Er kann nicht über sie gehen. Außerdem lassen sie sich nicht stapeln&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:ObjekteKarol.png]]&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Die Bewegungmöglichkeiten von Karol ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Die Bewegungsmöglichkeiten von Karol sind recht übersichtlich. Mit den angegebenen Anweisungen kann das entsprechende Verhalten gesteuert werden. &lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable &amp;quot;&lt;br /&gt;
|- style=&amp;quot;background: #DDFFDD;&amp;quot;&lt;br /&gt;
! Verhalten&lt;br /&gt;
! Anweisung&lt;br /&gt;
|-&lt;br /&gt;
| ein Schritt vorwärts&lt;br /&gt;
| &#039;&#039;&#039;Schritt&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| eine Vierteldrehung nach links&lt;br /&gt;
| &#039;&#039;&#039;LinksDrehen&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| eine Vierteldrehung nach rechts&lt;br /&gt;
| &#039;&#039;&#039;RechtsDrehen&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| einen Ziegel vor sich hinlegen&lt;br /&gt;
| &#039;&#039;&#039;Hinlegen&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| einen Ziegel vor sich entfernen&lt;br /&gt;
| &#039;&#039;&#039;Aufheben&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| eine gelbe Marke unter sich legen&lt;br /&gt;
| &#039;&#039;&#039;MarkeSetzen&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| eine gelbe Marke unter sich entfernen&lt;br /&gt;
| &#039;&#039;&#039;MarkeLöschen&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Karols Welt ===&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Auf der rechten Seite der Karoloberfläche befindet sich Karols Welt. Durch Aufruf von &#039;&#039;Welt - Neue Welt&#039;&#039; kann die gewünschte Ausdehnung der neuen Welt festgelegt werden. Wenn die Ausgangsposition vom Standardstartpunkt (1,1) abweicht oder Hindernisse zur von Karol zu lösenden Welt gehören, dann empfiehlt es sich, die Welt über &#039;&#039;Welt - Welt speichern&#039;&#039; mit der Endung &#039;&#039;&#039;.kdw&#039;&#039;&#039; abzuspeichern.&lt;br /&gt;
[[Datei:KarolsWelt.JPG]]&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Erste Programme ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Das Programm &amp;quot;Robot Karol&amp;quot; ermöglicht es uns, dem Roboter, der sich in seiner Welt bewegen und Aufgaben erfüllen kann,  Anweisungen zu geben.&lt;br /&gt;
{{Kasten_blass|Durch eine &#039;&#039;&#039;Anweisung&#039;&#039;&#039; (z.B. &amp;quot;Schritt&amp;quot;) sendet man eine Botschaft an ein &#039;&#039;&#039;Objekt&#039;&#039;&#039; (z.B. Karol), das darauf mit der zugehörigen &#039;&#039;&#039;Methode&#039;&#039;&#039; reagiert (z.B. Schritt() ). }}&lt;br /&gt;
&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Karol soll eine U-Form abschreiten&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lösung&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-style=&amp;quot;background:#DDFFDD;&amp;quot;&lt;br /&gt;
! umgangssprachlich formuliert&lt;br /&gt;
! Karolprogramm&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* 2 mal vorwärts&lt;br /&gt;
* Linksum&lt;br /&gt;
* 2 mal vorwärts&lt;br /&gt;
* Linksum&lt;br /&gt;
* 2 mal vorwärts&lt;br /&gt;
|&lt;br /&gt;
Schritt&amp;lt;br&amp;gt;&lt;br /&gt;
Schritt&amp;lt;br&amp;gt;&lt;br /&gt;
LinksDrehen&amp;lt;br&amp;gt;&lt;br /&gt;
Schritt&amp;lt;br&amp;gt;&lt;br /&gt;
Schritt&amp;lt;br&amp;gt;&lt;br /&gt;
LinksDrehen&amp;lt;br&amp;gt;&lt;br /&gt;
Schritt&amp;lt;br&amp;gt;&lt;br /&gt;
Schritt&amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Eine solche Folge von Anweisungen bezeichnet man als &#039;&#039;&#039;Algorithmus&#039;&#039;&#039;.&lt;br /&gt;
{{Kasten_blass|&lt;br /&gt;
Ein &#039;&#039;&#039;Algorithmus&#039;&#039;&#039; ist eine endliche Folge aus eindeutigen und ausführbaren Anweisungen zur Lösung eines allgemeinen Problems.&amp;lt;br&amp;gt;&lt;br /&gt;
Ein &#039;&#039;&#039;Programm&#039;&#039;&#039; ist ein Algorithmus, der in einer formalisierten Sprache abgefasst ist und maschinell ausgeführt werden kann.}}&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Aufgaben:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
# Karol soll ein Rechteck ablaufen und am Ende wieder in der Ausgangsposition stehen. &lt;br /&gt;
# Damit man besser erkennt, ob Karol auch ein „U“ durchläuft, soll er dabei Marken setzen. Es soll also eine „U-Form mit Markierungen“ gebildet werden. &lt;br /&gt;
# Karol soll vier Ziegel in einer Reihe nebeneinander legen. &lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Lösungen Abschnitt Erste Programme|Lösungsvorschlag]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Selbstdefinierte Methoden ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Die Fähigkeiten von Karol können durch neue, zusätzliche Methoden erweitert werden. Diese selbstdefinierten Anweisungen müssen vorher vom Programmierer festgelegt werden.&lt;br /&gt;
Neue Methoden beginnen stets mit dem Wort &#039;&#039;&#039;Anweisung&#039;&#039;&#039; und dann mit dem &#039;&#039;&#039;Bezeichner&#039;&#039;&#039; der Methode. Es folgt eine Sequenz von Anweisungen, die beim Aufruf der Methode abgearbeitet werden. Die Festlegung der Methode endet mit dem Schlüsselwort &#039;&#039;&#039;*Anweisung&#039;&#039;&#039;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel 1:&#039;&#039;&#039; Neue Methode &#039;&#039;&#039;Umdrehen&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Anweisung Umdrehen&lt;br /&gt;
  LinksDrehen&lt;br /&gt;
  LinksDrehen&lt;br /&gt;
*Anweisung&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Aufgabe:&#039;&#039;&#039; Karol soll einen Schritt rückwärts gehen.&lt;br /&gt;
&#039;&#039;(Die Lösung greift nun auf die Anweisung &#039;&#039;&#039;Umdrehen&#039;&#039;&#039; zu.)&#039;&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Anweisung Umdrehen &lt;br /&gt;
  LinksDrehen &lt;br /&gt;
  LinksDrehen &lt;br /&gt;
*Anweisung &lt;br /&gt;
&lt;br /&gt;
Programm &lt;br /&gt;
  Umdrehen &lt;br /&gt;
  Schritt &lt;br /&gt;
  Umdrehen &lt;br /&gt;
*Programm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Aufgaben&#039;&#039;&#039;&lt;br /&gt;
# Bringe Karol mittels einer selbstdefinierten Anweisung bei, einen Riesenschritt auf einmal zu vollführen, der so groß wie drei normale Schritte ist.&lt;br /&gt;
# Bringe Karol den Rösslsprung bei, wie ihn die Springerfigur beim Schach ausführt. Erstelle ein Programm, so dass Karol mehrere Rösslsprünge ausführt und nach jedem Sprung eine Marke setzt.&amp;lt;br&amp;gt;&lt;br /&gt;
  [[Bild:Screenshot_Roesselsprung.JPG]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Lösungsvorschlag Selbstdefinierte Methoden|Lösungsvorschlag]]&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wiederholung mit fester Anzahl ==&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
&#039;&#039;&#039;Aufgabe:&#039;&#039;&#039;&lt;br /&gt;
Karol soll vier Ziegel in einer Reihe hintereinander legen.&amp;lt;br&amp;gt;&lt;br /&gt;
Erste Lösung durch sequentielles Anschreiben der Anweisungen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hinlegen&lt;br /&gt;
Schritt&lt;br /&gt;
Hinlegen&lt;br /&gt;
Schritt&lt;br /&gt;
Hinlegen&lt;br /&gt;
Schritt&lt;br /&gt;
Hinlegen&lt;br /&gt;
Schritt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Bei größerer Zahl von Wiederholungen erweist sich das Ganze als ungünstig.&lt;br /&gt;
&#039;&#039;&#039;Bessere Lösung:&#039;&#039;&#039; Wiederholung mit fester Anzahl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:12pt;&amp;quot;&amp;gt;&#039;&#039;&#039;Wiederholung mit fester Anzahl&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Die Anweisungen im Wiederholungsteil werden nacheinander mehrfach ausgeführt (entsprechend der angegebenen Anzahl).&amp;lt;br&amp;gt;&lt;br /&gt;
Sprache Karol:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wiederhole n mal &lt;br /&gt;
   Anweisungen &lt;br /&gt;
*wiederhole&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die günstigere Lösung für unsere Aufgabe sieht dann wie folgt aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wiederhole 4 mal&lt;br /&gt;
   hinlegen&lt;br /&gt;
   schritt&lt;br /&gt;
*wiederhole&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 1:&#039;&#039;&#039; Karol soll mit Ziegeln ein Quadrat auslegen.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Screenshot_Quadrat.JPG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:12pt;&amp;quot;&amp;gt;&#039;&#039;&#039;Geschachtelte Wiederholung&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel:&#039;&#039;&#039; Karol soll einen Quadratrand auslegen.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Screenshot_Quadratrand.JPG]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lösung&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wiederhole 4 mal&lt;br /&gt;
   wiederhole 3 mal&lt;br /&gt;
      Hinlegen&lt;br /&gt;
      Schritt&lt;br /&gt;
   *wiederhole&lt;br /&gt;
   LinksDrehen&lt;br /&gt;
*wiederhole&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Der Quadratrand besteht aus vier Seiten (äußere Schleife). Jede Seite besteht wiederum aus drei Ziegeln (innere Schleife).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Karol soll eine Welt [8x8] vollständig mit Kacheln auslegen. Schreibe dazu ein&lt;br /&gt;
Programm, das Anweisungen für das Umdrehen und geschachtelte Wiederholungen&lt;br /&gt;
enthält. Überlege dir zuerst eine Strategie zur Lösung der Aufgabe, bei der du sie in Teilprobleme zerlegst.&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Wiederholung mit fester Anzahl|Lösungsvorschlag]]&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Wiederholung mit Anfangsbedingung ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Bestimmte Problemstellungen lassen sich mit den bisherigen Methoden und Kontrollstrukturen&lt;br /&gt;
nicht zufrieden stellend bearbeiten. Die Lösung der Aufgabe „Gehe bis zur nächsten&lt;br /&gt;
Wand“ hängt von der Startposition Karols ab. Um unabhängig von der Ausgangsstellung zu&lt;br /&gt;
sein, muss Karol eine Methode kennen, die eine Anfrage, ob er noch weitergehen kann, mit&lt;br /&gt;
WAHR oder FALSCH beantwortet. Der Aufruf derartiger Methoden wird mit „Bedingung“&lt;br /&gt;
umschrieben.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Kasten_blass|Karol hat auch Methoden, mit denen er auf eine Anfrage mit WAHR oder&lt;br /&gt;
FALSCH antwortet. Der Aufruf einer Methode dieser Art heißt &#039;&#039;&#039;Bedingung&#039;&#039;&#039;.}}&lt;br /&gt;
&lt;br /&gt;
Von Karol vorgegebene Bedingungen sind: &#039;&#039;&#039;IstWand(), NichtIstWand(), IstZiegel(), NichtIstZiegel(),&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;IstMarke(), NichtIstMarke(), IstSüden(), IstNorden(), IstOsten(), IstWesten().&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe:&#039;&#039;&#039; Karol soll, solange er nicht an eine Wand anstößt, vorwärts gehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Er muss den Vorgang „Schritt“ solange wiederholen, bis er auf die Frage &#039;&#039;&#039;NichtIstWand&#039;&#039;&#039; mit&lt;br /&gt;
WAHR antwortet, da man die Anzahl der möglichen Schritte nicht im Voraus kennt. Sie ist&lt;br /&gt;
von der Ausgangsposition Karols abhängig.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lösung:&#039;&#039;&#039;  Wiederholung mit Anfangsbedingung&lt;br /&gt;
&lt;br /&gt;
Die Anweisungen im Wiederholungsteil werden so oft wiederholt, solange&lt;br /&gt;
die Bedingung WAHR ergibt. Die Überprüfung der Bedingung erfolgt am&lt;br /&gt;
Anfang jeder Wiederholung.&lt;br /&gt;
&lt;br /&gt;
Sprache Karol:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wiederhole solange Bedingung&lt;br /&gt;
   Anweisungen&lt;br /&gt;
*wiederhole&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 1:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Karol soll in einer rechteckigen Welt von einer Ecke aus genau einmal um die Welt&lt;br /&gt;
herumlaufen und seine Strecke dabei mit Ziegeln belegen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Wie Aufgabe 1. Aber nun soll Karol an einem beliebigen Ort an der Wand starten.&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Wiederholung mit Anfangsbedingung|Lösungsvorschlag]]&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Zweiseitige bedingte Anweisung ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
Das Programm für die Lösung der Aufgabe &#039;&#039;&amp;quot;Karol soll von einem beliebigen Punkt an der Wand&lt;br /&gt;
aus einmal an der Wand entlang genau eine Runde laufen und dabei seine Ziegel hinlegen&amp;quot;&#039;&#039;, lässt&lt;br /&gt;
sich dadurch vereinfachen, dass wir ihn bei jedem Schritt entscheiden lassen, was er als nächstes&lt;br /&gt;
tut:&amp;lt;br&amp;gt;&lt;br /&gt;
Solange er nicht an der Wand anstößt macht er jeweils einen Schritt. Stößt er an der Wand an&lt;br /&gt;
dreht er sich nach links. Der Vorteil ist, dass wir nicht mehr anzugeben brauchen, wie oft Karol&lt;br /&gt;
sich drehen muss, bis er seine Runde absolviert hat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bedingte Anweisung (zweiseitig):&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
In Abhängigkeit davon, ob die Bedingung erfüllt wird oder nicht, werden die&lt;br /&gt;
Anweisungen1 bzw. die Anweisungen2 ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Sprache Karol:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wenn Bedingung dann&lt;br /&gt;
   Anweisungen1&lt;br /&gt;
sonst&lt;br /&gt;
   Anweisungen2&lt;br /&gt;
*wenn&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 1:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Das Beispielprogramm &amp;quot;Karol soll von einem beliebigen Punkt an der Wand aus einmal an der&lt;br /&gt;
Wand entlang genau eine Runde laufen und dabei seine Ziegel hinlegen&amp;quot; soll in ein Programm&lt;br /&gt;
mit einer bedingten Anweisung umgewandelt und dadurch vereinfacht werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Wie Aufgabe 1, nur dass Karol von einem beliebigen Feld in der Welt startet und auch wieder an&lt;br /&gt;
seinen Ausgangspunkt zurückkehrt.&amp;lt;br&amp;gt;&lt;br /&gt;
a) Lösung ohne Verwendung der bedingten Anweisung.&amp;lt;br&amp;gt;&lt;br /&gt;
b) Lösung unter Verwendung der bedingten Anweisung.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 3:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
a) Karol hat eine Reihe von Ziegelsteinen vor sich. Dort wo ein Stein liegt, soll er ihn wegnehmen, dort wo keiner liegt, soll er einen Stein hinlegen.&amp;lt;br&amp;gt;&lt;br /&gt;
b) Nun soll Karol das Ganze 4 mal wiederholen, wobei er jeweils an der Wand entlang zurückgehen und zu seinem Ausgangspunkt zurückkehren soll.&lt;br /&gt;
&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Zweiseitige bedingte Anweisung|Lösungsvorschlag]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Einseitige bedingte Anweisung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|width=800px|&lt;br /&gt;
&#039;&#039;&#039;Aufgabe:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Karol soll eine lückenhafte Ziegelreihe auffüllen, bis er an der Wand&lt;br /&gt;
ankommt. Vor jedem Schritt muss er nur dann einen Ziegel legen, wenn&lt;br /&gt;
vor ihm keiner liegt. Falls bereits ein Ziegel vor ihm liegt, geschieht nichts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bedingte Anweisung (einseitig):&#039;&#039;&#039;&lt;br /&gt;
Wenn die Bedingung WAHR ergibt, werden die Anweisungen ausgeführt.&lt;br /&gt;
&lt;br /&gt;
Sprache Karol:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wenn Bedingung dann&lt;br /&gt;
   Anweisungen&lt;br /&gt;
*wenn&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lösung der obigen Aufgabe:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wiederhole solange NichtIstWand&lt;br /&gt;
   wenn NichtIstZiegel dann&lt;br /&gt;
      Hinlegen&lt;br /&gt;
   *wenn&lt;br /&gt;
   Schritt&lt;br /&gt;
*wiederhole&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
In einer Welt (9x8) sind 15 Marken beliebig verteilt. Karol soll von einem beliebigen&lt;br /&gt;
Startpunkt ausgehend, alle Marken mit Ziegelsteinen belegen und dabei keine Marke&lt;br /&gt;
vergessen. Teste das Programm mit verschiedenen Startpunkten von Karol.&lt;br /&gt;
&lt;br /&gt;
[[Lösungsvorschlag Einseitige bedingte Anweisung|Lösungsvorschlag]]&lt;br /&gt;
|width=20px|&lt;br /&gt;
|width=300px | &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>PT59kripke</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Datei:ObjekteKarol.png&amp;diff=1120</id>
		<title>Datei:ObjekteKarol.png</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Datei:ObjekteKarol.png&amp;diff=1120"/>
		<updated>2013-09-16T20:16:49Z</updated>

		<summary type="html">&lt;p&gt;PT59kripke: hat eine neue Version von „Datei:ObjekteKarol.png“ hochgeladen: {{Information
|Beschreibung = 
|Quelle = 
|Urheber = 
|Datum = 
|Genehmigung = 
|Andere Versionen = 
|Anmerkungen = 
}}&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Beschreibung ==&lt;br /&gt;
{{Information_ohne_UploadWizard&lt;br /&gt;
|Beschreibung = verschiedene Objekte aus Karos Welt &lt;br /&gt;
|Quelle = Screenshot&lt;br /&gt;
|Urheber =  &lt;br /&gt;
|Datum = 16.09.2013&lt;br /&gt;
|Genehmigung = &lt;br /&gt;
|Andere Versionen = &lt;br /&gt;
|Anmerkungen = &lt;br /&gt;
}}&lt;br /&gt;
== Lizenz ==&lt;br /&gt;
{{Bild-CC-by-sa/3.0/de}}&lt;/div&gt;</summary>
		<author><name>PT59kripke</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Datei:ObjekteKarol.png&amp;diff=1119</id>
		<title>Datei:ObjekteKarol.png</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Datei:ObjekteKarol.png&amp;diff=1119"/>
		<updated>2013-09-16T20:01:17Z</updated>

		<summary type="html">&lt;p&gt;PT59kripke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Beschreibung ==&lt;br /&gt;
{{Information_ohne_UploadWizard&lt;br /&gt;
|Beschreibung = verschiedene Objekte aus Karos Welt &lt;br /&gt;
|Quelle = Screenshot&lt;br /&gt;
|Urheber =  &lt;br /&gt;
|Datum = 16.09.2013&lt;br /&gt;
|Genehmigung = &lt;br /&gt;
|Andere Versionen = &lt;br /&gt;
|Anmerkungen = &lt;br /&gt;
}}&lt;br /&gt;
== Lizenz ==&lt;br /&gt;
{{Bild-CC-by-sa/3.0/de}}&lt;/div&gt;</summary>
		<author><name>PT59kripke</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=Datei:ObjekteKarol.png&amp;diff=1118</id>
		<title>Datei:ObjekteKarol.png</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=Datei:ObjekteKarol.png&amp;diff=1118"/>
		<updated>2013-09-16T20:00:48Z</updated>

		<summary type="html">&lt;p&gt;PT59kripke: {{Information
|Beschreibung = 
|Quelle = Screenshot
|Urheber =  
|Datum = 16.09.2013
|Genehmigung = 
|Andere Versionen = 
|Anmerkungen = 
}}&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Beschreibung ==&lt;br /&gt;
{{Information_ohne_UploadWizard&lt;br /&gt;
|Beschreibung = &lt;br /&gt;
|Quelle = Screenshot&lt;br /&gt;
|Urheber =  &lt;br /&gt;
|Datum = 16.09.2013&lt;br /&gt;
|Genehmigung = &lt;br /&gt;
|Andere Versionen = &lt;br /&gt;
|Anmerkungen = &lt;br /&gt;
}}&lt;br /&gt;
== Lizenz ==&lt;br /&gt;
{{Bild-CC-by-sa/3.0/de}}&lt;/div&gt;</summary>
		<author><name>PT59kripke</name></author>
	</entry>
	<entry>
		<id>https://cgd.zum.de/index.php?title=L%C3%B6sungsvorschlag_Selbstdefinierte_Methoden&amp;diff=1117</id>
		<title>Lösungsvorschlag Selbstdefinierte Methoden</title>
		<link rel="alternate" type="text/html" href="https://cgd.zum.de/index.php?title=L%C3%B6sungsvorschlag_Selbstdefinierte_Methoden&amp;diff=1117"/>
		<updated>2013-09-16T19:36:26Z</updated>

		<summary type="html">&lt;p&gt;PT59kripke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Aufgabe 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Anweisung Riesenschritt&lt;br /&gt;
  Schritt&lt;br /&gt;
  Schritt&lt;br /&gt;
  Schritt&lt;br /&gt;
*Anweisung&lt;br /&gt;
&lt;br /&gt;
Programm&lt;br /&gt;
  Riesenschritt&lt;br /&gt;
*Programm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgabe 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Anweisung linksFlach&lt;br /&gt;
  LinksDrehen&lt;br /&gt;
  Schritt&lt;br /&gt;
  Schritt&lt;br /&gt;
  RechtsDrehen&lt;br /&gt;
  Schritt&lt;br /&gt;
  MarkeSetzen&lt;br /&gt;
*Anweisung&lt;br /&gt;
&lt;br /&gt;
Anweisung linksSteil&lt;br /&gt;
  LinksDrehen&lt;br /&gt;
  Schritt&lt;br /&gt;
  RechtsDrehen&lt;br /&gt;
  Schritt&lt;br /&gt;
  Schritt&lt;br /&gt;
  MarkeSetzen&lt;br /&gt;
*Anweisung&lt;br /&gt;
&lt;br /&gt;
Anweisung rechtsFlach&lt;br /&gt;
  RechtsDrehen&lt;br /&gt;
  Schritt&lt;br /&gt;
  Schritt&lt;br /&gt;
  LinksDrehen&lt;br /&gt;
  Schritt&lt;br /&gt;
  MarkeSetzen&lt;br /&gt;
*Anweisung&lt;br /&gt;
&lt;br /&gt;
Anweisung rechtsSteil&lt;br /&gt;
  RechtsDrehen&lt;br /&gt;
  Schritt&lt;br /&gt;
  LinksDrehen&lt;br /&gt;
  Schritt&lt;br /&gt;
  Schritt&lt;br /&gt;
  MarkeSetzen&lt;br /&gt;
*Anweisung&lt;br /&gt;
&lt;br /&gt;
Programm&lt;br /&gt;
  MarkeSetzen&lt;br /&gt;
  LinksFlach&lt;br /&gt;
  RechtsSteil&lt;br /&gt;
  LinksSteil&lt;br /&gt;
*Programm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Programmieren lernen mit Robot Karol| zurück]]&lt;/div&gt;</summary>
		<author><name>PT59kripke</name></author>
	</entry>
</feed>