Mittuniversitetet Institutionen för informationsteknologi och medier Java I Martin Kjellqvist 2007-04-21 Sid:1(3) Tentamen 2007-04-21, Java I Denna tentamen gäller både för kurserna dtaa 94 och dtaa 32. Hjälpmedel: Inga! Skrivningsanvisningar: Maximalt en uppgift per papper, du kan använda så många papper du önskar för varje uppgift. Skriv endast på en sida. Ange skrivkod på alla sidor. Om skrivkod inte finns tillgänglig skriver du ditt namn och personnummer på alla sidor. Skriv enkelt och tydligt för att undvika feltolkningar. Du får ej använda röd penna. En uppgift med flera delar kan ge poäng utan att alla delar är lösta. Uppgifterna är inte ordnade efter svårighetsgrad. Läs igenom uppgifterna noggrant. Preliminära gränser: G: VG: Max: Lycka till! 23p. 36p. 50p. /Martin Uppgifter 1. Beskriv hur Garbage Collection fungerar. 3p 2. Hur skiljer sig typerna String och StringBuilder? 3p Vad innebär termen immutable? 3. Då man definerar en klass har man alltid tumregeln att deklarera variabler privata och motsvarande get/set- metoder publika varför? 3p 4. Beskriv kortfattat vad arv innebär. 2p 5. 4p Vad blir utskriften av följande kompletta program? Var noggrann med alla tecken i utskriften. Motivera ditt svar! import java.text.*; public class Main{ public static void main(String[] args) { double sum = 0; int count = 0; for(int i=-10;i< 10;i++) for(int j= -1; j<=1; j++, count++)// j och count ++ sum += 1 + j; double result = sum/count; System.out.println( "After "+count+" additions, "); System.out.println( "the total sum is " + sum ); System.out.println( "and the average is " + result ); } } Mittuniversitetet Institutionen för Informationsteknologi och medier 2007-04-21 Sid:2(3) 6. a) a) 8 p Skriv ett fullständigt javaprogram som producerar följande användardialog och utskrift: b) 3 p Vad är största faktorn? 5 1 1 1 1 1 2 2 6 2 6 24 2 6 24 120 Användaren har matat in heltalet N=5, och programmet ger en utskrift enligt följande metod. -N rader ska skrivas ut. -Den första raden är alltid en etta. -Raden efter har samma innehåll som raden ovanför med tillägget: ett tal som är N*den tidigare sista siffran. Exempel: Rad 3 innhåller 1, 2 och 6. Rad fyra kommer därför att innehålla 1, 2, 6 och 24 ( av 6*4, där 4 är radnumret ). b) Den naturliga datatypen att använda vid denna typ av räkningar är heltalstypen int. Det visar sig emellertid att i detta program är talområdet för typen int inte tillräcklig för ganska beskedliga värden på N. - Vad är typen ints talområde? - Hur många rader kan man skriva ut innan det blir fel? - Hur bör man åtgärda felet? 7. Betrakta programavsnittet, notera att två heltal matas in 6p Scanner keyb = new Scanner(System.in); int i = keyb.nextInt(); Scanner keyb = new Scanner(System.in); int j = keyb.nextInt(); if ( villkor ){ System.out.println("Villkoret är sant!"); } Skriv villkor så att villkoret är sant om a) heltalet i ligger utanför intervallet, från och med 0 till och med 10. b) heltalet i maximalt ligger 3 enheter ifrån j. c) både i och j är antingen båda jämna, eller båda udda. Mittuniversitetet Institutionen för Informationsteknologi och medier 8. 5p 2007-04-21 Sid:3(3) Beskriv steg för steg, en algoritm som undersöker om en array innehåller två lika värden. Indata för algoritmen är arrayen A. Exempel: A = { 2, 4, 5, 8, 24, 3, 9 }. Resultat: nej Exempel: A = { 2, 4, 5, 8, 24, 5, 9 }. Resultat: ja ( två femmor ) För att resultatet ska bli nej krävs alltså att alla tal är unika. Du ska inte skriva någon programkod, endast tillvägagångssättet. 9. 8p Skriv ett komplett program som skriver ut alla textrader som är kortare än 60 tecken i filen. Textfilens namn är C:\texts\textfile.txt Du ska i din lösning använt klasserna FileReader och BufferedReader, alternativt klassen Scanner. Om du glömt bort vilka metoder som klasserna innehåller, så gissa. En rimlig gissning ger färre poängadrag. Glöm inte try / catch. Undantaget som ska fångas är av typen IOException. 10. 5p Följande är ett uttdrag ur dokumentationen av metod i klassen java.util.Random. Random() Creates a new random number generator. Random(long seed) Creates a new random number generator using a single long seed: int nextInt() Returns the next pseudorandom, uniformly distributed int value from this random number generator's sequence. 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. Förklara utförligt vad det står. Ge utifrån din förklaring ett minimalt men komplett program som illustrerar hur man använder metoderna.