iniciar-programa

    define-nueva-instruccion TomaYEjecuta(cuantos) como inicio

        si junto-a-zumbador entonces inicio

            coge-zumbador;

            TomaYEjecuta(Sucede(cuantos));

        fin

        sino inicio

            si frente-libre entonces inicio

                avanza;

                TomaYEjecuta(0);

            fin;

            si si-es-cero(precede(cuantos)) entonces

                mientras no-orientado-al-norte hacer gira-izquierda;

            si si-es-cero(precede(precede(cuantos))) entonces

               mientras no-orientado-al-este hacer gira-izquierda;

            si si-es-cero(precede(precede(precede(cuantos)))) entonces

               mientras no-orientado-al-sur hacer gira-izquierda;

            si si-es-cero(precede(precede(precede(precede(cuantos))))) entonces

                mientras no-orientado-al-oeste hacer gira-izquierda;

            avanza;

        fin;

    fin;

    inicia-ejecucion

        mientras junto-a-zumbador y frente-libre hacer

            avanza;

        gira-izquierda;

        gira-izquierda;

        si no-junto-a-zumbador entonces

            avanza;

        TomaYEjecuta(0);

        apagate;

    termina-ejecucion

finalizar-programa
