Tentamen på kursen DA7351, Programmering 1 051102, kl 08.15-12.15 Tillåtna hjälpmedel: Valfri bok om Java. Vid bedömning av lösningarna tas hänsyn till om dessa uppfyller de krav på programkvalitet (strukturering, indenteringar (indragningar) och meningsfulla variabelnamn etc) som meddelats på kursen. Skrivningen omfattar nio uppgifter (totalt 45 p och 5 sidor). Det krävs 20 p för godkänt resultat på skrivningen. DA7351, Programmering 1 1 051102
Uppgift 1 (6 p) a Skriv ett javaprogram efter följande aktivitetsdiagram. b Skriv om switch-satsen med if-else-konstruktion: int tal; do { tal = Input.readInt("Ange ett tal (0-10)"); while(tal<0 tal>10); switch(tal) { case 0 : System.out.println("en nolla"); break; case 1 : System.out.println("lågt"); break; case 2 : System.out.println("dubbelt mot 1"); break; case 3 : System.out.println("3"); break; default : System.out.println("mer än 3"); break; c Skriv for-loopen som en while-loop: for(int k=3; k>0; k--) { System.out.println("k="+k); DA7351, Programmering 1 2 051102
Uppgift 2 (6p) Skriv ett program vilket låter användaren mata in decimaltal. Följande gäller för programmet: 1 Programmet ska låta användaren mata in 10 decimaltal i intervallet 100-1000, dvs [100, 1000]. 2 Programmet ska inte bry sig om inmatningar utanför intervallet, t.ex. 63.79 och 1000.01. 3 När användaren matat in 10 decimaltal i intervallet ska programmet skriva ut * talens summa * det minsta talet Ett exempel på körresultat av färdigt program Uppgift 3 (5 p) Variabler av typen boolean kan anta värdena true eller false. Variablerna mintur och redo är av typen boolean. Stina vill avgöra för vilka värden på variablerna som utskriften Hej! sker, så hon gör en sanningsvärdestabell. if ((mintur redo) &&!redo) System.out.println("Hej då!"); else System.out.println("Hej!"); P = mintur och q = redo p q p v q q (p v q) & q E s s s B C s s f s s D f f s s f f F f f A s f s Tabellen är inte fullständig, dvs. vad ska det stå istället för bokstäverna A, B, C, D, E och F? DA7351, Programmering 1 3 051102
Uppgift 4a (2p) public void summa() vilken uppmanar användaren att mata in två tal. Därefter skriver metoden ut summan av talen. Exempel på kod och ett tänkbart körresultat Upp4.summa(); Uppgift 4b (2p) public int slump(int min, int max) vilken returnerar ett slumptal i intervallet min - max. Du kan utgå från att min <= max. Uppgift 4c (3p) Exempel Uppgift4 upp4 = new Uppgift4(); System.out.println(upp5.slump(11,14)); System.out.println(upp5.slump(-5,8)); kan t.ex. ge utskriften 11 6 contains vilken kontrollerar om en siffra finns i ett tal. Metoden ska returnera true om siffran finns i heltalet och annars false. Ledning: tal % 10 ger sista siffran i tal Exempel på kod Uppgift4 upp4 = new Uppgift4(); System.out.println(upp5.contains(5,399848)); System.out.println(upp5.contains(8,19834555)); körresultat Uppgift 5 (3p) Varje kort har en bokstav på ena sidan och en siffra på andra. En bokstav är antingen en vokal eller en konsonant och en siffra är antingen udda eller jämn. Titta på följande fyra kort. Vilket/vilka skulle du behöva vända för att kontrollera regeln: Om det är en konsonant på ena sidan av ett kort, så finns det en jämn siffra på andra sidan av kortet. Figur 1 E K 4 7 Du måste förklara hur du kom fram till din slutsats. DA7351, Programmering 1 4 051102
Uppgift 6 (2p) I Maria Alsbjers artikel nämns den allvarsamma leken. Vad menar hon med detta? Och vad har detta med genus att göra, menar hon? Uppgift 7 (8p) Du ska skriva en klass som representerar en Bok. De attribut som definierar en bok är: författare, titel och pris i kr. Du ska skriva din klass Bok så att det går att köra med följande testprogram: public static void main(string[] args){ Bok bok1=new Bok(); Bok bok2=new Bok( JRR Tolkien, Sagan om Ringen, 205.50); bok1.setförfattare( Simon Singh ); bok1.settitel( Kodboken ); bok1.setpris(89); System.out.println(bok1); System.out.println(bok2); Körresultat: Bok: Författare: Simon Singh, Titel: Kodboken, Pris: 89.0 kr Bok: Författare: JRR Tolkin, Titel: Sagan om Ringen, Pris: 205.50 kr Uppgift 8 (6p) public int antaliintervall(double[] array, double min, double max) vilken tar en array och ett intervall (min-max) som input och som returnerar antalet tal som finns i input-arrayen som är i intervallet (min <= element <= max). Skriv även en klass som testa denna metod på arrayn {4.0, 10.8, 7.9, 9.8 och med intervallet 9 20. Uppgift 9 (2p) Du vill kunna sortera dina böcker efter bokstavsordningen i titeln. Hur kan en implementation av gränssnittet Comparable i klassen Bok (se uppgift 6) hjälpa dig att göra detta? (Skriv ingen kod utan förklara med egna ord). DA7351, Programmering 1 5 051102