iniciar-programa
    define-nueva-instruccion orientaKarel como inicio
      	mientras izquierda-libre hacer 
		inicio
			gira-izquierda;
		fin;
	fin;
	
	define-nueva-instruccion corrige como inicio
		si izquierda-libre entonces inicio
				gira-izquierda;
				avanza;
				si izquierda-libre entonces inicio
					gira-izquierda;
					avanza;
				fin;
			fin;
	fin;
	
	define-nueva-instruccion camina como inicio
		si frente-bloqueado entonces inicio
			gira-izquierda;
			gira-izquierda;
			gira-izquierda;			
		fin;
		avanza;
		corrige;
	fin;
	
	define-nueva-instruccion salida como inicio
		mientras junto-a-zumbador hacer inicio
			gira-izquierda;
			gira-izquierda;
			gira-izquierda;
			mientras frente-libre hacer inicio
				avanza;				
			fin;
			si junto-a-zumbador entonces inicio
				gira-izquierda;
				gira-izquierda;
				mientras frente-libre hacer inicio
					avanza;
				fin;
				gira-izquierda;
				gira-izquierda;
				gira-izquierda;
				camina;
			fin;
		fin;
	fin;
	
	define-nueva-instruccion contorno como inicio
		mientras no-junto-a-zumbador hacer inicio
			deja-zumbador;			
			camina;
		fin;
	fin;
	
	define-nueva-instruccion ir11 como inicio
		gira-izquierda;
		mientras no-orientado-al-sur o frente-libre hacer inicio
			mientras frente-libre hacer inicio
				avanza;
			fin;
			si no-orientado-al-sur entonces inicio
				gira-izquierda;
			fin;
		fin;
	fin;
	
    inicia-ejecucion
        orientaKarel;
		contorno;
		salida;
		ir11;

        apagate;
    termina-ejecucion
finalizar-programa