iniciar-programa
 define-nueva-instruccion gira(x) como inicio
     repetir x veces gira-izquierda;
 fin;
 define-nueva-instruccion Inicial como inicio
          si junto-a-zumbador entonces inicio
           coge-zumbador;
           inicial;
           si no-orientado-al-norte entonces inicio
           gira(1);
            avanza;
           fin;
           deja-zumbador;
           fin;
fin;
 define-nueva-instruccion Marca como inicio
     si junto-a-zumbador entonces inicio
         coge-zumbador;
         Marca;
         si frente-libre entonces
         avanza;
        fin;
 fin;
  define-nueva-instruccion desaloja como inicio
    si junto-a-zumbador  entonces inicio
        coge-zumbador;
        desaloja;
        si no-orientado-al-este entonces inicio
            mientras frente-libre hacer avanza;
            gira(3);
            avanza;
            avanza;
            avanza;
            gira(3);
            mientras junto-a-zumbador hacer   avanza;
         fin;
         deja-zumbador;
    fin;
  fin;
   define-nueva-instruccion subeclientes como inicio
        si junto-a-zumbador entonces inicio
           coge-zumbador;
            subeclientes;
           si no-orientado-al-este entonces inicio
             gira(1);
             mientras no-junto-a-zumbador y frente-libre hacer avanza;
             gira(2);
                si junto-a-zumbador entonces
                     avanza;
           fin;
            deja-zumbador;
        fin;
   fin;
    define-nueva-instruccion lleva como inicio
      si junto-a-zumbador entonces inicio
          coge-zumbador;
          lleva;
          si no-orientado-al-este entonces inicio
            mientras frente-libre hacer avanza;
            gira(1);
            repetir 3 veces
            avanza;
            gira(1);
            mientras junto-a-zumbador y frente-libre  hacer
             avanza;
          fin;
          deja-zumbador;
      fin;
    fin;
  define-nueva-instruccion Saca como inicio
      Marca;
      Si frente-libre o frente-bloqueado entonces inicio
          gira(2);
         avanza;
         gira(2);
      fin;
      deja-zumbador;
      gira(2);
      mientras frente-libre hacer avanza;
      gira(3);
      avanza;
      gira(3);
      avanza;
      Mientras junto-a-zumbador hacer inicio
       coge-zumbador;
       gira(2);
       avanza;
       gira(1);
       avanza;
       gira(1);
       avanza;
       mientras no-junto-a-zumbador y frente-libre hacer
        avanza;
       gira(3);
       avanza;
       gira(3);
       avanza;
       Mientras no-junto-a-zumbador y frente-libre hacer avanza;
       desaloja;
       gira(2);
       mientras frente-libre hacer avanza;
       gira(1);
       avanza;
       gira(1);
       avanza;
      fin;
      gira(2);
      avanza;
      gira(1);
      avanza;
      gira(1);
      mientras no-junto-a-zumbador y frente-libre hacer avanza;
       gira(3);
       avanza;
       gira(1);
      Mientras frente-libre hacer inicio
        si no-junto-a-zumbador y frente-libre entonces
        avanza;
        Si junto-a-zumbador entonces inicio
        gira(1);
        SubeClientes;
         avanza;
        fin;
      fin;
      gira(2);
      mientras frente-libre hacer
       avanza;
      gira(3);
      avanza;
      avanza;
      avanza;
      gira(3);
      mientras frente-libre hacer avanza;
      gira(2);
      Mientras frente-libre hacer inicio
         si no-junto-a-zumbador y frente-libre entonces
               avanza;
         si junto-a-zumbador entonces inicio
             Lleva;
             mientras frente-libre hacer avanza;
             gira(1);
             avanza;
             avanza;
             avanza;
             gira(1);
         fin;
      fin;
  fin;
    inicia-ejecucion
    Mientras no-orientado-al-norte hacer
    gira(1);
    avanza;
    gira(3);
    avanza;
    inicial;
    gira(2);
    repetir 2 veces avanza;
    gira(3);
    avanza;
    gira(3);
    avanza;
    gira(3);
    Saca;
        apagate;
    termina-ejecucion
finalizar-programa
 