TENTAMEN Luleå tekniska universitet Kurskod: D0019N Kursnamn: Programutveckling med Java Tentamensdatum: 2009-12-21 Skrivtid: 4 timmar Tillåtna hjälpmedel: Deitel & Deitel: Java How to Program (valfri utgåva) Sören Samuelsson: 070 55 00 630 Jörgen Nilsson: 070 315 39 98 Betygsgränser: Totalt antal uppgifter och poäng: G = 30p, VG = 40p 6 uppgifter om totalt 50 poäng Övriga upplysningar: Om antaganden gjorts skall dessa anges. Om något är oklart i en uppgift, gör ett antagande och förklara hur du tänkt. Svara som den rättande personen inte vet någonting om svaret, dvs. förklara noga. Ett tips, planera tiden. Om du fastnar på en uppgift gå vidare till nästa. Allmänna anvisningar Kontrollera att du fått samtliga uppgifter. Besvara endast en uppgift per lösningsblad. Skriv tydligt, texta gärna och använd inte röd penna. Efter tentamen Tentamensresultatet syns i din Studentportal. Examinationsresultat ska meddelas inom 15 arbetsdagar efter examinationstillfället och senast tolv arbetsdagar före nästa examinationstillfälle. För kurser med fler än 60 examinerande samt för distansutbildningar får resultatet meddelas senare än 20 arbetsdagar efter examinationen dock senast tolv arbetsdagar före nästa examinationstillfälle. Uppgifter till tryckeriet för tentor campus Luleå Projektnummer: 46811 Hur många ex: 10 Hur många sidor: 5 Dubbel eller enkelsidigt: dubbel
Uppgift 1 (8 p) - Algoritmkonstruktion En resebyrå säljer tvåveckors resor till Cypern speciellt anpassade för barnfamiljer. De tillämpar följande priser och villkor: Ordinarie pris för en vuxen är 3 800 kr för två veckor. Barn under 2 år åker helt gratis, barn mellan 2 12 år betalar 50 % av det ordinarie priset. De som har fyllt 12 år men ej ännu har fyllt 18 år har 25 % rabatt på ordinarie pris. Resebyrån behöver ett program som beräknar och skriver ut det totala priset som varje familj skall betala för sin resa. Det behövs ingen specifikation av kostnaden för respektive familjemedlem. Under framtagning av underlag med användare på resebyrån diskuteras först ett alternativ där de matar in antalet familjemedlemmar och därefter åldern för varje resenär. När alla familjemedlemmars ålder är inmatade, skrivs totalsumman ut på skärmen. Resebyrån vill självklart ha ett så lättanvänt program som passar med deras arbetsrutiner, så den förkastas. Användarna bestämmer sig för att i stället införskaffa ett program där de först kan mata in åldern för en resenär i taget och därefter få frågan om det ingår, Fler medlemmar?. Vid Ja på den frågan matas nästa resenärs ålder in osv. Vid Nej på frågan skrivs totalsumman ut på skärmen. Din uppgift blir att rita en flödesplan för programmet som skall utvecklas för resebyrån. Du behöver inte skriva kod. ((Poängen fördelas enligt följande: 4 p för korrekt iteration 4 p för korrekt utformade val och övriga operationer)) Uppgift 2 (6 p) - Grundläggande begrepp Inom all programmering förekommer olika termer/begrepp. Förklara utförligt vad följande termer står för i programspråket Java och komplettera med att ge exempel i Java-kod. För max poäng för varje del krävs en tydlig förklaring samt tillhörande exempel i Java-kod. a) Variabel b) Datatyp c) Konstant - 2 -
Uppgift 3 (8 p) - Översätta flödesplan till programkod i Java Flödesplanen i figur 1 är ett förslag till en algoritm på följande uppgift: En kund handlar varor i en butik. Just idag har affären ett erbjudande till alla kunder som handlar fler än 10 varor. Dessa kunder får 5 % rabatt på den totala summan. När kunden inte har fler varor (kassörskan matar in priset 0.00) skall totalsumman efter eventuell rabatt skrivas ut. Det skall också synas på utskriften om kunden fått 5 % rabatt. Din uppgift blir att översätta flödesplanen till programkod i Java. Om du väljer en annan lösning än den som flödesplanen visar, bifoga den flödesplan som du följt när du skrivit koden. Start summa = 0. antal = 0. Visa Varans pris? (Avsluta med 0). Mata in pris. summa = summa + pris antal = antal + 1 Visa Varans pris? (Avsluta med 0). Mata in pris. Ja pris!= 0? Nej Nej Antal > 10? Ja Visa Summa att betala summa summa = summa * 0.95 Visa Du har fått 5 % rabatt och summan blir summa Stopp Figur 1. Flödesplan - 3 -
Uppgift 4 (7 p) - Läsa och förstå programkod Vad skrivs ut på skärmen när följande tre program exekveras? Program 4. 1 (3 p) int talnr1, talnr2, talnr3; int svara, svarb, svarc; talnr1 = 4; talnr2 = 6; talnr3 = 2 * talnr2; // Beräkningar svara = talnr1 + talnr2 / 2 + talnr3; svarb = talnr2 % talnr1 + 5; svarc = 3 * (talnr1 + talnr2) - talnr3; System.out.println("svarA: " + svara); System.out.println("svarB: " + svarb); System.out.println("svarC: " + svarc); Program 4. 2 (2 p) char a, b; // Tilldelning a = 's'; a = 't'; b = 'u'; a = b; System.out.println("Variabeln a: " + a); Program 4. 3 (2 p) int i; int faktor; //Tilldelning faktor = 5; for(i = 1; i <= 10; i = i + 1) System.out.println(i + " * " + faktor + " = " + (i * faktor)); - 4 -
Uppgift 5 (6 p) Vektorer Uppgiften handlar om vektorer (array). a) Förklara vad en vektor är och hur den används i programmering. Rita gärna en figur. b) Hur deklareras en vektor i programspråket Java? Ge exempel. c) Hur tilldelas värden till en vektor, dvs hur får en vektor sitt innehåll? Uppgift 6 (15 p) - Metoder Ett taxibolag tillämpar följande prissättning: Framkörningsavgift dagtid (dagtaxa) är 80 kr Framkörningsavgift nattetid (nattaxa) är 120 kr Varje km resa kostar 15.50 kr både dag- och nattetid. Din uppgift blir: Att rita en flödesplan för programmet beskrivet nedan. Att göra en programkod i Java som låter användaren mata in om det är dag- eller nattaxa och hur många km kunden har åkt. Programmet beräknar och skriver ut vad kunden skall betala. Programkoden skall innehålla en metod som beräknar vad en taxiresa kostar utifrån ovanstående uppgifter. Till metoden skall antal km samt (på något bra sätt) korrekt framkörningsavgift skickas med som argument till metoden och metoden skall returnera totalpriset till main-metoden där utskriften sker. Inmatning av avstånd i km, dag eller natt och utskriften av vad kunden skall betala skall således ske i main. - 5 -