Till KTH:s startsida Till KTH:s startsida

Övningar

För att klara kursen behöver man få godkänt på minst 50% av hemtalen. Hemtalen redovisas på övningstillfällen därför närvaro på övningarna är viktigt.

Instruktioner för redovisning av hemuppgifter

  • Maila in övningsuppgifterna till övningsledaren (dicander@gmail.com) före övningen om inte annat har sagts på tidigare övning. Bifoga då kod som java-filer. (Ej word-dokument eller liknande) Se till att det framgår vad du heter i mailet (använd gärna kth-mailen) och . Kommetera gärna in ditt namn även i koden
    (Det är viktigt att texten "[oop16]" inklusive klamrar finnas i topic (ämnesraden) när du skickar dina hemuppgifter till Marcus)
  • Övningar måste mailas in före klockan 21.30 dagen före övning
  • För att få uppgiften registrerad är det även obligatorisk närvaro. Om du har svårt att närvara tillräckligt mycket kan vi komma överens om en individuell lösning. Observera att det inte är närvarokrav för att bli godkänd på "restövningarna"
  • Du måste även vara beredd att redovisa din lösning inför klassen under övningen
  • Om du blir plötsligt sjuk och inte kan närvara kompletterar du med restuppgifterna.
  • Ditt resultat kommer registreras i rapp innan tentan.

Checklista för inlämningsuppgifter

Helhet

Formalia / assistentvänlighet

  • Är filerna i rätt format (Är filformatet ,java ,pdf)?
  • Framgår det ur texten vilken uppgift som lösts?
  • Består svaren av kompletta meningar och inte bara stödord?
  • Presenteras diagram och tabeller med minst en mening text?
  • Finns storhet och enhet samt rubriker i diagram, tabeller och redovisade resultat?

Kod

  • Är koden skriven med kodlayout och inte bara löpande text?
  • Är all kod korrekt indenterad? (inte bara copy-pastead in i ett word-dokument)
  • Inleds alla metoder med en dokumentationskommentar som förklarar vad metoden gör?
  • Är namnen på variabler, metoder och klasser valda för att göra koden lättare att förstå?
  • Är programmet fritt från onödig kodupprepning?

Struktur

  • Är programmet indelat i lagom många, lagom stora klasser och metoder?
  • Verkar klasserna och metoderna lätta att återanvända?
  • Verkar klasserna och metoderna lätta att testa isolerat?
  • Pratar olika delar av programmet med varandra genom väldefinierade interface?

Matematik / datalogi

  • Går det att följa tankegången?
  • Är varje steg motiverat med bevis eller referens till tidigare kända satser?

Restövningar

Om du missat övningar under kursen finns det några du kan komplettera med nedan. Maila in eventuella kompletteringar till övningsledaren senast 2 veckor efter sista övningen. År 2016 innebär denna deadline 2016-03-17 kl 12:00 dvs exakt två veckor efter att sista övningen avslutats. Två av uppgifterna räknas som två eftersom den är lite mer omfattande. Man kan komplettera både för att uppnå 50% eller 75%. Kompletteringsuppgifterna behöver inte redovisas muntligt. 

Uppgift från övningshäftet Uppgiftslydelse Vikt
Uppgift 45:  Skriv ett program som läser en fil och ersätter alla priser på formen ”xx kr” eller ”xx.xx kr” med motsvarande moderna form ”SEK xx” respektive ”SEK xx.xx”. Ersätter en missad övningsuppgift
Uppgift 49:  Givet ett binärt träd skriv metoder, ev i en subbklass till det binära trädet, som
  1. Beräknar ett träds höjd
  2. Räknar löven
  3. Kontrollerar om två träd är innehållsmässigt lika
  4. Kopiera ett träd
Ersätter två missade övningsuppgifter
Uppgift 52: Antag att vi inte är intresserade av att sortera, utan endast av att finna den k:te nyckeln i storleksordning. Visa hur man kan skriva om quicksort för att lösa problemet. Ersätter en missad övningsuppgift
Uppgift 59  I binärsökning delas vektorn i två delar och sökningen fortsätter i den del där elementet kan finnas. Skriv en sökmetod där vektorn delas i tre delar. Ersätter en missad övningsuppgift

Labyrintuppgift

Ladda ner och utöka Labyrintprogrammet från exemplkoden, se övning 6 så att följande funktioner finns med: 

  • Användaren kan mata in en ny labyrint via ett grafiskt gränssnitt. Du får välja själv hur detta gränssnitt ska se ut, det kan exempelvis vara en JTextArea där ettor och nollor matas in eller en massa knappar som användaren får trycka på. Det är tillåtet att låsa labyrintens storlek. 
  • Labyrinten ska visas utan lösning från början, men det ska finnas en knapp med texten "Lös labyrint" eller liknande som användaren kan trycka på och då ska lösningan ritas ut
  • Om labyrinten saknar lösning ska ett meddelande visas som berättar detta för användaren
Ersätter två missade övningsuppgifter

OBS: Du behöver inte konstruera egna rutiner för quicksort eller binärsökning. Du behöver heller inte skriva ett eget träd. Använd gärna färdig kod som du modifierar för ändamålet. (Se exempelvis föreläsningsanteckningarna för kodexempel. Det binära trädet från övningen finns upplagt på sidan med exempelkod under "Restövningar". Det finns också exempel på https://github.com/dicander/oop De numrerade övningarna ovan finns i övningshäftet.

Översiktstabell över beteckning på rapp och hemtal

Beteckning i Rapp Hemtal
H1 Ö2:uppg 1
H2 Ö2:uppg 2
H3 Ö3:uppg 1
H4 Ö3:uppg 2
H5 Ö4:uppg 1
H6 Ö4:uppg 2
H7 Ö4:uppg 3
H8 Ö5:uppg 1
H9 Ö5:uppg 2
H10 Ö5:uppg 3
H11 Ö6:uppg 1
H12 Ö6:uppg 2
H13 Ö6:uppg 3
H14 Ö7:uppg 1
H21 Övningsuppg 45 motsvarar en missad övningsuppgift
H22 Övningsuppg 49 motsvarar två missade övningsuppgifter 
H23 Övningsuppg 52 motsvarar en missad övningsuppgift
H24 Övningsuppg 59 motsvarar en missad övningsuppgift 
H25 labyrint uppgiften motsvarar två missade övningsuppgifter