martes, septiembre 15, 2009

Cosas de bancos...

Hace más de un año, hice un pequeño programita que utilizaba el interés simple.

Recordad que el interés simple es el que se calcula sobre la cantidad inicialmente prestada, mientras que el interés compuesto se calcula sobre el capital pendiente de pago.

Normalmente las cantidades fuertes a pagar durante muchos años (la típica hipoteca) va con interés compuesto, mientras que las pequeñas cantidades (coche, moto, ordenador, etc.) se calculan con interés simple.

Aquel programita sólo permitía responder a una pregunta de este tipo:

Unai ha pedido al banco un préstamo de 30.000 euros para pagar un coche nuevo.
El banco se lo ha concedido aplicando un "interés simple" del 6,5% anual.
Lo va a pagar en 5 años.
¿Cuanto paga en total intereses incluidos?

Metiendo en el programa:

c0 = 30000
i = 0.065
n = 5

Nos devuelve que:

cn = 39750

Lo primero que ocurre es que es muy poco intuitivo tener que meter el interés como 0.065 (6.5/100). La mayoría de la gente (incluido yo mismo) introducirá 6.5 y el resultado será incorrecto. Además si el préstamo se calcula tomando como base meses habría que hacer 6.5/1200 (por haber 12 meses en un año) y si es un prestamo en días 6.5/36000 (por haber 360 días en un año comercial).

El siguiente problema es que no sirve de mucho saber lo que vas a pagar en total. La gente prefiere saber por ejemplo la cuota mensual de ese préstamo.

Y es mejor incluso que el programa nos devuelva la cuota a pagar dependiendo de diferentes tipos de interés, ya que en la realidad tendremos ofertas de varias entidades bancarias.

Pues eso es lo que hace este nuevo programita:


Código fuente:








program interessimple;
uses Crt; //necesario para el clrscr y el readkey.
var c0,cn,i,b:real;
n:integer;
a:char;
begin
clrscr;
textcolor(4);
textbackground(7);
clrscr;
writeln('Interes simple');
writeln('--------------');
writeln;
writeln('por aitoreus');
writeln;writeln;writeln;
readkey;
//c0 es el capital inicial.
//i es el interes anual.
//n es el numero de periodos.
//cn es el capital final.
writeln;
c0:= 0;
i:= 0;
n:= 0;
b:= 0;
repeat
clrscr;
textcolor(2);
write('UNIDAD DE TIEMPO: ');
if b = 100 then write('A¥O');
if b = 1200 then write('MES');
if b = 36000 then write('DIA');
write(' CAPITAL PRESTADO: ');write(c0:8:2);
write(' INTERES: ');write(i:2:2);
write(' ',n);
if b = 100 then writeln(' A¥OS');
if b = 1200 then writeln(' MESES');
if b = 36000 then writeln(' DIAS');
textcolor(4);
writeln;
writeln;
writeln('1-ESTABLECER EL DIA COMO UNIDAD DE TIEMPO');
writeln('2-ESTABLECER EL MES COMO UNIDAD DE TIEMPO');
writeln('3-ESTABLECER EL A¥O COMO UNIDAD DE TIEMPO');
writeln('-------------------------------------------------');
writeln;
writeln('4-INTRODUCIR LA CANTIDAD QUE VAS A PEDIR PRESTADA');
writeln('5-INTRODUCIR EL TIPO DE INTERES');
write('6-INTRODUCIR LOS ');
if b = 100 then write('A¥OS ');
if b = 1200 then write('MESES ');
if b = 36000 then write('DIAS ');
writeln('PARA DEVOLVER EL PRESTAMO');
writeln('-------------------------------------------------');
writeln;
writeln('7-RESULTADOS GENERALES');
writeln('9-Salir');
writeln;
writeln('-------------------------------------------------'); writeln;
writeln;
a:=ReadKey;
case a of
'1':
begin
//si la unidad de tiempo es el d¡a,
// se divide entre 36000
//(360 d¡as en el a¤o comercial).
b:= 36000;
end;
'2':
begin
//si la unidad de tiempo es el mes,
//se divide entre 1200
//(12 meses al a¤o).
b:=1200;
end;
'3':
begin
//si la unidad de tiempo es el a¤o,
//entonces hay que dividir entre 100.
b:= 100;
end;
'4':
begin
write('CANTIDAD A PEDIR? ');readln(c0);
end;
'5':
begin
write('TIPO DE INTERES? ');readln(i);
end;
'6':
begin
write('NUMERO DE ');
if b = 100 then write('A¥OS? ');
if b = 1200 then write('MESES? ');
if b = 36000 then write('DIAS? ');
readln(n);
end;
'7':
begin
if (c0 = 0) or (n = 0) or (i = 0) or (b = 0) then
begin
writeln('POR LO MENOS TIENES QUE INTRODUCIR');
writeln('LA CANTIDAD A TOMAR EN PRESTAMO,');
writeln('EL TIEMPO DE PRESTAMO Y EL TIPO DE INTERES');
readkey;
end
else
begin
cn:=c0*(1+(n*i/b));
writeln('CANTIDAD PEDIDA = ',c0:8:2);
writeln('CANTIDAD TOTAL A DEVOLVER= ',cn:8:2);
write('CANTIDAD A PAGAR CADA ');
if b = 100 then write('A¥O = ');
if b = 1200 then write('MES = ');
if b = 36000 then write('DIA = ');
writeln(cn/n:8:2);
writeln('TOTAL INTERESES A PAGAR = ',cn-c0:8:2);
readkey;
end;
end;
end;
until a='9';
end.

No hay comentarios: