En entregas pasadas vimos como crear y ejecutar un programa en Ada. En está ocasión veremos cómo crear paquetes e invocarlos desde otro programa.
El programa es sobre el cálculo del valor futuro o interés compuesto. Donde tendremos un valor presente o monto inicial, una tasa de interés y un plazo.
Cálculo del valor futuro en Ada Lang
Creamos el proyecto:
alr init Invoca_Calculo --bin
Nos ubicamos en la carpeta creada:
cd invoca_calculo
Dentro de la carpeta del proyecto, creamos los archivos necesarios para el paquete ``Interes_Pkg `` y el programa principal.
src/interes_pkg.ads src/interes_pkg.adb src/invoca_calculo.adb
interes_pkg.ads
-- Archivo: src/interes_pkg.ads package Interes_Pkg is procedure Calcula_Interes; end Interes_Pkg;
Este será la especificación del paquete.
interes_pkg.adb
-- Archivo: src/interes_pkg.adb with Ada.Text_IO; with Ada.Float_Text_IO; with Ada.Numerics.Elementary_Functions; package body Interes_Pkg is procedure Calcula_Interes is Presente : Float := 20000.00; Tasa : Float := 5.0 / 100.0; Periodo : Integer := 12; Futuro : Float := 0.0; Extra : Float := 0.0; begin Ada.Text_IO.Put_Line ("Monto original: "); Ada.Float_Text_IO.Put (Presente, Aft => 2, Exp => 0); Ada.Text_IO.New_Line; Ada.Text_IO.Put_Line ("Tasa de interes: "); Ada.Float_Text_IO.Put (Tasa * 100.0, Aft => 2, Exp => 0); Ada.Text_IO.Put_Line ("%"); Ada.Text_IO.New_Line; Ada.Text_IO.Put_Line ("Plazo en meses: " & Integer'Image(Periodo)); Ada.Text_IO.New_Line; for I in 1 .. Periodo loop Futuro := Presente * Ada.Numerics.Elementary_Functions."**"(1.0 + Tasa, Float(I)); Ada.Text_IO.Put_Line ("Monto a pagar: "); Ada.Float_Text_IO.Put (Futuro, Aft => 2, Exp => 0); Ada.Text_IO.Put_Line (" en el periodo: " & Integer'Image(I)); end loop; Extra := Futuro - Presente; Ada.Text_IO.Put_Line ("Monto total a pagar: "); Ada.Float_Text_IO.Put (Futuro, Aft => 2, Exp => 0); Ada.Text_IO.New_Line; Ada.Text_IO.Put_Line ("Extra a pagar: "); Ada.Float_Text_IO.Put (Extra, Aft => 2, Exp => 0); Ada.Text_IO.New_Line; end Calcula_Interes; end Interes_Pkg;
Este contendrá el código que hará las operaciones del interés compuesto o valor futuro.
invoca_calculo.adb
with Interes_Pkg; procedure Invoca_Calculo is begin -- Invocar el procedimiento desde otro programa Interes_Pkg.Calcula_Interes; end Invoca_Calculo;
El programa ``main``. El programa encargado de invocar el paquete de ``Interes_Pkg```.
Construimos y ejecutamos el programa:
alr build alr run
Salida:
Note: Building invoca_calculo=0.1.0-dev/invoca_calculo.gpr... gprbuild: "invoca_calculo.exe" up to date Success: Build finished successfully in 11.96 seconds. Monto original: 20000.00 Tasa de interes: 5.00% Plazo en meses: 12 Monto a pagar: 21000.00 en el periodo: 1 Monto a pagar: 22050.00 en el periodo: 2 Monto a pagar: 23152.50 en el periodo: 3 Monto a pagar: 24310.12 en el periodo: 4 Monto a pagar: 25525.63 en el periodo: 5 Monto a pagar: 26801.91 en el periodo: 6 Monto a pagar: 28142.00 en el periodo: 7 Monto a pagar: 29549.10 en el periodo: 8 Monto a pagar: 31026.55 en el periodo: 9 Monto a pagar: 32577.88 en el periodo: 10 Monto a pagar: 34206.77 en el periodo: 11 Monto a pagar: 35917.11 en el periodo: 12 Monto total a pagar: 35917.11 Extra a pagar: 15917.11
Con esto hemos organizado nuestro programa mediante el uso de paquetes.
Esto es todo por hoy. Continuaremos con este temas en próximas entregas.
Enlaces:
Comentarios
Publicar un comentario