let step (memo:memoria) (maq:maquina) = 
  let (aqui, restante) = memo in
  
  (** se o buffer de entrada for vazio, então acabou, senão tratamos do primeiro caracter do buffer. Ou seja, vamos ver que novo estado atingimos com este caracter a partir do estado actualmente activo (onde a execução actualmente se encontra, o estado aqui). Chamanos aqui a função next que trata deste cálculo. *)

  match restante with
      [] ->  raise (FIM memo)
    | el::li ->
       try  
         (((next el aqui maq),(li:fita)) : memoria) 
       with Not_found -> raise (FIM memo)