iniciar-programa
define-nueva-instruccion g(l) como repetir l veces gira-izquierda;
define-prototipo-instruccion primero(n);
define-nueva-instruccion cuenta(n) como inicio
 si frente-libre entonces inicio
 avanza;
 cuenta(sucede(n));
 fin
 sino inicio
 mientras junto-a-zumbador hacer coge-zumbador;
 deja-zumbador;
 repetir n veces deja-zumbador;
 apagate;
 fin;
 fin;
define-nueva-instruccion segundo(l) como
inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
segundo(sucede(l));
fin
sino
 avanza;
 repetir l veces inicio
 repetir l veces deja-zumbador;
 avanza;
 fin;
 si no-junto-a-zumbador entonces inicio
 mientras frente-libre y no-junto-a-zumbador hacer
 avanza;
 g(2);
 primero(0);
 fin
 sino
 si junto-a-zumbador entonces inicio
 cuenta(0);
 fin;
 fin;

define-nueva-instruccion s(n) como inicio
 si junto-a-zumbador entonces inicio
  coge-zumbador;
  s(sucede(n));
 fin
 sino inicio
 repetir n veces inicio
 repetir n veces
 deja-zumbador;
 avanza;
 fin;
 mientras no-junto-a-zumbador hacer avanza;
 g(2);
 primero(0);
 fin;
fin;
define-nueva-instruccion primero(m) como inicio
 si junto-a-zumbador entonces inicio
  coge-zumbador;
  primero(sucede(m));
 fin
 sino inicio
  avanza;
  repetir m veces inicio
  repetir m veces
  deja-zumbador;
  avanza;
  fin;
 fin;
 mientras no-junto-a-zumbador hacer avanza;
 g(2);
 segundo(0);
fin;
define-nueva-instruccion p(n) como inicio
 si junto-a-zumbador entonces inicio
 coge-zumbador;
 p(sucede(n));
 fin
 sino inicio
 repetir n veces inicio
 repetir n veces deja-zumbador;
 avanza;
 fin;
 fin;
 mientras frente-libre hacer avanza;
 g(2);
 s(0);
fin;
define-nueva-instruccion a como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
a;
deja-zumbador;
fin
sino
avanza;
fin;
define-nueva-instruccion b como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
b;
deja-zumbador;
fin
sino
avanza;
fin;
    inicia-ejecucion
     g(3);
    p(0);
        apagate;
    termina-ejecucion
finalizar-programa
