iniciar-programa
define-nueva-instruccion gira(j) como
repetir j veces gira-izquierda;
define-nueva-instruccion lados como inicio
    si derecha-libre entonces gira(3);
    si izquierda-libre y derecha-bloqueada entonces gira-izquierda;
    avanza;
    si no junto-a-zumbador entonces inicio
        gira(2);
        repetir 2 veces avanza;
    fin;
fin;
    inicia-ejecucion
    mientras frente-bloqueado hacer gira-izquierda;
      avanza;
     si no junto-a-zumbador entonces inicio
         gira(2);
         repetir 2 veces
         si frente-libre entonces avanza;
        si no junto-a-zumbador entonces inicio
            gira(2);
            avanza;
            gira(2);
            lados;
        fiN;
        si frente-bloqueado y junto-a-zumbador entonces lados;
     fin;
      mientras junto-a-zumbador  hacer inicio
          mientras junto-a-zumbador y frente-libre hacer avanza;
          si no junto-a-zumbador entonces inicio
          gira(2);
          avanza;
          gira(2);
          fin;
         si derecha-libre entonces gira(3);
         si derecha-bloqueada y izquierda-libre entonces gira-izquierda;
          si frente-libre entonces avanza;
          si no junto-a-zumbador entonces inicio
             gira(2);
             avanza;
               si frente-libre entonces avanza;
             si (frente-bloqueado y junto-a-zumbador) y orientado-al-oeste entonces apagate;
          fin;
      fin;
      si no junto-a-zumbador entonces inicio
          gira(2);
          avanza;
      fin;
        apagate;
    termina-ejecucion
finalizar-programa 