iniciar-programa
define-nueva-instruccion gira(n) como
inicio
     repetir n veces
     gira-izquierda;
  fin;
define-nueva-instruccion arriba(n) como
inicio
     si si-es-cero(n) entonces
        gira(2)
     sino
        si junto-a-zumbador entonces
        inicio
             coge-zumbador;
             arriba(precede(n));
             deja-zumbador;
        fin;
  fin;
define-nueva-instruccion cuenta1(n) como
inicio
     si junto-a-zumbador entonces
     inicio
          coge-zumbador;
          cuenta1(sucede(n));
          deja-zumbador;
      fin
      sino
      inicio
           avanza;
           arriba(n);
           si orientado-al-sur entonces
           inicio
                avanza;
                gira(2);
            fin
            sino
            inicio
                 gira(2);
                 avanza;
            fin;
      fin;
  fin;
  define-nueva-instruccion cuenta2(n) como
inicio
     si junto-a-zumbador entonces
     inicio
          coge-zumbador;
          cuenta2(sucede(n));
          deja-zumbador;
      fin
      sino
      inicio
           avanza;
           arriba(n);
           si orientado-al-oeste entonces
           inicio
                avanza;
                gira(2);
            fin
            sino
            inicio
                 gira(2);
                 avanza;
            fin;
      fin;
  fin;
    inicia-ejecucion
  cuenta1(0);
    mientras orientado-al-norte hacer
    inicio
          avanza;
         cuenta1(0);

    fin;
    gira(1);
    cuenta2(0);
    mientras orientado-al-este hacer
    inicio
         avanza;
         cuenta2(0);
     fin;

     

        apagate;
    termina-ejecucion
finalizar-programa
