Laboration 2: Funktioner och slingor
- Inlämningsdatum 13 okt 2023 av 18:00
- Poäng 1
- Lämnar in en filuppladdning
- Filtyper pdf, txt, py och jpg
Laboration 2: Funktioner och slingor
Läs om funktioner, for-slingan och while-slingan:
- Kapitel 5 och 4 i kursboken: funktioner, for-slingan, while-slingan
- OLI 1.3 Funktioner och moduler, OLI 1.5 Upprepningar
Om labben är klar i tid ger den en bonuspoäng. Bägge gruppmedlemmarna ska lämna in labben.
1. Jämför två funktioner
Programmet nedan har två funktioner. Svara på följande frågor:
- Hur många parametrar har funktionen hypotenusa?
- Hur många returvärden har funktionen hypotenusa?
- Var anropas funktionen hypotenusa?
- Hur många parametrar har funktionen main?
- Hur många returvärden har funktionen main?
- Var anropas funktionen main?
2. Skriv två egna funktioner
Välj en längdenhet (t ex foot, yard, mile) och skriv två funktioner:
- Skriv en funktion som skriver ut information om längdenheten (t ex vad den använts till historiskt sett, i vilka länder den använts, hur man konverterar från meter till din enhet (men utan att genomföra konverteringen) etc.). Funktionen ska inte ha några parametrar, och inget returvärde. Testa så att den fungerar.
- Skriv en funktion (i samma fil) som omvandlar från meter till din längdenhet. Funktionen ska ha en parameter (antal meter), och ett returvärde (det konverterade värdet). Testa så att den fungerar.
3. Öva på for-slinga
- Skriv in och provkör programmet multiplikation.py:
- Låt användaren välja vilken multiplikationstabell som ska skrivas ut. Ändra for-slingan så att det fungerar för användarens val.
- Flytta koden för att skriva ut multiplikationstabellen till en egen funktion. Lägg till ett anrop av funktionen i main.
4. Öva på while-slinga
- Skriv in programmet ovan, rätta stavfelet, och provkör.
- Lägg till en while-slinga som upprepar frågan tills användaren svarat rätt.
- Lägg till en variabel antal som räknas upp med 1 i varje varv i slingan. Den ska hålla reda på hur många försök användaren har gjort. Skriv ut antalet försök när användaren äntligen svarat rätt.
5. Använd allt i ett program
Du ska nu skriva ett program som först skriver ut information om din längdenhet, sedan skriver ut en tabell med värden för din längdenhet och till sist låter användaren gissa ett längdvärde. Gör uppgifterna stegvis enligt listan nedan så blir det enklare.
- Informations-delen:
- Anropa din informationsfunktion (se punkt 2 ovan) för att skriva ut information om din längdenhet.
- Tabell-delen:
- Skriv en ny funktion där du använder en for-slinga för att skriva ut en tabell över din längdfunktion för 1-10 meter. Det måste inte vara en vacker tabell (se extrauppgifter nedan). Testa att din funktion fungerar.
- Gissa-delen:
- Slumpa fram ett värde och be användaren att gissa vad det blir i din längdenhet. 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.
- Din main-funktion ska ha anrop av informations-funktionen, tabellfunktionen och gissafunktionen. Glöm inte att anropa main.
6. Testning
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.
7. Lämna in i Canvas
Det är det sista programmet (det testade programmet från punkt 6 ovan) som ska lämnas in.
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.
- 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.
Peer review
När det är 20 min kvar av labbtiden ska du lämna in ditt program i Canvas. Det behöver inte vara klart! Nu är det dags för Peer review. Du kommer att få granska någon annans uppgift med avseende på fyra kriterier. Kontrollera om kriterierna är uppfyllda. Du kan också ge konstruktiv feedback och skriva uppmuntrande kommentarer.
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.
Svårare uppgifter
- Skriv en funktion som, givet en sträng med ett antal tecken, beräknar antalet permutationer.
- Skriv sedan en funktion som skriver ut alla permutationerna.
Matris
Kriterier | Bedömningar |
---|---|
Förklarande kommentarer till funktionerna
Gör kommentarerna att det blir lätt att förstå vad funktionerna gör?
|
|
Anpassade funktionsanrop
En funktion som returnerar ett värde ska anropas så att returvärdet används, t ex i en tilldelningssats
(svar = fråga()) Anropas funktionerna på ett korrekt sätt? |
|
for-slinga
Finns det en korrekt for-slinga i programmet?
|
|
while-slinga
Finns det en korrekt while-slinga i programmet?
|