Bedömningsmall för kontrollskrivning EDAA45 Programmering, grundkurs

Relevanta dokument
Bedömning av kontrollskrivning, EDA016 Programmeringsteknik

Lösning till tentamen EDAA45 Programmering, grundkurs

Lösning till tentamen EDAA45 Programmering, grundkurs

Tentamen EDAA45 Programmering, grundkurs

Tentamen EDAA45 Programmering, grundkurs

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

Tentamen EDAA45 Programmering, grundkurs

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

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

Laboration A Objektsamlingar

Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga.

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

Tentamen, EDAA10 Programmering i Java

Programexempel: tärningsspel. Programexempel: tärningsspel Kasta tärning tills etta. Klassen Die Specifikation. Slumptalsgenerator Klassen Random

Tentamen i Programmering

DAT043 Objektorienterad Programmering

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-15, TDA540. Dag: , Tid:

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Agenda. Objektorienterad programmering Föreläsning 13

Tentamen , Grundläggande programmering i Java

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

DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU

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

Objektorienterad programmering i Java I

Tentamen, Algoritmer och datastrukturer

TDIU01 - Programmering i C++, grundkurs

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

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

2D1339 Programkonstruktion för F1, ht 2004

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

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

Tentamen Grundläggande programmering

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

Tentamen, EDA501 Programmering M L TM W K V

Att skriva till och läsa från terminalfönstret

Tentamen FYTA11 Javaprogrammering

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-16, TDA540. Dag: , Tid:

Tentamen EDAA45 Programmering, grundkurs

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

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

Objektorienterad programmering i Java

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

Tentamen i Grundläggande Programvaruutveckling, TDA548

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Objektorienterad Programmering (TDDC77)

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

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

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

Tentamen EDAA45 Programmering, grundkurs

Tentamen EDAA45 Programmering, grundkurs

F4. programmeringsteknik och Matlab

Grundläggande programmering med C# 7,5 högskolepoäng. Provmoment: Ladokkod: Tentamen ges för: TEN1 NGC011 ADAEK17, ASYST17 samt öppen för alla

