Lablektion 3Lablektionens syfte är att i datorlabbet prova på att själv skriva kod. Uppgifterna är relativt korta och enkla och uppfyller lite av tanken att repetition hjälper inlärning. Hjälp finns att tillgå i labbet under lablektionstiden och andra tider så är det bara att skicka ett mail till Daniel, Johan eller Set. Försök att lösa uppgifterna enskilt först men om du kör fast så fråga
gärna. Uppgifterna kräver inte några speciella klasser och alla resultat kan
granskas antingen genom "Inspect" eller på det fönster som automatiskt kommer
upp vid körningen av utskriftsmetoden. TipsFör att skriva ut en rad med text från en metod används följande kommando: System.out.println("Text att skriva ut"); Resultatet blir att den angivna texten visas i ett separat fönster om det körs från BlueJ. För att skriva ut värdet på inbyggda typer (int, double, ...) så kan följande kodsnutt användas. int val = 10; System.out.println("Värdet är " + val); Detta resulterar i att värdet av variabeln val (10 i det här fallet) skrivs ut. Uppgifter1 - printOddSkapa en metod som skriver ut alla udda heltal från noll (0) till en angiven gräns. Använd en while-loop och ovanstående utskriftsmetod. 2 - printEvenSkapa en metod som skriver ut alla jämna heltal från noll (0) till en angiven gräns. Använd en for loop och ovanstående utskriftsmetod. 3 - calcFacSkapa en metod som beräknar fakulteten för ett givet positivt heltal. Fakulteten definieras som n! = 1 * 2 * ... * (n-1) * n.Fakulteten av noll (0!) är definierad till ett (1). 4 - isPrimeSkapa en metod som avgör ifall ett givet heltal är ett primtal eller inte. Inparametern ska vara ett positivt heltal större än ett och resultate ska vara boolean, d.v.s. true eller false. Ett primtal är ett positivt heltal som bara delar sig själv och ett utan rest. 5 - printPrimesSkapa en metod som skriver ut alla primtal under ett givet maximum med hjälp av metoden från föregående uppgift. Den som vill kan i stället pröva att implementera en algoritm för att hitta primtal som brukar kallas för
Eratosthenes såll. Denna går ut på att man skapar ett fält bestående av boolska värden, vi kallar detta fält för tal. Fältets syfte är att avgöra
om ett visst tal är ett primtal, om tal[i] == true så är i ett primtal.
Exempel: Den något kryptiska bilden ovan visar hur det går till då alla primtal under 20 söks. Då tal[2] == true sätts alla tal som är multiplar av 2 till false, detta visas med ^ (uppåtpilen). Sen kommer vi till 3 (även det primtal), alla multiplar av 3 märks som false, detta visas med - (strecket). Nästa tal är 4 som inte är ett primtal (triangeln visar att 2:an gjorde så att 4 ej blev ett primtal, dvs tal[4] == false). Efter 4 kommer 5, som är ett primtal, alla multiplar av 5 sätts till false, vilket markeras med o (den lilla cirkeln), 6 är inte ett primtal då både 2 och 3 (uppåtpilen och strecket) satte tal[6] = false. På detta sätt arbetar algoritmen av tal för tal till vi når 20. 6 - fillArraySkapa en metod som slumpmässigt fyller ett fält med flyttal. Talen kan slumpas fram med hjälp av Math.random(). Det ska vara möjligt att ange storleken på fältet och den övre gränsen på värdena som fylls i fältet. Fältet ska returneras från metoden som ett returvärde. 7 - findMinSkapa en metod som givet ett fält returnerar det minsta värdet i fältet. 8 - squareArraySkapa en metod som givet ett fält beräknar kvadraten på varje element i fältet och returnerar dessa. 9 - averageSkapa en metod som beräknar medelvärdet av alla element i ett givet fält. Medelvärdet ska returneras från metoden som en double. 10 - printArraySkapa en metod som skriver ut alla element i ett double fält, ett element per rad. Denna kan vara bra att använda i avlusningssyfte kanske? 11 - testAverageSkapa en metod som testar fillArray, average och printArray. Vad kan man förvänta sig för medelvärde ungefär? 12 - multiplicationTableSkapa en metod som "ritar ut" en multiplikationstabell enligt följande mönster: 0 1 2 3 4 5 6 7 8 9 10 1 1 2 3 4 5 6 7 8 9 10 2 2 4 ... ... 10 10 20 30 40 50 60 70 80 90 100Det ska vara möjligt att ange största värdet för tabellens sida. I exemplet ovan så är detta 10 (tio). För att skriva ut utan att bryta en rad kan System.out.print() användas, den fungerar på samma sätt som metoden ovan fast bryter inte raden automatiskt. Denna lablektion är utvecklad av Claes Gahlin, och har modifierats lätt av Johan. http://www.cs.umu.se/kurser/TDBA54/SU02/LLmaterial/LL3/index.html Ansvarig för sidan: Johan Tordsson Senast ändrad 2002-06-21 |