Codigo 100% terminado e comentado. Finalmente.