Inhaltsverzeichnis

Programmieren lernen mit Karel

Sequenzen

void karelsFirstProgram()
{
    moveForward();
    pickBeeper();
    moveForward();
    turnLeft();
    moveForward();
    turnRight();
    moveForward();
    dropBeeper();
    moveForward(); 
}

Schleifen

void defuseOneBomb()
{
    moveForward();
    moveForward();
    moveForward();
    moveForward();
    moveForward();
    moveForward();
    moveForward();
    moveForward();
    moveForward();
    turnAround();
    pickBeeper();
    turnAround();
    moveForward();
    moveForward();
    moveForward();
    moveForward();
    moveForward();
    moveForward();
    moveForward();
    moveForward();
    moveForward();
    turnAround();
}
void defuseOneBomb()
{
    repeat(9){
        moveForward()
    }
    pickBeeper();
    turnAround();
    repeat(9){
        moveForward()
    }
    turnAround();
}

1.1.3 defuseTwoBombs

void defuseTwoBombs(){
    defuseOneBomb();
    turnLeft();
    defuseOneBomb();
}
 
void defuseOneBomb()
{
    goOneWay();
    pickBeeper();
    goOneWay();
}
 
void goOneWay(){
    repeat(9){
        moveForward();
    }
    turnAround();
}

Funktionen

void defuseOneBomb()
{
    goOneWay()
    pickBeeper();
    goOneWay()
}
 
void goOneWay(){
    repeat(9){
        moveForward()
    }
    turnAround();
}
void defuseTwoBombs(){
    defuseOneBomb();
    turnLeft();
    defuseOneBomb();
}
 
void defuseOneBomb()
{
    goOneWay();
    pickBeeper();
    goOneWay();
}
 
void goOneWay(){
    repeat(9){
        moveForward();
    }
    turnAround();
}

Bedingungen / Verzweigungen

if (onBeeper()){
    pickBeeper();
}
if (onBeeper()){
    pickBeeper();
}
else{
    dropBeeper();
}

Bedingungen

Bedingung Anmerkung
onBeeper() Karel checks whether a beeper is on the square he currently stands on.
beeperAhead() Karel checks whether a beeper is on the square immediately in front of him.
leftIsCleear() Karel checks whether no wall is between him and the square to his left.
frontIsClear() Karel checks whether no wall is between him and the square in front of him.
rightIsClear() Karel checks whether no wall is between him and the square to his right.

Generalisieren

void repairHole(){
    turnRight();
    moveForward();
    dropBeeper();
    turnAround();
    moveForward();
    turnRight();
    moveForward();
}
 
void repairTheStreet(){
    while(frontIsClear()){
        if(rightIsClear()){
            repairHole();
        }
        else{
            moveForward();   
        }
    }
}