AID-nummer: Datum: 2014-12-18 Kurskod: 725G61 Provkod: LAB1 Grundkurs i programmering, 6 hp (725G61) Dugga 1 tillfälle 3 Skrivningstid: 2014-12-18 klockan 8.00-10.00. Hjälpmedel: Inga. För varje fråga gäller: Rätt svar: +1 poäng. Felaktigt svar: 0 poäng. Inget svar: 0 poäng. För godkänt krävs minst 7 poäng. Jour: Besöker salen cirka 9.00. Telefon: 013-281585. Ange ditt svar genom skriva ditt svarsalternativet i kolumnen Mitt svar. Om de exempelvis anser att alternativ C är det rätta svaret på fråga 1, skriver du C för den fråga. (Kolumnen Poäng fylls i av examinatorn.) Fråga Mitt svar Poäng 1 B 2 C 3 D 4 C 5 B 6 B 7 A 8 H 9 D 10 C 11 D 12 A Lämna in hela detta häfte. Frågorna och svaren publiceras på kursens hemsida strax efter efter att skrivningen har ägt rum. Lycka till!
Fråga 1. a) del ingsn. b) del\n ingsn. c) del\ nings n. String c = "n\n"; char d = '\\'; JOptionPane.showMessageDialog(null, "del" + d + c + "ings" + c + "."); (KOMMENTAR: Testar strängkonkatenering och vanliga användningar av \ och char. ) Fråga 2. 1 2 String x, y = null; 3 char z; 4 5 x = "A"; 6 y = " BC"; 7 z = x; 8 x = y; 9 JOptionPane.showMessageDialog(null, "Resultat: " + y + z + x); 10 a) Resultat: BCA BC b) Resultat: BC BCA c) Programmet går inte att exekvera på grund av ett fel på rad 7. d) Programmet går inte att exekvera på grund av ett fel på rad 8.
Fråga 3. int a, b; b = 4; a = 10; double z = a / b - 3 * (a + b) / a; JOptionPane.showMessageDialog(null, "Resultat: " + z); a) Resultat: -1.7 b) Resultat: -1.0 c) Resultat: 1.7 d) Resultat: -2.0 e) Något annat än vad som föreslås i alternativen a, b, c och d. (KOMMENTAR: Vad som händer när två int divideras med varandra samt precedensordningen mellan multiplikation och division.) Fråga 4. String x = "'Jumping Jack Flash it's such a gas' by Wild Man Fisher"; int p = x.indexof("'",22); String s1 = x.substring(p); p = x.indexof("'",21); String s2 = x.substring(p-10,p); JOptionPane.showMessageDialog(null, "Resultat: " + s1 + s2); a) Resultat: ' by Wild Man Fisherk Flash it' b) Resultat: s such a gas' by Wild Man Fisherk Flash it c) Resultat: 's such a gas' by Wild Man Fisherk Flash it d) Resultat: ' by Wild Man Fisherk Flash it' (Kommentar: Vanliga strängoperationer. )
Fråga 5. String x, y; boolean b; x = "Lisa"; y = x; x = "Molly"; b = x.equals(y); int c = x.compareto(y); if (c == 0) y = "samma"; else if (c < 0) y = "mindre"; else if (c > 0) y = "större"; else y = "inkompatibla värden"; JOptionPane.showMessageDialog(null, "Resultat: " + b + ", " + y ); a) Resultat: true, mindre b) Resultat: false, större c) Resultat: false, mindre d) Resultat: false, inkompatibla värden Kommentar: Tre olika operatorer och metoder för jämförelse av värden. Snarlikt förra duggan. Fråga 6. int spelare, spelare1, spelare2, resultat; spelare1 = 111; resultat = 80; spelare2 = 1322; resultat = 59; spelare = spelare1; if ( spelare >= 101 && spelare <=350 && spelare >= 1101 && spelare <=1300 resultat > 59 && resultat < 80 ) { JOptionPane.showMessageDialog(null,"Spelaren kvalificerad till nästa match."); else { JOptionPane.showMessageDialog(null,"Spelaren får ej fortsätta."); a) Spelaren kvalificerad till nästa match. b) Spelaren får ej fortsätta. c) Programmet kraschar på grund av att ett exekveringsfel inträffar. Kommenterar: Jämförelsevillkor.
Fråga 7. int räknare = 2; boolean färdig = false; int talet = 3; while (!färdig ){ talet = talet + räknare; räknare = räknare + 1; if (talet >= 7 räknare > 5) färdig = true; JOptionPane.showMessageDialog(null, "Resultat: " + talet); a) Resultat: 8 b) Resultat: 7 c) Resultat: 5 (Kommentar: Vad som händer när man loopar. Variant av föregående duggor.) Fråga 8. Avgör vilket eller vilka av de tre nedanstående flödesdiagrammen som uppfyller samtliga kriterier för att räknas som en algoritm. a) Alla tre diagrammen uppfyller kriterierna för att räknas som en algoritm. b) Inget av de tre diagrammen uppfyller kriterierna för att räknas som en algoritm. c) Diagram A är det enda som uppfyller kriterierna för att räknas som en algoritm. d) Diagram B är det enda som uppfyller kriterierna för att räknas som en algoritm e) Diagram C är det enda som uppfyller kriterierna för att räknas som en algoritm. f) Diagram A är det enda som inte uppfyller kriterierna för att räknas som en algoritm. g) Diagram B är det enda som inte uppfyller kriterierna för att räknas som en algoritm. h) Diagram C är det enda som inte uppfyller kriterierna för att räknas som en algoritm. Kommentar: Variant på föregående duggor.
Fråga 9. Avgör vad som är literaler i nedanstående programsatser. int tal = 5; short summa = 0; tal = summa + tal; int x = summa + 8; a) Det finns exakt fyra literaler i dessa programsatser. b) Det finns exakt sex literaler i dessa programsatser. c) Det finns exakt femliteraler i dessa programsatser. d) Det finns exakt tre literaler i dessa programsatser. Fråga 10. int t = 4, summa = 2; switch ( t ){ case 1: summa = summa + t; case 2: summa = summa + t; break; case 3: summa = summa + 2 * t; break; case 4: summa = summa + t + 4; case 5: summa = summa + t * 2; break; default: summa = summa + 10; JOptionPane.showMessageDialog(null, "Summa: " + summa); a) Summa: 4 b) Summa: 10 c) Summa: 18 d) Summa: 28 e) Något annat än förslagen i a, b, c och d.
Fråga 11. Avgör vilket av dessa påståenden som är korrekt. a) Explicit typkonvertering, iteration och selektion är alla en kontrollstruktur. b) Sekvens, deklaration och iteration är alla en kontrollstruktur. c) Deklaration, startmetoden main och explicit typkonvertering är alla en kontrollstruktur. d) Selektion, sekvens och iteration är var sin kontrollstruktur. e) Inget av påståendena i a, b, c eller d är korrekt. Fråga 12. Givet är denna rad syntaktiskt korrekta programkod: String s = "Det går " + "inteframåtidag".touppercase().substring(4,10) + (6 * 4); Ange vad i denna rad som inom programmering räknas som ett uttryck. a) Allt som står till höger om likhetstecknet utgör ett uttryck. b) "inteframåtidag".touppercase().substring(4,10) + (6 * 4) är det enda som utgör ett uttryck. c) Hela raden utgör ett uttryck. d) Det är endast (6 * 4) som utgör ett uttryck.