iniciar-programa
        define-nueva-instruccion gira-derecha como
        repetir 3 veces gira-izquierda;
        define-nueva-instruccion media-vuelta como
        repetir 2 veces gira-izquierda;

        define-nueva-instruccion media como
        inicio
            si frente-libre entonces
            inicio
                avanza;
                si frente-libre entonces
                inicio
                    avanza;
                fin
                sino
                inicio
                    si izquierda-libre entonces
                       inicio
                          gira-izquierda;
                          mientras derecha-bloqueada hacer avanza;
                          gira-derecha;
                          avanza;
                          gira-derecha;
                          mientras frente-libre hacer avanza;
                          gira-izquierda;
                       fin;
                fin;
                media;
                mientras no orientado-al-oeste hacer gira-izquierda;
                si frente-libre entonces
                inicio
                    avanza;
                fin
                sino
                inicio
                    gira-derecha;
                    mientras izquierda-bloqueada y frente-libre hacer avanza;
                    gira-izquierda;
                    avanza;
                    gira-izquierda;
                    mientras frente-libre hacer avanza;
                    gira-derecha;
                fin;
             fin
             sino
             inicio
                 si izquierda-libre entonces
                 inicio
                     gira-izquierda;
                     mientras frente-libre y derecha-bloqueada hacer avanza;
                     gira-derecha;
                     si frente-libre entonces
                     inicio
                         avanza;
                         gira-derecha;
                         mientras frente-libre hacer avanza;
                         gira-izquierda;
                         si frente-libre entonces
                         inicio
                             avanza;
                             media;
                             mientras no orientado-al-oeste hacer gira-izquierda;
                         si frente-libre entonces
                         inicio
                             avanza;
                         fin
                         sino
                         inicio
                             gira-derecha;
                             mientras izquierda-bloqueada y frente-libre hacer avanza;
                             gira-izquierda;
                             avanza;
                             gira-izquierda;
                             mientras frente-libre hacer avanza;
                             gira-derecha;
                         fin;
                         fin
                         sino
                         inicio
                             gira-izquierda;
                             mientras frente-libre y derecha-bloqueada hacer avanza;
                             gira-derecha;
                             si frente-libre entonces
                             inicio
                                 avanza;
                                 gira-derecha;
                                 mientras frente-libre hacer avanza;
                                 gira-izquierda;


                         media;
                         mientras no orientado-al-oeste hacer gira-izquierda;
                         si frente-libre entonces
                         inicio
                             avanza;
                         fin
                         sino
                         inicio
                             gira-derecha;
                             mientras izquierda-bloqueada y frente-libre hacer avanza;
                             gira-izquierda;
                             avanza;
                             gira-izquierda;
                             mientras frente-libre hacer avanza;
                             gira-derecha;
                         fin;
                         fin;
                         fin;
                      fin
                      sino
                      inicio
                          gira-derecha;
                          mientras frente-libre hacer avanza;
                          gira-derecha;
                      fin;
                 fin;
              fin;
         fin;

    inicia-ejecucion
        mientras no orientado-al-este hacer gira-izquierda;
        media;
        apagate;
    termina-ejecucion
finalizar-programa