Övning vecka 6. public void method2() { //code block C method3(); //code block D }//method2

NetBeans 5.5. Avsikt. Projektfönster

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

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

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

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

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Föreläsning 8: Exempel och problemlösning

TENTAMEN OOP

OOP Tentamen

Konstruktion av klasser med klasser

Kodexempel från Programmering 2 Tobias Wrigstad, Ph.D.

PROGRAMMERINGSTEKNIK TIN212

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

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.

TDIU01 - Programmering i C++, grundkurs

Föreläsning 3-4 Innehåll

Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-15, TDA540. Dag: , Tid:

Tentamen i. för D1 m fl, även distanskursen. lördag 26 februari 2011

Del A (obligatorisk för alla)

2D1339 Programkonstruktion för F1, ht 2003

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT / 33

Static vs Dynamic binding Override vs Overload. Objekt-orienterad programmering och design Alex Gerdes och Sólrún Halla Einarsdóttir, 2018

Platser för att skriva och testa kod online. Workshop om programmering i matematikkurser, version 0.7 senast sparat

HI1024 Programmering, grundkurs TEN

Tentamen EDAA45 Programmering, grundkurs

Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering!

Tentamen i Programmeringsteknik I, ES,

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

Introduktion till programmering SMD180. Föreläsning 9: Tupler

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

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

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.

Planering av ett större program, del 2 - for och listor. Linda Mannila

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

Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT / 42

OOP Tenta

Programmering C: Tentamen of 5 Prioritet och associativitet hos operatorerna i C De viktigaste operatorerna: Prioritet Kategori Operator

Instuderingsfrågor, del D

[] 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

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

Transkript:

LUNDS TEKNISKA HÖGSKOLA Institutionen för datavetenskap Bedömningsmall för kontrollskrivning EDAA45 Programmering, grundkurs 2016-10-25, 14:00-19:00, Kårhusets Gasquesal Hjälpmedel: Snabbreferenser för Scala och Java. Instruktioner för kamraträttning Läs igenom hela denna bedömningsmall innan bedömningen påbörjas. Sätt dig in i mönsterlösningens angreppssätt och funktion, samt hur poängsättningen ska ske. För varje del: läs noga lösningen du ska bedöma och sätt dig in i det specifika angreppssättet. Ge maxpoäng om koden är korrekt, läsbar och lika bra som mönsterlösningen även om den är annorlunda. Det finns många olika sätt att lösa varje del, varav många är lika bra som mönsterlösningen. En lösning kan vara lika bra som mönsterlösningen, även om den är längre eller kortare eller har ett annat angreppssätt. Ge noll poäng om lösningen saknas, är oläsbar, obegriplig eller helt fel. Markering av poängavdrag (negativa) och uppgiftspoäng (inringad, positiv): Markeringar ska göras med en penna med avvikande färg, gärna röd. Stryk under de delar av en rad som är felaktiga eller bara delvis korrekta. Om något saknas, markera med en pil var det som saknas borde finnas och skriv en kommentar om vad som saknas. Markera poängavdrag i högerkanten med minuspoäng enligt bedömningsriktlinjerna i detta häfte. När du markerat relevanta avdrag för en hel uppgift, beräkna och skriv total uppgiftspoäng inringad i en cirkel, så att det går lätt att skilja uppgiftspoäng från poängavdrag. Uppgiftspoängen ska inte vara negativ utan ligga i intervallet [0, Maxpoäng]. Om det inte är uppenbart varför du ej givit maxpoäng, skriv då en kort förklaring i kanten. Om en lösning är oläslig eller helt obegriplig, skriv oläsligt eller obegripligt i kanten. Avsluta med att göra en kvalitativ helhetsbedömning av hela skrivningen och justera poäng för vissa delar om du tycker att poängsumman för hela uppgiften inte överensstämmer med din helhetsbedömning. Om du ändrar i din poängsättning, stryk över de gamla poängen med ett kryss och skriv nya poäng bredvid. Summera poängen och fyll i summan på omslagets framsida. Ange era identitetsnummer i fälten för rättare på omslagets framsida. Kamraträttningar med invändningar kommer att bedömas igen i efterhand av lärare. Även de kamratbedömningar som godkänns utan invändningar kommer att stickprovsbedömas i efterhand av lärare. 1

2(6) Del A. Totalt max 10 p Efter init. av: Vid kompileringsfel sätt kryss. Vid exekveringsfel sätt kryss. Ange statisk typ som kompilatorn härleder om ej kompilerings- eller körtidsfel. Ange dynamiskt värde som tilldelas vid exekvering om ej kompilerings- eller körtidsfel. u1 Point Point(10.0,10.0) u2 X u3 Movable Point(100.0,100.0) u4 X u5 Point Point(130.0,120.0) Rätta en rad i taget enligt nedan och sätt minuspoäng vid felaktigt svar i marginalen, t.ex. 1 eller 2. Räkna ut totala poängen och resultatet inringat längst ner på sidan direkt i skrivningshäftet. Varje rad kan ge max 2p. Typerna och värdena ska skrivas som det står i tabellen ovan för full poäng. Dock får svaret skilja sig vad gäller i betydelselös användning av blanktecken och radbrytningar. Om rätt svar är ett kryss i kolumn 3 eller 4, men man kryssat för kompileringsfel när det ska vara exekveringsfel, eller tvärt om, eller om man kryssat i båda, ges 1 i avdrag. Om man svarat med fel typ men rätt värde ges 1 i avdrag. Om man svarat med rätt typ men fel värde ges 1 i avdrag. Om både värde och typ är fel ges 2 i avdrag. Om värdet är nästan rätt, så när som på enstaka detaljer i tostring-representationen, till exempel 10 i stället för 10.0 på rad u1 ovan, ges 0.5 i avdrag. Om man svarat med typ/värde och kryss i kolumn 3 och/eller 4 på samma rad ges 2 i avdrag.

3(6) Del B. Totalt max 40 p Allmänna bedömningsregler som gäller alla svar i del B: Olika formateringsvarianter som skiljer sig från mönsterlösning som ej påverkar funktionen, t.ex. extra (klammer)parentespar eller radbrytningar, ger inga avdrag. Felaktigt matchade (klammer)parentespar, eller glömda (klammer)parenteser ger 1 i avdrag. Dokumentationskommentarer och importsatser i specifikationer behöver ej upprepas i lösningen. Om ytterligare importsatser behövs men helt saknas ska 1 i avdrag ges, men smärre felaktigheter i själva sökvägen ger inga avdrag. Om en fullständig sökväg anges direkt på plats (i stället för import), ges inget avdrag om sökvägen har smärre felaktigheter. Felaktigt avskriven metodsignatur från specifikationen ger 1 i avdrag. Om nödvändigt semikolon saknas (t.ex. mellan flera satser på samma rad) ges 1 i avdrag. Obetydliga fel i likhet med föregående två punkter där det framgår tydligt vad som egentligen avses ger 1 i avdrag. Deklaration av val när det måste vara var för att koden ska fungera ger 2 i avdrag. Deklaration av var när det skulle kunna vara en val och fungera lika bra ger 1 i avdrag Tillägg av element i samling på fel sätt, t.ex. +: i stället för :+ eller liknande, ger 1 i avdrag. Enkla misstag som är lätta att åtgärda ger 1 eller 2 i avdrag, beroende på hur allvarligt felet är. Allvarliga misstag eller stora ofullständigheter ger från 3 upp till maxpoäng i avdrag, beroende på hur mycket av koden som måste skrivas om för att det ska fungera. Om samma typ av fel förekommer i samma uppgift mer än en gång görs bara avdrag en gång vid första förekomsten. Skriv samma fel igen i kanten för att indikera att avdraget redan är gjort. Totala poängen för en uppgift kan inte bli negativ; om alla avdrag för en uppgift blir mer än maxpoängen ges 0 poäng.

4(6) Uppgift B1. Slumpmässiga identitetsnummer. 10p 1 object IdPrinter { 2 import java.util.random 3 4 def print(rnd: Random, n: Int, min: Int, max: Int): Unit = { 5 var taken = Set.empty[Int] 6 while (taken.size < n) { 7 val r = rnd.nextint(max - min + 1) + min 8 if (!taken.contains(r)) { 9 println(r) 10 taken += r 11 } 12 } 13 } 14 15 } Det räcker att svaret innehåller metoden print; det blir alltså inget avdrag om raderna 1, 2 och 15 i mönsterlösningen ovan saknas. Felaktig deklaration och/eller initialisering av mängd eller annan samling ger 1 i avdrag. Felaktigt villkor i while-satsen ger 1 i avdrag. Felaktigt villkor i if-satsen ger 1 i avdrag. Felaktig dragning av slumptal ger 1 i avdrag om gränsen är fel endast med ±1, medan större fel ger 2 i avdrag. Glömd eller felaktig utskrift ger 2 i avdrag. Glömt eller felaktigt tillägg av slumptal i samling ger 2 i avdrag. Slumptalen skrivs ej ut efterhand, utan på slutet i den ordning det råkar bli om man itererar över mängden (vilket gör att utskriften kommer att ske i hashkodsordning) ger 1 i avdrag. Det ger inga avdrag att använda en sekvenssamling i stället för en mängd, t.ex. en Vector, om man t.e.x. anropar distinct eller toset på lämpligt sätt så att funktionen blir som efterfrågas.

5(6) Uppgift B2. Rotera array på plats. 10p 1 object Rotate { 2 def rotatearrayofstrings(xs: Array[String], frompos: Int): Unit = { 3 if (frompos >= 0 && frompos < xs.length - 1) { 4 val temp = xs(frompos) 5 for (i <- frompos until xs.length - 1) xs(i) = xs(i + 1) 6 xs(xs.length - 1) = temp 7 } 8 } 9 10 def main(args: Array[String]): Unit = { 11 val argserrormsg = "Error: Not enough arguments." 12 if (args.length > 1) { 13 val numberofsteps = args(0).toint 14 for (i <- 1 to numberofsteps) rotatearrayofstrings(args, 1) 15 for (i <- 1 until args.length) println(args(i) + " ") 16 } else println(argserrormsg) 17 } 18 } Felaktig hantering av för få argument så att felutskrift ej blir rätt ger 2 i avdrag. Felaktig hantering av specialfall med tom array, eller array med ett element ger 2 i avdrag. Felaktig hantering av specialfall med frompos negativ eller för stort ger 2 i avdrag. Enkla felaktigheter i översättning ger 1 i avdrag per fel. Lösningen behöver inte införa en strängvariabel för felmeddelandet som i mönsterlösningen.

6(6) Uppgift B3. Registrering av bonuspoäng. 20p 1 class BonusRegister { 2 import scala.collection.mutable 3 private val groupofstudent: mutable.map[string, String] = mutable.map.empty 4 private val pointsofgroup: mutable.map[string, Vector[Int]] = mutable.map.empty 5 6 def add(studentid: String, group: String, points: Int): Unit = { 7 groupofstudent(studentid) = group 8 if (pointsofgroup.isdefinedat(group)) 9 pointsofgroup(group) = pointsofgroup(group) :+ points 10 else 11 pointsofgroup(group) = Vector(points) 12 } 13 14 def calculatebonus(): Map[String, Int] = { 15 val students = groupofstudent.keyset 16 val nameandbonuspairs = for (s <- students) yield { 17 val gr = groupofstudent(s) 18 val cb = BonusRegister.collaborationBonus(pointsOfGroup(gr)) 19 (s, cb) 20 } 21 nameandbonuspairs.tomap 22 } 23 } 24 25 object BonusRegister { 26 def collaborationbonus(points: Seq[Int]): Int = 27 (points.sum / points.size.todouble).round.toint 28 } Om kompanjonsobjektet från specifikationen som finns på rad 25 28 i mönsterlösningen ovan inte är med i svaret ges inga avdrag. Om attributen på rad 3 4 är felaktigt avskrivna eller saknas ges totalt max 1 i avdrag. Metoden add omfattar 9 poäng av uppgiften och kan således max ge 9 i avdrag. Metoden calculatebonus omfattar 10 poäng av uppgiften och kan således max ge 10 i avdrag. Om metodhuvuden från specifikationen är fel avskrivna ges 1 i avdrag per felaktigt metodhuvud. Motsvarande funktionalitet som finns på raderna 7, 8, 9, 11 i metoden add motsvarar 2 poäng vardera och kan således ge 1 eller 2 i avdrag för respektive funktionalitet beroende felets allvarlighet. Om motsvarande funktionaliteten helt saknas ges 2 i avdrag per avsaknad. I metoden calculatebonus, beroende på felets allvarlighet: Fel i eller avsaknad av funktionalitet som motsvarar raderna 15 16 ger upp till 3 i avdrag. Fel i eller avsaknad av funktionalitet som motsvarar raderna 17 19 ger upp till 5 i avdrag. Fel i eller avsaknad av funktionalitet som motsvarar raden 21 ger 1 i avdrag.