iniciar-programa
define-nueva-instruccion gira-derecha como inicio
    gira-izquierda;
    gira-izquierda;
    gira-izquierda;
fin;
define-nueva-instruccion media-vuelta como inicio
    gira-izquierda;
    gira-izquierda;
fin;
define-nueva-instruccion cuenta como inicio
mientras no-orientado-al-sur hacer gira-izquierda;
si orientado-al-sur entonces inicio
        si frente-bloqueado y izquierda-libre entonces gira-izquierda;
        si frente-bloqueado y derecha-libre entonces gira-derecha;
    fin;
mientras frente-libre hacer inicio
    si (izquierda-bloqueada y derecha-bloqueada) y orientado-al-sur entonces inicio
        avanza;
        cuenta;
        deja-zumbador;
    fin
    sino
    inicio
    si frente-libre entonces avanza;
    si orientado-al-sur entonces inicio
        si frente-bloqueado y izquierda-libre entonces gira-izquierda;
        si frente-bloqueado y derecha-libre entonces gira-derecha;
    fin;
    si orientado-al-este o orientado-al-oeste entonces inicio
        si orientado-al-este entonces inicio
            mientras derecha-bloqueada y frente-libre hacer avanza;
        fin;
        si frente-bloqueado y derecha-bloqueada entonces media-vuelta;
        si orientado-al-oeste entonces inicio
            mientras izquierda-bloqueada y frente-libre hacer avanza;
        fin;
    fin;
    si izquierda-libre y orientado-al-oeste entonces gira-izquierda;
    si derecha-libre y orientado-al-este entonces gira-derecha;
    fin;
fin;
fin;
    inicia-ejecucion
        cuenta;
        apagate;
    termina-ejecucion
finalizar-programa