Lisp: Calculando juros

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]")))
Publicidade

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

%d blogueiros gostam disto: