Till KTH:s startsida Till KTH:s startsida

Laboration 8

I denna labb ska du

  • Lära dig att använda domaren Kattis.
  • Lära dig att skriva testprogram med unittest.

Registrera dig på Kattis

Gör så här:

  1. Följ länken: Kattis
  2. Logga in (längst upp till höger) med ditt KTH-id
  3. Välj "COURSES" i övre menyn
  4. Välj "tildav16"

Lär dig använda Kattis

Läs avsnittet Tutorials (1 och 2) i dokumentationen och lös problemen Hello och A Different Problem.

Syntaxkoll

Du ska börja med att implementera dessa tre regler:

      <LETTER>::= A | B | C | ... | Z
      <letter>::= a | b | c | ... | z
      <num>   ::= 2 | 3 | 4 | ...

Läs igenom instruktionerna nedan och utför punkterna i ordning.

  1. Skriv en spec med namnen på de funktioner du behöver och en kommentar för varje funktion som beskriver vad funktionen ska göra.
  2. Gör en kopia av din LinkedQueue från labb 2, och lägg till metoden peek() som tittar på nästa värde i kön utan att plocka ut det.
  3. Gör ett eget särfall Syntaxfel som är subklass (ärver från) Exception.
  4. Skriv ett testprogram med unittest som ska kontrollera att funktionerna fungerar som avsett.
  5. Till sist - skriv själva funktionerna

Frivillig del (för att förenkla för dig i nästa labb)

Utöka syntaxen med nya regler:

      <element> ::= <atom> |<atom><num>
      <atom>  ::= <LETTER> | <LETTER><letter>
      <LETTER>::= A | B | C | ... | Z
      <letter>::= a | b | c | ... | z
      <num>   ::= 2 | 3 | 4 | ...

Modifiera ditt program så att det kontrollerar om en inmatad textrad är en <element>

Här är några exempel att testa med unittest. Hitta gärna på fler!

Indata Utskrift
Ag Formeln är syntaktiskt korrekt
Ag13 Formeln är syntaktiskt korrekt
Ag1 För litet tal vid radslutet

Redovisning

Labben lämnas in via git och redovisas muntligt av bägge gruppmedlemmarna.

Vid redovisningen ska du kunna

  • Demonstrera hur Kattis används
  • Förklara hur unittest används för testning
  • Redovisa de program (och specen) du skrivit i uppgifterna ovan

Betyg

Denna labb kan endast ge betyg E. Du måste lämna in den och redovisa den i tid för att få göra labbarna för högre betyg i nästa period.

Alexander Baltatzis created page 18 January 2016

commented 8 March 2016

De där funktioner som det står att vi ska testa, vad är egentligen tanken att deras syfte ska vara? Förstår inte meningen med varje delinstruktion.

commented 8 March 2016

Ska peek() kunna gå igenom hela listan och kolla varenda nods innehåll utan att dequea någon av dem, eller ska den verkligen BARA titta på innehållet hos den nod som ligger först i listan, alltså är näst på tur?

commented 8 March 2016

Vad är det för syntax vi kollar efter? Det verkar som att vi i nästa labb ska kolla att atomnamn är korrekt skrivna, visst, men vilken är syntaxen vi ska rätta enligt i denna labb?