Till KTH:s startsida Till KTH:s startsida

Laboration 8

cat

I denna labb ska du

  • Skriva ett program för syntaxkontroll.
  • Lära dig att skriva testprogram med unittest.
  • Lära dig att använda domaren Kattis

Molekyler

Du ska implementera en syntax (se Föreläsning 10) för enkla molekyler, till exempel H2 eller Cr12. Körexempel (du behöver inte skriva detta interaktiva program):

Ge en molekyl: H2
Formeln är syntaktiskt korrekt
Ge en molekyl: cr12
Saknad stor bokstav
Ge en molekyl: Cr0
För litet tal vid radslutet
Ge en molekyl: Pb1
För litet tal vid radslutet
Ge en molekyl: Mn4
Formeln är syntaktiskt korrekt

Syntaxen besår av dessa fem regler:

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

Du ska inte kontrollera att bokstäverna bildar en verkligt atomnamn (det kommer i nästa labb), inte heller ska du undersöka om molekylen är rimlig kemiskt sett.

  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. Se exempel från syntaxföreläsningen.
  5. Skriv själva funktionerna och provkör.
  6. Du behöver inte skriva programmet i körexemplet ovan, det räcker med ett testprogram med unittest.

Lär dig använda Kattis

Gör så här:

Redovisning

Labben (syntaxprogrammet och unittest)  lämnas in på git och redovisas muntligt av bägge gruppmedlemmarna.

Vid redovisningen ska du kunna

  • Visa upp din spec med beskrivningar av funktionerna.
  • Visa hur unittest används för testning av dina funktioner
  • Förklara hur ditt program avspeglar den givna syntaxen.
  • Demonstrera hur Kattis används.

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 period 2.