Terminé mi carrera…o mi caminata
Saturday, 10 May , 2008
La semana pasada aprobé la última materia de la carrera Analista en Informática Aplicada, después de muuuucho tiempo al fin me recibí, todavía recuerdo cuando recién comenzaba a estudiar, tenía muchas energías y ganas de aprender más y más acerca de todo lo que tenga que ver con computadoras y debo reconocer que aprendí varias cosas en esa casa estudios pero también tengo que decir que las cosas que considero más importantes las aprendí afuera. En mi caso particular hace bastante tiempo que me vengo dedicando al desarrollo de software más que nada al desarrollo web, he trabajado en varios lugares/empresas y también hice algunos proyectos personales que publiqué con licencia GPL. En la facultad tuve materias como: Fundamentos de Programación, Programación I, Programación II, Ingeniería de Software, Bases de datos y Optativa y Proyecto final, los lenguajes que conocí en esas materias fueron: Pascal, Delphi, Java, C++ y Visual Basic, sin embargo los lenguajes en con los cuales yo he venido trabajando son: PHP, Perl, Ruby y algo de Shell Scripting… es cierto que en este último tiempo en mi trabajo me están obligando a usar java (uno de los motivos que hace que este lugar se torne bastante aburrido para mí). Debo decir que la mayoría de estas materias (de programación) estaban centradas en enseñar la sintaxis del lenguaje que se daba o en cuales botones había que hacer “click” para compilar con netbeans o como generar un reporte con el asistente de Visual Basic xx, otro detalle importante eran los exámenes, a excepción de proyecto final todos los exámenes se hacían en papel y para aprobar bastaba con que el programa “funcione” sin importar la forma de resolverlo.
Acá les dejo el último exámen que rendí, el de Optativa y proyecto final:
Este es el enunciado:


El título dice “Recuperatorio 2do parcial” se ve que fué reutilizado :), bueno acá les dejo mi solución:
class Plancuenta :Plc_id
def self.calcular_nro_siguiente cuenta
Plancuenta.find(:all).select{|p| p.Plc_IdPadre == cuenta}.
sort{|x,y| x.Plc_NroAux y.Plc_NroAux}.last.Plc_NroAux + 1
end
def self.agrega_plan plc_idpadre, plc_desc
plc_nroaux = self.calcular_nro_siguiente(plc_idpadre)
@plan_nuevo = Plancuenta.new( :Plc_IdPadre => plc_idpadre,
:Plc_NroAux => plc_nroaux,
:Plc_Desc => plc_desc)
@plan_nuevo.save
end
def self.pone_puntos_intermedios nro
str = ''
nro.to_s.each_byte{|b| str += b.chr + "."}
str
end
def self.cuentas_imputables
ci = Plancuenta.find_by_sql("select * from plancuenta where id NOT IN
(select Plc_IdPadre from plancuenta)")
end
def before_save
self.Plc_id = (self.Plc_IdPadre.to_s + self.Plc_NroAux.to_s).to_i
self.Plc_Cod = (Plancuenta.pone_puntos_intermedios(self.Plc_id) +
self.Plc_NroAux.to_s)
end
end
class Asientos :Plc_Id
def self.hacer_caja
str = ''
Plancuenta.cuentas_imputables.each{|c|
str += "Cuenta: #{c.Plc_id} Saldo: #{Asientos.saldo(c.Plc_id)}\n"
}
puts str
end
def self.saldo cuenta
Asientos.find_all_by_Plc_Id(cuenta).collect{|a| a.Asi_Debe}.sum - \
Asientos.find_all_by_Plc_Id(cuenta).collect{|a| a.Asi_Haber}.sum
end
end
Esos son los dos modelos que hice para la solución que me llevó 2hs, el código se podría mejorar bastante pero me quedé bastante conforme, recuerden que estaba bajo la presión de rendir un exámen y no tenía mucho tiempo, además el prosefor me entregó la estructura de la base de datos en un archivo .mdb (de MS Access) y como yo uso Linux me la tuve que rebuscar para leer ese archivo y meterlo dentro de una db en Mysql.
Bueno la nota que me saqué fué 9 (sobresaliente).
Que experiencia tuvieron uds. en sus facultades? espero comentarios….
