Een annuïteit is een vast bedrag dat periodiek betaald of ontvangen wordt gedurende een bepaalde periode. Letterlijk genomen is een annuïteit een jaarlijks te betalen bedrag. Het is afgeleid van het Latijnse woord “annus” (jaar). Ditzelfde principe kan natuurlijk ook worden toegepast op andere tijdsintervallen. Indien het maandelijks te betalen bedrag moet worden berekend, wordt dit een mensualiteit genoemd. In deze oefening zul je een programma schrijven dat een aflossingstabel opstelt, zodat de gebruiker snel kan zien hoeveel hij per jaar moet betalen om zijn lening af te betalen.

Berekening annuïteit

Het bedrag dat per jaar moet worden betaald, kan berekend worden met onderstaande formule. In deze formule staat \(A\) voor het jaarlijks te betalen bedrag (de annuïteit), \(T\) voor het totaal geleende bedrag, \(I\) voor de procentuele rentevoet (voorgesteld als een getal tussen \(0\) en \(1\), bijvoorbeeld \(0.05\) komt overeen met \(5\%\)) en \(P\) voor de periode waarover geleend wordt (bijvoorbeeld: 5 jaar).

\[\text{A} = \frac{T * I}{1 - (1 + I)^{-P}}\]

Berekening aflossingstabel

Elk jaar wordt de annuïteit afgetrokken van het nog te betalen bedrag. Het rentedeel en de kapitaalaflossing kunnen berekend worden als volgt. Hier stelt \(I\) het rentedeel voor, \(K\) de kapitaalaflossing en \(A\) de annuïteit.

\[Rentedeel = Resterend * Rentevoet\] \[Kapitaalaflossing = Annuiteit - Rentedeel\]

Belangrijk: Afronding

Strikt genomen is het niet de bedoeling dat double of float getallen worden gebruikt voor financiële berekeningen. Dit kan namelijk afrondingsfouten veroorzaken (bijvoorbeeld: \(5.0 - 1.5\) kan gelijk zijn aan \(3.499999998\)). Dit zou ervoor zorgen dat de afrondingstabel niet meer klopt, waardoor we er in deze opgave voor gekozen hebben om bij elke berekening zowel het rentedeel als de kapitaalaflossing, maar NIET het resterende bedrag, telkens af te ronden. Bij Tips staat beschreven hoe je dit doet.

Validatie van de invoer

Tijdens deze oefening is het ook de bedoeling dat je alle invoer van de gebruiker controleert. Het mag bijvoorbeeld niet mogelijk zijn om een aflossingstabel op te stellen met een negatieve rentevoet. Wanneer je ongeldige invoer van de gebruiker detecteert, moet het programma een foutboodschap tonen en stoppen.

De mogelijke foutboodschappen zijn de volgende:

Totaal geleende bedrag moet positief zijn.

Fout: Je kan geen negatief bedrag lenen.

Tijdsduur van de lening moet strikt positief zijn.

Fout: Je moet tenminste op 1 jaar lenen.

Rentevoet moet tussen 0 en 1 liggen.

Fout: De rentevoet moet tussen 0 en 1 liggen.

Verbetering

Voorbeeld

De tekst in het rood stelt invoer van de gebruiker voor (deze wordt niet uitgeprint door je programma).

Wat is het geleende bedrag?
50000
Op hoeveel jaar werd er geleend?
5
Hoeveel bedraagt de rente?
0,05
Elk jaar moet er € 11548.739906413399 worden betaald.

+------+-----------+-------------------+-----------+
| Jaar | Rentedeel | Kapitaalaflossing | Resterend |
+------+-----------+-------------------+-----------+
|    1 |  € 2500.0 |         €  9049.0 | € 40951.0 |
|    2 |  € 2048.0 |         €  9501.0 | € 31450.0 |
|    3 |  € 1573.0 |         €  9976.0 | € 21474.0 |
|    4 |  € 1074.0 |         € 10475.0 | € 10999.0 |
|    5 |  €  550.0 |         € 10999.0 | €     0.0 |

Tips

Bronnen

Annuïteit (Wikipedia)


Hierbij nog wat uitleg over de Dodona-testen voor deze oefening: