Lösningsförslag: Instuderingsfrågor, del D

Relevanta dokument
Instuderingsfrågor, del D

Lösningsförslag: Instuderingsfrågor, del 1

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Instuderingsfrågor, del E

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

JAVAUTVECKLING LEKTION 8

TENTAMEN OOP

Del A (obligatorisk för alla)

Föreläsning 11. Arrayer. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. Kan ha en array av t.

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

I ett program hantera man ofta samlingar av objekt av samma typ.

Föreläsning 6: Metoder och fält (arrays)

Typkonvertering. Java versus C

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

OOP Objekt-orienterad programmering

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Föreläsning 3-4 Innehåll

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

Föreläsning 2, vecka 8: Repetition

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

[] Arrayer = Indexerad variabel

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

TDIU01 - Programmering i C++, grundkurs

LÖSNINGSFÖRSLAG TENTAMEN

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Objektorienterad programmering i Java

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Objektorienterad programmering

Tentamen ID1004 Objektorienterad programmering April 7, 2015

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Lösningsförslag: Instuderingsfrågor, del A

Del A (obligatorisk för alla)

Institutionen för TENTAMEN CTH VT-15 Datavetenskap TDA540. Tentamen för TDA540 Objektorienterad programmering

TENTAMEN OOP

Sammanfattning och repetition utgående från typiska tentamensuppgifter

Klassdeklaration. Metoddeklaration. Parameteröverföring

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Föreläsning 9-10 Innehåll

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

Föreläsning 3: Booleans, if, switch

Lösningsförslag till tentamen

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Objektorienterad programmering Föreläsning 9. Copyright Mahmud Al Hakim Agenda (halvdag)

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

for-satsen Fält for-satsen Föreläsning 8 (OH-bilder 7) for-satsen for-sats är en styrsats för iterationer. for-sats har följande generella utseende:

Lektion 7. Datateknik A, Java I, 5 poäng

Fält och klassen String

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

TDDC77 Objektorienterad Programmering

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

Lösningsförslag till tentamen

Föreläsning 8. Klassen String Mer om fält Klassen ArrayList

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Skriftlig tentamen för kursen DV017A. Inledande programmering i Java A

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

OOP Objekt-orienterad programmering

Föreläsning 7. Fält Klassen String

Laboration 2. returnerar true om det är omöjligt för roboten att göra move() utan att. exekveringsfel erhålls, annars returnera false.

OOP Objekt-orienterad programmering

Föreläsning 3. Iteration while-satsen

Programmering för språkteknologer II, HT2011. Rum

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för B,V (1p) 13 januari 2001, kl Hjälpmedel: En Javabok. För betyget godkänt krävs at

Föreläsning REPETITION & EXTENTA

Objektorienterad programmering D2

Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus.

Programmering A. Johan Eliasson

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

Tentamen. Lösningsförslag

Grundläggande programmering med C# 7,5 högskolepoäng

Inledande programmering med C# (1DV402) Summera med while"-satsen

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Programmeringsteknik I

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

Sammanfattning och repetition utgående från typiska tentamensuppgifter

Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:

Instuderingsfrågor, del A

JAVAUTVECKLING LEKTION 4

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Laboration A Objektsamlingar

Instuderingsfrågor, del B

Grundläggande stränghantering

2 b) Följande finns definierat: public class Käk String titel = "Chili con carne"; Krydda[] kryddor = new Krydda[10]; kryddor[0] = new Krydda("Svartpe

5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Transkript:

Uppgift 1. Objektorienterad programmering, Z1 Lösningsförslag: Instuderingsfrågor, del D a) Inget fält behövs. Man kan läsa in ett tal i taget och addera dessa till summan. b) Här behövs ett fält. c) Här behövs inget fält. Talen kan läsas ett i taget och hela tiden sparar man undan det hittills största talet. d) Här behövs ett fält. e) Här behövs inget fält. För att beräkna medelvärdet räcker att beräkna summan av talen. f) Här behövs ett fält. g) Här behövs ett fält h) Här behövs ett fält. Uppgift 2. Fältet rymmer 4 element. Elementen i fältet är av datatypen int. Fältet är indexerat från 0 till 3. Uppgift 3. a) char vokaler = new char[5]; char i högerledet och char[5] i vänsterledet b) double[] m = double[10]; new saknas i högerledet c) int[]odd = new int{1, 3, 5, 7, 9; { och istället för [ och ] i vänsterledet Uppgift 4. a) int[] talen = {3, 19, 7, 9, 4; b) int[] talen = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9' ; c) Point[] punkter = new Point[25]; Uppgift 5. a) vekt b) c) d) chars nr names 0 1 2 3 'a' 'b' 'c' 'd' 0 1 2 3 4 0.0 0.0 0.0 0.0 0.0 0 1 2 "Anne" "Ida" "Marie" Lösningsförslag 1 (7) Instuderingsfrågor, del D

Uppgift 6. Utskrifterna blir: a) Olika b) Lika Orsaken till att utskriften i deluppgift a) blir "Olika" beror på att ett fält är ett objekt och att därför är en fältvariabel är en referensvariabel. Således är det referenserna fälten som jämförs och inte innehållet i de båda fälten. För att jämföra innehållet i fälten kan, som i deluppgift b), klassmetoden equals i klassen Arrays användas. Uppgift 7. a) 25 b) 13 c) 12 d) 6 e) 1 Uppgift 8. a) [1, 3, 5, 7, 9, 9, 9, 9, 9] b) [2, 3, 4, 5, 4, 3, 2, 1, 1] c) [1, 1, 1, 1, 1, 1, 1, 1, 1] d) [1, 1, 1, 1, 1, -1, -1, -1, -1] e) [5, 4, 3, 2, 5, 4, 3, 2, 1] Uppgift 9. a) 3 b) Vi får ett exekveringsfel! Detta beroende på att talen i serien är sorterade i växande ordning. Således kommer while-satsen att löpa i genom samtliga element i fältet. När de två siste elementen jämförs, dvs elementen med värdena 49 respektive 53, evalueras villkoret i while-satsen till true och whilesatsen genomlöps ytterligare en gång. Nu inträffar emellertid följande: variabeln i har värdet 5 och villkoret i while-satsen innebär alltså att fältelementen vekt[5] och vekt[6] ( skall jämföras. Men det finns inget fältelement vekt[6]!!! Uppgift 10. Uppgift 11. [1, -1, -2, -1, 1, 2, 1, -1, -2] a) for-satsen kommer att genomlöpas då k har värdet 10, men fältet values har ingen element med index 10. Ett exekveringsfel kommer att inträffa. for-satsen bör ha följande utseende: for (int k = 0; k < values.length; k = k + 1) b) Det finns inget fält att genomlöpa. Deklarationen skapar en variabel values som kan referera till ett heltalsfält, men inget fält har skapas varför values refererar till null. c) for-satsen kommer att genomlöpas då k har värdet 7. Inuti for-satsen finns en refereras till elementet values[k + 1], men fältet values har ingen element med index 8. Ett exekveringsfel kommer att inträffa. for-satsen bör ha följande utseende: Uppgift 12. Uppgift 13. Uppgift 14. for (int k = 0; k < values.length - 1; k = k + 1) 7 [1, 1, 2, 3, 5, 8, 13] [1, 5, 6, 9] Lösningsförslag 2 (7) Instuderingsfrågor, del D

