iniciar-programa
define-nueva-instruccion gira-derecha como inicio
gira-izquierda;
gira-izquierda;
gira-izquierda;
fin;

define-nueva-instruccion media-vuelta como inicio
gira-izquierda;
gira-izquierda;
fin;

define-nueva-instruccion novia-karel como inicio
mientras orientado-al-norte hacer inicio
si no junto-a-zumbador entonces inicio
si frente-libre entonces inicio
avanza;
fin
sino inicio
media-vuelta;
mientras frente-libre hacer avanza;
gira-izquierda;
avanza;
gira-izquierda;
fin;
fin
sino inicio
coge-zumbador;
si no junto-a-zumbador entonces inicio
deja-zumbador;
si frente-libre entonces inicio
avanza;
fin
sino inicio
media-vuelta;
mientras frente-libre hacer avanza;
gira-izquierda;
avanza;
gira-izquierda;
fin
fin
sino inicio
coge-zumbador;
si no junto-a-zumbador entonces inicio
repetir 2 veces deja-zumbador;
si frente-libre entonces inicio
avanza;
fin
sino inicio
media-vuelta;
mientras frente-libre hacer avanza;
gira-izquierda;
avanza;
gira-izquierda;
fin
fin
sino inicio
repetir 2 veces deja-zumbador;
apagate;
fin;
fin;
fin;
fin;
fin;

    inicia-ejecucion
        mientras no orientado-al-sur hacer gira-izquierda;
        mientras frente-libre hacer avanza;
        si orientado-al-sur entonces gira-derecha;
        mientras frente-libre hacer avanza;
        si orientado-al-oeste entonces gira-derecha;
        novia-karel;
        apagate;
    termina-ejecucion
finalizar-programa
