Programa completo, sem bugs, mas fora de algumas convenções de escrita de código, e não vou mexer!