codigo revisado y comentado