iniciar-programa
define-nueva-instruccion derecha(x) como inicio
    si no(si-es-cero(x)) y no junto-a-zumbador  entonces inicio
        deja-zumbador;
        si frente-libre entonces avanza;
        derecha(precede(x));
        si frente-libre entonces avanza;
        si junto-a-zumbador entonces coge-zumbador;
    fin
    sino inicio
        si si-es-cero(x) entonces apagate;
        repetir 2 veces gira-izquierda;
    fin;

fin;

define-nueva-instruccion izquierda(x) como inicio
    si no(si-es-cero(x)) y no junto-a-zumbador entonces inicio
        deja-zumbador;
        si frente-libre entonces avanza;
        izquierda(precede(x));
        si frente-libre entonces avanza;
        si junto-a-zumbador entonces coge-zumbador;
    fin
    sino inicio
        si si-es-cero(x) entonces apagate;
        repetir 2 veces gira-izquierda;
    fin;    
  fin;
define-nueva-instruccion estacionar(x) como inicio
    gira-izquierda;
    avanza;
    repetir 3 veces gira-izquierda;
    izquierda(x);
    gira-izquierda;
    repetir 2 veces  avanza;
    gira-izquierda;
    derecha(x);
    repetir 2 veces gira-izquierda;
    avanza;
    gira-izquierda;
    avanza;
    repetir 3 veces gira-izquierda;
    estacionar(x);
fin;
define-nueva-instruccion carro(x) como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        si frente-libre entonces inicio
            avanza;
            carro(sucede(x));
        fin
        sino carro(x);
    fin
    sino inicio
        si frente-libre entonces inicio
            repetir 2 veces gira-izquierda;
            repetir x veces avanza;
            repetir 2 veces gira-izquierda;
            estacionar(x);
        fin
        sino inicio
            repetir 2 veces gira-izquierda;
            repetir x veces avanza;
            repetir 2 veces gira-izquierda;
            estacionar(sucede(x));
        fin;
    fin;
fin;

    inicia-ejecucion
      carro(0);
        apagate;
    termina-ejecucion
finalizar-programa
