Karel Flashcards
Kontrollstrukturen
- Sequenz
- Aufruf zusammengesetzter Befehle
- Zählschleife
- Fallunterscheidung
- Bedingte Schleife
Sequenz
° Befehle werden einfach nach einander entsprechend ihrer geschriebenen Reihenfolge geschrieben
Zusammengesetzter Befehl
° ausgeschachtelten Methode
Zählschleife
repeat (9) { moveForward(); } turnAround();
° kann bei variierender Feldgröße problematisch werden
Fallunterscheidung (einfach)
if ( onBeeper()) { pickBeeper(); } moveForward();
Fallunterscheidung mit Alternative
wakeUp(); if (sunIsShining()) { goForWalk(); } else { stayHome(); } goToBed();
Fallunterscheidung - Negation !
if (itsRaining()) { } else { goForWalk(); }
ist dasselbe wie wenn man if negiert und else weglässt
if (!itsRaining())
{
goForWalk();
}
° else ist nicht immer durch ! ersatzbar:
void pickOrDrop() { if (onBeeper()) { pickBeeper(); } if (!onBeeper()) { dropBeeper(); } }
Konjunktion &&
° onBeeper() && beeperAhead() -> Beide Bedingungen müssen gelten ° Bindet außerdem stärker als Disjunktion: if (onBeeper() || frontIsClear() && beeperAhead()) { hooray(); } moveOnWithLife();
Disjunktion || (inklusives oder)
° onBeeper() || beeperAhead()
-> Mindestens eine der beiden Bedingungen muss gelten
Verschachteltes if
if (onBeeper() && beeperAhead()) { hooray(); } moveOnWithLife();
ist dasselber wie ein verschachteltes if
if (onBeeper()) { if (beeperAhead()) { hooray(); } } moveOnWithLife();
Bedingte Schleife
voird moveToWall() { while (frontIsClear()) { moveForward(); } }
° solange Bedingung erfüllt -> Ausführung von Block
° Bedingung bereits am Anfang falsch -> keine Ausführung des Blocks
° Schleifenbedingung vor jedem Durchlauf geprüft
° Anzahl der Ausführungen unbestimmt