DD1320VT201
    Laboration 9: Formelkoll
    Hoppa över till innehåll
    Översikt
    • Logga in
    • Översikt
    • Kalender
    • Inkorg
    • Hjälp
    Stäng
    • Min översikt
    • DD1320VT201
    • Uppgifter
    • Laboration 9: Formelkoll
    • Startsida
    • Uppgifter
    • Sidor
    • Filer
    • Moduler

    Laboration 9: Formelkoll

    • Inlämningsdatum Inget inlämningsdatum
    • Poäng 1
    • Lämnar in en filuppladdning
    • Filtyper py
    Mål Läs
    • Skriva ett program för syntaxkontroll.
    • Öva på att själv skriva testprogram med unittest.
    • Använda domaren Kattis
    Föreläsning 12: Syntax, rekursiv medåkning, testning

    I denna labb ska du

    • Skriva ett program som läser in molekylformler och kontrollerar om dom är syntaktiskt korrekta, med hjälp av rekursiv medåkning.

    Förberedelser

    1. Läs instruktionerna i Kattis för problemet formelkoll.
    2. Skriv ett testprogram med unittest för den första omgången med testdata (Sample Input 1/Sample Output 1).
    3. Skriv ett testprogram för den andra omgången med testdata (Sample Input 2/Sample Output 2).

    Formelkoll

    Ditt program ska läsa formeln tecken för tecken och med rekursiv medåkning kolla syntaxen. Rekursiv medåkning innebär att huvudprogrammet först gör anropet readformel(), varefter readformel() anropar readmol() som anropar readgroup() och sedan eventuellt sej själv (men inte om inmatningen är slut eller om den just kommit tillbaka från ett parentesuttryck).

    Funktionen readgroup() anropar antingen readatom() eller läser en parentes och anropar readmol() etc - allt enligt grammatiken. När ett syntaxbrott upptäcks genereras en exception (raise Syntaxfel("Saknad högerparentes")) som fångas i huvudprogrammet och där skrivs hela resten av indataraden ut.

    Man måste ofta tjuvtitta på nästa tecken i kön (med peek()) för att veta vilken gren man ska följa i syntaxträdet.

    Testning

    Kattis kommer troligen att klaga på ditt program. Använd de två unittesterna du skrev i förberedelserna ovan för att kontrollera om programmet fungerar för de två givna omgångarna testdata.

    Om du öppnar ett Terminalfönster kan du köra testerna på kommandoraden. Skriv:

        python3 DITT_PROGRAM.py < SampleInput1.txt

    (Byt ut DITT_PROGRAM.py mot vad ditt program heter.) Jämför utskriften med SampleOutput1.txt

    Förutom de två givna omgångarna med testdata kör Kattis många andra tester. Du måste själv hitta på egna tester, och testa med dom för att ditt program ska bli tillräckligt bra för att godkännas av Kattis. Lägg till dina nya tester i unittest-programmet.

     

     


    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.

    Redovisning

    Labben lämnas in indivuellt med "Lämna in uppgift"-knappen högst upp på sidan, och ska redovisas muntligt av bägge gruppmedlemmarna. Skriv gruppmedlemmarnas namn i kommentarsfältet!

    Vid redovisningen ska du kunna

    • Visa godkänd kattisinskickning
    • Beskriva hur rekursiv medåkning fungerar
    • Visa hur dina funktioner speglar den givna syntaxen
    • Förklara varför man inte måste räkna antalet parenteser
    • Visa ditt unittest-program
    0
    Ytterligare kommentarer:
    Maxresultat för gradering till > poäng

    Matris

     
     
     
     
     
     
     
         
    Det går inte att ändra en matris efter att du börjat använda den.  
    Hitta en matris
    Hitta matris
    Titel
    Du har redan bedömt studenter med den här matrisen. Större ändringar kan påverka resultaten för deras uppgifter.
    Titel
    Kriterier Bedömningar Poäng
    Redigera beskrivning av kriterium Ta bort kriterium rad
    Det här kriteriet är länkat till ett lärandemål Beskrivning av kriterium
    tröskel: 5 poäng
    Redigera ranking Radera ranking
    5 till >0 poäng
    Full poäng
    blank
    Redigera ranking Radera ranking
    0 till >0 poäng
    Inga poäng
    blank_2
    Det här området kommer användas av utvärderaren för kommentarer relaterade till det här kriteriet.
    poäng
      / 5 poäng
    --
    Ytterligare kommentarer
    Poängsumma: 5 av 5