Ultimamente tenho me interessado por ações na bolsa, poupanças, juros, etc. Para me ajudar nos cálculos, desenvolvi esse pequeno programa em lisp, que então pode ser chamado com: juros valor-inicial juros-mensal meses [acréscimo-mensal]
#!/usr/bin/clisp
(defun calc-juros (valor juros)
"Calcula valor de juros (em porcento) sobre valor."
(* valor (/ juros 100.0)))
(defun soma-juros (valor juros)
"Calcula valor de juros (em porcento) e soma ao valor original."
(+ valor (calc-juros valor juros)))
(defun total (valor juros meses &optional (deposito-mensal 0))
"Calcula o valor total depois de alguns meses com juros."
(total-itin valor juros meses deposito-mensal))
(defun total-itin (valor juros restantes deposito-mensal)
(if (= restantes 0)
valor
(total-itin (+ deposito-mensal (soma-juros valor juros))
juros
(1- restantes)
deposito-mensal)))
;; Para fazer funcionar a partir do shell:
(format t "~a"
(cond ((= (length ext:*args*) 4) (total (read-from-string (first ext:*args*))
(read-from-string (second ext:*args*))
(read-from-string (third ext:*args*))
(read-from-string (fourth ext:*args*))))
((= (length ext:*args*) 3) (total (read-from-string (first ext:*args*))
(read-from-string (second ext:*args*))
(read-from-string (third ext:*args*))))
(t "juros valor-inicial juros-mensal meses [deposito-mensal]")))