Uppgift 15. x= 5 v[0] = 3 v[1] = 2 v[2] = 3 Förklaring: Värdet av de aktuella parametrarna kopieras in i de formella parametrarna, vilket betyder att en aktuell parameter som är en enkel datatyp kommer att ha samma värde efter metodanropet som innan, dvs x kommer att ha kvar värdet 5. Är den aktuella parametern ett objekt innebär det att den aktuella parametern och den formella parametern refererar till samma objekt, och att de förändringar som utförs i metoden på objektet som refereras av den formella parametern också utförs på objektet som refereras av den aktuella parametern (är ju ett och samma objekt). Uppgift 16. 111 2 666 Uppgift 17. for (int i = tal.length - 1; i >= 0; i = i - 1) System.out.println(tal[i]); Uppgift 18. Enklast är nog att använda sig av två for-satser enligt följande: for (int i = 0; i <= vekt.length; i = i + 2) vekt[i] = 1; for (int i = 1; i <= vekt.length; i = i + 2) vekt[i] = 0; Alternativt kan man använda en for-sats och en if-sats enligt nedan: for (int i = 0; i <= vekt.length; i = i + 1) { if (i%2 == 0) vekt[i] = 1; else vekt[i] = 0; Uppgift 19. Förvillkoret är //before: vekt är inte null Om vekt är null kommer ett exekveringsfel att inträffa när vekt.length refereras. Uppgift 20. Förvillkoren är //before: vekt är inte null och vekt innehåller minst ett element Om vekt är null kommer ett exekveringsfel att inträffa när vekt.length refereras och om vekt innehåller 0 element kommer en division med 0 att inträffa i uttrycket sum/vekt.length. Lösningsförslag 3 (7) Instuderingsfrågor, del D

Uppgift 21. public static int countodd(int[] vekt) { int nrofodd = 0; for (int i = 0; i < vekt.length; i = i + 1) { if (vekt[i] % 2 == 1) { nrofodd = nrofodd + 1; return nrofodd; // countodd Uppgift 22. public static int computeoddsum(int[] vekt) { int sumofodd = 0; for (int i = 0; i < vekt.length; i = i + 1) { if (vekt[i] % 2 == 1) { sumofodd = sumofodd + vekt[i]; return sumofodd; //computeoddsum Uppgift 23. Uppgift 24. Uppgift 25. Uppgift 26. public static int countcloseto(double[] values, double target, double tolerance) { int count = 0; for (int i = 0; i < values.length; i = i + 1) { if ( Math.abs(target - values[i]) < tolerance) { count = count + 1; return count; // countcloseto public static double[] doublevalues(double[] original) { double[] doubled = new double[original.length]; for (int i = 0; i < original.length; i = i + 1) { doubled[i] = original[i] * 2; return doubled; // doublevalues public static boolean[] reverse(boolean[] original) { boolean[] reversed = new boolean[original.length]; for (int i=0 ; i < reversed.length; i = i + 1) { reversed[i] = original[original.length - i - 1]; return reversed; // reverse public static double[] removefirst(double[] original) { double[] shorter = new double[original.length - 1]; for (int i = 1; i < original.length; i = i + 1) { shorter[i - 1] = original[i]; return shorter; // removefirst Lösningsförslag 4 (7) Instuderingsfrågor, del D

Uppgift 27. Uppgift 28. Uppgift 29. public static int[] removeat(int[] original, int index) { int[] shorter = new int[original.length - 1]; for (int i = 0; i < index; i = i + 1) { shorter[i] = original[i]; for (int i = index+1; i < original.length; i = i + 1) { shorter[i - 1] = original[i]; return shorter; //removeat public static int findfirsttarget(int[] values, int target) { for (int i=0; i < values.length; i = i + 1) { if (values[i] == target) { return i; return -1; // findfirsttarget public static int[] removealltargets(int[] original, int target) { int location = findfirsttarget(original, target); while (location >= 0 ) { original = removeat(original, location); location = findfirsttarget(original, target); return original; //removealltargets Uppgift 30. a) 27 b) h c) 2 d) 10 e) three f) THE THREE DID FEED THE DEER g) -1 h) 25 i) Tha thraa did faad tha daar Uppgift 31. a) ett tal större än 0 b) ett tal mindre än 0 c) 0 Uppgift 32. a) false b) false c) true d) true e) false f) true Uppgift 33. Utskriften blir : snusfabrik fabrikör Uppgift 34. optr Uppgift 35. utercom Lösningsförslag 5 (7) Instuderingsfrågor, del D

Uppgift 36. Lämpligast är att införa en metod: String str = "Detta ÄR en STRÄNG med BÅDE små OcH STORA bokstäver!"; str = exchangecapitalandlower(str); Metoden får följande utseende: public static String exchangecapitalandlower(string str) { String strcopy = ""; for (int i = 0; i < str.length(); i = i + 1) { if ( Character.isLowerCase(str.charAt(i))) strcopy = strcopy + Character.toUpperCase(str.charAt(i)); else if ( Character.isUpperCase(str.charAt(i))) strcopy = strcopy + Character.toLowerCase(str.charAt(i)); else strcopy = strcopy + str.charat(i); return strcopy; // exchangecapitalandlower Lösningsförslag 6 (7) Instuderingsfrågor, del D

Uppgift 37. world 6 world 6 Uppgift 38. Uppgift 39. public static String fixemail(string oldemail) { int k = s.indexof('_'); if (k < 0) k = s.indexof('.'); int at= s.indexof('@'); return s.substring(k+1,at) + "." + s.charat(0) + "@" + s.substring(at+1,s.length()-3) + "net"; //fixemail public static String middle(string str) { if (str.length() % 2!= 0) return str.substring(str.length() / 2, str.length() / 2 + 1); else return str.substring(str.length() / 2-1, str.length() / 2 + 1); //middle Lösningsförslag 7 (7) Instuderingsfrågor, del D