Adicionado comentarios para facilitar o entendimento do codigo e de seu funcionamento