Till KTH:s startsida Till KTH:s startsida

Laboration 2

Laboration 2

Innehåll: 

  • Kapitel 5 och 4 i kursboken:funktioner, for-slingan, while-slingan

Labben redovisas på veckans övning. Det Pythonprogram du skriver kan ge 0-2 bonuspoäng (beroende på hur väl det uppfyller kraven). 
Instuderingsfrågorna redovisas med ett prov, som också kan ge max 2 bonuspoäng.

Läxa (ska göras före labben)

Välj en annorlunda längdenhet (t ex foot, yard, mile, ljusår) och skriv fyra funktioner:

  1. En funktion som skriver ut information om längdenheten. Inga parametrar, inget returvärde.
  2. En som omvandlar  till meter. En parameter, ett returvärde.
  3. En som omvandlar till kvadratmeter.  En parameter, ett returvärde.
  4. En som omvandlar till kubikmeter. En parameter, ett returvärde.

Spara funktionerna i samma python-fil och provkör. Lägg sedan upp filen i Dropbox.

Uppgifter

Du ska skriva ett program som först skriver ut information om din längdenhet, sedan skriver ut en tabell med värden för dina funktioner och till sist låter användaren gissa ett längdvärde. Gör uppgifterna stegvis enligt listan nedan så blir det enklare.

  1. Anropa din informationsfunktion för att skriva ut information om din längdenhet.
  2. Tabelldelen:
    • Använd en for-slinga för att skriva ut en tabell över dina funktioner för 1-10 meter, 1-10 kvadratmeter och 1-10 kubikmeter. Det måste inte vara en vacker tabell (se extrauppgifter nedan).
    • Nu ska användaren ska få välja hur många värden som ska skrivas ut i tabellen. Ändra for-slingan så att det fungerar för användarens val.
    • Samla nu de satser du skrivit för tabelldelen i en funktion. Lägg till ett anrop av funktionen i huvudprogrammet och se till att det fungerar.
  3. Gissa-delen:
    • Slumpa fram ett värde och be användaren att gissa vad det blir i din längdenhet (eller kvadratenhet eller kubenhet). Skriv ut beröm om användaren svarade rätt. Du får själv avgöra hur nära gissningen ska komma för att det ska räknas som rätt svar.
    • Lägg till en while-slinga som upprepar frågan tills användaren svarat rätt.
    • Lägg till en räknare som håller reda på hur många gissningar användaren har gjort, och skriver ut antalet när användaren äntligen gissat rätt.
    • Samla satserna för gissa-delen i en funktion, Lägg till ett anrop av funktionen i huvudprogrammet och se till att det fungerar.
  4. Skapa till sist en main-funktion där du lägger in anropen av informations-funktionen, tabellfunktionen och gissafunktionen. Glöm inte att anropa main.

Testning

Glöm inte att testa att ditt program fungerar som det ska. Tips: Ett enkelt sätt att spara testkörningen är att köra programmet och kopiera allt som syns på skärmen. Klistra in sist i ditt program, markera och välj Format-> Comment Out Region så blir stycket en kommentar.

Krav

  • Kraven från första labben måste vara uppfyllda:
    • Programmet ska ha en kommentar överst med författarnas namn och datum.
    • Variabelnamnen ska göra programmet lättare att förstå.
    • Testdata ska finnas med i kommentar sist i programmet.
    • Programfilen ska kopieras till gruppens Dropbox-katalog.
    och dessutom följande:
  • Varje funktion ska ha en förklarande kommentar.
  • Anropen ska vara anpassade till om funktionen har returvärde eller inte.
  • Programmet ska innehålla (minst) en korrekt for-slinga.
  • Programmet ska innehålla (minst) en korrekt while-slinga.

Instuderingsfrågor

  1. Hur definierar man en funktion?
  2. Vad händer om man glömmer att anropa en funktion?
  3. Hur tar en funktion emot indata? Visa med ett exempel!
  4. Hur skickar man utdata från en funktion? Visa med ett exempel!
  5. Vad är en lokal variabel?
  6. Vad är en default-parameter? Ge ett exempel!
  7. Vilka tre parametrar har range() ?
  8. Hur skriver man en for-slinga som räknar ner (t ex 5, 4, 3, 2, 1, 0) ?
  9. Vad är det för skillnad på if-satsen och while-slingan? Ge ett exempel!
  10. Vad är en oändlig slinga? Hur avbryter man den?
  11. Vilken av villkorsoperatorerna "not" och "==" har högst prioritet?
  12. Beskriv skillnaden mellan "and" och "or" !

Efter labben

Hur tycker du att ditt eget arbete med labben fungerade? Borde du ha gjort något annorlunda? Fundera en stund, och skriv upp några tips till dig själv inför nästa labb!

Frivilliga extrauppgifter

    • Snygga till tabellen så att den får jämna kolumner.
    • Skriv en meny där man kan välja att få se tabellen eller gissa längden.