PROGRAMMERING-JAVA TENTAMINA Nicolina Månsson 2010-08-16 (Kontaktperson Nicolina Månsson, tel. 0768-530640) Tentamensinstruktioner Poängsättning Hela tentamen omfattar 42 poäng. Poäng för varje uppgift står angivet inom parentes före varje uppgift. -För att få betyget 3, 4 eller 5 krävs: 20,30,38 poäng Redovisning I varje uppgift står det vad som skall göras för att få angivet antal poäng. Redovisa koden i den ordning den efterfrågats i texten med så mycket implementerat som möjligt. Tänk på att vara noggrann och strukturerad. Det är Du som skall visa vad Du kan! Hjälpmedel Finns hos tentavakten. Lycka till!
Uppgift 1 - Enkla program med variabler, metoder, val och repetition satser (3p+3p+3p+3p+3p+3p+3p) a) BMI (body mass index) kan också räknas med formel BMI= v/(l/100) 2, där v är vikten i kg och l är höjden i cm. Skriv ett program som från användaren läser vikt som ett decimaltals värde och längd som ett heltal. Därefter skall programmet beräkna och skriva ut BMI. Du skall använda metoden pow, specificerad nedan. static double pow(double a, double b) Returns the value of the first argument raised to the power of the second argument b) Skriv ett program som läser in ett namn. Därefter skall programmet skriva ut namnet baklänges. T.ex om namnet som läses in är Mike, skall utskriften vara ekim Tips. Loopa genom Strängen som innehåller det inmatade namnet, ta ut en bokstav i taget med charat(). class String int length() Returns the length of this string. int indexof(string str) Returns the index within this string of the first occurrence of the specified substring. String substring(int beginindex, int endindex) Returns a new string that is a substring of this string. char charat(int index) Returns the char value at the specified index.
c) Skriv ett program som frågar användare efter ett födelsedatum i formatet ÅÅÅÅMMDD. Därefter skall programmet avgöra om datumet är giltigt på följande sett: a) ÅÅÅÅ måste vara mellan 1900 och 2010 b) MM måste vara mellan 1 och 12. c) DD måste vara mellan 1-31. Om alla 3 villkoren är sanna då är datumet giltigt. (Du behöver inte ta hänsyn till skottår eller korrekt antal dagar i respektive månad) d) Implementera metoden public static int getsum (int a, int b) som argument tar två heltal. Metoden skall returnera summan av alla heltal mellan a och b. Förutsätt att a är mindre än b. Använd for-loop. e) Under vissa förutsättningar gäller att bromssträckan för en bil med hastigheten v i km/h ges av den här formeln: s = 0.015v 2 ( meter ) Skriv en static metod med namnet bromsstr() som har argument hastigheten v och returnerar bromssträckan s. f) Skriv ett program som frågar användaren efter en hastighet. Därefter använder ditt program metoden bromsstr() för att beräkna och sedan skriva ut sträckan bromssträckan. g) För amerikaner gäller att få bromssträckan i fot och inte i meter. Komplettera programmet från uppgift f så att det beräknar och skriver ut sträckan i fot. 1 fot= 0,3048 meter. Uppgift 2 Arrayer (8p ) a) Nedanstående program deklarerar en array av int. Komplettera programmet så att den gör följande: 1. Fyller arrayen lista med värde i intervallet 1-100, slumpade med en Random-objekt. 2. Söker igenom arrayen efter antalet förekomst av talet 13, samt skrivet ut antalet förekomster. 3. Letar efter det minsta talet i arrayen samt beräknar medelvärdet för alla tal och skriva ut det minsta respektive medelvärdet. 4. Skapar en kopia av arrayen lista. Kalla den för listacopyinrevers. Kopiera sedan alla värde från lista till listacopyinrevers men som namnet säger skall alla värde läggas i
omvänd ordning, dvs sista posten i arrayen lista skall komma först i listacopyinrevers osv public class Uppgift2 public static void main ( String [] arg) Random generator=new Random(); int [] lista= new int[50]; // skriv din kod här Uppgift 3 Klasser och metoder (3p+5p+5p) a) Följande klass BankKonto är inte färdig implementerad. Komplettera konstrueraren och metoderna enligt beskrivningen som du finner framför varje metod. class BankKonto public String kontonr; public int saldo; /** Konstrueraren skall initiera variabeln kontonr och sätta saldo till 0 */ public BankKonto( String ikontonr) //din kod /**Metoden lägger till (samlar) kronor till saldo men inga negativa värde tilläts för kronor */ public void insättning(int kronor) // din kod /*Metoden minskar saldot med kronor men bara om saldot är större än kronor */ public void uttag(int kronor ) // din kod
b) Lägg till i klassen följande metoder : getsaldo() och getkontonr() som skall returnera saldo respektive kontonr och geträntaimånad(int räntesats) skall beräkna och returnera räntan som man kunde få på nuvarande saldo. Räntesatsen är indata till metoden och ges i procent per år. Din metod beräknar och returnerar räntan för respektive saldo och månad. Ränta i månaden = Saldo*räntesats/12 c) Skriv ett enkelt program som skapar två BankKonto-objekt. Därefter ska programmet göra en insättning och ett uttag på varje av dessa två konton. Antalet kronor som du gör insättning respektive uttag ska slumpas med ett Random-objekt. Programmet skall sedan skriva ut kontonumret för det BankKonto-objekt som har högst saldo. Ledning: Slumpa tal med hjälp av ett Random-objekt. Konstrueraren från klassen Random och metoden nextint() som ska användas för att slumpa tal är definierade som nedan: Random () Creates a new random number generator. int nextint(int n) Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive), drawn from this random number generator's sequence.