Laboration 2

Innehåll och syfte: Efter denna laboration ska du behärska en enkel struktur på Javaprogram, med fokus på programspråkskonstruktioner för deklarationer och programflöde.

Programmen du kommer att skriva är inte "typiska" Java-program av två skäl: Dels är de små och okomplicerade, dels saknar de ett objektorienterat tänkesätt. Så gott som alla Java-program "i verkligheten" är uppbyggda på ett objektorienterat sätt. Det blir även era program på samtliga framtida labbar, men inte denna gång.

Genomförande: Labbarna ska genomföras och redovisas individuellt. Muntligt samarbete är tillåtet och rekommenderat.

Vi rekommenderar att du inför labben har skissat på papper på programkoden för de olika uppgifterna, eller att du har tänkt igenom uppgifterna i syfte att komma med förberedda frågor till Elena.

Skriv så enkla program du kan, som uppfyller uppgiftsspecifikationen. Inga felkontroller på indata, rimlighetskontroller eller dylikt behövs.

För samtliga deluppgifter gäller att in och utmatningen ska vara layoutmässigt mycket enkel, ja, rent av ful, men olika typer av ledtexter ska göra programkörningen begriplig.

Examination: Labbarna ska redovisas genom att programlistningar lämnas in till Elena Fersman för de program du har skrivit. Ingen separat dokumentation, körningsexempel eller förklaringar till programmen behöver finnas med.

Följande regler gäller:

Uppgift 2a

Skriv ett program som räknar ränta på räntan på ett kapital. Programmet ska fråga efter kapitalets storlek (ett flyttal), antal år (heltal), och räntesats (ett flyttal). Programmet ska i en tabell skriva ut den ränta beräknas för varje år, samt för det sista året, kapitalets storlek inklusive ränta.

Ledning: En, av flera, enkla lösningar är att utföra beräkningarna i en for-loop. (Avsnitt 9.3)

Uppgift 2b

Skriv ett program som beräknar antalet dagar mellan två datum efter Kristi födelse. De två datumen ska matas in såsom tre heltal (du avgör själv om det tidigare eller senare ska matas in först - ledtexter ska i denna fråga lotsa användaren). Resultatet ska anges som ett heltal.

Du behöver inte ta hänsyn till skottår, men måste ta hänsyn till att årets månader har olika många dagar. Om du vill kan du använda switch-satsen (Skansholm, avsnitt 18.3.1), men olika lösningar med if-satser fungerar lika bra och är förmodligen enklare och kanske även lärorikare, för dig.

Ledning: En enkel lösning kan vara att räkna ut ett "dagnummer" för varje datum, baserat på att ett år har 365 dagar och de olika månadernas längd. Subtrahera därefter dessa dagnummer. Du får naturligtvis lösa uppgiften på andra sätt.

Uppgift 2c

Ett annuitetslån betalas med ett lika stort belopp varje månad. Detta belopp är till en viss del ränta och till en del avbetalning (amortering) på lånet. Om räntesatsen är fast (vilket vi antar i denna uppgift), innebär detta att räntekostnaden utgör en stor del av den månatliga betalningen i början, medan amorteringarna blir den större delen mot slutet av avbetalningstiden.

Lisa går nu i bilköpartankar. Hon är erbjuden annuitetslån av banken. Hon funderar på att låna belopp mellan 50 000 och 200 000, och är intresserad av att betala omkring 3000 per månad. Räntesatsen, som är fast under lånetiden, uppgår till 0,5% per månad. Notera att räntan beräknas månadsvis.

Din uppgift är nu att skriva ett program som kan hjälpa Lisa att beräkna hur många månader hon ska betala till banken, och hur stor den sista betalningen blir. Välj själv vad som ska matas in.

Ledning: Beloppen som är angivna i uppgiften är till för att "ge kött på benen". Uppgiften går bra att lösa utan denna information.

En bra lösning, av flera, kan vara att skissa på ett program enligt följande:

medan (skulden är större än ordinarie månadsbetalning) {

amortera

beräkna ränta

}