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å kurswebbsidan (se Inlämningsuppgifter i vänstermenyn) 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.

Linda Kann skapade sidan 12 juli 2016

Lärare Linda Kann ändrade rättigheterna 12 juli 2016

Kan därmed läsas av lärare och ändras av lärare.

Lärare Linda Kann ändrade rättigheterna 3 oktober 2016

Kan därmed läsas av alla och ändras av lärare.
kommenterade 27 oktober 2016

Alltså, vad vill vi egentligen få för utskrift i denna labb? För om vi ska använda unittest så kan vi inte ha med try-except eftersom att unittest inte då uppfattar att det blir ett Syntaxfel (eftersom vi behandlar det). Så ska vi då skriva funktionerna så unittest fungerar, eller så det blir liknande utskrift som ovan, eller båda på något sätt..?

Lärare kommenterade 31 oktober 2016

Nu har jag lagt till en länk till syntaxföreläsningen med ett exempel på hur man kan göra.