iniciar-programa
define-nueva-instruccion cine(n) como
inicio
     si si-es-cero(n) entonces
         inicio
         apagate;
         fin
         sino
         inicio
             si orientado-al-norte entonces
             inicio
             si frente-libre entonces
             inicio
                 si izquierda-bloqueada entonces
                     inicio
                     avanza;
                     repetir 3 veces gira-izquierda;
                     cine(precede(n));
                     fin;
                 si derecha-bloqueada entonces
                     inicio
                     avanza;
                     gira-izquierda;
                     cine(precede(n));
                     fin;
             fin
             sino
                 inicio
                     si izquierda-bloqueada entonces
                         inicio
                         repetir 2 veces gira-izquierda;
                         mientras frente-libre hacer avanza;
                         gira-izquierda;
                         cine(precede(n));
                         fin
                         sino
                         inicio
                         repetir 2 veces gira-izquierda;
                         mientras frente-libre hacer avanza;
                         repetir 3 veces gira-izquierda;
                         avanza;
                         repetir 3 veces gira-izquierda;
                         si frente-bloqueado entonces
                             inicio
                             repetir 3 veces gira-izquierda;
                             avanza;
                             gira-izquierda;
                             avanza;
                             gira-izquierda;
                             cine(precede(n));
                             fin
                             sino
                             inicio
                             repetir 3 veces gira-izquierda;
                             avanza;
                             repetir 2 veces gira-izquierda;
                             cine(precede(n));
                             fin;
                         fin;
                 fin;

            fin
            sino
            si frente-libre entonces avanza;
            si frente-bloqueado y orientado-al-oeste  entonces
            repetir 3 veces gira-izquierda;
            si frente-bloqueado y orientado-al-este entonces
            gira-izquierda;
            cine(precede(n));

         fin;
fin;
define-nueva-instruccion decenas(n) como
inicio
    si junto-a-zumbador entonces
    inicio
    coge-zumbador;
    decenas(sucede(sucede(sucede(sucede(sucede(sucede (sucede(sucede (sucede(sucede(n)))))))))));
    fin;
    repetir 2 veces gira-izquierda;
    avanza;
    gira-izquierda;
    avanza;
    repetir 3 veces gira-izquierda;
    mientras frente-libre hacer avanza;
    repetir 2 veces gira-izquierda;
    cine(precede(n));
fin;
 define-nueva-instruccion unidades(n) como
 inicio
     si junto-a-zumbador entonces
         inicio
         coge-zumbador;
         unidades(sucede(n));
         fin;
         avanza;
         decenas(n);
 fin;
    inicia-ejecucion
    mientras no-orientado-al-este hacer gira-izquierda;
    mientras frente-libre hacer avanza;
    repetir 2 veces gira-izquierda;
    unidades(0);
        apagate;
    termina-ejecucion
finalizar-programa
