Det här är hemtentan som går lördag 28 augusti 2010 i kursen Mobiltelefonapplikationer med Java ME.
Ansvarig lärare är
Thomas Padron-McCarthy
(thomas.padron-mccarthy@oru.se),
telefon 070-73 47 013.
Instruktioner
-
Skriv och provkör programmet som beskrivs i uppgiften,
och skicka sen in det färdiga programmet till mig
(thomas.padron-mccarthy@oru.se)
senast klockan 08:00 söndag 29 augusti 2010.
-
Uppgiften ska lösas enskilt, dvs inga grupper av två eller flera studenter.
-
Du får använda dator, böcker och vilka andra hjälpmedel som helst, men
du får inte samarbeta eller fråga någon (utom mig).
-
Om du behöver fråga något, så kontakta gärna mig.
Det är nog bäst att ringa eller SMS:a
(se mobilnumret ovan),
för jag lovar inte att jag kollar e-posten under dagen.
-
Packa ihop hela katalogen med applikationen i en Zip-fil, och skicka den som en bilaga.
Men döp först om Zip-filen från nånting.zip till exempelvis nånting.info för att överlista överambitiösa virusfilter.
Om applikationen bara består av en enda Java-fil kan man i stället skicka bara den filen.
-
Om du inte senast på söndagen fått e-post från mig med en bekräftelse
på att du skickat in uppgiften,
bör du kontakta mig, enklast genom att ringa eller SMS:a mig
(ifall det är e-posten som inte fungerar).
-
Godkänt resultat på den här hemtentan ger betyget G på teoridelen av kursen.
Tillsammans med godkända inlämningsuppgifter ger detta betyget G på hela kursen.
Om man vill ha betyget VG ska man dessutom själv hitta på och göra en mindre projektuppgift.
Uppgiften
Tyngdlyftning går ut på att man lyfter en så kallad
skivstång
på olika sätt.
För att kunna variera vikten som man lyfter, är viktskivorna utbytbara.
I vanliga gym brukar det finnas skivor som väger
20 kilo, 15 kilo, 10 kilo, 5 kilo, 2.5 kilo och 1.25 kilo.
Själva stången väger 20 kilo.
Om man till exempel ska lyfta 40 kilo,
kan man sätta på två femkilosskivor på varje sida av stången,
så blir vikten 20 + 2*(5*5) = 40 kilo.
En annan möjlighet är att på varje sida sätta
en femkilosskiva, en 2.5-kilosskiva och två 1.25-kilosskivor, så blir vikten också 40 kilo:
20 + 2*(5 + 2.5 + 1.25 + 1.25) = 40.
Men det är oftast enklast att använda så få (och därför tunga) skivor som möjlgt,
i det fallet en tiokilosskiva på varje sida, dvs 20 + 2*10 = 40 kilo.
Denna enkla matematik kan ibland kännas svår när man har tränat en stund och blivit trött.
Därför behöver vi en mobiltelefonapplikation som hjälper till.
Här är ett mer avancerat exempel,
från http://corw.in/warmup/:
Denna kalkylator räknar dessutom ut en lagom tung uppvärmning,
men det behöver vi inte göra i den här uppgiften.
Skriv programmet!
Det här är de krav som finns på programmet:
-
Det ska gå att mata in en vikt i kilo, med decimaler.
-
Eftersom själva skivstången väger 20 kilo, är det också den minsta vikt som behöver kunna hanteras.
-
Programmet ska anta att det finns viktskivor med vikterna
20, 15, 10, 5, 2.5 och 1.25 kilo.
Det finns hur många som helst av varje sort.
-
Programmet ska räkna ut vilka viktskivor man ska sätta på varje sida.
(Det är alltid samma på båda sidorna.)
-
Det ska vara så få viktskivor som möjligt.
-
Att det ska vara så få viktskivor som möjligt betyder inte
att du behöver använda avancerade optimeringsalgoritmer,
utan det räcker med att hela tiden försöka med så tunga skivor som möjligt.
Glöm inte att dra bort skivstångens vikt, och dela med två.
-
Om det inte går att få ihop den sökta vikten (till exempel 10 kilo eller 99 kilo),
ska programmet ge ett felmeddelande om detta.
-
Programmet får inte krascha,
till exempel om man skriver in en lång och konstig textsträng.
-
Var noga med att programmet "bara fungerar".
Användaren ska inte behöva krångla,
till exempel med att skapa extra filer eller köra särskilda installationsprogram,
för att kunna installera och köra programmet.
Thomas Padron-McCarthy
(thomas.padron-mccarthy@oru.se),
27 augusti 2010